Vagrantを使用してUbuntu 24.04上にDocker環境を自動構築するプロジェクトです。 Ansibleを使用して必要なソフトウェアのインストールと設定を行い、BBSシステム NodeBB を実行するための環境を構築します。
- OS: Ubuntu 24.04 (bento/ubuntu-24.04)
- Docker: geerlingguy.docker ロールによるインストール
- タイムゾーン: Asia/Tokyo
- SSL/TLS: 自己署名証明書によるHTTPS接続
| コンテナ | 説明 |
|---|---|
| NodeBB | BBSシステム(公式Dockerイメージ、ポート4567) |
| Nginx | リバースプロキシ/Webサーバー(HTTPS対応) |
| MongoDB | データベースサーバー |
| Redis | キャッシュ/セッションサーバー |
- VirtualBox がインストールされていること
- Vagrant がインストールされていること
- 十分なメモリ(最低2GB)と空きディスク容量があること
.
├── README.md # このファイル
├── Vagrantfile # Vagrant設定ファイル
└── playbooks/ # Ansibleプレイブック
├── main.yml # メインプレイブック
├── requirements.yml # 必要なロールの定義
├── vars/ # 変数定義
│ └── main.yml # メイン変数ファイル
├── tasks/ # タスク定義
│ ├── japanese.yml # 日本語環境設定
│ ├── redis.yml # Redisコンテナ構築
│ ├── mongodb.yml # MongoDBコンテナ構築
│ ├── nginx.yml # Nginxコンテナ構築
│ └── nodebb.yml # NodeBBコンテナ構築
└── containers/ # コンテナ設定
├── mongodb/ # MongoDB用Dockerfile等
├── nginx/ # Nginx用設定ファイル等
├── nodebb/ # NodeBB用setup.json、install-data(日本語初期データ)、language(日本語リソース)
└── redis/ # Redis用Dockerfile等
仮想マシンには固定IPアドレス 192.168.33.10 が設定されます。
必要に応じて Vagrantfile の config.vm.network の設定を変更してください。
- リポジトリをクローンする
- 以下のコマンドを実行してVirtualBox上に環境を構築
vagrant up環境構築後、以下のいずれかの方法で仮想マシンに接続できます。
- Vagrantから接続:
vagrant ssh- SSHで直接接続:
※デフォルトパスワード: vagrant
接続後、以下のコマンドでrootユーザーに切り替えることができます。
sudo su -環境構築後、仮想マシン内で以下のコマンドでコンテナの状態を確認できます。
docker ps # 実行中のコンテナ一覧
docker logs nodebb # NodeBBコンテナのログ
docker logs nginx # Nginxコンテナのログ
docker logs mongodb # MongoDBコンテナのログ
docker logs redis # RedisコンテナのログMongoDBの初期設定は以下の通りです(playbooks/vars/main.yml で変更可能):
| 項目 | 値 |
|---|---|
| rootユーザー | root |
| rootパスワード | root_password |
| データベース名 | nodebb |
| NodeBBユーザー名 | nodebb |
| NodeBBパスワード | nodebb_password |
接続URI: mongodb://nodebb:nodebb_password@mongodb:27017/nodebb
playbooks/vars/main.ymlを編集することで、コンテナ名やDB設定を変更できますplaybooks/main.ymlを編集することで、追加のパッケージやタスクを追加できますVagrantfileのvb.memoryを編集して、仮想マシンのメモリ割り当てを変更できます
この環境では、NginxがHTTPS(ポート443)でリッスンし、自己署名SSL証明書を使用してセキュアな接続を提供します。
HTTPポート(80)へのアクセスは自動的にHTTPS(443)にリダイレクトされます。
自己署名証明書を使用しているため、ブラウザで初回アクセス時に「安全ではありません」という警告が表示されます。 これは開発環境では正常な動作です。以下の手順で続行できます:
- ブラウザで
https://192.168.33.10にアクセス - 「詳細設定」または「Advanced」をクリック
- 「安全ではないページに移動」または「Proceed to 192.168.33.10 (unsafe)」をクリック
初回起動時、NodeBBは config.json が存在しないため Webインストーラー を起動します。
- ブラウザで
https://192.168.33.10にアクセス - Webインストーラーが表示されたら、以下の項目を入力:
- サイトURL:
https://192.168.33.10を正確に入力(アクセスするURLと一致させること) - データベース: MongoDB を選択
- MongoDBホスト:
mongodb(コンテナ名) - MongoDBポート:
27017 - MongoDBユーザー名:
nodebb - MongoDBパスワード:
nodebb_password(vars/main.ymlのmain_db_passwordの値) - MongoDBデータベース名:
nodebb - Redisホスト:
redis(セッション/キャッシュ用)
- サイトURL:
- セットアップ完了後、管理者アカウントを作成
- フォーラムの利用を開始
- サイトURLは、実際にアクセスするURLと一致してください。誤ったURLを入力すると、リダイレクトやアセット読み込みに問題が発生します。
- セットアップ完了後、
config.jsonが/docker/nodebb/config/に自動生成され、以降は自動起動します。
初回セットアップ時に、カテゴリ(お知らせ、フリートーク、ブログ、コメント・フィードバック)やウェルカム投稿を日本語で作成するように設定されています。設定ファイルは playbooks/containers/nodebb/install-data/ にあり、ボリュームマウントでコンテナ内の install/data/ を上書きしています。日本語UIリソースは playbooks/containers/nodebb/language/ja/ にあり、プロビジョニング時に /docker/nodebb/language へコピーしてからボリュームマウントされます。
注意: この設定は初回セットアップ時のみ有効です。既にNodeBBをセットアップ済みの場合は反映されません。日本語の初期データでやり直すには、/docker/nodebb/config/config.json を削除し、MongoDBの nodebb データベースを削除してから再セットアップしてください。
ネットワーク設定に問題が発生した場合は、Vagrantfile の IPアドレスを
使用環境に合わせて変更してください。
VirtualBoxの設定や競合を確認し、必要に応じてVirtualBoxを再起動してください。
vagrant provision/docker/nodebb/config/config.json を削除してから再起動すると、Webインストーラーが再度表示されます。
NodeBBコンテナは UID 1001 で動作します。既存環境でこのエラーが出る場合は、以下で権限を修正してから vagrant provision を再実行してください。
vagrant ssh
sudo chown -R 1001:1001 /docker/nodebb/build /docker/nodebb/uploads /docker/nodebb/config
exit
vagrant provision