Início rápido
# Clone e inicie
git clone https://github.com/ZoenSpace/sim.git && cd sim
docker compose -f docker-compose.prod.yml up -dSetup de produção
1. Configure o ambiente
# Gere 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
EOF2. Inicie os serviços
docker compose -f docker-compose.prod.yml up -d3. Configure SSL
O Caddy cuida automaticamente dos certificados SSL.
# 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 caddyCrie /etc/caddy/Caddyfile:
sim.yourdomain.com {
reverse_proxy localhost:3000
handle /socket.io/* {
reverse_proxy localhost:3002
}
}sudo systemctl restart caddy# Instale
sudo apt install nginx certbot python3-certbot-nginx -y
# Crie /etc/nginx/sites-available/sim
server {
listen 80;
server_name sim.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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-Forwarded-Proto $scheme;
}
location /socket.io/ {
proxy_pass http://127.0.0.1:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# Ative e obtenha o certificado
sudo ln -s /etc/nginx/sites-available/sim /etc/nginx/sites-enabled/
sudo certbot --nginx -d sim.yourdomain.comOllama
# Com GPU
docker compose -f docker-compose.ollama.yml --profile gpu --profile setup up -d
# Só CPU
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -dBaixe modelos adicionais:
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.2Ollama externo
Se o Ollama roda na sua máquina host (fora do Docker):
# macOS/Windows
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
# Linux - use o IP do host
OLLAMA_URL=http://192.168.1.100:11434 docker compose -f docker-compose.prod.yml up -dDentro do Docker, localhost se refere ao container, não ao host. Use host.docker.internal ou o IP do host.
Comandos
# Ver logs
docker compose -f docker-compose.prod.yml logs -f simstudio
# Parar
docker compose -f docker-compose.prod.yml down
# Atualizar
docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d
# Backup do banco
docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sqlCommon Questions
Quatro serviços: simstudio (app principal na porta 3000, limite de 8 GB de memória), realtime (servidor WebSocket na porta 3002, limite de 1 GB), db (PostgreSQL 17 com pgvector na porta 5432) e migrations (roda uma vez para aplicar mudanças de schema e depois encerra).
Você pode usar Caddy (recomendado, cuida dos certificados automaticamente) ou Nginx com Certbot. Ambos precisam fazer reverse-proxy da porta 3000 para o app principal e da porta 3002 para conexões WebSocket no caminho /socket.io/.
Dentro de um container Docker, localhost se refere ao próprio container, não à máquina host. No macOS e Windows, use http://host.docker.internal:11434. No Linux, use o IP real da máquina host (ex.: http://192.168.1.100:11434).
O perfil GPU (--profile gpu) configura as capacidades do driver NVIDIA e reserva dispositivos GPU para inferência acelerada. O perfil CPU (--profile cpu) roda o Ollama sem aceleração por GPU. Ambos usam a flag --profile setup para baixar automaticamente o modelo inicial gemma3:4b.
Rode docker compose -f docker-compose.prod.yml pull para baixar as imagens mais recentes e depois docker compose -f docker-compose.prod.yml up -d para reiniciar com as novas versões. O container de migrations aplica automaticamente quaisquer mudanças novas de schema na inicialização.
Backup: docker compose -f docker-compose.prod.yml exec db pg_dump -U postgres simstudio > backup.sql. Restore: docker compose -f docker-compose.prod.yml exec -T db psql -U postgres simstudio < backup.sql. Os dados do banco ficam persistidos em um volume Docker chamado postgres_data.
Sim. O docker-compose.prod.yml usa defaults de variáveis de ambiente: POSTGRES_USER (padrão: postgres), POSTGRES_PASSWORD (padrão: postgres), POSTGRES_DB (padrão: simstudio) e POSTGRES_PORT (padrão: 5432). Defina esses valores no seu arquivo .env para sobrescrevê-los.