以下のソフトのdockerコンテナを作成するDockerfileとdocker-compose.ymlです。 pen/docker-rep2のフォークです。
- rep2
- 2chproxy.pl
- caddy + PHP 他
git, docker, docker composeなどが必要です。
そのままの設定で使うなら以下を実行すればコンテナをプルして起動までしてくれます。 標準ではポート番号は10088です。 変更したい場合はdocker-compose.ymlを編集してください。
git clone https://github.com/fukumen/docker-rep2.git
cd docker-rep2
docker compose up -dビルドしたい場合はMakefileを参考にしてください。
標準ではカレントディレクトリのrep2-dataにrep2のdataやconf、caddyのcaddy_configやcaddy_dataが格納されます。 変更したい場合はdocker-compose.ymlを編集してください。
初回起動時にデフォルト設定 (conf.orig) から現在の設定 (conf) へ設定ファイルがコピーされます。その後のアップデート時には、以下の項目のみが自動的にマージ・更新されます。
conf.inc.php内のp2version: 自動的に最新のパッケージ版に更新されます。conf_user_def*: これらのファイルは常に最新版で上書きされます。- 新規追加ファイル: 自動的に追加されます。
それ以外は自動でマージされません。設定項目の追加や変更があった場合には、手動でマージする必要があります。
以下のコマンドで、デフォルト設定 (conf.orig) と現在の設定 (conf) の差分を確認できます。
docker compose exec rep2php8 diff /var/www/conf.orig /ext/conf | iconv -f SHIFT_JIS -t UTF-8-のみの行が表示表示されているようならリポジトリ側で追加されているのでマージが必要です。 fukumen/p2-phpを使用しているのであればconfの変化点を参考に作業してください。
fukumen/p2-phpを使用する場合、「認証関係のハッシュや暗号化を強化」によりp2_auth_user.phpとconf_user.srd.cgiが従来のrep2では全く読めなくなります。バックアップをとっておいてください。
rep2を以下の設定で使う想定です。
proxy_use: しない
use_https: する
2ch_to_5ch: する
http_post_method: HTTP_Request2コンパチ
2chproxy.plは動いていても使わずに直接5chに接続するようになります。
rep2を以下の設定で使う想定です。
proxy_use: する
proxy_host: 127.0.0.1
proxy_port: 8080
use_https: しない
2ch_to_5ch: する
http_post_method: HTTP_Request2コンパチ
2ch_ssl.subjectと2ch_ssl.postをするにしていると2chproxy.plがほぼ土管になって2chproxy.plの使いたい機能が使えません。
なお、2chproxy.plはデバッグに便利なのでdocker-rep2に残していますが、fukumen/p2-phpであればrep2側で過去ログ倉庫のスクレイピングも実装済みのため、現時点ではproxyは不要になっているはず。 但し、5ch以外はテスト出来ていないのでトラブルが起きる可能性はあります。
PHP8に対応したmikoim/p2-phpをフォークしたfukumen/p2-phpを使用しています。 変更したい場合はdocker-compose.ymlを編集してください。
fukumen/p2-phpを使用する場合、「認証関係のハッシュや暗号化を強化」により、environmentにSECRET_KEYの設定が必要です。ホストで openssl rand -hex 32 を実行した結果を記載してください。
5chはいつでもhttps接続に対応したma8ma/2chproxy.plをフォークしたfukumen/2chproxy.plを使用しています。 変更したい場合はdocker-compose.ymlを編集してください。
また、2chproxy.plの設定をdocker-compose.ymlに記載できます。 environmentに設定名にNCPX_を頭に付けて記載してください。
memory_limitを変更したいなどの理由でphp.iniの設定したい場合、php-local.iniのようなファイルを用意してdocker-compose.ymlでバインドマウントするよう記載してください。
memory_limitはデフォルトで128Mになっています。docker compose logsを確認してAllowed memory size of〜のようなエラーが出る場合には設定してください。
メモリ消費量を計測したいときはphp-fpm.confを変更したい場合、www-local.confのようなファイルを用意してdocker-compose.ymlでバインドマウントするよう記載してください。
標準構成でも基本的な機能(SQLite, GD)は利用可能です。
さらに以下の機能を使用したい場合、docker-compose.extra.ymlを参考にdocker-compose.override.ymlを用意しておくことで、各種追加機能を含む「全部入り」イメージ rep2-extra を使用してください。
- ImageMagickを使用したい場合
- AASを使用したい場合
- Exif表示を使用したい場合
- PostgreSQLやMySQLを使用したい場合
- IC2のZIPで一括ダウンロードを使用したい場合
- RSSリーダー機能(デフォルト無効)をしたい場合
外部データベース(PostgreSQL/MySQL)の具体的な設定方法については、doc/database.md を参照してください。
rep2への接続はHTTP接続とHTTPS接続が選べます。デフォルトではホスト側のポート10088でHTTP接続として待ち受けます。ポート番号を変更したい場合は、.env ファイルを作成して REP2_PORT=80 のように記載するか、docker-compose.yml を直接編集してください。
HTTPS接続を有効にしたい場合や証明書に関する設定については、doc/caddy.md を参照してください。
ALPINE 3.23
PHP 8.5
CADDY 2.11
COMPOSER 2.9.4
新しそうなのを集めたので気分はいいけどかなり怪しい世界。
docker-compose.ymlを編集してしまってもよいですが、docker-compose.override.ymlを別途用意してそちらに記載した方がgit pullをしたときにコンフリクトも起きないのでオススメです。
通常のビルドではgithubのrep2と2chproxy.plを直接参照してビルドしますが、デバッグ用のビルドではdocker-compose.debug.ymlで指定したパスにrep2と2chproxy.plのソースコードをgit cloneしておき、そのソースコードをコンテナに格納します。
また、以下のようなvscodeのワークスペースファイルを用意してください。
{
"folders": [
{
"path": "p2-php"
},
{
"path": "2chproxy.pl"
},
{
"path": "docker-rep2"
}
],
"settings": {
"files.autoGuessEncoding": true
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/vendor/pear-pear.php.net/HTTP_Request2/HTTP/": "${workspaceFolder:HTTP_Request2}/HTTP",
"/var/www": "${workspaceFolder:p2-php}",
"/ext": "${workspaceFolder:docker-rep2}/rep2-data"
}
}
]
}
}まとめると以下のようなディレクトリ構成としてください。
projdir/
rep2.code-workspace
docker-rep2/
p2-php/
2chproxy.pl/
ソースコードが用意できたら以下のように実行してください。
./build.py build-base
./build.py build
./build.py --noremote upこれらの用意をしてvscodeでrep2.code-workspaceを開いてください。 PHP Debug拡張機能を使ってrep2のデバッグが出来ます。 Makefileにこれらのコマンドも入れてあるのでそちらを使うと便利です。
2026年1月の途中から今まで使っていたrep2でsubject.txtが取れなくなってしまったのでいろいろやるついでにいつのまにかコンテナ化も更新したいってことで作成。
ma8ma/2chproxy.plを使えばsubject.txtの件は解決するとは分かったのですが、書き込みが出来ないことの解決はハマりました。 決定的な原因がどれかわからないままですが、5chのread.cgiからの書き込みとなるべく近くなるようにfukumen/p2-phpは修正しています。
なお、fukumen/2chproxy.plの方はほぼma8ma/2chproxy.plから変わっていません。
5chでスレ読んでテストスレに書くぐらいの確認しかししていません。 スレ立てはホスト規制の表示まではいけたのでたぶん大丈夫?