← 一覧に戻る

7channel-operation

GitHub ↗ HTML 最終push: 2026/4/25 11:06

WIP(現在進行中)

Work In Progress

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

現在の状況

プロジェクト概要

7channel の運用を管理するモノレポ的な構成。主要コンポーネントは以下:

現在の状態

  • 7channel-server-v2/ を多目的サーバーに移行完了、リポジトリにも統合済み
  • curate.py の10分おきcron稼働中
  • 動画追加時のSNSアラートメールを復旧(新サーバーに ~/.aws/credentials 配置)
  • 7channel-web サービス稼働中、7ch.ikapps.com でアクセス可

次にやること

  • 旧Lightsailインスタンス(旧 7channel-server のホスト)の廃止検討
  • 7ch.ikapps.com のHTTPS化(Let's Encrypt)

過去のWIPアーカイブ

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

7channel-server-v2/ 統合完了、lightsail-claude-avatar/ は破棄、curate.py cron復旧済み。残課題は旧Lightsail廃止検討と 7ch.ikapps.com のHTTPS化。

2026-04-24 移行完了直後のスナップショット

リポジトリ初期化・GitHub連携済み。7channel-server-v2 は多目的サーバーに移行完了。7channel-server-v2/lightsail-claude-avatar/ はローカルに存在するが未コミット(untracked)。次は両ディレクトリのコミット管理方針を決めること。

2026-04-24 時点のスナップショット

(以下、ディレクトリ構成からの推測)

git init したばかり。.gitignore7channel-ios/7channel-server/ を除外設定済み。7channel-server-v2/lightsail-claude-avatar/ は未コミット状態。初回コミット & GitHub push、7channel-server-v2/ の整理が次のステップ。

(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)

ROADMAP(計画)

ロードマップ

今週

  • 7channel-server-v2/lightsail-claude-avatar/ をこのリポジトリでコミット管理するか方針を決める(v2は統合、avatarは破棄)

今月

  • 旧Lightsailインスタンス(13.230.63.19 / ec2-user)の廃止検討

今四半期

(今四半期の目標)

いつか

  • 7ch.ikapps.com にHTTPS(Let's Encrypt)を導入する

DECISIONS(意思決定)

意思決定記録

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


2026-04-25: Lightsail 上のアプリから AWS リソースへのアクセスは IAM ユーザーのアクセスキー方式を採用

背景: SNS アラートメールが新サーバーから飛ばなくなった。Lightsail のデフォルトロール AmazonLightsailInstanceRole には SNS:Publish 権限がなく、ロール自体が AWS 管理リソースのため IAM ポリシーをアタッチできない。SNSトピック側にクロスアカウント許可を入れても、IAM側ロールに権限がないため動かない。

決定: IAM ユーザー ichirokisanuki のアクセスキーを ~/.aws/credentials(mode 600)に配置して、boto3 のデフォルト認証チェーン経由で SNS を叩く方式にした。

理由: Lightsail のデフォルトインスタンスロールは AWS 管理で変更不可なので、ロールベース認証は実質不可能。アクセスキー方式は旧サーバーでも採用していた実績ある方法で、運用がシンプル。

2026-04-24: 7channel-server-v2 を独立リポジトリではなく7channel-operationに統合

背景: 7channel-server-v2 は元々独立したGitリポジトリ(.git 内蔵)として運用していたが、7channel-operation モノレポからもgit管理したかった。サブモジュール化と統合の二択だった。

決定: 7channel-server-v2/.git を削除して 7channel-operation リポジトリに通常のディレクトリとして統合。GitHub上の独立リポジトリは作られていなかったので破棄も不要。

理由: 個人開発でサブモジュールを使うほどの複雑さは不要。1リポジトリで完結する方が運用が楽。

2026-04-24: 7channel-server-v2 を多目的Lightsailサーバーに移行

背景: 旧Lightsailインスタンス(ec2-user@13.230.63.19)で動いていた7channel-server-v2を、新しい多目的サーバーに集約したかった。

決定: multipurpose-server1ubuntu@13.230.63.19)に移行し、Nginxバーチャルホストで 7ch.ikapps.com をルーティングする構成にした。

理由: 複数サービスを1台でNginxで束ねる運用に統一するため。旧インスタンスを廃止してコストを抑える意図もある。

2026-04-24: 静的IP 7channel-v2-ip を多目的サーバーにアタッチして固定運用

背景: 多目的サーバーは動的IPのままだと再起動のたびにRoute53を更新する必要があり運用が煩雑。

決定: 旧サーバーで使っていた静的IP 7channel-v2-ip13.230.63.19)を多目的サーバーに移植してアタッチ。

理由: Lightsailの静的IPはアタッチ中無料。Route53のAレコードを固定できるため運用が楽になる。

DEVLOG(作業ログ)

開発日誌

このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。


2026-04-25

セッション - 動画追加時のアラートメール復旧

やったこと:

  • 動画追加時のSNS経由アラートメールが届かない問題を調査
  • cron.log で AuthorizationError: ...is not authorized to perform: SNS:Publish を確認
  • 原因特定: Lightsailインスタンスは AWS 管理アカウント(385232584017)で動いており、デフォルト付与の AmazonLightsailInstanceRole には SNS:Publish 権限がない。しかもこのロールは AWS 管理で変更不可
  • SNSトピック側にはクロスアカウント許可(AllowLightsailPublish)が既にあったが、IAM側ロールを変更できないので無効
  • 解決策として旧サーバーで使っていた IAM ユーザーのアクセスキーを新サーバーの ~/.aws/credentials に配置([default] プロファイル、パーミッション 600)
  • notify.send_notification を手動実行してメール到達を確認

気づき:

  • Lightsail インスタンスは「ユーザーアカウント」と「AWS管理アカウント」の二層構造になっている
  • AmazonLightsailInstanceRole は AWS 管理リソースなので IAM ポリシーをアタッチできない
  • Lightsail から AWS リソースを使う場合、IAMユーザーのアクセスキーを置く方式が現実解

2026-04-24

セッション - サブディレクトリ整理とcron復旧

やったこと:

  • lightsail-claude-avatar/ をゴミ箱へ移動(不要のため)
  • 7channel-server-v2/7channel-operation リポジトリに統合
    • 元々独立リポジトリ(.git 内蔵)だったが、.git を削除して通常ファイルとして取り込み
    • GitHub上の独立リポジトリ 7channel-server-v2 はそもそも作られていなかったのでアーカイブ不要
  • 旧サーバーで動いていた curate.py の10分おきcronが新サーバーで未稼働だったので復旧
    • */10 * * * * cd /home/ubuntu/7channel-server-v2 && venv/bin/python curate.py >> cron.log 2>&1
  • 「サーバー移管時はcron等の周辺要素も漏れなくチェック」を memory に保存

気づき:

  • サーバー移行ではコードのデプロイだけでなく、cron / systemd timer / 常駐デーモンのチェックも必須

セッション - リポジトリ初期化と7channel-server-v2の多目的サーバー移行

やったこと:

  • git init 実行、.gitignore 設定(7channel-server/, 7channel-ios/, Claude Code ローカル状態)
  • .devnotes/ 運用を導入(DEVLOG.md, WIP.md)
  • GitHubにprivateリポジトリ(7channel-operation)を作成、初回commit & push
  • 7channel-server-v2 を旧Lightsail(13.230.63.19 / ec2-user)から多目的サーバー(multipurpose-server1 / ubuntu)に移行
    • 新サーバーに python3.10-venv インストール、venv作成
    • systemdサービス(7channel-web)を8001ポートで設定・起動
    • Nginx に 7ch.ikapps.com のバーチャルホスト設定を追加
    • ファイルをSCPで転送、依存パッケージインストール、サービス起動確認(HTTP 200)
    • Route53のAレコードを 13.230.63.19 に手動更新
    • 静的IP 7channel-v2-ip13.230.63.19)を多目的サーバーにアタッチ
    • deploy.sh を新サーバー向けに更新
  • multi-purpose-lightsail-server1 のREADME/CLAUDE.mdを更新してcommit & push

次回やること:

  • 7channel-server-v2/lightsail-claude-avatar/ をこのリポジトリでコミット管理するか方針決め

最近のコミット