Unifi Network Application Docker?

我了解基本的 Container Station 並已經部署了幾個容器。不過,Unifi Network Application(目前版本為 10.0.162)需要 MongoDB,還需要初始化資料庫供 Unifi Network Application 使用,並設置使用者名稱和密碼。我的現有環境是 Raspberry PI4B,並且有完整備份。

我的新環境是 TVS-H1688,我正在使用四個 2.5GB/s 介面作為 LACP 聚合組,並且通過兩個 VLAN 進行中繼,VLAN 250 我想用於這個應用,並連接到 Virtual Switch 1。另一個 VLAN(Virtual Switch 5)是我的 IoT VLAN,因為我計劃最終將 Home Assistant 從 Raspberry PI4B 遷移過來。

我現在很困惑該把 YAML 檔案放在哪裡來建立容器,以及該如何決定儲存空間的位置、如何分配 Virtual Switch 1,還有靜態 IP、子網路遮罩、預設閘道和 DNS 伺服器要怎麼設定。

我想應該有人嘗試過這樣的配置。先謝謝大家的協助。

我有一個更簡單的解決方案。如果你在 App Center 的儲存庫中加入 MyQNAP.org,會有一個原生的 Unifi 應用程式可以直接在 QNAP 上運行,無需在 Container(容器)中執行。

進入 App Center 的設定,新增 MyQNAP.org 儲存庫連結:

然後在「系統管理」下,你會找到 UniFi Controller(控制器)應用程式。

效果非常好。

@kahilzinger

我在 DockerHub 上找到了一個 UniFi 的 Docker 映像檔。

我不確定這是否符合你的需求,但我嘗試使用這個 YAML 檔案,在我這邊運作得很順利。

你可以參考看看,並將 $ 內的變數替換成你的 NAS 設定。

version: "3.8"

services:
  unifi:
    image: jacobalberty/unifi:latest
    container_name: unifi-controller
    restart: unless-stopped

    networks:
      qnet-network:
        ipv4_address: ${QNET_STATIC_IP}

    environment:
      TZ: ${TZ}

    volumes:
      - ${SHARE_FOLDER}/unifi:/unifi

networks:
  qnet-network:
    driver_opts:
      iface: ${QNET_INTERFACE}
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: ${QNET_INTERFACE}
      config:
        - subnet: ${QNET_SUBNET}
          gateway: ${QNET_GATEWAY}

你可以透過 ssh 以及 ifconfig 指令找到 ${QNET_INTERFACE}。

不過請注意,這個容器 / docker 映像檔是第三方應用程式,並非我們 QNAP 的產品,所以需要特別注意資料備份及穩定性。

====

version: "3.8"

services:
  unifi:
    image: jacobalberty/unifi:latest
    container_name: unifi-controller
    restart: unless-stopped

    networks:
      qnet-network:
        ipv4_address: 10.20.80.54

    environment:
      TZ: ${TZ}

    volumes:
      - /share/Container/unifi:/unifi

networks:
  qnet-network:
    driver_opts:
      iface: bond0
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: bond0
      config:
        - subnet: 10.20.80.0/23
          gateway: 10.20.80.254

我已經嘗試過這個方法,但 tcp/8080 之前被主控台佔用(最近已更改為其他埠),而我不知道 /inform 網頁會使用哪個埠,也不清楚如何將它改成 8080,因為現在我不再使用那個埠了。

有沒有辦法將這個應用程式移到我的其他網卡群組/虛擬交換器?

如果可以的話,我也想使用這個方法。看起來我想用的虛擬交換器是「qvs0」,不過我看到有兩件事情我想要做:

1.) 如何確定 volume(卷)的位置?
2.) 你必須安裝 MongoDB 並初始化它。

如果能找到人幫我做這些,我很樂意付費,因為我想學習,而且我在 Docker 方面是個超級新手,但我覺得未來在家庭自動化領域會經常用到。

以下是我找到並一直在嘗試理解的腳本:


version: “2.1”
services:
unifi-network-application:
image: lscr.io/linuxserver/unifi-network-application:latest
container_name: unifi-network-application
environment:

  • PUID=1000
  • PGID=1000
  • TZ=America/Chicago
  • MONGO_USER=unifi
  • MONGO_PASS=[[password]]
  • MONGO_HOST=unifi-db
  • MONGO_PORT=27017
  • MONGO_DBNAME=unifi
  • MEM_LIMIT=1024 #optional
  • MEM_STARTUP=1024 #optional

- MONGO_TLS= #optional

- MONGO_AUTHSOURCE= #optional

volumes:
  - /home/ubuntu/docker/unifi-controller:/config  <--需要搞清楚這裡的位置。
ports:
  - 8443:8443
  - 3478:3478/udp
  - 10001:10001/udp
  - 8080:8080
  - 1900:1900/udp #optional
  - 8843:8843 #optional
  - 8880:8880 #optional
  - 6789:6789 #optional
  - 5514:5514/udp #optional
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.unifi.entrypoints=http"
  - "traefik.http.routers.unifi.rule=Host(`unifi.jimsgarage.co.uk`)"
  - "traefik.http.middlewares.unifi-https-redirect.redirectscheme.scheme=https"
  - "traefik.http.routers.unifi.middlewares=unifi-https-redirect"
  - "traefik.http.routers.unifi-secure.entrypoints=https"
  - "traefik.http.routers.unifi-secure.rule=Host(`unifi.jimsgarage.co.uk`)"
  - "traefik.http.routers.unifi-secure.tls=true"
  - "traefik.http.routers.unifi-secure.service=unifi"
  - "traefik.http.services.unifi.loadbalancer.server.port=8443"
  - "traefik.http.services.unifi.loadbalancer.server.scheme=https"
  - "traefik.docker.network=proxy"
networks:  <--這裡要怎麼指定虛擬交換器和靜態 IP 資訊?
  proxy:
  unifi:
restart: unless-stopped

unifi-db:
image: docker.io/mongo:4.4
container_name: unifi-db
volumes:

  • /home/ubuntu/docker/unifi-controller-db:/data/db <–需要搞清楚這裡的位置。
  • /home/ubuntu/docker-compose/unifi-controller/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro <–需要搞清楚這裡的位置。
    networks: <–這裡需要靜態 IP 和虛擬交換器嗎?
    unifi:
    restart: unless-stopped

networks:
proxy:
external: true
unifi:

! 以下是初始化 MongoDB 資料庫的 JavaScript
!
! init-mongo.js
! db.getSiblingDB(“unifi”).createUser({user: “unifi”, pwd: “[[password]]”, roles: [{role: “dbOwner”, db: “unifi”}]});
! db.getSiblingDB(“unifi_stat”).createUser({user: “unifi”, pwd: “[[password]]”, roles: [{role: “dbOwner”, db: “unifi_stat”}]});

你真的需要使用預格式化文字區塊。

你需要使用應用程式分頁來匯出你的 compose.yaml。

volumes:hostPath:containerMountPoint

我用檔案瀏覽器建立了一個 docker/ 分享資料夾,所以對我來說一切都是:

[admin@TheVault arcane]# ls /share/docker/*
/share/docker/appdata:
NUTCase         jellyfin        portical-upnpc
arcane          kuma            qbittorrent
homepage        nutify          syncyomi

/share/docker/compose:
basic-app

/share/docker/scripts:
#secrets#

/share/docker/secrets:
#other secrets#

/share/docker/stacks:
NUTCase        homepage       pihole-qnet    qbittorrent    uptime-kuma
arcane         jellyfin       pocket-id      syncyomi       watchtower
dozzle         nutify         portainer-ce   tasmocompiler
[admin@TheVault arcane]#

要有心理準備會遇到 CS 限制,讓你的生活變得麻煩。

但 CS 可以順利啟動 Arcane/Dockge/Portainer,然後你就可以繼續操作了。
長遠來看,這可能會讓你的生活更輕鬆。

需要在 Docker 容器中運行 UniFi 應用程式嗎?如我上面所說,MyQNAP.org 倉庫上已經有 UniFi 控制台的「原生」應用程式。這比設置容器再安裝應用程式要容易得多……

因為8080沒有回應,因為我已經將8080用於主控台,如果可以的話,我會希望它是一個容器。

我會嘗試更好地理解這個。我是那種一旦看到實際操作和運作方式就能學會的人。只是目前還沒有使用 Qnap Container Station 的相關影片。

很抱歉格式有點亂……我回覆時才發現。

如果有人願意協助我建立遠端連線,我願意付費。

如何在 QNAP NAS 上透過 Docker 部署 UniFi Network 應用程式? | QNAP