Oracle Cloud Always Free VPS セットアップガイド¶
📁 docs/bot-scheduler/artifact/oracle-vps-setup.md
MyLabのBot・スクリプト群をOracle Cloud VPS(ARM A1)に移行し、24/7常時稼働させる手順。
アーキテクチャ¶
Oracle Cloud VPS (Ubuntu 22.04 ARM A1 / 4OCPU 24GB)
├── systemd(常駐プロセス)
│ ├── mylab-discord-bot ← scripts/discord_bot/bot.py
│ └── bookmark-discord-bot ← projects/bookmark-discord-bot/main.py
└── cron(定期実行)
├── 08:00 buzz-collector --all-genres
├── 07:00 task_monitor.py
├── 21:00 task_monitor.py
├── 21:30 daily_summary/main.py
└── */15 task_sync/main.py
Step 1: OCIアカウント作成(要クレカ)¶
入力済み情報(前回の続き):
| 項目 | 値 |
|---|---|
| ホームリージョン | Japan Central (Osaka) ← 変更しない |
| クラウドアカウント名 | kazuma_dev |
| メールアドレス | kazuma.001110@gmail.com |
- https://signup.cloud.oracle.com/ にアクセス
- 「支払検証方法の追加」からクレジットカード情報を入力
- 「無料トライアルの開始」をクリック
注意: バーチャル・プリペイド・使い捨てカードは不可。本人確認のみで課金なし。
Step 2: PAYGアップグレード(アイドル回収防止)¶
登録直後に実施。Always Free範囲内では課金されない。
- OCIコンソール → 右上のユーザーアイコン → 「アップグレードと管理」
- 「従量課金制にアップグレード」を選択
- 確認して完了
Step 3: A1インスタンス作成¶
- OCIコンソール → コンピュート → インスタンス → 「インスタンスの作成」
- 設定:
| 項目 | 値 |
|---|---|
| 名前 | mylab-vps |
| イメージ | Ubuntu 22.04 (Canonical) |
| シェイプ | VM.Standard.A1.Flex |
| OCPU | 4 |
| メモリ | 24 GB |
| SSHキー | 公開鍵を貼り付け(~/.ssh/id_rsa.pubの内容) |
- 「作成」→ パブリックIPアドレスをメモ
Step 4: VPS初期セットアップ¶
# SSH接続
ssh ubuntu@<パブリックIP>
# MyLabをクローン(PATを用意しておくこと)
git clone https://github.com/KZ55230/MyLab.git ~/MyLab
# セットアップスクリプト実行
bash ~/MyLab/scripts/vps/setup.sh
セットアップスクリプトが以下を自動処理: - apt更新・必要パッケージインストール - Python venv作成・依存パッケージインストール - systemdユニット登録・自動起動有効化
Step 5: Credentials配置¶
ローカルPCから認証情報をVPSへ転送:
# ローカルPCで実行
scp Credentials/discord_token.json ubuntu@<IP>:~/MyLab/Credentials/
scp Credentials/github_pat.json ubuntu@<IP>:~/MyLab/Credentials/
scp Credentials/google_sheets.json ubuntu@<IP>:~/MyLab/Credentials/
scp Credentials/gemini_api.json ubuntu@<IP>:~/MyLab/Credentials/
scp Credentials/twitter_api.json ubuntu@<IP>:~/MyLab/Credentials/
Step 6: cron登録¶
# VPS上で実行
crontab ~/MyLab/scripts/vps/cron/crontab.txt
# ログディレクトリ作成
mkdir -p ~/MyLab/logs/cron
# 確認
crontab -l
Step 7: Discord Bot起動・確認¶
# Bot起動
sudo systemctl start mylab-discord-bot
sudo systemctl start bookmark-discord-bot
# ログ確認
journalctl -fu mylab-discord-bot
journalctl -fu bookmark-discord-bot
# 自動起動状態確認
sudo systemctl status mylab-discord-bot
sudo systemctl status bookmark-discord-bot
Step 8: Windows側のTask Schedulerを無効化¶
VPS側の動作が確認できたら:
- タスクスケジューラを開く
- 以下のタスクを無効化(削除ではなく無効化推奨):
- MyLab Discord Bot
- Bookmark Bot
- Buzz Collector
- Task Monitor(朝/夜)
- Daily Summary
- Task Sync
日常運用¶
コード更新時¶
ログ確認¶
# Discord Bot ログ(リアルタイム)
journalctl -fu mylab-discord-bot
# cronジョブのログ
tail -f ~/MyLab/logs/cron/buzz-collector.log
tail -f ~/MyLab/logs/cron/task-sync.log
サービス操作¶
sudo systemctl restart mylab-discord-bot # 再起動
sudo systemctl stop mylab-discord-bot # 停止
sudo systemctl status mylab-discord-bot # 状態確認
トラブルシューティング¶
インスタンス作成で「Out of capacity」エラー¶
- 大阪リージョンで試す(東京は枯渇しやすい)
- 深夜〜早朝(JST 01:00〜06:00)に再試行
- OCPU/メモリを少し下げて試す(2コア/12GBなど)
Bot が起動しない¶
よくある原因: - Credentialsファイルが未配置 - requirements.txtのパッケージ未インストール - discord_token.jsonのトークンが無効
cronが実行されない¶
よくある原因: - パスが絶対パスになっていない(crontab.txtのMYLAB変数を確認) - venvのPythonパスが間違っている