2025.04.17 (Qui)

✨ Resumo do GPT  

Um dia em que consegui configurar a conexão SSH e integrar um shell script escrito anteriormente para automatizar a configuração do ambiente VPS. Com isso, o tempo de preparação do ambiente do projeto Flutter+Django foi drasticamente reduzido.


💭 Diário

Então era tão fácil assim acessar um servidor remoto por conexão SSH? Com a ajuda do GPT, deu certo rapidinho, sem travar. Antigamente eu ficava confundindo conceitos, esquecendo coisas e fazendo a maior bagunça…

E depois que a conexão SSH deu certo, eu rodei num “clique” o script de automação que tinha escrito antes e consegui configurar o ambiente inteiro de uma vez só, haha.

Pois é, mesmo aquilo que parece trabalho inútil acaba sendo útil assim mais tarde, não é?


🚀 Roadmap

Plano de execução para um messenger seguro e disfarçado em Flutter Web + Django, voltado a indivíduos de alto risco e fortemente monitorados na China continental — especificamente desertores norte-coreanos indocumentados —, onde ocultação e proteção de dados são essenciais. O aplicativo é camuflado como uma calculadora online básica, enquanto por baixo oferece chat em tempo real, compartilhamento de arquivos e transmissões unidirecionais de informações.


✅ Fase 1 — Planejamento e arquitetura

  • 🧠 Definir objetivo do projeto e modelo de ameaça
    • Público: desertores norte-coreanos indocumentados na China
    • Missão: ferramenta de mensagens segura, disfarçada, baseada em navegador e sem instalação
    • Disfarce de UX: interface em estilo de calculadora
  • 🤖 Selecionar fluxo de desenvolvimento conduzido por IA
    • Usar GPT-4o + o1 para design, codegen e iteração
    • Seguir “Vibe Coding” → desenvolvimento rápido em linguagem natural via IA
  • ⚙️ Finalizar stack técnica
    • Frontend: Flutter Web (Material 3, go_router, Riverpod, http)
    • Backend: Django + Django REST Framework (Django 5.x)
    • Deploy: contêiner único em VPS (estático + API), com proxy Cloudflare opcional
  • 🌐 Adquirir domínio
    • Domínio: ㅇㅇㅇ.net
    • Custo: ₩18,000/ano por registrador coreano
    • Propósito: camuflagem visual como calculadora online

✅ Fase 2 — Configuração da VPS e deploy base

  • 💳 Criar uma conta na Vultr e pagar $10.

  • 🛒 Criar uma instância VPS
    • Região: Singapore (melhor desempenho de GFW na Vultr)
    • OS: Ubuntu 22.04 x64
    • Plano: 1vCPU / 1GB RAM ($5/mês)
    • Configuração de chave SSH ou acesso por senha
  • 🔑 Simplificar login SSH Mac ↔ servidor
    • Gerar uma chave ed25519 no MacBook e carregá-la no agent

      ssh-keygen -t ed25519 -C "ㅇㅇㅇ-remote"
      ssh-copy-id -i ~/.ssh/id_ed25519.pub root@<IP>
      
    • Daqui em diante: ssh root@<IP> → prompt de passphrase → login instantâneo

  • 🐚 Inicializar o ambiente shell na VPS
    • Clonar o repositório pessoal de dotfiles e executar o script de configuração

      git clone https://github.com/JUD210/dev-settings-backup.git ~/dev-settings-backup
      cd ~/dev-settings-backup
      chmod +x init_my_shell.sh && ./init_my_shell.sh
      
    • O script instala / verifica zsh, Oh‑My‑Zsh, Powerlevel10k, vincula .zshrc, .vimrc, .gitconfig e define zsh como shell padrão.
    • Também garante que ferramentas essenciais de CLI, como less e git, estejam instaladas
  • 🔐 Acessar e inicializar a VPS
    • Fazer login e instalar pacotes essenciais (se ainda não tiverem sido tratados pelo script de bootstrap)

      ssh root@<IP>
      apt update && apt upgrade -y
      apt install python3-pip python3-venv nginx ufw -y
      ufw allow OpenSSH && ufw allow 'Nginx Full' && ufw enable
      
  • 📁 Preparar diretório do projeto e virtualenv

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

Observação: Um proxy Cloudflare é recomendado para esconder o IP da VPS e absorver DDoS.


✅ Fase 3 — Inicialização do projeto (Django + Flutter)

🔧 Configuração do Django

  • django-admin startproject stealthcore .
    • Cria a pasta stealthcore/ e o manage.py dentro de /srv/ㅇㅇㅇ.
  • python manage.py startapp api
    • Cria a pasta api/ para sua lógica personalizada (tratamento de mensagens, uploads de arquivos, avisos de transmissão etc.).
  • Adicionar 'api', 'rest_framework' a INSTALLED_APPS
    • Em stealthcore/stealthcore/settings.py, por exemplo:

      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
    • Cria as tabelas iniciais do banco de dados (SQLite por padrão).
  • python manage.py createsuperuser
    • Permite acessar o painel de administração do Django (opcional, mas recomendado).

Expansões futuras:

  • /api/messages/ para chat em grupo com TTL
  • /api/upload/ para compartilhamento de arquivos (exclusão automática)
  • /api/notice/ para mensagens de transmissão do administrador

🛠️ Configuração do Flutter Web

  • flutter create ㅇㅇㅇ_web
    • Gera um projeto Flutter Web básico.
  • Substituir a UI por um layout em estilo de calculadora
    • Exemplo mínimo em main.dart:

      TextField(
        onChanged: (val) {
          // store user input
        },
      );
      ElevatedButton(
        onPressed: () {
          // call /api/check-trigger/
        },
        child: Text("Send"),
      );
      
    • Na prática, implementar teclado numérico, aritmética básica etc.

  • Conectar requisição POST a /api/check-trigger/
    • Usando http:

      final response = await http.post(
        Uri.parse('/api/check-trigger/'),
        body: {'input': userInput},
      );
      
    • Se for válido, o backend emite um token → o Flutter carrega a UI oculta do messenger.

  • flutter build web
    • Compila seu app Flutter para build/web/.
  • Copiar arquivos:

    mkdir frontend_static/
    cp -r build/web/* frontend_static/
    
    • Isso pode ser servido pelo Nginx ou pelo WhiteNoise do Django.

✅ Fase 4 — API de gatilho e integração com Flutter

  • Em api/views.py do Django:

    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'})
    
  • Criar /api/urls.py e registrar a rota

    from django.urls import path
    from .views import check_trigger
    
    urlpatterns = [
        path('check-trigger/', check_trigger, name='check-trigger'),
    ]
    
  • Conectar a partir do Flutter com http.post(...)
    • Se for "success", armazenar token em memória (Riverpod) → mostrar UI oculta
    • Se for "denied", permanecer como uma calculadora simples
  • Garantir que não haja lógica sensível no frontend
    • Todos os valores secretos (como o código de gatilho) ficam no servidor.

✅ Fase 5 — Hospedagem com Nginx e HTTPS

  • Criar configuração do Nginx:

    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;
        }
    }
    
  • Ativar configuração e reiniciar:

    ln -s /etc/nginx/sites-available/ㅇㅇㅇ/etc/nginx/sites-enabled/
    nginx -t && systemctl restart nginx
    
  • Ativar HTTPS:

    apt install certbot python3-certbot-nginx -y
    certbot --nginx -d ㅇㅇㅇ.net
    
    • Instala o certificado Let’s Encrypt para ㅇㅇㅇ.net.
    • Depois disso, https://ㅇㅇㅇ.net deve servir sua calculadora disfarçada.

Gunicorn & systemd

  • Em produção, rodar Django com Gunicorn atrás do Nginx:

    gunicorn stealthcore.wsgi:application --bind 127.0.0.1:8000
    
  • Criar um /etc/systemd/system/gunicorn.service para reiniciar automaticamente no boot.


✅ Fase 6 — Testes finais e hardening do disfarce

  • 🧪 Testar UI e gatilho
    • Acessar https://ㅇㅇㅇ.net
    • Inserir 1004 (ou o gatilho real) → verificar {"status":"success"} + token
    • Entrada inválida → {"status":"denied"}
  • 🔒 Limpar frontend
    • Remover todas as referências a “chat” ou “trigger”
    • Nenhum segredo ou token hardcoded
    • Uso mínimo de localStorage para sessões efêmeras
  • 🧊 Polimento final do disfarce
    • Branding falso de calculadora (título, ícone etc.)
    • Aritmética real (opcional), para que seja plenamente plausível como calculadora
    • Alinhamento da UI, tema e estilização final
  • 🧠 Criar deploy.md (documento interno)
    • Como fazer deploy, atualizar, rollback e verificar
    • Resumir variáveis de ambiente (ㅇㅇㅇ_TRIGGER, SECRET_KEY)
    • Incluir boas práticas de segurança e logging

🔮 Funcionalidades futuras

  • 📥 Quadro de informações (avisos somente leitura)
  • 💬 Chat em grupo com exclusão de mensagens baseada em TTL
  • 📁 Compartilhamento de arquivos (expiração automática por segurança)
  • 🔥 Exclusão automática via cron/comando de gerenciamento para dados expirados
  • 🌐 Proxy Cloudflare para mascarar o IP da VPS e mitigar DDoS

Use este roadmap para orientar o desenvolvimento ponta a ponta de ㅇㅇㅇ — da configuração inicial da VPS até a produção final.—


👀 Git Log

Data Tipo Mensagem
25.04.17 Thu docs(roadmap) refine Phase 2 with SSH setup and bootstrap script integration (HEAD -> main, origin/main)
25.04.13 Sun docs(roadmap) refine and finalize Phase 1–6 plan for secure disguised messenger
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

Deixe um comentário