我了解基本的 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 的相關影片。
很抱歉格式有點亂……我回覆時才發現。
如果有人願意協助我建立遠端連線,我願意付費。