Plataformas em nuvem

Railway

Deploy com um clique e provisionamento automático de PostgreSQL.

Deploy on Railway

Depois do deploy, adicione as variáveis de ambiente no dashboard do Railway:

  • BETTER_AUTH_SECRET, ENCRYPTION_KEY, INTERNAL_API_SECRET (geradas automaticamente)
  • OPENAI_API_KEY ou chaves de outros provedores de IA
  • Domínio customizado em Settings → Networking

Deploy em VPS

Para DigitalOcean, AWS EC2, Azure VMs ou qualquer servidor Linux:

Recomendado: Droplet com 16 GB de RAM, Ubuntu 24.04

# Crie o Droplet pelo console e depois conecte via SSH
ssh root@your-droplet-ip

Recomendado: t3.xlarge (16 GB de RAM), Ubuntu 24.04

ssh -i your-key.pem ubuntu@your-ec2-ip

Recomendado: Standard_D4s_v3 (16 GB de RAM), Ubuntu 24.04

ssh azureuser@your-vm-ip

Instale o Docker

# Instale o Docker (método oficial)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

# Faça logout, reconecte e verifique
docker --version

Implante o Zoen

git clone https://github.com/ZoenSpace/sim.git && cd sim

# Crie o .env com os segredos
cat > .env << EOF
DATABASE_URL=postgresql://postgres:postgres@db:5432/simstudio
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
INTERNAL_API_SECRET=$(openssl rand -hex 32)
NEXT_PUBLIC_APP_URL=https://sim.yourdomain.com
BETTER_AUTH_URL=https://sim.yourdomain.com
EOF

# Inicie
docker compose -f docker-compose.prod.yml up -d

SSL com Caddy

# Instale o Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
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 caddy

# Configure (substitua o domínio)
echo 'sim.yourdomain.com {
    reverse_proxy localhost:3000
    handle /socket.io/* {
        reverse_proxy localhost:3002
    }
}' | sudo tee /etc/caddy/Caddyfile

sudo systemctl restart caddy

Aponte o registro DNS A do seu domínio para o IP do servidor.

Kubernetes (EKS, AKS, GKE)

Veja o guia de Kubernetes para deploy com Helm em Kubernetes gerenciado.

Banco gerenciado (opcional)

Em produção, use um serviço gerenciado de PostgreSQL:

  • AWS RDS / Azure Database / Cloud SQL — ative a extensão pgvector
  • Supabase / Neon — pgvector incluso

Defina DATABASE_URL no seu ambiente:

DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"

On this page