Docker-composeによるnodeBBのインストール

2023年2月4日

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はサポートされていないようだ。

未分類

Posted by ysugimura