Important
本リポジトリは fukumen/p2-php(deploy/docker-rep2)へ統合されました。archive につき以後更新されません。
- 既存イメージを利用している場合: イメージ URL(
ghcr.io/fukumen/rep2等)は不変のため、そのまま継続して利用・更新できます。compose ファイルは fukumen/p2-php の README(deploy/docker-rep2)の取得手順に従ってください(本リポジトリの compose ファイルは更新停止) - イメージを自分でビルドしている場合:
fukumen/p2-phpを clone し、deploy/docker-rep2で./build.pyを実行してください - docker-rep2-win 利用者: 対応不要です(イメージ取得は継続。プログラム更新時に新 URL へ切り替わる予定です)
- 更新通知(updatan_haahaa)有効環境: 統合後の新イメージに更新するまで、通知が消える/誤って出ることがあります。新イメージ適用後に解消します
以下のソフトのdockerコンテナを作成するDockerfileとdocker-compose.ymlです。 pen/docker-rep2のフォークです。
- rep2
- 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ビルドしたい場合は ./build.py --help を参照してください。
標準ではカレントディレクトリの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コンパチ
HTTPリクエストをproxy経由で解析・デバッグしたい場合はdoc/mitmproxy.mdを参照してください。
PHP8に対応したmikoim/p2-phpをフォークしたfukumen/p2-phpを使用しています。 変更したい場合はdocker-compose.ymlを編集してください。
fukumen/p2-phpを使用する場合、「認証関係のハッシュや暗号化を強化」により、environmentにSECRET_KEYの設定が必要です。ホストで openssl rand -hex 32 を実行した結果を記載してください。
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 を参照してください。
実バージョンはGitHub Packagesのrep2パッケージページで確認できます。
docker-compose.ymlを編集してしまってもよいですが、docker-compose.override.ymlを別途用意してそちらに記載した方がgit pullをしたときにコンフリクトも起きないのでオススメです。
通常のビルドではgithubのrep2を直接参照してビルドしますが、デバッグ用のビルドではdocker-compose.debug.ymlで指定したパスにrep2のソースコードをgit cloneしておき、そのソースコードをコンテナに格納します。
また、以下のようなvscodeのワークスペースファイルを用意してください。
{
"folders": [
{
"path": "p2-php"
},
{
"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/
ソースコードが用意できたら以下のように実行してください。
./build.py build-base
./build.py build
./build.py --noremote upこれらの用意をしてvscodeでrep2.code-workspaceを開いてください。
PHP Debug拡張機能を使ってrep2のデバッグが出来ます。
デバッグ付きイメージ (rep2-dbg) でビルドする場合は --debug を指定してください。既定はデバッグオフで、.env に REP2_BUILD_DEBUG=true と記載すると --debug を省略できます。
リモートホストで操作する場合は、.env にリモート先を記載してください。
REP2_REMOTE_HOST=rep2
REP2_REMOTE_PATH=docker-rep2
REP2_REMOTE_HOST と REP2_REMOTE_PATH の両方が設定されている場合にのみ --remote が機能します(未設定または片方のみの場合はエラーになります)。up / down / pull / logs / exec / config / update / confdiff / prune は既定でリモート実行です。
2026年1月の途中から今まで使っていたrep2でsubject.txtが取れなくなってしまったのでいろいろやるついでにいつのまにかコンテナ化も更新したいってことで作成。
ma8ma/2chproxy.plを使えばsubject.txtの件は解決するとは分かったのですが、書き込みが出来ないことの解決はハマりました。 決定的な原因がどれかわからないままですが、5chのread.cgiからの書き込みとなるべく近くなるようにfukumen/p2-phpは修正しています。
なお、fukumen/2chproxy.plの方はほぼma8ma/2chproxy.plから変わっていません。 docker-rep2への2chproxy.plのインテグレーションは廃止しています。既存のdataでproxy_useを「する」にしてproxy_host: 127.0.0.1 / proxy_port: 8080を設定している場合は、「しない」に変更してください。
5chでスレ読んでテストスレに書くぐらいの確認しかししていません。 スレ立てはホスト規制の表示まではいけたのでたぶん大丈夫?