common-php-my-admin
WIP(現在進行中)
Work In Progress
このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。
現在の状況
- 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com、SSL 済み)
- 完了済み: 多目的サーバーへのデプロイ、
blowfish_secret同期、README/CLAUDE.md 整備、両リポジトリの commit & push - 進行中: なし(一段落)
- 詰まっていること: なし
- 次の候補タスク:
- fail2ban / Basic 認証 / IP 制限の追加(phpMyAdmin へのブルートフォース対策)
config.inc.phpのAllowNoPassword = true(kizuna)の見直しnew-project-setupスキル側での.devnotes/作成組み込み(ユーザー側で対応判断、今セッションでは実施しない)
過去のWIPアーカイブ
(このセクションには、今後「現在の状況」を書き換える際に古いものが追記されていく。最新が上)
ROADMAP(計画)
ロードマップ
今週
(今週中にやりたいこと)
今月
(今月中にやりたいこと)
今四半期
(今四半期の目標)
いつか
- fail2ban 導入(phpMyAdmin へのブルートフォース対策)
- Basic 認証 または IP 制限の追加検討
-
config.inc.phpのAllowNoPassword = true(kizuna 接続)設定の見直し - 多目的サーバーのメモリ逼迫が顕在化したときの対応(Lightsail プランアップ等)
DECISIONS(意思決定)
意思決定記録
このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。
2026-04-25: phpMyAdmin のサーバー転送は Claude が担当する
背景: ローカルとサーバーで blowfish_secret を同期させた結果、今後 rsync するときの上書き挙動が論点になった。
決定: デプロイ作業はユーザー自身では行わず、Claude に依頼する運用とする。
理由: ユーザーが rsync を走らせないなら、secret 差分やデプロイ手順の細かい管理を Claude に集約できる。毎回手順を思い出す必要もない。
2026-04-25: blowfish_secret はローカル・サーバー同値でコミットする
背景: サーバー側は 48 文字ランダム値、ローカルは 'hoge' のまま。rsync で上書きされる問題と、'hoge' は短すぎて phpMyAdmin が警告を出す問題があった。
決定: ローカルも同じ 48 文字値に揃えてコミットする(config.inc.php ごと git 管理)。
理由: blowfish_secret は Cookie 認証の暗号化鍵で、単体が漏れても直ちに悪用はできない(Cookie 本体とセットで初めて意味を持つ)。private リポジトリでもありリスク限定的。ユーザーが「漏れても大丈夫」と明示。これにより 'hoge' の起動時警告も解消され、rsync 上書き問題も消える。
2026-04-25: phpMyAdmin のアクセス制限は HTTPS のみ
背景: phpMyAdmin はブルートフォースの標的になりやすく、HTTPS + Basic 認証 + IP 制限の3点セットが定石。
決定: HTTPS のみ必須、Basic 認証・IP 制限はとりあえず入れない。
理由: まずは動かしたい、必要になってからでよい、という判断。固定 IP の要件もなし。ただし後追いで fail2ban 等の追加を検討する余地は残す(ROADMAP「いつか」)。
2026-04-25: 管理対象 DB は既存 RDS 群のみ、サーバーに MySQL を置かない
背景: 当初「多目的サーバーに phpMyAdmin を入れる」を「サーバーに新規 MySQL + phpMyAdmin」と誤解して MySQL Server をインストールしたが、実は config.inc.php に既存 RDS 4 件(絆 / FootballNEXT / BaseballNEXT / 怖い話)が登録済みだった。
決定: 多目的サーバー上に MySQL は立てず、phpMyAdmin は既存 RDS を管理する用途に特化する。インストール済み MySQL Server は purge する。
理由: Lightsail Nano(512MB RAM)で MySQL + PHP-FPM + 既存 Python アプリ 2 つを同居させるのは負荷が厳しい。RDS で十分、サーバー側に DB は不要。
DEVLOG(作業ログ)
開発日誌
このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。
2026-04-25
11:04 - phpMyAdmin を多目的サーバーに導入
やったこと:
- 多目的サーバー(Lightsail、13.230.63.19)の状態調査(PHP/MySQL 未インストールを確認)
- 2GB スワップファイル作成・永続化(
/swapfile、/etc/fstabに登録) - PHP 8.1 + php-fpm + 必要拡張(mysqli / mbstring / zip / gd / curl / xml / intl)インストール
- 誤ってインストールした MySQL Server を purge(メモリ逼迫回避・不要判明のため)
- Route53 の
mydb.ikapps.comA レコードを13.230.63.19に変更(ユーザーが実施、旧値 52.68.231.6) - ローカル
phpMyAdmin/一式を/var/www/phpmyadmin/に rsync 転送、所有者をwww-dataに config.inc.phpのblowfish_secretを 48 文字ランダム値に差し替え(サーバー側)- Nginx vhost 作成(
/etc/nginx/sites-available/mydb.ikapps.com) - certbot で Let's Encrypt SSL 証明書取得、HTTP → HTTPS リダイレクト設定
- HTTPS で phpMyAdmin ログイン画面を確認(
<title>phpMyAdmin</title>返却) - ローカル
config.inc.phpのblowfish_secretもサーバーと同値に揃えてコミット common-php-my-adminの README/CLAUDE.md を「(記入予定)」から実体に整備multi-purpose-lightsail-server1の README サービス一覧にmydb.ikapps.comを追記- 両リポジトリを commit & push(
7bdb6be、41d4e44) new-project-setupスキルが.devnotes/作成を手順に含んでいなかった件が発覚(ユーザー側のスキル description は更新、実対応はいったん見送り)
決めたこと:(詳細は DECISIONS.md)
- 管理対象 DB は既存 RDS 群のみ、サーバー側に MySQL を置かない
- phpMyAdmin のアクセス制限は HTTPS のみ(Basic 認証・IP 制限なし)
blowfish_secretは漏洩 OK 前提でローカル・サーバー同値をコミット- phpMyAdmin のサーバー転送は Claude が担当、ユーザーは自分で rsync しない
気づき:
- Lightsail Nano(416Mi RAM)は MySQL + PHP-FPM + 既存アプリ併用で厳しい。スワップ必須
- ローカルの
config.inc.phpに既に 4 RDS の接続先定義が入っており、「サーバーに新規 MySQL 立てる」は当初誤解だった。config.inc.php を先に読んでいれば早く気付けた
次回やること:
- fail2ban / Basic 認証 / IP 制限の追加検討
config.inc.phpのAllowNoPassword = true(kizuna 接続)設定の妥当性見直し
最近のコミット
README
common-php-my-admin
phpMyAdmin 5.2.3 で複数の RDS を一元管理するためのリポジトリ。多目的サーバー(https://mydb.ikapps.com)にデプロイされる。
接続先
- 絆(7ちゃんねる&パチスロ攻略まとめ)
- FootballNEXT
- BaseballNEXT
- 怖い話&間違えないで
すべて AWS RDS(東京)。詳細は phpMyAdmin/config.inc.php。
デプロイ
ローカルの phpMyAdmin/ を多目的サーバーの /var/www/phpmyadmin/ に rsync で同期する。