Personal Buzz Nostr relay deployed on Oracle Cloud Always Free (ARM64) behind Cloudflare Tunnel.
Relay URL: wss://buzz.YOUR-DOMAIN.com (set during deployment)
My Mac ←→ Cloudflare (DNS + TLS + Tunnel) ←→ Oracle ARM64 VM (Docker)
- Buzz relay + PostgreSQL 17 + Redis 7 + MinIO in Docker Compose
- Cloudflare Tunnel for secure ingress (no public origin ports)
- Always Free: 2 OCPU Ampere A1, 12 GB RAM, 50 GB boot volume
| Action | Command (run on VM) |
|---|---|
| Status | cd /opt/buzz/deploy/compose && docker compose ps |
| Logs | cd /opt/buzz/deploy/compose && docker compose logs --tail=100 relay |
| Health | /opt/buzz-infrastructure/scripts/health-check.sh |
| Diagnostics | /opt/buzz-infrastructure/scripts/diagnostics.sh |
| Backup | /opt/buzz-infrastructure/scripts/backup.sh full |
| Restore test | /opt/buzz-infrastructure/scripts/restore.sh <backup.enc> |
| Update | /opt/buzz-infrastructure/scripts/update.sh <new-image> |
| Start stack | cd /opt/buzz/deploy/compose && ./run.sh start |
| Stop stack | cd /opt/buzz/deploy/compose && ./run.sh stop |
| Add member | cd /opt/buzz/deploy/compose && ./run.sh add-member <npub> |
| List members | cd /opt/buzz/deploy/compose && ./run.sh list-members |
buzz-infrastructure/
├── README.md # This file
├── docs/
│ ├── oracle-console-walkthrough.md
│ ├── cloudflare-tunnel-walkthrough.md
│ ├── operations.md
│ ├── backup-and-restore.md
│ ├── disaster-recovery.md
│ ├── security.md
│ └── cost-controls.md
├── scripts/
│ ├── health-check.sh
│ ├── backup.sh
│ ├── restore.sh
│ ├── update.sh
│ └── diagnostics.sh
├── config/
│ ├── env.example
│ └── cloudflared-config.example.yml
├── systemd/
│ └── (if needed)
└── .gitignore
See docs/ for detailed walkthroughs of each phase.