=============================================================== 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 /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 ...