vps_operations
VPS deployment, directory layout, env sync, backup execution, SSH access, and operational procedures.
Files1
View on GitHubSKILL.md.claude/skills/13_vps_operations/SKILL.md
GitHubVPS Operations (RESTO BOT)
VPS details
- Host: 72.60.190.192 (Hostinger VPS)
- SSH:
ssh deploy@72.60.190.192(key auth, no password) - OS: Linux (Ubuntu-based)
- Docker: Available at
/usr/bin/docker
Directory layout
/opt/resto/
current/ -> symlink to active release
releases/
YYYYMMDD-HHMMSS-<sha>/ -> each release
backups/ -> DB dumps
secrets/ -> credential files (on VPS only)
Production compose
cd /opt/resto/current
docker compose -f docker-compose.hostinger.prod.yml up -d
External networks (must exist)
docker network create proxy 2>/dev/null || true
docker network create internal 2>/dev/null || true
External volumes (must exist)
for vol in cms_uploads n8n_data ollama_data postgres_data redis_data traefik_data; do
docker volume create "$vol" 2>/dev/null || true
done
Secrets on VPS
Located at /opt/resto/current/secrets/:
n8n_encryption_keypostgres_passwordredis_passwordstrapi_db_passwordtraefik_usersfile
Backup procedures
PostgreSQL backup
ssh deploy@72.60.190.192 'cd /opt/resto/current && \
docker compose -f docker-compose.hostinger.prod.yml exec -T postgres \
pg_dump -U n8n -d n8n --format=custom > /opt/resto/backups/n8n_$(date +%Y%m%d_%H%M%S).dump'
PostgreSQL restore
docker compose -f docker-compose.hostinger.prod.yml exec -T postgres \
pg_restore -U n8n -d n8n --clean --if-exists < /opt/resto/backups/<backup_file>.dump
Operational scripts
| Script | Purpose |
|---|---|
project/scripts/ops/deploy_staging_to_node.sh |
Deploy staging to VPS |
project/scripts/ops/rollback.sh |
Emergency rollback |
project/scripts/ops/provision_vps.sh |
Initial VPS setup |
project/scripts/preflight-prod.sh |
Pre-deploy validation |
project/scripts/smoke_security.sh |
Post-deploy smoke tests |
project/scripts/validate_cicd.sh |
CI/CD + VPS connectivity test |
project/scripts/validate_go_no_go.sh |
Go/no-go decision |
Disk space warning
- VPS disk can fill up quickly (monitor with
df -h /) - Docker logs rotate (configured in compose)
- Clean old releases: keep last 3 in
/opt/resto/releases/ - Clean Docker:
docker system prune -f(never prune volumes)
Environment sync
- Local
.envmust match VPS.envfor all [REQUIRED] vars - Secrets are VPS-only (not in git)
- Use
project/scripts/validate_cicd.sh --vpsto test connectivity
Key files
project/docker-compose.hostinger.prod.ymlproject/.envproject/scripts/ops/(all ops scripts)project/scripts/preflight-prod.sh
Required output
- Deploy log with timestamps
- Smoke test results
- PATCHLOG.md entry
- Rollback plan (always)