# UniFi This is a Docker image of UniFi SDN controller based on `openjdk:8-jre-slim` ## Tags Container is created for each stable UniFi release and tagged as vX.X.X. `:latest` tag is for the latest stable release (currently 5.11). `:lts` tag is for the latest 5.6 LTS release. ## Usage ```bash docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ jacekkow/unifi ``` UniFi interface should be available at https://127.0.0.1:8443/ (first run wizard is opened if the instance is unconfigured). By default it uses Docker data volume for persistence. You can update such installation by passing `--volumes-from` option to `docker run`: ```bash docker pull jacekkow/unifi docker stop unifi docker rename unifi unifi-old docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ --volumes-from unifi-old \ jacekkow/unifi docker rm -v unifi-old ``` ### Local storage If you prefer to have direct access to container's data from the host, you can use local storage instead of data volumes: ```bash docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ -v /srv/unifi/data:/usr/lib/unifi/data \ --user root \ jacekkow/unifi ``` `/srv/unifi/data` directory will be automatically populated with default configuration if necessary. File ownership is recursively changed to `unifi:unifi` (`500:500`) on each start, provided the container is run as root (don't worry - unifi user will be used to start UniFi). ### Captive portal and STUN Using captive portal requires forwarding of additional ports (8880 and 8843): ```bash docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ -p 8880:8880 -p 8843:8843 \ jacekkow/unifi ``` For STUN (NAT traversal) UDP port 3478 must be available: ```bash docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ -p 3478:3478/udp \ jacekkow/unifi ``` Note that STUN was not tested in container-based environment! This port is also not exposed in Dockerfile. ### Configuration You can configure the instance by editing files in directory /usr/lib/unifi/data inside the container (or appropriate host dir if local storage is used). By default the JVM is started with option `-Xmx1024m`. You can override this default using `JAVA_OPTS` environment variable: ```bash docker run -d --name=unifi \ -p 8080:8080 -p 8443:8443 \ -e "JAVA_OPTS=-Xmx512m" \ jacekkow/unifi ```