ponshu-room-lite/web/download/DEPLOYMENT_GUIDE.md

370 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ponshu Room 配布ページ - デプロイガイド
**作成日**: 2026-02-23
**対象**: Vercel配布ページのセットアップ
---
## 🎯 **目的**
日本酒アプリの4つのAPK(Maita/Eiji × Lite/Pro)を、美しい配布ページ経由でダウンロード可能にする。
---
## 📂 **ファイル構成**
### **配布ページ** (`web/download/`)
```
web/download/
├── index.html # 旧バージョン (v1.0.12)
├── index_v2.html # 新バージョン (v1.0.16) ← 今回作成
├── style.css # スタイルシート (共通)
└── DEPLOYMENT_GUIDE.md # このガイド
```
### **APKファイル** (`build/apk_releases/2026-02-23_13-17-01/`)
```
build/apk_releases/2026-02-23_13-17-01/
├── ponshu_room_lite_maita.apk (90MB)
├── ponshu_room_lite_eiji.apk (90MB)
├── ponshu_room_pro_maita.apk (90MB)
├── ponshu_room_pro_eiji.apk (90MB)
└── README.md
```
---
## 🚀 **デプロイ方法**
### **Option A: Synology File Station + Vercel (推奨)**
APKは大容量(90MB×4)なので、Synologyでホスティングし、Vercelは配布ページのみ。
#### **Step 1: SynologyにAPKを配置**
```bash
# ローカルPCから Synology へ転送
scp -r build/apk_releases/2026-02-23_13-17-01/ \
admin@synology.local:/volume1/web/ponshu/apks/
# または Synology File Station の Web UI でアップロード
# ディレクトリ: /volume1/web/ponshu/apks/2026-02-23_13-17-01/
```
**Synology File Station設定**:
1. File Station を開く
2. `/volume1/web/ponshu/apks/` を作成
3. APKファイルをアップロード
4. 右クリック → 「共有リンクを作成」
5. 公開URLを取得 (例: `https://your-nas.synology.me/sharing/xxxxx`)
#### **Step 2: Tailscale Funnel or DDNS設定**
**Tailscale Funnel (推奨)**:
```bash
# Synology SSH で実行
tailscale funnel on 443
# アクセス先: https://YOUR-TAILSCALE-NAME.ts.net/ponshu/apks/
```
**または Synology DDNS**:
- Control Panel → External Access → DDNS
- プロバイダー: Synology
- ホスト名: `your-nas.synology.me`
- SSL証明書設定
#### **Step 3: index_v2.html のURL更新**
[index_v2.html](./index_v2.html) の18行目を編集:
```javascript
// 変更前
const APK_BASE_URL = 'https://YOUR_SYNOLOGY_OR_VERCEL_URL/apks/2026-02-23_13-17-01';
// 変更後 (Tailscale Funnel)
const APK_BASE_URL = 'https://YOUR-TAILSCALE-NAME.ts.net/ponshu/apks/2026-02-23_13-17-01';
// または (Synology DDNS)
const APK_BASE_URL = 'https://your-nas.synology.me/ponshu/apks/2026-02-23_13-17-01';
```
#### **Step 4: Vercelにデプロイ**
```bash
# web/downloadディレクトリに移動
cd web/download
# vercel.jsonを作成 (既に存在する場合はスキップ)
cat > vercel.json << 'EOF'
{
"buildCommand": "echo 'Static files'",
"outputDirectory": ".",
"framework": null
}
EOF
# index_v2.html を index.html にリネーム
mv index.html index_old.html
mv index_v2.html index.html
# Vercel CLI でデプロイ
vercel --prod
# または Vercel Dashboard から GitHub連携
```
**Vercel Dashboard経由**:
1. https://vercel.com/dashboard
2. "Add New Project"
3. GitHub リポジトリを選択
4. Root Directory: `web/download`
5. Deploy
---
### **Option B: Vercel単独 (APKも含める)**
Vercelの無料プランはファイルサイズ制限があるため、**非推奨**ですが可能です。
```bash
# web/download ディレクトリ構成
web/download/
├── index.html
├── style.css
└── apks/
└── 2026-02-23_13-17-01/
├── ponshu_room_lite_maita.apk
├── ponshu_room_lite_eiji.apk
├── ponshu_room_pro_maita.apk
└── ponshu_room_pro_eiji.apk
# .vercelignore を作成 (不要ファイル除外)
cat > .vercelignore << 'EOF'
*.md
DEPLOYMENT_GUIDE.md
index_old.html
EOF
# デプロイ
vercel --prod
```
**注意**: Vercel無料プランはデプロイサイズ制限があるため、4つ全てのAPK(360MB)を含めると失敗する可能性あり。
---
## 🔐 **セキュリティ設定**
### **Option 1: Basic認証 (Vercel)**
`vercel.json` に追加:
```json
{
"headers": [
{
"source": "/apks/:path*",
"headers": [
{
"key": "WWW-Authenticate",
"value": "Basic realm=\"APK Download\""
}
]
}
]
}
```
### **Option 2: アクセストークン (推奨)**
URLに簡易トークンを追加:
```javascript
// index.html 内
const APK_URLS = {
maita: {
lite: `${APK_BASE_URL}/ponshu_room_lite_maita.apk?token=MAITA_SECRET_123`,
pro: `${APK_BASE_URL}/ponshu_room_pro_maita.apk?token=MAITA_SECRET_123`
},
eiji: {
lite: `${APK_BASE_URL}/ponshu_room_lite_eiji.apk?token=EIJI_SECRET_456`,
pro: `${APK_BASE_URL}/ponshu_room_pro_eiji.apk?token=EIJI_SECRET_456`
}
};
```
Synology側で `.htaccess` でトークン検証:
```apache
RewriteEngine On
RewriteCond %{QUERY_STRING} !token=(MAITA_SECRET_123|EIJI_SECRET_456)
RewriteRule ^apks/.* - [F,L]
```
---
## 🧪 **動作確認**
### **ローカルテスト**
```bash
# Simple HTTP Server で確認
cd web/download
python -m http.server 8000
# ブラウザで開く
# http://localhost:8000/index.html
```
**確認項目**:
- [ ] ユーザー選択画面が表示される
- [ ] Maita/Eiji選択後、適切なダウンロードリンクが表示
- [ ] Lite/Proボタンクリックでダウンロード開始
- [ ] ダークモード切り替えで見た目が変わる
### **本番確認**
Vercelデプロイ後:
```
https://your-project.vercel.app/
```
**確認項目**:
- [ ] Synology上のAPKファイルにアクセス可能
- [ ] CORSエラーが出ない
- [ ] ダウンロード速度が許容範囲
- [ ] スマホ/PCどちらからもアクセス可能
---
## 📊 **配布ページの特徴**
### **実装済み機能**
1. **ユーザー選択**
- Maita/Eiji 選択画面
- LocalStorageに保存 (次回訪問時は自動選択)
- ユーザー変更ボタン
2. **バージョン選択**
- Lite版 (Free)
- Pro版 (Pro Badge)
3. **デザイン**
- 和風 (和紙×墨×琥珀)
- ダークモード自動切替
- レスポンシブ (モバイル/デスクトップ)
4. **情報表示**
- バージョン: v1.0.16
- ファイルサイズ: 90MB
- 対応OS: Android 8.0+
- 主要機能アイコン (撮影/AI解析/コレクション/マップ)
---
## 🔄 **更新手順**
### **新しいAPKバージョンをリリースする場合**
```bash
# 1. 新しいAPKをビルド
bash build_4_apks.sh
# 2. Synologyに新しいディレクトリで配置
scp -r build/apk_releases/NEW_TIMESTAMP/ \
admin@synology.local:/volume1/web/ponshu/apks/
# 3. index.html のAPK_BASE_URLを更新
# APK_BASE_URL = '.../apks/NEW_TIMESTAMP'
# 4. バージョン番号更新
# <footer><p>vX.X.X (YYYY-MM-DD)</p></footer>
# 5. Vercel再デプロイ
vercel --prod
```
---
## 🐛 **トラブルシューティング**
### **問題1: APKダウンロードが403エラー**
**原因**: Synology File Stationの共有設定が誤っている
**解決策**:
```bash
# SSHでパーミッション確認
ls -la /volume1/web/ponshu/apks/
# 644に変更
chmod 644 /volume1/web/ponshu/apks/*/*.apk
```
### **問題2: CORSエラー**
**原因**: Synology NginxがCORSヘッダーを返していない
**解決策**:
Synology Control Panel → Application Portal → Reverse Proxy → Custom Header:
```
Access-Control-Allow-Origin: *
```
### **問題3: Vercelデプロイが失敗**
**原因**: APKファイルサイズが大きすぎる
**解決策**:
- `.vercelignore` にAPKを追加
- APKはSynologyでホスティング (Option A)
---
## 📝 **配布URLの共有方法**
### **Eijiへの共有**
```
件名: Ponshu Room APKダウンロード
本文:
日本酒アプリの最新版をビルドしました。
以下のURLからダウンロードできます。
https://your-project.vercel.app/
ユーザー選択画面で「Eiji」を選択してください。
- Lite版: 基本機能のみ
- Pro版: 将来的に追加機能を予定
インストール方法:
1. APKをダウンロード
2. 「提供元不明のアプリ」を許可
3. インストール実行
何か問題があればお知らせください。
```
---
## 🎉 **完成後のチェックリスト**
- [ ] SynologyにAPKファイル配置完了
- [ ] Tailscale Funnel または DDNS設定完了
- [ ] index.html のURL更新完了
- [ ] Vercelにデプロイ完了
- [ ] ローカルテスト完了
- [ ] 本番環境でMaita用Lite版ダウンロード確認
- [ ] 本番環境でEiji用Lite版ダウンロード確認
- [ ] スマホからアクセス確認
- [ ] ダークモード確認
- [ ] EijiへURL共有
---
**次のステップ**: フィードバック収集 → v1.0.17で改善