使用 docker-compose 的简单 Unifi 控制器设置

更新 2022-12-24:添加了 --bind_ip 127.0.0.1 以防止在 network_mode: host 上下文中的远程 MongoDB 访问。感谢 Matt Johnson 的建议 :-)

此设置使用 network_mode: host 运行 MongoDB 和 unifi,这就是我们在非标准端口上运行 MongoDB 的原因(这样它不会干扰其他 MongoDB 实例)。这具有允许直接第 2 层网络访问以实现 L2 接入点采用的巨大好处。

创建一个目录如 /opt/unifi 并创建 docker-compose.yml

docker-compose.yml
services:
  mongo:
    image: mongo:3.6
    network_mode: host
    restart: always
    volumes:
      - ./mongo_db:/data/db
      - ./mongo/dbcfg:/data/configdb
    command: mongod --bind_ip 127.0.0.1 --port 29718
  controller:
    image: "jacobalberty/unifi:latest"
    depends_on:
      - mongo
    init: true
    network_mode: host
    restart: always
    volumes:
      - ./unifi_dir:/unifi
      - ./unifi_data:/unifi/data
      - ./unifi_log:/unifi/log
      - ./unifi_cert:/unifi/cert
      - ./unifi_init:/unifi/init.d
      - ./unifi_run:/var/run/unifi
      - ./unifi_backup:/unifi/data/backup
    environment:
      - DB_URI=mongodb://localhost:29718/unifi
      - STATDB_URI=mongodb://localhost:29718/unifi_stat
      - DB_NAME=unifi
  logs:
    image: bash
    depends_on:
      - controller
    command: bash -c 'tail -F /unifi/log/*.log'
    restart: always
    volumes:
      - ./unifi_log:/unifi/log

现在创建具有正确权限的目录:

setup_unifi_dirs.sh
mkdir -p unifi_backup unifi_cert unifi_data unifi_dir unifi_init unifi_log unifi_run
chown -R 999:999 unifi_backup unifi_cert unifi_data unifi_dir unifi_init unifi_log unifi_run

现在你可以使用我们来自在 10 秒内为你的 docker-compose 项目创建 systemd 服务的脚本在启动时自动启动控制器(并立即启动它):

install_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin

现在访问 https://<控制器 IP>:8443 以开始设置或导入备份。


Check out similar posts by category: Docker, Networking