← 一覧に戻る

multi-purpose-lightsail-server1

GitHub ↗ 最終push: 2026/4/25 11:29

WIP(現在進行中)

Work In Progress

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

現在の状況

サーバー稼働中。3サービスをホスト中、全プロセスに systemd 自動再起動が設定済み。

  • 静的IP 7channel-v2-ip(13.230.63.19)アタッチ済み
  • 7ch.ikapps.com: 7channel管理画面(FastAPI / port 8001 / HTTP)
  • aix.ikapps.com: AI YouTube管理画面(Flask + gunicorn / port 5001 / HTTPS)
  • mydb.ikapps.com: phpMyAdmin(Nginx + php8.1-fpm / HTTPS)
  • 自動再起動: 7channel-webaix-manager(Restart=always)、nginxphp8.1-fpm(Restart=on-failure, 5s)
  • メモリ余裕は 153MB 前後とタイト、スワップ 2GB で補填中

次にやること: 新サービス追加時は /etc/nginx/sites-available/ に設定追加 → certbot → README更新。 負荷が増えそうなら監視サービス導入や php-fpm の pm.max_children 調整を検討。


過去のWIPアーカイブ

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

サーバー稼働中。2サービスをホスト中。

  • 静的IP 7channel-v2-ip(13.230.63.19)アタッチ済み
  • 7ch.ikapps.com: 7channel管理画面(FastAPI / port 8001 / HTTP)
  • aix.ikapps.com: AI YouTube管理画面(Flask + gunicorn / port 5001 / HTTPS・SSL済み)

次にやること: 新サービス追加時は /etc/nginx/sites-available/ に設定追加 → certbot → README更新の手順で。

ROADMAP(計画)

ロードマップ

今週

(未定)

今月

  • 監視サービス(UptimeRobot 等)の導入を検討
  • php-fpm の pm.max_children などメモリ制限の調整

今四半期

(未定)

いつか

  • 最初の Web サービスを Nginx バーチャルホストとして追加する(完了: 7ch / aix / mydb を追加)
  • 静的 IP の割り当て(完了: 7channel-v2-ip をアタッチ済み)
  • Let's Encrypt で HTTPS 対応のテンプレートを整備(完了: aix / mydb で SSL 取得済み)
  • サービスごとの systemd unit をリポジトリ内にテンプレ化

DECISIONS(意思決定)

意思決定記録

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


2026-04-24: SSH 鍵の注入に user-data 方式を採用

背景: Lightsail の create-key-pair API が返す privateKeyBase64 を base64 デコードしても正常な PEM ファイルが得られなかった。import-key-pair も OpenSSH 形式の公開鍵を受け付けなかった。

決定: ローカルで ssh-keygen により RSA 4096 鍵を生成し、インスタンス起動時の --user-data スクリプトで authorized_keys に公開鍵を直接書き込む方式を採用。

理由: Lightsail の鍵管理 API に依存せず、ローカルで生成した鍵をそのまま使えるため確実。鍵ファイルのフォーマット問題を完全に回避できる。


2026-04-24: Lightsail プランを $5.00 IPv4 プランに決定

背景: 当初 $3.50 プランを検討していたが、調査の結果 $3.50 は IPv6 専用で IPv4 なしと判明。

決定: $5.00 の nano_3_0 プラン(IPv4 あり)を採用。

理由: プロジェクトごとのドメインで Web サービスを公開するには IPv4 の A レコードが必須。$3.50 では実用上使えない。


DEVLOG(作業ログ)

開発日誌

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


2026-04-25

11:30 - 負荷対策として systemd 自動再起動を設定

やったこと:

  • サーバーのリソース状況を確認: メモリ 416MB 中 208MB 使用(残り153MB)、スワップ 2GB 設定済み(138MB 使用)、ロード 0.01、OOM履歴なし
  • メモリ使用 TOP は php-fpm × 3(計 ~110MB)、gunicorn × 2(計 ~30MB)
  • 7channel-web / aix-manager は Restart=always(OK)、nginx / php8.1-fpm は Restart=no → override.conf で Restart=on-failure / RestartSec=5s を追加
  • override 配置先: /etc/systemd/system/{nginx,php8.1-fpm}.service.d/override.conf
  • systemctl daemon-reload 後に restart テスト、3サービス疎通確認 OK

気づき:

  • nano プラン(416MB実メモリ)は余裕 153MB とタイト、予期せぬ負荷で OOM リスクはある
  • スワップ 2GB が効いている(どこかのタイミングで導入済みだった)
  • パッケージ提供 unit を直接編集すると apt upgrade で戻るので override.conf 方式が正解

次回やること:

  • 監視(UptimeRobot 等)を入れるか検討
  • php-fpm のプロセス数制限(pm.max_children 調整)

2026-04-24

22:00 - aix.ikapps.com を追加ホスト

やったこと:

  • 静的IP 7channel-v2-ip(13.230.63.19)をアタッチ済みに変更(CLAUDE.md・README更新)
  • Route 53 に aix.ikapps.com の A レコード追加(13.230.63.19)
  • Nginx に sites-available/aix.ikapps.com を追加(当初静的ファイル配信、後にリバースプロキシに変更)
  • certbot で Let's Encrypt SSL証明書取得(自動更新設定済み)
  • systemd サービス aix-manager を作成・有効化(Flask + gunicorn、port 5001)
  • certbot インストール: sudo apt-get install -y certbot python3-certbot-nginx

次回やること:

  • 新しいサービスを追加するときは同じ手順で

20:00 - インスタンス作成と基本セットアップ

やったこと:

  • AWS Lightsail に Ubuntu 22.04 / $5 nano_3_0(東京 ap-northeast-1a)でインスタンス作成
  • インスタンス名: multipurpose-server1、パブリック IP: 13.192.166.254(動的)
  • SSH 鍵: ローカルで RSA 4096 を生成(~/.ssh/lightsail-multipurpose)、user-data でサーバーに注入
  • 基本セットアップ完了: apt update/upgrade、Nginx、UFW(22/80/443)、unattended-upgrades、SSH パスワード認証無効化
  • Lightsail コンソール側ファイアウォールも 22/80/443 に設定
  • README.md / CLAUDE.md にサーバー情報を記録
  • ~/.claude/CLAUDE.md(グローバル)に多目的サーバーの場所を追記

決めたこと:

  • $3.50 IPv6 プランではなく $5.00 IPv4 プランを採用(ドメイン公開に IPv4 必須)
  • Lightsail の create-key-pair API の privateKeyBase64 デコード問題を回避するため、user-data 注入方式を採用
  • 静的 IP はとりあえず不要

次回やること:

  • 最初の Web サービスを追加するタイミングで Nginx バーチャルホストを設定

最近のコミット

README

multi-purpose-lightsail-server1

AWS Lightsail 上の多目的サーバー。1台のインスタンスで複数の Web サービスを Nginx で束ねて運用する。

サーバー情報

項目
プロバイダ AWS Lightsail
インスタンス名 multipurpose-server1
リージョン ap-northeast-1a(東京)
プラン Nano $5/月(2vCPU / 512MB RAM / 20GB SSD)
OS Ubuntu 22.04.5 LTS
パブリック IP 13.230.63.19(静的)
静的 IP 7channel-v2-ip

SSH 接続

ssh -i ~/.ssh/lightsail-multipurpose ubuntu@13.230.63.19

鍵ファイル: ~/.ssh/lightsail-multipurpose(ローカルのみ、リポジトリ管理外)

インフラ構成

  • Nginx: リバースプロキシ。ドメインごとに各サービスへルーティング
  • UFW: 22(SSH) / 80(HTTP) / 443(HTTPS) のみ許可
  • unattended-upgrades: セキュリティアップデート自動適用

ホスト中のサービス

サービス名 ドメイン 説明
7channel-server-v2 http://7ch.ikapps.com 7channel管理画面(FastAPI)。ポート8001で稼働、systemdサービス名: 7channel-web
x-account-manager-ai https://aix.ikapps.com AI YouTube新着動画管理・X投稿管理(Flask)。ポート5001で稼働、systemdサービス名: aix-manager、SSL済み
common-php-my-admin https://mydb.ikapps.com phpMyAdmin 5.2.3(既存RDS群の管理用)。Nginx + php8.1-fpm、配置先 /var/www/phpmyadmin/、SSL済み

新しいサービスを追加するには

  1. Nginx の sites-available/ に設定ファイルを追加
  2. sites-enabled/ にシンボリックリンクを作成
  3. nginx -t && systemctl reload nginx
  4. このREADMEのサービス一覧を更新