Gateway setup guide ― Meta App + Claude key + nginx
3 ステップで Meta ログインを実稼働化。所要 ~30 分、課金なし、Meta App 審査不要 (public_profile + email のみ)。
Step 1. Meta for Developers でアプリ作成
1developers.facebook.com にログイン (Facebook 個人アカウント可)。マイアプリ →「アプリを作成」
2ユースケース選択: 「Facebook ログインでユーザーを認証し、データをリクエスト」を選択 (review 不要のため)
3アプリ名 = JAVATEL RLM Gateway (任意)、連絡先メール入力、ビジネスポートフォリオ任意
4左サイドバー: 「アプリの設定」 →「基本」 を開き、アプリ ID をコピー (これが META_APP_ID)
5「プラットフォームを追加」 → 「ウェブサイト」、サイト URL = https://javatel.co.jp/
6「製品」 → 「Facebook ログイン」 → 「設定」、有効な OAuth リダイレクト URI に追加:
https://javatel.co.jp/ja/resource/slimetree-rlm/meta/gateway/
https://javatel.co.jp/resource/slimetree-rlm/meta/gateway/
Step 2. App ID を Gateway HTML に差込
取得した App ID で、/ja/resource/slimetree-rlm/meta/gateway/index.html および /gateway/index.html の以下の行を置換します:
// === 設定: Meta App ID ===
const META_APP_ID = '__JAVATEL_META_APP_ID__';
// ↑ ここに 15 桁前後の数字を貼る
// 例: '1234567890123456'
置換後、HTTPS で gateway を開くと「Meta アカウントでログイン」ボタンが活性化します。
Step 3. nginx ヘッダ (任意 / shared-memory WASM 化時に必要)
mock WASM は SharedArrayBuffer 不要のため 本デモでは Step 3 はスキップ可。実 WASM (272 KB) に差替えて WebWorker / 永続化を使う場合のみ:
server {
listen 443 ssl http2;
server_name javatel.co.jp;
# gateway path のみ COOP/COEP を有効化 (他 path に影響させない)
location /gateway/ {
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location /ja/resource/slimetree-rlm/meta/gateway/ {
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
location ~ \.wasm$ {
types { application/wasm wasm; }
add_header Cross-Origin-Resource-Policy "same-origin" always;
}
}
Step 4. Claude API key (利用側設定)
R 判定時のみ Anthropic API を呼びます。エンドユーザは:
- console.anthropic.com → API Keys → Create Key
- key (
sk-ant-api03-...) をコピー - Gateway の「2. Claude (Anthropic) API key」欄に貼って「保存」
key は ブラウザ localStorage のみに保存、javatel サーバには一切送信されません (browser direct call, anthropic-dangerous-direct-browser-access: true ヘッダで明示同意)。利用料金はキー所有者の Anthropic アカウントへ直接課金。
Step 5. 検証
# ログイン経路
curl -I https://javatel.co.jp/ja/resource/slimetree-rlm/meta/gateway/ # 200
# WASM mock
curl -I https://javatel.co.jp/ja/resource/slimetree-rlm/meta/gateway/slimetree-rlm-mock.js # 200, application/javascript
# (任意) COOP/COEP 確認
curl -sI https://javatel.co.jp/ja/resource/slimetree-rlm/meta/gateway/ | grep -i "cross-origin"
# ライセンス API (multi-service) の動作確認
curl -s https://javatel.co.jp/api/trial/services | python3 -m json.tool # 7 サービス返却
Step 6. mock JS → 実 WASM への差替え
SlimeTree-RLM の実 WASM (約 272 KB) を入手したら、index.html 内の 1 行を変えるだけで切替えできます。他の呼出 (rlm.route(text) 以降) は完全に同じ。
// === mock 版 (現状) ===
import { SlimeTreeRLM } from './slimetree-rlm-mock.js';
const rlm = new SlimeTreeRLM();
await rlm.init();
// === 実 WASM 版 ===
import init, { SlimeTreeRLM } from './slimetree_rlm.js';
await init({
module_or_path: './slimetree_rlm_bg.wasm',
// shared memory を使う場合は memory: new WebAssembly.Memory({ shared: true, ... })
});
const rlm = new SlimeTreeRLM({
capacity: 16 * 1024 * 1024,
audit: true,
// mode: 'shared', // SAB-backed WebWorker pool 共有時のみ
});
shared memory (WebWorker pool) を使う場合は本ファイル Step 3 の COOP/COEP ヘッダが必要です。詳細は Tutorial 中級編 (SAB + WASM ビルド) 参照。
slimetree_rlm_bg.wasm 本体は別途ライセンス契約が必要です。
Step 7. ライセンスサーバ確認 (オプション)
Gateway は /api/trial/subscription/start 等で本物のライセンスサーバ (Python + SQLite + Ed25519、127.0.0.1:8765 で稼働) を呼びます。ユーザがメール+パスワード認証で 30 日トライアルを開始できる状態か確認:
# サービスカタログ (公開)
curl -s https://javatel.co.jp/api/trial/services
# 認証エンドポイント (空 body で 400 = エンドポイント生きている確認)
curl -s -o /dev/null -w "%{http_code}\n" -X POST https://javatel.co.jp/api/account/me/subscriptions \
-H "Content-Type: application/json" -d '{}' # 400 → OK
