6.6 KiB
Alexa Cookie更新 GUI 運用ドキュメント
最終更新: 2026-04-04 対象:
/home/akira/develop/windmill_workflow/alexa-api目的: Alexa Cookie の更新を、ローカル GUI と権限制限付きのサーバー反映で安全に運用する
1. 何を作ったか
Alexa Cookie の更新作業を、手作業のコマンド列ではなく GUI 中心で進められるようにした。
今回追加・変更したもの:
| ファイル | 役割 |
|---|---|
alexa-api/auth4-core.js |
Amazon 認証と Cookie 取得の共通ロジック |
alexa-api/auth4.js |
CLI 版の Cookie 更新ツール。auth4-core.js を利用 |
alexa-api/auth4-web.js |
ローカルで起動する GUI。Cookie 更新とサーバー反映を行う |
alexa-api/alexa-cookie-deploy.sh |
サーバー側の専用反映スクリプト。/tmp/alexa-api.env を本番 .env に反映し、docker compose restart を実行 |
alexa-api/alexa-cookie-deploy.sudoers |
akira から専用反映スクリプトだけを sudo 実行できるようにする sudoers 設定例 |
flows/hourly_chime.flow.json |
LINE 通知文面を GUI 手順に合わせて更新 |
この構成にした理由:
akiraに広いsudo権限やwindmillへの自由な切り替え権限を与えたくない- それでも Cookie 更新だけは迷わず再実行できるようにしたい
- そのため「GUI から呼べる専用コマンドだけを sudoers で許可する」構成にした
2. 全体の流れ
通常運用の流れは以下の通り。
- ローカルで GUI を起動する
- ブラウザで Amazon のメールアドレスとパスワードを入力する
alexa-api/.envのALEXA_COOKIEを更新する- GUI からサーバーへ
/tmp/alexa-api.envを転送する - GUI から
sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.envを実行する - サーバー側で
.env反映とalexa_apiコンテナ再起動が行われる
3. 初回セットアップ
このセットアップはサーバーで一度だけ必要。
3-1. 専用スクリプトを配置
scp /home/akira/develop/windmill_workflow/alexa-api/alexa-cookie-deploy.sh keinafarm:/tmp/alexa-cookie-deploy.sh
ssh keinafarm 'sudo install -m 755 /tmp/alexa-cookie-deploy.sh /usr/local/bin/alexa-cookie-deploy.sh'
3-2. sudoers を配置
scp /home/akira/develop/windmill_workflow/alexa-api/alexa-cookie-deploy.sudoers keinafarm:/tmp/alexa-cookie-deploy.sudoers
ssh keinafarm 'sudo install -m 440 /tmp/alexa-cookie-deploy.sudoers /etc/sudoers.d/alexa-cookie-deploy'
3-3. 何が許可されるか
alexa-cookie-deploy.sudoers の内容:
akira ALL=(root) NOPASSWD: /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env
許可しているのはこれだけ:
akiraが root として/usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.envを実行すること
許可していないもの:
windmillへの自由なsu- 任意コマンドの
sudo - 任意パスへのコピーや任意の Docker 操作
4. ふだんの使い方
4-1. GUI を起動
cd /home/akira/develop/windmill_workflow/alexa-api
npm run auth:web
ブラウザで次を開く:
http://127.0.0.1:3678
4-2. Cookie を更新
画面上部の「Alexa Cookie 更新」で次を入力する。
- Amazon メールアドレス
- Amazon パスワード
「Cookie を更新する」を押すと、成功時は alexa-api/.env が更新される。
4-3. サーバーへ反映
画面下部の「サーバー反映」で次を確認する。
- SSH 接続先:
keinafarm - リモート一時アップロード先:
/tmp/alexa-api.env - 実行する専用コマンド:
sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env
「サーバーへ反映する」を押すと、内部では次を実行する。
scp /home/akira/develop/windmill_workflow/alexa-api/.env keinafarm:/tmp/alexa-api.env
ssh keinafarm 'sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env'
成功時はログに以下のように表示される。
alexa cookie deployed
Container alexa_api Restarting
Container alexa_api Started
反映完了
5. 各ファイルの使い分け
auth4-web.js
通常はこちらを使う。人が毎回コマンドを思い出さなくてよい。
auth4.js
CLI で直接更新したい時のために残してある。基本運用は GUI を推奨。
例:
cd /home/akira/develop/windmill_workflow/alexa-api
AMAZON_EMAIL="xxx" AMAZON_PASSWORD="xxx" node auth4.js
auth4-core.js
直接実行するものではない。CLI 版と GUI 版の共通認証ロジック。
alexa-cookie-deploy.sh
サーバー側で root として動く専用スクリプト。役割は次の3つ。
/tmp/alexa-api.envにALEXA_COOKIE=があるか確認/home/claude/alexa-api/.envを更新docker compose --env-file /home/claude/alexa-api/.env -f /home/claude/alexa-api/docker-compose.yml restartを実行
6. LINE 通知との関係
flows/hourly_chime.flow.json の失敗時通知は、この GUI 運用に合わせて更新済み。
通知では次の導線を案内する。
npm run auth:webhttp://127.0.0.1:3678を開く- GUI 上でサーバー反映まで実行する
これにより「あとでどう直すのか分からない」状態になりにくくしている。
7. トラブルシュート
Could not resolve hostname ...
SSH 接続先の別名が ~/.ssh/config に存在しない。
今回の環境では使える別名は keinafarm。
Permission denied で /home/claude/alexa-api/.env に書けない
scp で直接 /home/claude/alexa-api/.env へ置こうとすると起きる。
現在は /tmp/alexa-api.env に送ってから、専用スクリプトで反映する設計に変更済み。
stat /home/claude/alexa-api/.env: permission denied
旧版の専用スクリプトで、権限不足のユーザーに切り替えて docker compose を実行していた時の症状。
現在の alexa-cookie-deploy.sh は root のまま .env 反映と再起動を完了する。
CAPTCHA や MFA が出る
Amazon 側で追加認証が必要。GUI のログに失敗理由が出る。
この場合は一発で通らない可能性がある。
8. 関連ファイル
docs/30_マスタードキュメント_Alexa_TTS_API編.mdalexa-api/auth4-web.jsalexa-api/auth4.jsalexa-api/auth4-core.jsalexa-api/alexa-cookie-deploy.shalexa-api/alexa-cookie-deploy.sudoersflows/hourly_chime.flow.json