← 一覧に戻る

common-php-my-admin

GitHub ↗ PHP 最終push: 2026/5/10 18:58

WIP(現在進行中)

Work In Progress

このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。

現在の状況

  • 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com)。**サーバー選択は 2 件**

    • 絆(kizuna): 直接接続kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com:3306、kizuna は PubliclyAccessible=true
    • FootballNEXT: SSH トンネル経由(127.0.0.1:13306、cron EC2 が踏み台)
  • 2026-05-10 実施分(BaseballNEXT 復活 → 即再削除):

    • 2026-05-02 に削除済の BaseballNEXT を一時復活(systemd ExecStart に -L 13307 復活、config に BaseballNEXT エントリ復活、rsync デプロイ)
    • 直後にユーザーから「BaseballNEXT のサーバーが閉じた」連絡で再削除
    • 最終状態は 2026-05-02 / 2026-05-04 と同じ(サーバー選択 2 件)。ベースの差分なしで決着
    • BaseballNEXT 用のトンネル基盤(cron EC2 → baseballnext RDS の経路)はサーバー側に残置のまま
  • 次の候補タスク:

    • kizuna 廃止 + データを Lightsail 内 MySQL に移行(7channel-operation 側で進行中)。完了後は phpMyAdmin の host を Lightsail MySQL に切替
    • 既存:fail2ban、Basic 認証/IP 制限、メモリ逼迫対応

過去のWIPアーカイブ

2026-05-04 kizuna 直接接続切替直後のスナップショット

  • 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com)。**サーバー選択は 2 件**

    • 絆(kizuna): 直接接続kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com:3306、kizuna は PubliclyAccessible=true
    • FootballNEXT: SSH トンネル経由(127.0.0.1:13306、cron EC2 が踏み台)
  • 2026-05-04 実施分(kizuna接続を SSHトンネル → 直接接続に切替):

    • 背景: 7channel-operation 側で段階3 (Phase D) のクリーンアップとして EC2-2 (i-01b0e45af32e40061、43.206.39.55) を terminate した。kizuna の SSH トンネル踏み台がまさにその EC2-2 だったため接続不可になった
    • kizuna は段階3 で PubliclyAccessible=true に戻されているため、SSH トンネル不要で直接接続できる
    • kizuna RDS SG (sg-a35895c6) に多目的サーバー static IP 13.230.63.19/32 を 3306 で許可
    • /var/www/phpmyadmin/config.inc.php の kizuna エントリを修正:
      • host: 127.0.0.1kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com
      • port: 133083306
    • phpmyadmin-tunnel-ch7.servicesystemctl disable --now で停止・自動起動解除
    • nc -vz kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com 3306 で TCP 疎通確認 OK
    • バックアップ: /var/www/phpmyadmin/config.inc.php.bak.<timestamp> を残してある

2026-04-28 12:27 時点のスナップショット

  • 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com)、**4 RDS すべてに接続可能、kizuna も Private 化済み**

    • kizuna: SSH トンネル経由127.0.0.1:13308、ch7-20190312-2 EC2 が踏み台、PubliclyAccessible=false
    • FootballNEXT / BaseballNEXT: SSH トンネル経由(127.0.0.1:13306 / 13307、cron EC2 が踏み台)
    • sposhin (怖い話): 接続自体は可能だが config の host が古い AWS RDS エンドポイントのまま(実体は さくら VPS 49.212.123.127
  • 完了済み(このセッション):

    • kizuna 用の SSH トンネル経路を構築(既存 ch7-20190312-2 EC2 を踏み台流用、追加コストゼロ)
    • systemd phpmyadmin-tunnel-ch7.service 作成(Restart=always、自動起動 enable 済み)
    • kizuna を PubliclyAccessible=false に変更(月 $3.65 削減)
    • Lightsail vs EC2 のコスト/自由度比較を共有 → 当面 Lightsail 継続で合意
  • 次の候補タスク:

    • kizuna 廃止 + データを Lightsail 内 MySQL に移行(ユーザー方針、別途タイミング)
    • sposhin (怖い話) の config 修正:実体は さくら VPS 49.212.123.127
    • 既存:fail2ban、Basic 認証/IP 制限、メモリ逼迫対応

2026-04-28 12:01 時点のスナップショット

  • 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com)、**4 RDS すべてに phpMyAdmin から接続可能**

    • kizuna: 直接(Public)
    • FootballNEXT / BaseballNEXT: SSH トンネル経由(127.0.0.1:13306 / 13307)
    • sposhin (怖い話): 接続自体は可能だが config の host が古い AWS RDS エンドポイントのまま(実体は さくら VPS)
  • 完了済み(このセッション):

    • 重いクエリで PHP-FPM が詰まる問題 → タイムアウト 300s に拡張、php-fpm 再起動で復旧
    • 別アカウント Private RDS への SSH トンネル経由接続を実装(systemd phpmyadmin-tunnel.serviceRestart=always 常時稼働)
    • 引き継ぎ.md の改修案を消化、ユーザーが FootballNEXT ログイン成功確認
  • 次の候補タスク:

    • sposhin (怖い話) の config 修正:現在の host は AWS RDS 形式だが実体は さくら VPS 49.212.123.127
    • kizuna の Private 化検討(同じトンネル方式でコスト削減月 $3.65)
    • 既存:fail2ban、Basic 認証/IP 制限、AllowNoPassword 見直し、メモリ逼迫対応

2026-04-25 11:04 時点のスナップショット

  • 状態: phpMyAdmin 本番稼働中(https://mydb.ikapps.com、SSL 済み)
  • 完了済み: 多目的サーバーへのデプロイ、blowfish_secret 同期、README/CLAUDE.md 整備、両リポジトリの commit & push
  • 進行中: なし(一段落)
  • 詰まっていること: なし
  • 次の候補タスク:
    • fail2ban / Basic 認証 / IP 制限の追加(phpMyAdmin へのブルートフォース対策)
    • config.inc.phpAllowNoPassword = true(kizuna)の見直し
    • new-project-setup スキル側での .devnotes/ 作成組み込み(ユーザー側で対応判断、今セッションでは実施しない)

ROADMAP(計画)

ロードマップ

今週

(今週中にやりたいこと)

今月

(今月中にやりたいこと)

今四半期

(今四半期の目標)

いつか

  • fail2ban 導入(phpMyAdmin へのブルートフォース対策)
  • Basic 認証 または IP 制限の追加検討
  • config.inc.phpAllowNoPassword = true(kizuna 接続)設定の見直し(kizuna 削除に併せて自然消滅予定)
  • 多目的サーバーのメモリ逼迫が顕在化したときの対応(Lightsail プランアップ等)
  • kizuna 廃止 + データを Lightsail 内 MySQL に移行(移行後 kizuna RDS は削除)
  • kizuna の Private 化(2026-04-28 完了。ch7-20190312-2 EC2 を踏み台流用、月 $3.65 削減)
  • sposhin (怖い話) の config 修正(2026-05-02 完了。修正ではなくサーバー一覧から削除して着地)

DECISIONS(意思決定)

意思決定記録

このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。


2026-04-28: 多目的サーバーは当面 Lightsail のまま継続する

背景: kizuna RDS の Private 化を検討する過程で、Lightsail が専用 VPC にいて任意の VPC との peering ができない(vpc-default とのみ可能)制約が露呈。EC2 全面移行で自由度を取りに行く選択肢を比較した。

決定: 多目的サーバー(Lightsail Nano)は当面維持。VPC 自由度が必要な箇所は同 VPC の既存 EC2 を踏み台に流用する形で吸収する。EC2 全面移行はしない。

理由: Lightsail Nano $5/月(1TB 転送込み)vs 同等 EC2 約 $9/月+転送費でコスト面は Lightsail が優位。3 サービス(7channel-server-v2 / aix.ikapps.com / mydb.ikapps.com)の同時移行は作業量も大きい。VPC 自由度の不足は今回のように既存 EC2 流用で吸収できる。複雑な VPC 連携が増えた段階で再検討する。


2026-04-28: kizuna も SSH トンネル方式で Private 化する

背景: kizuna RDS は ichirokisanuki account の VPC vpc-4b77802e で Public IPv4 付き運用。月 $3.65 の Public IPv4 課金が発生していた。kizuna 自体は今後削除予定で、データは Lightsail 内 MySQL に移行する計画があるが、削除までの間も削減効果は実値として残る。

決定: kizuna を PubliclyAccessible=false に変更し、同 VPC で稼働中の既存 EC2 ch7-20190312-2-cfn-created (43.206.39.55) を踏み台に SSH トンネル経由(127.0.0.1:13308)でアクセスする。systemd phpmyadmin-tunnel-ch7.service で常時稼働。

理由: ① 新規 EC2 を立てる方式は維持コスト相殺で削減効果消滅、② Lightsail VPC peering は default VPC とのみ peering する制約で kizuna VPC には届かない、③ kizuna を default VPC に移す案は RDS スナップショット → 別 VPC 復元 → エンドポイント切替の作業重。既存 EC2 流用が追加コスト・作業量ともに最小。


2026-04-28: footballnext / baseballnext は SSH トンネル方式で接続する

背景: schulte-operation v1→v2 移行(2026-04-27)で footballnext / baseballnext RDS を PubliclyAccessible=false 化した(EIP × 2 自動解放で月 $7.3 削減)。これらは別アカウント thomson-ik の VPC 内にあり、Lightsail からは直接到達できなくなった。

決定: 多目的サーバー(Lightsail)→ 既存の cron EC2 (52.194.87.168、thomson-ik) → Private RDS の SSH トンネル方式で接続する。systemd phpmyadmin-tunnel.serviceRestart=always 常時稼働。踏み台と SG はいずれも既存のものを流用(新規構築なし)。

理由: 代替案 ① RDS を Public に戻す → 月 $7.3 のコスト増、② VPC ピアリング → 別アカウント間の手続きが重い、③ thomson-ik 側に新規 phpMyAdmin 用 EC2 → 維持コスト増。これらと比べて既存 cron EC2 を踏み台流用する方式が最もコスト効率が良く影響範囲も小さい。kizuna は別アカウント・Public のままなので今回は触らない。


2026-04-28: PHP-FPM / Nginx のタイムアウトを 300s に拡張する

背景: phpMyAdmin で重いクエリ(SELECT * FROM mode4_scores ORDER BY id DESC)を投げると PHP-FPM が応答不能になり外部リクエストもタイムアウトする問題が発生。Lightsail Nano + max_children=5 の制約上、1 個の重いリクエストが全ワーカを塞ぐ構造。

決定: PHP の max_execution_time と Nginx の fastcgi_read_timeout を 30s → 300s に拡張する。

理由: 根本対策(DB 側の最適化、ワーカ増、メモリ増強)は別軸の作業。短期的にはタイムアウト緩和で「待たされるが完走する」状態にしたい。phpMyAdmin の「行数制限」設定で重いクエリを避ける運用も並行して推奨。300s で足りなければ追加延長を検討。


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-05-10

18:56 - BaseballNEXT のサーバー選択を一時復活 → 即再削除

やったこと:

  • ユーザー依頼で 2026-05-02 に削除済みの BaseballNEXT を一時復活
    • ローカル phpMyAdmin/config.inc.php に BaseballNEXT エントリ(127.0.0.1:13307)を追加
    • サーバー側 systemd unit phpmyadmin-tunnel.service の ExecStart に -L 127.0.0.1:13307:baseballnext.ckdbljv81o1g.ap-northeast-1.rds.amazonaws.com:3306 を追加し daemon-reload + restart
    • rsync で /var/www/phpmyadmin/config.inc.php をデプロイ
  • 直後にユーザーから「BaseballNEXT のサーバー(RDS)が閉じた」連絡で再削除
    • config.inc.php の BaseballNEXT エントリを削除、rsync デプロイ
    • systemd ExecStart から -L 13307:baseballnext...sed で削除し daemon-reload + restart
  • 最終状態は 2026-05-02 / 2026-05-04 と同じ(サーバー選択は kizuna / FootballNEXT の 2 件、Listen は 13306 のみ)

気づき:

  • 一時的な往復のためコードベースに残った最終差分はない(記録のみ意義)
  • BaseballNEXT 用のトンネル基盤(cron EC2 → baseballnext RDS の SG / SSH 鍵)はサーバー側に残置のまま。再追加が必要になれば systemd unit と config の 2 箇所更新で復元可能

次回やること:

  • kizuna 廃止 + Lightsail 内 MySQL 移行の完了を待ち、phpMyAdmin の host を Lightsail MySQL に切替

2026-05-04

05:50 - kizuna 接続を SSH トンネル → 直接接続に切替(7channel-operation 段階3 の副次対応)

やったこと:

  • ~/cdev/7channel-operation 側で段階3 (Phase D) のクリーンアップとして EC2-2 (i-01b0e45af32e40061, 43.206.39.55) を terminate した
  • この EC2-2 が kizuna RDS への SSH トンネル踏み台だったため、phpMyAdmin から kizuna に接続不可になった
  • 7channel-operation 段階3 で kizuna を PubliclyAccessible=true に戻している(Lightsail から接続するため)ので、phpMyAdmin も同じ経路で直接接続できることを利用
  • kizuna RDS SG (sg-a35895c6) に多目的サーバー static IP 13.230.63.19/32 を 3306 で追加許可
  • /var/www/phpmyadmin/config.inc.php の kizuna エントリを修正:
    • host: 127.0.0.1kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com
    • port: 133083306
    • バックアップ config.inc.php.bak.<timestamp> を残してある
  • 不要になった phpmyadmin-tunnel-ch7.servicesystemctl disable --now で停止・自動起動解除
  • nc -vz で TCP 疎通確認 OK

気づき:

  • サーバー terminate 前に「他にこのサーバーを使っている用途はないか」を必ず確認すべき。今回は phpMyAdmin の SSH トンネル踏み台だった事実を踏まえ漏らした
  • kizuna が PubliclyAccessible=false → true に戻ったタイミングで、phpMyAdmin の接続経路を「SSHトンネルから直接に変更」しておくべきだった(事前に対応していれば EC2-2 terminate でも影響なかった)

次回やること:

  • kizuna 廃止 + データを Lightsail 内 MySQL に移行(7channel-operation 側で進行中)。完了したら phpMyAdmin の host を Lightsail MySQL に切替

2026-05-02

17:52 - サーバー選択から BaseballNEXT と 怖い話&間違えないで を削除

やったこと:

  • ローカル phpMyAdmin/config.inc.php から以下 2 エントリを削除
    • BaseballNEXT(127.0.0.1:13307 経由のトンネル先、Servers[3]
    • 怖い話&間違えないで(sposhin、Servers[4]、host は古い AWS RDS エンドポイントのままだった)
  • rsync で /var/www/phpmyadmin/config.inc.php をデプロイ
  • 多目的サーバーの systemd unit phpmyadmin-tunnel.service の ExecStart から -L 127.0.0.1:13307:baseballnext...:3306sed で削除し daemon-reload + restart
  • リスニングポート確認:13306(footballnext)と 13308(kizuna)のみ、13307 はクローズ
  • 残るサーバー選択は 絆(kizuna)と FootballNEXT の 2 件

気づき:

  • ROADMAP の「sposhin の config 修正(実体さくら VPS)」は 修正不要に着地(エントリ自体を削除したため)。完了印に変更
  • BaseballNEXT 用のトンネル基盤(cron EC2 → baseballnext RDS の SG 許可、SSH 鍵)はサーバー側に残置(後日 BaseballNEXT を再追加する場合に再構築不要)。今回 systemd ExecStart から -L 13307 を抜いただけで、その他のリソースには触れていない

次回やること:

  • 特になし(kizuna 廃止 + Lightsail 内 MySQL 移行は引き続き ROADMAP に積み)

2026-04-28

12:27 - kizuna も SSH トンネル経由化 + Private 化(コスト削減)

経緯:

直前のセッションで FootballNEXT / BaseballNEXT を SSH トンネル化した流れで、ユーザーから kizuna も Private 化したい旨の意向。kizuna は ichirokisanuki account の VPC vpc-4b77802e (172.30.0.0/16) にあり、cron EC2(thomson-ik)は踏み台流用不可(別 VPC・別アカウント)。Lightsail VPC peering も default VPC とのみ peering する公式制約があり、kizuna の VPC には届かない。kizuna と同じ VPC に既存稼働中の EC2 ch7-20190312-2-cfn-created (i-01b0e45af32e40061, 43.206.39.55) があったので、これを踏み台に流用(追加コストゼロ)。

途中で Claude が「kizuna は削除予定だから Private 化は意味薄い」と勝手に判断を覆そうとしたが、ユーザーから即訂正。memory に feedback_dont_override_user_decisions.md を追加(ユーザーが決めた方針を新情報で勝手に取り消さない)。

加えてユーザーから「Lightsail vs EC2」のコスト/自由度議論。Lightsail Nano $5/月(1TB 転送込み)vs 同等 EC2 約 $9/月+転送費でコスト面は Lightsail 優位、ただし VPC 自由度は EC2 が上。3 サービス全体の移行は重いので、当面 Lightsail を維持して個別対応する方針で合意。

やったこと:

ch7 EC2 踏み台準備:

  • ch7 EC2 SG sg-01f1648b54c78abb1(ssh) の inbound 22 に 13.230.63.19/32 追加
  • 多目的サーバーで SSH 鍵 ~/.ssh/id_ed25519_to_ch7 生成(ed25519、パスフレーズなし、コメント mydb-ikapps-tunnel-to-ch7
  • 公開鍵を ch7 EC2 (ec2-user@43.206.39.55) の authorized_keys に追加
  • ローカル → ch7 は既存 ~/.ssh/ichirokisanuki.pem で接続可(ichirokisanuki account 内同名キーペア)

systemd unit:

  • /etc/systemd/system/phpmyadmin-tunnel-ch7.service 新規作成(既存 phpmyadmin-tunnel.service とは独立)
    • -L 127.0.0.1:13308:kizuna.cxboespy3b8c.ap-northeast-1.rds.amazonaws.com:3306 ec2-user@43.206.39.55
    • Restart=always, RestartSec=10, ServerAliveInterval=60, ExitOnForwardFailure=yes
  • enable + start、127.0.0.1:13308 で TCP 疎通 OK

config & デプロイ:

  • phpMyAdmin/config.inc.php の kizuna エントリを host=127.0.0.1port=13308 に変更
  • rsync で /var/www/phpmyadmin/config.inc.php をデプロイ
  • ユーザー側で phpMyAdmin から kizuna ログイン + テーブル閲覧 OK 確認

Private 化:

  • aws rds modify-db-instance --db-instance-identifier kizuna --no-publicly-accessible --apply-immediately
  • 70 秒で available + PubliclyAccessible=false
  • Lightsail からの直接経路(インターネット経由 kizuna...:3306)は FAIL(期待通り)、トンネル経由(127.0.0.1:13308)は引き続き OK

決めたこと:(DECISIONS.md にも転記)

  • kizuna も SSH トンネル方式で Private 化する(ch7-20190312-2 EC2 を踏み台流用)
  • 多目的サーバーは当面 Lightsail のまま継続(EC2 全面移行は当面しない)

気づき:

  • ichirokisanuki account 内のキーペア名「ichirokisanuki」が複数 EC2(ch7、cron 等)で共用されており、ローカルの ~/.ssh/ichirokisanuki.pem 1 本で複数 EC2 にログインできる。thomson-ik account の cron EC2 も同名キーで同じファイルでアクセスでき、紛らわしいが偶然揃っている
  • kizuna SG は inbound 3306 が 0.0.0.0/0(Public 化前提の設定が残存)。Private 化後は意味をなさないが、kizuna は削除予定のため整理は見送り
  • Lightsail VPC peering は default VPC vpc-3916335e (172.31.0.0/16) とのみ peering する制約。kizuna の VPC vpc-4b77802e (172.30.0.0/16) には届かない

次回やること:

  • kizuna 廃止 + データを Lightsail 内 MySQL に移行(ユーザー方針、別途タイミング)
  • sposhin の config を実体(さくら VPS 49.212.123.127)に合わせて修正

12:01 - タイムアウト拡張 + 別アカウント Private RDS への SSH トンネル経由接続を実装

経緯:

ユーザーから「mydb.ikapps.com が重い/繋がらない」「FootballNEXT を選ぶとログインできない」の2件が連続報告。前者は phpMyAdmin で大きなクエリ(SELECT * FROM mode4_scores ORDER BY id DESC)が走り PHP-FPM の全ワーカが詰まって外部からタイムアウトに見える事象、後者は 2026-04-27 の schulte-operation v2 移行で footballnext / baseballnext RDS が PubliclyAccessible=false 化されたためネットワーク到達不能になっていた事象。プロジェクトルート直下の 引き継ぎ.md に SSH トンネル方式の改修案が記載されていたのでそれに従って実装。

やったこと:

タイムアウト関連:

  • sudo systemctl restart php8.1-fpm で詰まったワーカ解放
  • /etc/php/8.1/fpm/php.ini: max_execution_time = 30 → 300
  • /etc/nginx/sites-available/mydb.ikapps.com の PHP location ブロックに fastcgi_read_timeout 300; 追加
  • nginx reload

SSH トンネル関連:

  • cron EC2 (i-0f9b75f42c39e3a6e、thomson-ik、52.194.87.168) の SG sg-0461787f6302fd83813.230.63.19/32:22 を追加(既存 SG を流用)
  • 多目的サーバーで SSH 鍵 ~/.ssh/id_ed25519_to_thomson_cron を生成(パスフレーズなし、ed25519、コメント mydb-ikapps-tunnel
  • 公開鍵を cron EC2 の ~/.ssh/authorized_keys に追加
  • /etc/systemd/system/phpmyadmin-tunnel.service 作成、enable + start
    • -L 127.0.0.1:13306:footballnext...:3306
    • -L 127.0.0.1:13307:baseballnext...:3306
    • Restart=always, RestartSec=10, ServerAliveInterval=60, ExitOnForwardFailure=yes
  • phpMyAdmin/config.inc.php で footballnext / baseballnext の host127.0.0.1port13306 / 13307 に変更
  • rsync で /var/www/phpmyadmin/config.inc.php をデプロイ
  • ユーザー側で FootballNEXT ログイン成功確認

決めたこと:(DECISIONS.md にも転記)

  • PHP-FPM / Nginx のタイムアウトを 300s に拡張する
  • footballnext / baseballnext は SSH トンネル方式で接続(cron EC2 流用、systemd 常時稼働)

気づき:

  • Lightsail Nano (416MiB RAM) + php-fpm max_children=5 構成では、1 個の重いクエリで全ワーカが塞がる。アクセスログの 499(クライアント切断)連発が初期診断のヒント
  • thomson-ik 側 cron EC2 の SG は /32 IP ホワイトリスト方式で運用されている。新規 IP を許可するには都度ルール追加が必要
  • sposhin (怖い話) の config 上の host (sposhin.ckdbljv81o1g.ap-northeast-1.rds.amazonaws.com) は古い AWS RDS エンドポイントのまま。引き継ぎ.md によると実体は さくら VPS 49.212.123.127(今セッションのスコープ外)

次回やること:

  • sposhin の config を実体に合わせて修正
  • kizuna の Private 化検討(同じトンネル方式でコスト削減)

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.com A レコードを 13.230.63.19 に変更(ユーザーが実施、旧値 52.68.231.6)
  • ローカル phpMyAdmin/ 一式を /var/www/phpmyadmin/ に rsync 転送、所有者を www-data
  • config.inc.phpblowfish_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.phpblowfish_secret もサーバーと同値に揃えてコミット
  • common-php-my-admin の README/CLAUDE.md を「(記入予定)」から実体に整備
  • multi-purpose-lightsail-server1 の README サービス一覧に mydb.ikapps.com を追記
  • 両リポジトリを commit & push(7bdb6be41d4e44
  • 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.phpAllowNoPassword = 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 で同期する。