Unifi Controller Docker with external MongoDB container
-
Here I describe how you connect the Unifi Controller to external Database.
At first you need the MongoDB Container.
create docker-compose.yml in folder mongodb where you want it:
services: mongo: image: 'mongo:4.4' restart: unless-stopped ports: - '27017:27017' environment: MONGO_INITDB_ROOT_USERNAME: test MONGO_INITDB_ROOT_PASSWORD: password MONGO_INITDB_DATABASE: test volumes: - mongo-data:/data/db volumes: mongo-data:
Then you need to create User for Unifi Controller like this:
use unifi db.createUser( { user: "unifi", pwd: "password", // or cleartext password roles: [ { role: "readWrite", db:"admin" } , { role: "readWrite", db:"unifi" } , { role: "readWrite", db:"unifi_stat" } ] } )
Now we can another folder called unifi and also create the docker-compose.yml
version: '2.3' services: controller: image: "jacobalberty/unifi:latest" container_name: unifi_controller init: true restart: always volumes: - dir:/unifi - data:/unifi/data - log:/unifi/log - cert:/unifi/cert - init:/unifi/init.d - run:/var/run/unifi # Mount local folder for backups and autobackups - ./backup:/unifi/data/backup user: unifi sysctls: net.ipv4.ip_unprivileged_port_start: 0 environment: # DB_URI: mongodb://mongo/unifi #STATDB_URI: mongodb://mongo/unifi_stat DB_URI: mongodb://unifi:password@89.58.43.67:27017/unifi?authSource=unifi STATDB_URI: mongodb://unifi:password@89.58.43.67:27017/unifi_stat?authSource=unifi DB_NAME: unifi ports: - "3478:3478/udp" # STUN - "5514:5514/tcp" # Remote Logging - "6789:6789/tcp" # Speed test - "8080:8080/tcp" # Device/ controller comm. - "8443:8443/tcp" # Controller GUI/API as seen in a web browser - "8880:8880/tcp" # HTTP portal redirection - "8843:8843/tcp" # HTTPS portal redirection - "10001:10001/udp" # AP discovery logs: image: bash container_name: unifi_logs depends_on: - controller command: bash -c 'tail -F /unifi/log/*.log' restart: always volumes: - log:/unifi/log volumes: data: log: cert: init: dir: run: