OASIS_MOBILE/AUTOMATIZACION/10_DEBIAN_setup.txt
SITO 3a3563f2a0 feat: merge Oasis 0.7.6 upstream — Graphos, E2E, peers/stats, AUTOMATIZACION
Cambios aplicados desde epsylon/oasis 3d46340 (0.7.6):

NUEVO MÓDULO Graphos (mapa interactivo de la red):
- src/views/graphos_view.js (nuevo)

LÓGICA:
- src/backend/nameCache.js (nuevo) — NameAuthor resolver
- src/models/chats_model.js — encriptación E2E
- src/models/calendars_model.js — E2E + calendar invites con códigos
- src/models/maps_model.js — E2E + CLOSED enforcement
- src/models/tribes_model.js — sub-tribe access control (PRESERVA nuestro inviteLog)
- src/models/tribe_crypto.js — soporte E2E
- src/models/main_models.js — refactor (PRESERVA nuestro pub-invite SSB msg)
- src/models/{activity,banking,pads,search,stats,tags,tribes_content}_model.js
- src/backend/backend.js — searchModel constructor + new helpers (errorView, safeRefererRedirect)
- src/backend/blobHandler.js, renderTextWithStyles.js
- src/views/main_views.js — añadido userLink/userLinkLabel + nameCache import (mantiene nuestro hamburger menu)

VISUAL:
- 31 views actualizadas con refactor a userLink helper
- src/views/peers_view.js — tabla con keys clicables
- src/views/stats_view.js — dashboard avanzado
- src/client/assets/styles/style.css — merge (preserva nuestras adiciones QR/mobile)
- Temas desktop: Clear, Dark, Matrix, Purple
- Translations 11 idiomas (ar, de, en, es, eu, fr, hi, it, pt, ru, zh)
- src/configs/{config-manager,oasis-config}, server/SSB_server.js, oasis_client.js

SKIPS (intencionalmente):
- OasisMobile.css del upstream (mantenemos NUESTRO mobile.css y theme)
- main_views.js menu reorganization (mantenemos hamburger nav)
- @xenova/transformers (LLM, no viable mobile)
- node-llama-cpp (build nativo no soportado en arm64 mobile)
- pdfjs-dist (pendiente probar luego)
- AI/embedder.js + AI/routes_index.js (dependen de las libs LLM)

server/package.json: version 0.7.5 → 0.7.6

AUTOMATIZACIÓN:
- Nueva carpeta AUTOMATIZACION/ con 10 archivos:
  - 4 opciones (cron simple, multi-agente, GitHub Actions, webhook)
  - Setup Debian completo paso a paso
  - Scripts bash listos: scout, merger, builder, notify-telegram
  - Prompts listos para los agentes
  - Sección /testing-app para 0asis.net
  - Human-in-the-loop: archivos prohibidos para auto-merge

PENDIENTE: build APK (el bash tool tuvo timeouts; usar comandos
de CONTEXT/cambio_apk_repack.txt manualmente).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 19:41:45 +02:00

258 lines
7.1 KiB
Text

===============================================================
DEBIAN VPS — Setup paso a paso
===============================================================
REQUISITOS MÍNIMOS DEL VPS
-------------------------
CPU: 2 cores
RAM: 4 GB (mínimo, recomendado 8 GB para AI tasks)
Disco: 30 GB (10 para sistema, 5 para Android SDK,
10 para histórico de APKs)
OS: Debian 12 (bookworm)
Red: IP pública con dominio (si vas a usar webhooks)
PASO 1 — USUARIO Y DIRECTORIOS
------------------------------
sudo adduser --system --group --home /home/oasis oasis
sudo mkdir -p /opt/oasis_mobile /opt/scripts /opt/secrets \
/opt/oasis-base /opt/oasis-webhook \
/var/oasis-auto/reports /var/oasis-auto/apks \
/var/www/0asis.net/testing-app
sudo chown -R oasis:oasis /opt/oasis_mobile /opt/scripts \
/var/oasis-auto /var/www/0asis.net
PASO 2 — DEPENDENCIAS BASE
--------------------------
sudo apt update
sudo apt install -y \
git curl wget jq bc \
python3 python3-pip python3-flask python3-gunicorn \
openjdk-17-jdk-headless \
zip unzip cron \
build-essential
PASO 3 — CADDY (REVERSE PROXY)
------------------------------
sudo apt install -y debian-keyring debian-archive-keyring \
apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install -y caddy
sudo systemctl enable caddy
PASO 4 — ANDROID SDK BUILD-TOOLS
--------------------------------
cd /tmp
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
sudo mkdir -p /opt/android-sdk/cmdline-tools
sudo unzip -q commandlinetools-linux-*.zip -d /opt/android-sdk/cmdline-tools
sudo mv /opt/android-sdk/cmdline-tools/cmdline-tools \
/opt/android-sdk/cmdline-tools/latest
sudo yes | /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses
sudo /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager \
"build-tools;35.0.1"
# Verificar
/opt/android-sdk/build-tools/35.0.1/apksigner version
PASO 5 — CLAUDE CODE CLI
------------------------
# Como usuario oasis (no root):
sudo -u oasis -i
curl -fsSL https://claude.ai/install.sh | bash
# Loguearse o usar API key (recomendado para automatización):
export ANTHROPIC_API_KEY="sk-ant-xxxxx"
# Test
claude -p "say hello" --allowed-tools "" \
--output-format text
exit # vuelve a root
PASO 6 — REPO LOCAL
-------------------
sudo -u oasis git clone <URL del repo oasis_mobile> /opt/oasis_mobile
cd /opt/oasis_mobile
sudo -u oasis git remote add upstream https://github.com/epsylon/oasis.git
sudo -u oasis git fetch upstream
# Verificar
sudo -u oasis git log --oneline upstream/main | head -5
PASO 7 — KEYSTORE
-----------------
# COPIAR el keystore desde tu máquina:
scp ~/oasis-release-key.jks \
oasis@your-vps:/opt/secrets/oasis-release-key.jks
# Permisos restrictivos
sudo chmod 600 /opt/secrets/oasis-release-key.jks
sudo chown oasis:oasis /opt/secrets/oasis-release-key.jks
# Copia también el APK base
scp ~/oasis-v0.6.8.apk \
oasis@your-vps:/opt/oasis-base/oasis-v0.6.8.apk
PASO 8 — SCRIPTS Y PROMPTS
--------------------------
# Copia los scripts de AUTOMATIZACION/09_SCRIPTS.md a:
/opt/scripts/oasis-scout.sh
/opt/scripts/oasis-merger.sh
/opt/scripts/oasis-builder.sh
/opt/scripts/notify-telegram.sh
# Copia los prompts de AUTOMATIZACION/08_PROMPTS_para_agentes.md a:
/opt/scripts/prompts/scout.md
/opt/scripts/prompts/merger.md
/opt/scripts/prompts/builder.md
# Permisos
sudo chmod +x /opt/scripts/*.sh
sudo chown -R oasis:oasis /opt/scripts
PASO 9 — TELEGRAM BOT (opcional)
-------------------------------
# En Telegram: hablar con @BotFather, crear bot, copiar token.
# Añadir el bot a un canal/grupo donde recibir notificaciones.
# Obtener chat_id con:
curl "https://api.telegram.org/bot$TOKEN/getUpdates"
# Guardar en /opt/secrets/telegram.env:
TELEGRAM_BOT_TOKEN=123456789:AAxxxx
TELEGRAM_CHAT_ID=-1001234567890
sudo chmod 600 /opt/secrets/telegram.env
PASO 10 — CRON
--------------
sudo cp /opt/scripts/oasis-auto.cron /etc/cron.d/oasis-auto
# Verificar
systemctl restart cron
cat /etc/cron.d/oasis-auto
PASO 11 — WEBHOOK (opcional, para opción D)
-------------------------------------------
cd /opt/oasis-webhook
# Copia app.py de 09_SCRIPTS.md
# Generar secret
python3 -c "import secrets; print(secrets.token_hex(32))" \
| sudo tee /opt/secrets/webhook-secret
# Service
sudo cp oasis-webhook.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now oasis-webhook
# Verificar
curl http://127.0.0.1:5000/api/health
PASO 12 — DNS Y HTTPS
---------------------
# En tu DNS provider:
A 0asis.net -> IP-DEL-VPS
# Caddyfile:
sudo cp Caddyfile /etc/caddy/Caddyfile
sudo systemctl reload caddy
# Caddy obtiene certificado Let's Encrypt automáticamente.
# Verificar:
curl -I https://0asis.net
PASO 13 — WEBHOOK EN GITHUB
---------------------------
# En el fork de oasis_mobile en GitHub:
Settings → Webhooks → Add webhook
URL: https://0asis.net/api/oasis-release
Secret: el de /opt/secrets/webhook-secret
Events: only "Releases"
PASO 14 — TEST INICIAL
----------------------
# Como oasis user:
sudo -u oasis -i
# Forzar scout manualmente
/opt/scripts/oasis-scout.sh
# Verificar reporte
ls /var/oasis-auto/reports/
# Si OK, esperar al lunes o forzar pipeline completo
/opt/scripts/oasis-merger.sh && /opt/scripts/oasis-builder.sh
CHECKLIST FINAL
---------------
[ ] User oasis creado
[ ] /opt/oasis_mobile con remote upstream
[ ] /opt/secrets con keystore y permisos 600
[ ] /opt/oasis-base con oasis-v0.6.8.apk
[ ] Android SDK build-tools instalado
[ ] Claude Code instalado con API key
[ ] Scripts en /opt/scripts/ con permisos
[ ] Cron /etc/cron.d/oasis-auto configurado
[ ] Telegram bot (opcional)
[ ] Caddy + HTTPS para 0asis.net
[ ] Webhook receiver en systemd (opcional)
[ ] Webhook en GitHub configurado (opcional)
[ ] Test inicial OK
MONITORING
----------
# Logs cron
tail -f /var/log/syslog | grep CRON
# Logs de cada agente
tail -f /var/oasis-auto/reports/*.log
# Logs Caddy
journalctl -u caddy -f
# Logs webhook
journalctl -u oasis-webhook -f
# Espacio en disco
df -h /var/www /opt /var/oasis-auto
PROBLEMAS COMUNES
-----------------
"claude command not found":
El PATH del cron no incluye ~/.local/bin
→ en cron usa /home/oasis/.local/bin/claude full path
"git push falla":
El user oasis necesita SSH key configurada
→ ssh-keygen -t ed25519 y añadir a tu Gitea/GitHub
"apksigner: java not found":
sudo apt install openjdk-17-jdk-headless
Verifica: java --version
"permission denied en keystore":
sudo chown oasis:oasis /opt/secrets/oasis-release-key.jks
sudo chmod 600 ...