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>
258 lines
7.1 KiB
Text
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 ...
|