Unifi Network ApplicationのDocker化について

私は基本的なContainer Stationについては理解しており、いくつかデプロイもしています。しかし、Unifi Network Application(現在バージョン10.0.162)にはMongoDBが必要であり、さらにUnifi Network Applicationが使用するためのデータベースの初期化や、ユーザー名・パスワードの設定も必要です。現在のセットアップはRaspberry PI4Bで、完全なバックアップもあります。

私のセットアップはTVS-H1688で、4つの2.5GB/sインターフェースをLACPラググループとしてまとめ、2つの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を追加すれば、QNAP上で直接動作するネイティブのUnifiアプリケーションがあります。コンテナで実行する必要はありません。

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}

${QNET_INTERFACE}はsshでifconfigコマンドを使って確認できます。

ただし、このコンテナ/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」のようですが、やりたいことが2つあります。

1.) ボリュームの場所をどうやって特定するのか?
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 #オプション
  • MEM_STARTUP=1024 #オプション

- MONGO_TLS= #オプション

- MONGO_AUTHSOURCE= #オプション

volumes:
  - /home/ubuntu/docker/unifi-controller:/config  ←どこにすればいいか要確認
ports:
  - 8443:8443
  - 3478:3478/udp
  - 10001:10001/udp
  - 8080:8080
  - 1900:1900/udp #オプション
  - 8843:8843 #オプション
  - 8880:8880 #オプション
  - 6789:6789 #オプション
  - 5514:5514/udp #オプション
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(ポータイナー)を問題なく起動でき、その後はそのまま進めることができます。
長期的にはその方が楽になるでしょう。

UniFiアプリを必ずDockerコンテナで実行する必要がありますか? 上述した通り、MyQNAP.orgリポジトリにはUniFiコンソール用の「ネイティブ」アプリがすでにあります。コンテナをセットアップしてからアプリをインストールするよりも、はるかに簡単です…

8080はコンソール用に使用しているため応答せず、可能であればコンテナとして利用したいと考えています。

これをもっとよく理解しようと思います。私は、一度見て仕組みが分かれば学べるタイプです。ただ、Qnap Container Stationを使った動画が全くありません。

フォーマットについてはすみません…返信ボタンを押したときに気付きました。

もし誰かがリモートセッションで手伝ってくれるのであれば、報酬をお支払いする意思があります。

QNAP NASでDockerを使ってUniFi Networkアプリケーションをデプロイする方法 | QNAP