Docker-composeによるnodeBBのインストール
Docker-composeを使ってnodeBBをインストールしてみた。
うまく行ったリポジトリ
オフィシャルではない、nibrev/nodebbというリポジトリがうまく動作した。
この中のdocker-compose.ymlを流用した。
※ただし、問題としては、バージョンがかなり古いことである。
version: '3.1'
services:
nodebb:
image: ghcr.io/rez0n/nodebb:latest
restart: unless-stopped
environment:
URL: "http://localhost"
DATABASE: "redis"
DB_NAME: "0"
DB_HOST: "redis"
DB_PORT: "6379"
volumes:
- ./data/nodebb:/data
networks:
- nodebb
ports:
- "4567:4567"
redis:
image: redis
restart: unless-stopped
volumes:
- ./data/redis:/data
networks:
- nodebb
networks:
nodebb:
driver: bridge
もちろん、実際には自分の環境に合わせて変更してある。特に、URLはこのnodebbの外側から見たURLなので、例えばhttps://nodebb.example.comのようにする(らしい)。
※実際には、nodebbのconfig.json内に転送されるのだが、The NodeBB Config (config.json)に説明があるものの、何のためにこの設定が必要なのか不明。
docker-compose.ymlを修正したら、docker-compose up -dで起動し、docker-compose logs -fでログを見ていると、途中で次のような行が表示されるので注意。
nodebb | An administrative user was automatically created for you:
nodebb | Username: admin
nodebb | Password: ********
これが初期の管理者アカウントになる。
若干の設定
管理者の場合、一般のユーザには表示されないギアアイコンが表示されるので、そこから管理タスクを実行できる。
settings>Languagesでデフォルト言語を選択でき、Auto Detectをやめさせることができる。右下のセーブアイコンをクリックしないと設定がセーブされないことに注意。
日本語になった設定>Users>ユーザ登録にて登録タイプを「登録なし」にする。こうすると、管理者がユーザ名とパスワードを作って配布することになる。右下のセーブアイコンをクリックする。
新たなユーザ作成には、管理>ユーザに行き、右下の+ボタンをクリックする。メアドを入力する必要はない。
トラブル
これでしばらく運用できていないのだが、ある日突然動作しなくなってしまった。トップ画面からログインもできない状態になる。
しばし悩んだが、解消方法は簡単だった。このインストールが勝手に何らかの目的のボリュームを作成しており、目的が不明なのだが、そのボリュームを削除するだけだった。
いったんこれを停止し、Portainerで見てみると、未利用のボリュームというのがあるので、これをすべて削除し、その後に再起動する。
vimagick/nodebb
vimagick/nodebbは動作するにはするのだが、一つ問題がある。コンテナを再起動すると、初期化画面に戻ってしまうのである。大した入力項目ではないし、掲示板データは残っているので、めったに再起動しない実運用では問題無いのだろうが、厄介なのでやめた。
docker composeを使って「nodeBB」を構築するまでの手順も、このリポジトリを利用したものだ。
本家のもの
おそらく、https://github.com/NodeBB/NodeBB/blob/master/docker-compose.ymlが本家のものなのだろうが、これだけでは動作しない。別途Dockerfileが必要になるのだが、バージョンが全く異なるのか、さっぱり動かない。
これを動かすのは断念した。
後に再度ためそうと以下を記述してやってみた。
version: '3.1'
services:
nodebb:
container_name: nodebb
image: nodebb/docker:2.8
restart: unless-stopped
environment:
URL: "https://nodebb.example.com"
DATABASE: "redis"
DB_NAME: "0"
DB_HOST: "redis"
DB_PORT: "6379"
volumes:
- ./data/nodebb:/data
# networks:
# - nodebb
# ports:
# - "4567:4567"
labels:
- "traefik.enable=true"
- "traefik.http.routers.nodebb.rule=Host(`nodebb.example.com`)"
- "traefik.http.routers.nodebb.entrypoints=websecure"
- "traefik.http.routers.nodebb.tls.certresolver=myresolver"
- "traefik.http.services.nodebb.loadbalancer.server.port=4567"
- "traefik.http.routers.nodebb-http.entrypoints=web"
- "traefik.http.routers.nodebb-http.rule=Host(`nodebb.example.com`)"
- "traefik.http.routers.nodebb-http.middlewares=nodebb-https"
- "traefik.http.middlewares.nodebb-https.redirectscheme.scheme=https"
redis:
container_name: nodebb_redis
image: redis
restart: unless-stopped
volumes:
- ./data/redis:/data
# networks:
# - nodebb
#networks:
# nodebb:
# driver: bridge
networks:
default:
external:
name: traefik-network
redisは無視され、初期画面ではMongoDBを指定しろと言ってくる。最新バージョンではRedisはサポートされていないようだ。