Alexaの認証を延長するもの
This commit is contained in:
@@ -78,11 +78,19 @@ Windmill ワークフロー
|
||||
└→ http://alexa_api:3500/speak を呼び出す
|
||||
```
|
||||
|
||||
### ネットワーク設計のポイント
|
||||
|
||||
- `alexa_api` コンテナは外部に公開しない(セキュリティ)
|
||||
- Windmill ワーカーと同じ Docker 内部ネットワーク `windmill_windmill-internal` に接続
|
||||
- Windmill から `http://alexa_api:3500` でアクセス可能
|
||||
### ネットワーク設計のポイント
|
||||
|
||||
- `alexa_api` コンテナは外部に公開しない(セキュリティ)
|
||||
- Windmill ワーカーと同じ Docker 内部ネットワーク `windmill_windmill-internal` に接続
|
||||
- Windmill から `http://alexa_api:3500` でアクセス可能
|
||||
|
||||
### Cookie 更新の権限設計
|
||||
|
||||
- `akira` に `windmill` への自由な切り替え権限は与えない
|
||||
- 代わりに `sudoers` で `/usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env` だけを許可する
|
||||
- ローカル GUI は `.env` を `/tmp/alexa-api.env` へ転送したあと、この専用スクリプトだけを `sudo` で実行する
|
||||
- 専用スクリプト自身は root で `.env` 反映と `docker compose restart` を完了する
|
||||
- これにより Cookie 更新だけを安全寄りに GUI 化できる
|
||||
|
||||
---
|
||||
|
||||
@@ -93,11 +101,15 @@ Windmill ワークフロー
|
||||
| `server.js` | `alexa-api/` | Express API サーバー本体 | 本番コード。変更したらビルド・再デプロイが必要 |
|
||||
| `Dockerfile` | `alexa-api/` | Docker イメージ定義 | node:20-alpine ベース |
|
||||
| `docker-compose.yml` | `alexa-api/` | コンテナ起動設定 | windmill_windmill-internal に接続 |
|
||||
| `package.json` | `alexa-api/` | npm 依存関係 | 本番は express のみ |
|
||||
| `.env.example` | `alexa-api/` | 環境変数テンプレート | `ALEXA_COOKIE=xxx` の形式 |
|
||||
| `.env` | `alexa-api/`(.gitignore 対象) | 実際の Cookie 保管 | Git にコミットしない |
|
||||
| `auth4.js` | `alexa-api/` | Amazon 認証・Cookie 取得スクリプト | **ローカルのみで実行**(Windowsブラウザ認証が必要) |
|
||||
| `auth.js` / `auth2.js` / `auth3.js` | `alexa-api/` | auth4.js の旧バージョン | 参考用。実際は auth4.js を使う |
|
||||
| `package.json` | `alexa-api/` | npm 依存関係 | 本番は express のみ |
|
||||
| `.env.example` | `alexa-api/` | 環境変数テンプレート | `ALEXA_COOKIE=xxx` の形式 |
|
||||
| `.env` | `alexa-api/`(.gitignore 対象) | 実際の Cookie 保管 | Git にコミットしない |
|
||||
| `auth4.js` | `alexa-api/` | Amazon 認証・Cookie 取得スクリプト | CLI版。ローカルのみで実行 |
|
||||
| `auth4-web.js` | `alexa-api/` | Cookie 更新 GUI | ブラウザで認証し、サーバー反映まで実行可能 |
|
||||
| `auth4-core.js` | `alexa-api/` | Cookie 更新の共通ロジック | CLI版とGUI版で共通利用 |
|
||||
| `alexa-cookie-deploy.sh` | `alexa-api/` | サーバー側専用反映スクリプト | `/tmp/alexa-api.env` を本番 `.env` に反映し、root で再起動 |
|
||||
| `alexa-cookie-deploy.sudoers` | `alexa-api/` | sudoers 設定例 | `akira` から専用反映スクリプトだけ実行許可 |
|
||||
| `auth.js` / `auth2.js` / `auth3.js` | `alexa-api/` | auth4.js の旧バージョン | 参考用。実際は auth4.js を使う |
|
||||
| `test_tts.js` | `alexa-api/` | ローカルテスト用スクリプト | `.env` を読んで直接 alexa.amazon.co.jp を叩く。テスト対象デバイスはシリアル `G0922H08525302K5`(オフィスの右エコー)にハードコード。TABLET は一覧表示から除外。 |
|
||||
|
||||
---
|
||||
@@ -398,19 +410,42 @@ sudo docker restart traefik
|
||||
|
||||
> **⚠️ 重要**: `docker compose restart` はイメージをリビルドしない。コード変更は `build + up -d` が必要。
|
||||
|
||||
### B. Cookie 更新時のデプロイ(ビルド不要)
|
||||
|
||||
```bash
|
||||
# 1. ローカルで auth4.js を実行して .env を更新
|
||||
cd alexa-api
|
||||
AMAZON_EMAIL="xxx" AMAZON_PASSWORD="xxx" node auth4.js
|
||||
|
||||
# 2. .env をサーバーに転送
|
||||
scp alexa-api/.env keinafarm-claude:/home/claude/alexa-api/.env
|
||||
|
||||
# 3. コンテナを再起動(restart で OK。Traefik 再起動不要)
|
||||
ssh keinafarm-claude 'sudo docker compose -f /home/claude/alexa-api/docker-compose.yml restart'
|
||||
```
|
||||
### B. Cookie 更新時のデプロイ(ビルド不要)
|
||||
|
||||
```bash
|
||||
# 1. ローカルで GUI を起動
|
||||
cd /home/akira/develop/windmill_workflow/alexa-api
|
||||
npm run auth:web
|
||||
|
||||
# 2. ブラウザで http://127.0.0.1:3678 を開き、Amazon の認証情報を入力
|
||||
|
||||
# 3. 同じ画面の「サーバーへ反映する」を実行
|
||||
# デフォルト値:
|
||||
# SSH 接続先: keinafarm
|
||||
# リモート一時アップロード先: /tmp/alexa-api.env
|
||||
# 実行する専用コマンド: sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env
|
||||
```
|
||||
|
||||
### B-1. Cookie 更新 GUI の初回セットアップ
|
||||
|
||||
サーバー側で一度だけ以下を実施する:
|
||||
|
||||
```bash
|
||||
# 1. 専用反映スクリプトを配置
|
||||
scp 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'
|
||||
|
||||
# 2. sudoers を配置
|
||||
scp 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. 動作確認
|
||||
ssh keinafarm 'sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/not-found.env' || true
|
||||
```
|
||||
|
||||
- `akira` から許可するのは `sudo /usr/local/bin/alexa-cookie-deploy.sh /tmp/alexa-api.env` だけ
|
||||
- `windmill` への自由な `su` や広い `sudo` 権限は与えない
|
||||
- 専用スクリプトは `/tmp/alexa-api.env` を `/home/claude/alexa-api/.env` に反映し、root で `docker compose restart` を実行する
|
||||
|
||||
### Traefik 再起動が必要な理由
|
||||
|
||||
|
||||
Reference in New Issue
Block a user