Ga naar hoofdinhoud

SpacetimeDB Deployment

Deployment opties voor SpacetimeDB.

Deployment Opties

OptieGeschikt voorKosten
LokaalDevelopmentGratis
Self-hostedProductie (controle)VPS kosten
SpacetimeDB CloudProductie (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

ResourceMinimumAanbevolen
CPU2 cores4+ cores
RAM4 GB8+ GB
Storage20 GB SSD50+ GB SSD
OSUbuntu 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