mirror of
https://github.com/jessfraz/dockerfiles.git
synced 2024-11-27 04:16:45 +01:00
50873e6fa7
I'm not sure if this was recently changed but the unifi controller uses port 10001 over UDP for device discovery. Adding this got my installation to work. Thanks for this!
119 lines
3.8 KiB
Docker
119 lines
3.8 KiB
Docker
# Run the Ubiquiti UniFi Controller in a container
|
||
#
|
||
# Setup a local directory to store your unifi controller config:
|
||
# mkdir -p ~/.config/unifi/
|
||
# chmod -R 0700 ~/.config/unifi/
|
||
#
|
||
# If you have already been using a locally installed unifi controller,
|
||
# copy the contents of your existing unifi config:
|
||
# cp -R /var/lib/unifi/* ~/.config/unifi/ # Linux
|
||
# cp -R ~/Library/Application\ Support/UniFi/* ~/.config/unifi/ # MacOS
|
||
#
|
||
# Build the docker image (from directory with this Dockerfile & entrypoint.sh):
|
||
# docker build -t unifi .
|
||
#
|
||
# Start a unifi controller container:
|
||
# docker run \ # interactive mode isn't necessary
|
||
# -v ~/.config/unifi:/config \ # for persistent config
|
||
# -p 8080:8080 -p 8443:8443 -p 8843:8843 -p 8880:8880 -p 3478:3478/udp \
|
||
# --name unifi \
|
||
# unifi
|
||
#
|
||
# Access the controller in your browser at: https://127.0.0.1:8443
|
||
#
|
||
# If existing devices are showing up as "disconnected" once logged in,
|
||
# SSH into each device and run:
|
||
# set-inform http://ip_of_docker_host:8080/inform
|
||
#
|
||
|
||
FROM ubuntu:16.04
|
||
|
||
# environment settings
|
||
ENV DEBIAN_FRONTEND="noninteractive"
|
||
|
||
# install deps
|
||
RUN apt-get update && apt-get install -y \
|
||
ca-certificates \
|
||
dirmngr \
|
||
gnupg \
|
||
--no-install-recommends \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# install gosu
|
||
ENV GOSU_VERSION 1.11
|
||
RUN set -ex; \
|
||
\
|
||
fetchDeps=' \
|
||
wget \
|
||
'; \
|
||
apt-get update; \
|
||
apt-get install -y --no-install-recommends $fetchDeps; \
|
||
rm -rf /var/lib/apt/lists/*; \
|
||
\
|
||
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
|
||
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
|
||
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
|
||
\
|
||
# verify the signature
|
||
export GNUPGHOME="$(mktemp -d)"; \
|
||
for server in $(shuf -e ha.pool.sks-keyservers.net \
|
||
hkp://p80.pool.sks-keyservers.net:80 \
|
||
keyserver.ubuntu.com \
|
||
hkp://keyserver.ubuntu.com:80 \
|
||
pgp.mit.edu) ; do \
|
||
gpg --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \
|
||
done && \
|
||
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
|
||
rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
|
||
\
|
||
chmod +x /usr/local/bin/gosu; \
|
||
# verify that the binary works
|
||
gosu nobody true; \
|
||
\
|
||
apt-get purge -y --auto-remove $fetchDeps
|
||
|
||
# add mongo repo
|
||
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 \
|
||
&& echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" >> /etc/apt/sources.list.d/mongo.list
|
||
|
||
|
||
# install packages
|
||
RUN apt-get update && apt-get install -y \
|
||
binutils \
|
||
jsvc \
|
||
mongodb-org-server \
|
||
openjdk-8-jre-headless \
|
||
--no-install-recommends \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# unifi version
|
||
# From: https://www.ubnt.com/download/unifi/
|
||
ENV UNIFI_VERSION "5.11.39"
|
||
|
||
# install unifi
|
||
RUN apt-get update && apt-get install -y \
|
||
curl \
|
||
--no-install-recommends \
|
||
&& rm -rf /var/lib/apt/lists/* \
|
||
&& curl -o /tmp/unifi.deb -L "http://dl.ubnt.com/unifi/${UNIFI_VERSION}/unifi_sysvinit_all.deb" \
|
||
&& dpkg -i /tmp/unifi.deb \
|
||
&& rm -rf /tmp/unifi.deb \
|
||
&& echo "Build complete."
|
||
|
||
WORKDIR /config
|
||
|
||
# 3478 - STUN
|
||
# 8080 - device inform (http)
|
||
# 8443 - web management (https)
|
||
# 8843 - guest portal (https)
|
||
# 8880 - guest portal (http)
|
||
# 6789 - throughput / mobile speedtest (tcp)
|
||
# 10001 - device discovery (udp)
|
||
# ref https://help.ubnt.com/hc/en-us/articles/218506997-UniFi-Ports-Used
|
||
EXPOSE 3478/udp 8080 8081 8443 8843 8880 6789 10001/udp
|
||
|
||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||
|
||
ENTRYPOINT [ "entrypoint.sh" ]
|
||
CMD ["java", "-Xmx1024M", "-jar", "/usr/lib/unifi/lib/ace.jar", "start"]
|