2025.04.13 (日)

✨ GPTの要約  

Secret Messengerプロジェクトの実行計画をPhase 1〜6まで精密に拡張し、開発スタックをFlutter Web + Djangoの組み合わせへ高度化して、偽装インターフェースとサーバーデプロイの流れを体系化した一日。

🚀 Roadmap

中国本土で厳しい監視下に置かれた高リスクの人々、特に未登録の北朝鮮脱出者を対象にした、安全で偽装されたFlutter Web + Djangoメッセンジャーの実行計画です。ここでは隠蔽性とデータ保護が最優先になります。
このアプリケーションは基本的なオンライン電卓に偽装しつつ、内部ではリアルタイムチャット、ファイル共有、一方向の情報告知を提供します。


✅ Phase 1 — 計画とアーキテクチャ

  • 🧠 プロジェクト目標と脅威モデルを定義
    • 対象: 中国国内の未登録の北朝鮮脱出者
    • ミッション: ブラウザベース、インストール不要、安全で偽装されたメッセージングツール
    • UX偽装: 電卓風インターフェース
  • 🤖 AI主導の開発ワークフローを選択
    • 設計、codegen、反復にGPT-4o + o1を使用
    • “Vibe Coding”に従う → AIによる高速な自然言語開発
  • ⚙️ 技術スタックを確定
    • Frontend: Flutter Web (Material 3, go_router, Riverpod, http)
    • Backend: Django + Django REST Framework (Django 5.x)
    • Deployment: 単一VPSコンテナ (static + API)、必要に応じてCloudflare proxy
  • 🌐 ドメインを取得
    • Domain: ___.net
    • Cost: 韓国レジストラ経由で₩18,000/year
    • Purpose: オンライン電卓として視覚的に偽装

✅ Phase 2 — VPSセットアップと基本デプロイ

  • 💳 Vultrアカウントを作成し、$10を支払う。

  • 🛒 VPS instanceを作成
    • Region: Singapore (Vultr上でGFW性能が最も良い)
    • OS: Ubuntu 22.04 x64
    • Plan: 1vCPU / 1GB RAM ($5/month)
    • SSH keyまたはパスワードアクセスをセットアップ
  • 🔐 アクセスして初期化

    ssh root@<IP>
    apt update && apt upgrade -y
    apt install python3-pip python3-venv nginx git ufw -y
    ufw allow OpenSSH && ufw allow 'Nginx Full' && ufw enable
    
  • 📁 プロジェクトディレクトリとvirtualenvを準備

    mkdir /srv/___ && cd /srv/___
    python3 -m venv venv && source venv/bin/activate
    pip install django djangorestframework whitenoise gunicorn
    

Note: VPS IPを隠しDDoSを吸収するため、Cloudflare proxyを推奨します。


✅ Phase 3 — プロジェクト初期化 (Django + Flutter)

🔧 Django Setup

  • django-admin startproject stealthcore .
    • /srv/___の中にstealthcore/フォルダとmanage.pyを作成します。
  • python manage.py startapp api
    • 独自ロジック(メッセージ処理、ファイルアップロード、ブロードキャスト通知など)用のapi/フォルダを作成します。
  • INSTALLED_APPS'api''rest_framework'を追加
    • stealthcore/stealthcore/settings.pyで、例:

      INSTALLED_APPS = [
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
          'rest_framework',  ## Add
          'api',            ## Add
      ]
      
  • python manage.py migrate
    • 初期database tableを作成します (デフォルトではSQLite)。
  • python manage.py createsuperuser
    • Djangoのadmin panelへアクセスできるようにします (任意だが推奨)。

Future expansions:

  • TTL付きグループチャット用の/api/messages/
  • ファイル共有(自動削除)用の/api/upload/
  • 管理者ブロードキャストメッセージ用の/api/notice/

🛠️ Flutter Web Setup

  • flutter create ___web
    • 基本的なFlutter Webプロジェクトを生成します。
  • UIを置き換える 電卓風レイアウトへ
    • main.dartでの最小例:

      TextField(
        onChanged: (val) {
          // store user input
        },
      );
      ElevatedButton(
        onPressed: () {
          // call /api/check-trigger/
        },
        child: Text("Send"),
      );
      
    • 現実的には、数字キーパッド、基本的な四則演算などを実装します。

  • /api/check-trigger/へPOST requestを接続
    • httpを使用:

      final response = await http.post(
        Uri.parse('/api/check-trigger/'),
        body: {'input': userInput},
      );
      
    • 有効なら、backendがtokenを発行 → Flutterが隠しmessenger UIを読み込む。

  • flutter build web
    • Flutterアプリをbuild/web/へコンパイルします。
  • ファイルをコピー:

    mkdir frontend_static/
    cp -r build/web/* frontend_static/
    
    • これはNginxまたはDjangoのWhiteNoiseで配信できます。

✅ Phase 4 — Trigger APIとFlutter統合

  • Djangoのapi/views.pyで:

    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    import os
    
    @api_view(['POST'])
    def check_trigger(request):
        ## Production: store real trigger in os.environ or DB
        valid_trigger = os.environ.get('___TRIGGER', '1004')
        if request.data.get('input') == valid_trigger:
            return Response({'status': 'success', 'token': 'XYZ'})
        return Response({'status': 'denied'})
    
  • /api/urls.pyを作成し、routeを登録

    from django.urls import path
    from .views import check_trigger
    
    urlpatterns = [
        path('check-trigger/', check_trigger, name='check-trigger'),
    ]
    
  • Flutterからhttp.post(...)で接続
    • "success"なら、tokenをmemory(Riverpod)に保存 → 隠しUIを表示
    • "denied"なら、単純な電卓のまま残す
  • frontendに機密ロジックがないことを確認
    • すべてのsecret value(trigger codeなど)はサーバー上に置く。

✅ Phase 5 — Nginx & HTTPS Hosting

  • Nginx configを作成:

    server {
        listen 80;
        server_name ___.net;
    
        location /static/ {
            alias /srv/___/frontend_static/;
        }
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  • configを有効化して再起動:

    ln -s /etc/nginx/sites-available/___ /etc/nginx/sites-enabled/
    nginx -t && systemctl restart nginx
    
  • HTTPSを有効化:

    apt install certbot python3-certbot-nginx -y
    certbot --nginx -d ___.net
    
    • ___.net用のLet’s Encrypt証明書をインストールします。
    • その後、https://___.netで偽装電卓が配信されるはずです。

Gunicorn & systemd

  • 本番では、Nginxの後ろでGunicornを使ってDjangoを実行:

    gunicorn stealthcore.wsgi:application --bind 127.0.0.1:8000
    
  • 再起動時に自動復旧するよう、/etc/systemd/system/gunicorn.serviceを作成します。


✅ Phase 6 — 最終テストと偽装の堅牢化

  • 🧪 UIとtriggerをテスト
    • https://___.netへアクセス
    • 1004(または本当のtrigger)を入力 → {"status":"success"} + tokenを確認
    • 無効な入力 → {"status":"denied"}を確認
  • 🔒 frontendをクリーンにする
    • “chat”や”trigger”への参照をすべて削除
    • hardcoded secretsやtokensなし
    • ephemeral sessionsのため、localStorage使用は最小限
  • 🧊 最終偽装を磨く
    • 偽の電卓branding (title、iconなど)
    • 完全に電卓として信じられるよう、実際の演算機能を入れる (任意)
    • UI alignment、theming、final styling
  • 🧠 deploy.mdを作成 (内部ドキュメント)
    • デプロイ、更新、rollback、検証方法
    • 環境変数(___TRIGGERSECRET_KEY)を要約
    • security & logging best practicesを含める

🔮 Future Features

  • 📥 Info Board (読み取り専用のお知らせ)
  • 💬 TTLベースのメッセージ削除付きGroup Chat
  • 📁 File Sharing (セキュリティのため自動expire)
  • 🔥 期限切れデータ用のcron/management commandによるAuto-Deletion
  • 🌐 VPS IPを隠しDDoSを緩和するCloudflare Proxy

このロードマップを使って、初期VPSセットアップから最終本番化まで、___のend-to-end developmentを進める。


💭 日記

開発を止めてはいけない。習慣が崩れる。もう十日も経った。

一日10分でも必ず開発して、どれだけ小さな変化でも開発日誌を書こう。


👀 Git Log

Date Type Message
25.04.13 Sun docs(roadmap) refine and finalize Phase 1–6 plan for secure disguised messenger (HEAD → main, origin/main)
25.04.03 Thu docs(roadmap) edit full Phase 0–3 checklist for Flutter Web + Django deployment
25.04.03 Thu docs add dev-principles and roadmap with links from README
25.04.03 Thu docs(README) add more details to roadmap
25.04.03 Thu docs(README) change backend from Node to Django, and change from Kor to Eng
25.04.02 Wed docs(README) add minor details for user
25.04.01 Tue docs(README) add description, tech stack, features, roadmap, …
25.04.01 Tue - Initial commit

コメントする