SpacetimeDB Deployment
Deployment opties voor SpacetimeDB.
Deployment Opties
| Optie | Geschikt voor | Kosten |
|---|---|---|
| Lokaal | Development | Gratis |
| Self-hosted | Productie (controle) | VPS kosten |
| SpacetimeDB Cloud | Productie (gemak) | Pay-per-use |
Optie 1: Lokaal (Development)
Starten
spacetime start
Configuratie
Standaard draait op:
- HTTP:
http://localhost:3000 - WebSocket:
ws://localhost:3000
Data Locatie
~/.spacetime/
├── logs/
├── data/
└── config.toml
Optie 2: Self-hosted (Productie)
Server Vereisten
| Resource | Minimum | Aanbevolen |
|---|---|---|
| CPU | 2 cores | 4+ cores |
| RAM | 4 GB | 8+ GB |
| Storage | 20 GB SSD | 50+ GB SSD |
| OS | Ubuntu 22.04+ | Ubuntu 22.04 LTS |
Installatie Script
#!/bin/bash
# setup-spacetimedb.sh
# Update systeem
sudo apt update && sudo apt upgrade -y
# Dependencies
sudo apt install -y curl build-essential
# SpacetimeDB installeren
curl -fsSL https://install.spacetimedb.com | bash
# Als systemd service
sudo tee /etc/systemd/system/spacetimedb.service << 'EOF'
[Unit]
Description=SpacetimeDB Server
After=network.target
[Service]
Type=simple
User=spacetime
ExecStart=/home/spacetime/.spacetime/bin/spacetime start
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# User aanmaken
sudo useradd -m -s /bin/bash spacetime
# Service starten
sudo systemctl daemon-reload
sudo systemctl enable spacetimedb
sudo systemctl start spacetimedb
Nginx Reverse Proxy
# /etc/nginx/sites-available/spacetimedb
upstream spacetimedb {
server 127.0.0.1:3000;
keepalive 64;
}
server {
listen 80;
server_name api.milenas-treehouse.nl;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name api.milenas-treehouse.nl;
ssl_certificate /etc/letsencrypt/live/api.milenas-treehouse.nl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.milenas-treehouse.nl/privkey.pem;
# WebSocket support
location / {
proxy_pass http://spacetimedb;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Timeouts voor lange verbindingen
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
# Blokkeer publish endpoints van buitenaf
location /v1/database {
deny all;
return 403;
}
}
SSL Certificaat
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d api.milenas-treehouse.nl
Optie 3: SpacetimeDB Cloud
Coming Soon
SpacetimeDB Cloud is in beta. Check https://spacetimedb.com voor de laatste status.
Voordelen
- Geen server beheer
- Automatische scaling
- Managed backups
- Global edge deployment
Kosten Model
Pay-per-use gebaseerd op:
- Reducer calls
- Storage
- Bandwidth
Remote Publishing
Via SSH Tunnel (Veilig)
#!/bin/bash
# deploy.sh
SERVER="your-server.com"
DB_NAME="milenas-treehouse"
# Bouw module
spacetime build
# Open SSH tunnel
ssh -f -N -L 3001:localhost:3000 $SERVER
# Publish via tunnel
spacetime publish $DB_NAME \
--server http://localhost:3001 \
--clear-database
# Sluit tunnel
pkill -f "ssh -f -N -L 3001"
echo "Deployed successfully!"
Authenticatie
# Login op remote server
spacetime login http://api.milenas-treehouse.nl
# Identity wordt opgeslagen in
~/.spacetime/config.toml
Monitoring
Logs Bekijken
# Live logs
spacetime logs milenas-treehouse -f
# Recent logs
spacetime logs milenas-treehouse --num 100
Database Info
# Overzicht
spacetime describe milenas-treehouse
# SQL queries
spacetime sql milenas-treehouse "SELECT COUNT(*) FROM player"
Health Check
# Server status
curl http://localhost:3000/health
# Of via spacetime
spacetime status
Backup & Restore
Backup
# Export data (SQL dump)
spacetime sql milenas-treehouse \
"SELECT * FROM player" > backup_players.json
# Of volledige database directory kopiëren
tar -czvf spacetime-backup.tar.gz ~/.spacetime/data/
Restore
# Restore van backup
tar -xzvf spacetime-backup.tar.gz -C ~/.spacetime/
# Herstart server
sudo systemctl restart spacetimedb
Scaling Overwegingen
Huidige Limieten
SpacetimeDB is ontworpen voor:
- Duizenden concurrent connections
- Miljoenen rows per tabel
- Lage latency real-time sync
Toekomstige Scaling
Voor extreme scale:
- Horizontal sharding (in development)
- Edge deployment
- Read replicas
Checklist Productie
- SSL/TLS geconfigureerd
- Firewall regels (alleen 80, 443 open)
- Publish endpoints geblokkeerd
- Monitoring opgezet
- Backup strategie
- Log rotation
- Security updates automatisch