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

すみません。思った通りには動作しませんでしたが、どうやら私のPIに入っているバージョンに合わせてアップデートされたようです。

そのバージョンをインストールしようとすると、どの仮想スイッチを使うか選択するオプションが表示されません。デフォルトでVirtual Switch 5(アダプター1+2+3+4、VLAN 253でタグ付けされており、これは私のIoTネットワークです)になってしまいますが、これは間違ったサブネットです。本当はVirtual Switch 1(アダプター1+2+3+4、タグなし)にインストールしたいのですが、MondoやUniFi Network APをインストールするときに、どのアダプターセットやどの仮想スイッチに割り当てるかを設定する方法が分かりません。これが解決できれば、もしかするとこの方法でいけるかもしれません。

Dockerとcompose、そしてqnetについてはすでに上で言及されています

「ネットワーク」と「仮想スイッチ」内で使用する仮想スイッチを変更できるはずです。

それはわかっているのですが、どうやればいいのか脳がうまく理解できません。誰かに助けてもらうためにお金を払っても構わないと思っています。YouTubeの動画を見たり、誰かがやっているのを見て学ぶのは得意なんですが、残念ながら、YouTubeにはUnifiサーバーについてステップバイステップで説明しているものが本当にありません。

Tautulliコンテナのアップデート方法がどうしても理解できず、でもどうしてもアップデートしたいんです。

コンテナを作成したら、Network and Virtual Switch を開きます。下部の「Advanced」ボタンをクリックしてください:

次に、Virtual Switch へ移動します:

作成したすべての仮想スイッチとネットワークが表示されます。使用したい(あなたのコンテナが接続されている)ものを選択し、右側の三つの点をクリックします。メニューが表示されるので「Configure(設定)」を選択してください。新しいウィンドウが開きます:

この仮想ネットワークで使いたいアダプターを選択します。私は今、Adapter 1 から Adapter 3 に変更しました。

ほかに必要なネットワーク設定を確認して、最後に「適用」してください。これでコンテナネットワークは新しく選んだアダプターに接続されます…

QNAPのWebインターフェースを8080以外に変更するには、Control Panel(コントロールパネル) / General Settings(一般設定)に行き、システムポートを好きな番号に変更します。

この説明が役立ったかどうか、ぜひ教えてください。

その点は理解していますし、あなたのスクリーンショットも素晴らしいですが、Unifi Network Server には MongoDB コンテナも必要なんです。

MongoDB は YAML で設定する必要があります。YAML で IP アドレスを定義している例を見たことがありますが、ご利用のセットアップで何が必要かは分かりません。参考までに、MariaDB のインスタンスを使用する Vikunja インストール時の私の YAML を載せておきます:

services:
  vikunja:
    image: vikunja/vikunja:latest
    stdin_open: true
    tty: true
    user: "0:0"
    dns: 192.168.0.4
    environment:
      VIKUNJA_SERVICE_PUBLICURL: http://192.168.0.3:3456
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: ********
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: <a super secure random secret>
      VIKUNJA_SERVICE_ENABLETASKATTACHMENTS: true
      VIKUNJA_SERVICE_ENABLEEMAILREMINDERS: true
      VIKUNJA_MAILER_ENABLED: true
      VIKUNJA_MAILER_AUTHTYPE: login
      VIKUNJA_MAILER_FORCESSL: false
      VIKUNJA_MAILER_SKIPTLSVERIFY: true
      VIKUNJA_MAILER_HOST: IP.IP.IP.IP
      VIKUNJA_MAILER_PORT: 587
      VIKUNJA_MAILER_USERNAME: emailaddy@host.com
      VIKUNJA_MAILER_PASSWORD: some_stupid_password
      VIKUNJA_MAILER_FROMEMAIL: emailaddy@host.com
      VIKUNJA_SERVICE_TIMEZONE: America/Chicago
    ports:
      - 3456:3456
    volumes:
      - /share/Container/vikunja/files:/app/vikunja/files
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped
    
  db:
    image: mariadb:10
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: **********
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: **********
      MYSQL_DATABASE: vikunja
    volumes:
      - /share/Container/vikunja/db:/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "mysqladmin ping -h localhost -u $$MYSQL_USER --password=$$MYSQL_PASSWORD"]
      interval: 2s
      start_period: 30s

すべて自動でやってくれます。自分では何もする必要がありません……。