最終更新: 2026-06-22
対象:/home/akira/develop/windmill_workflow/alexa-api
目的: Alexa Cookie の更新を、ローカル GUI と権限制限付きのサーバー反映で安全に運用する
LINEで「⚠️ 鳩時計エラー」が通知された時の手順。
ステップ1: ローカルのターミナルで GUI を起動する
cd /home/akira/develop/windmill_workflow/alexa-api
npm run auth:web
ステップ2: ブラウザで http://127.0.0.1:3678 を開く
ステップ3: 「プロキシを起動する」をクリックする
ステップ4: 表示された http://127.0.0.1:3679 を新しいタブで開き、Amazon にログインする → ログイン完了後、元のタブ(3678)が自動更新されて「Cookie を更新しました」と表示される
ステップ5: 画面下部「サーバー反映」の「サーバーへ反映する」を押す → 反映完了 と出たら完了
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 に反映し、コンテナを再作成して反映する |
alexa-api/alexa-cookie-deploy.sudoers |
akira から専用反映スクリプトだけを sudo 実行できるようにする sudoers 設定例 |
flows/hourly_chime.flow.json |
LINE 通知文面を GUI 手順に合わせて更新 |
この構成にした理由:
akira に広い sudo 権限や windmill への自由な切り替え権限を与えたくない通常運用の流れは以下の通り。
npm run auth:web)http://127.0.0.1:3679 で Amazon にログインするalexa-api/.env の ALEXA_COOKIE が更新される/tmp/alexa-api.env を転送するsudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env を実行する.env 反映と alexa_api コンテナ再作成が行われるこのセットアップはサーバーで一度だけ必要。
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'
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'
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 への自由な susudocd /home/akira/develop/windmill_workflow/alexa-api
npm run auth:web
ブラウザで次を開く:
http://127.0.0.1:3678
画面上部の「Alexa Cookie 更新」で「プロキシを起動する」をクリックする。
ページにプロキシ URL(http://127.0.0.1:3679)が表示されるので、そのリンクを新しいタブで開く。
Amazon の通常ログイン画面が表示されるのでメールアドレスとパスワードを入力してログインする。
ログイン完了後、元のタブ(http://127.0.0.1:3678)が自動更新(2秒ポーリング)されて「Cookie を更新しました」と表示される。成功時は alexa-api/.env が更新される。
注意: メールアドレス・パスワードの入力は Amazon のログイン画面(3679 側)で行う。3678 のフォームに入力する必要はない。
画面下部の「サーバー反映」で次を確認する。
keinafarm/tmp/alexa-api.envsudo /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 Recreate
Container alexa_api Recreated
Container alexa_api Starting
Container alexa_api Started
反映完了
auth4-web.js通常はこちらを使う。人が毎回コマンドを思い出さなくてよい。
auth4.jsCLI で直接更新したい時のために残してある。基本運用は GUI を推奨。
例:
cd /home/akira/develop/windmill_workflow/alexa-api
AMAZON_EMAIL="xxx" AMAZON_PASSWORD="xxx" node auth4.js
auth4-core.js直接実行するものではない。GUI 版のプロキシ起動ロジック(alexa-cookie2 ラッパー)。
2026-06-22 に全面書き換え。Amazon がログインページを SPA 化したため、旧来の HTML フォーム解析方式から alexa-cookie2 プロキシ方式に移行した。
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 up -d --force-recreate alexa-api を実行flows/hourly_chime.flow.json の失敗時通知は、この GUI 運用に合わせて更新済み。
通知では次の導線を案内する。
npm run auth:webhttp://127.0.0.1:3678 を開くこれにより「あとでどう直すのか分からない」状態になりにくくしている。
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 が出た場合もそのまま画面上で対応できる。追加認証を完了すればプロキシが Cookie を捕捉する。
[ERROR] ログインフォームが見つかりません が出る(旧バージョンの症状)2026-06-22 以前のバージョンで発生していた。Amazon がログインページを SPA 化したため旧方式が動かなくなっていた。現在のプロキシ方式では発生しない。古いコードが残っている場合は npm run auth:web を再起動して新バージョンを使用すること。
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