Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.9.0
Configuracao Railway
Railway e uma plataforma de deploy que oferece PostgreSQL com pgvector e integracao facil com GitHub.
Vantagens
- Deploy com um clique
- PostgreSQL + pgvector pre-configurado
- Integracao com GitHub (deploy automatico)
- Logs e monitoring integrados
- Ambientes de preview para PRs
- CLI poderoso
Setup Passo a Passo
1. Criar Conta
- Acesse railway.app
- Clique em "Start a New Project"
- Faca login com GitHub (recomendado)
2. Criar Projeto
Opcao A: Projeto Vazio + PostgreSQL
- No dashboard, clique em "+ New Project"
- Escolha "Empty Project"
- Nomeie seu projeto:
rag-template
Opcao B: Deploy do GitHub (Recomendado)
- Clique em "+ New Project"
- Escolha "Deploy from GitHub repo"
- Selecione o repositorio
rag_template - Railway detectara automaticamente que e um app Python
3. Adicionar PostgreSQL
- No seu projeto, clique em "+ New"
- Escolha "Database" → "Add PostgreSQL"
- Railway criara um banco PostgreSQL automaticamente
4. Habilitar pgvector
Railway usa PostgreSQL padrao. Precisamos habilitar a extensao pgvector:
Via Railway CLI
# Instale o Railway CLI
npm i -g @railway/cli
# Login
railway login
# Entre no projeto
railway link
# Conecte ao PostgreSQL
railway run psql $DATABASE_URL
# No psql, execute:
CREATE EXTENSION IF NOT EXISTS vector;
\q
Via Connection direto (alternativa)
# Copie DATABASE_URL do Railway
# Conecte usando psql local
psql "postgresql://postgres:...@containers.railway.app:5432/railway"
# Execute:
CREATE EXTENSION vector;
5. Obter Variaveis de Ambiente
No dashboard do Railway:
- Clique no servico PostgreSQL
- Va para "Variables"
- Copie as variaveis necessarias:
DATABASE_URL=postgresql://postgres:...@containers-us-west-XXX.railway.app:5432/railway
PGHOST=containers-us-west-XXX.railway.app
PGPORT=5432
PGUSER=postgres
PGPASSWORD=...
PGDATABASE=railway
6. Configurar Aplicacao
Se deploying no Railway:
- Clique no servico da aplicacao
- Va para "Variables"
- Adicione:
DATABASE_URL=${{Postgres.DATABASE_URL}}
HF_TOKEN=seu_token_huggingface
PORT=7860
Dica: ${{Postgres.DATABASE_URL}} referencia automaticamente o DATABASE_URL do servico PostgreSQL.
7. Configurar Local
Para desenvolvimento local:
# .env
DATABASE_URL=postgresql://postgres:...@containers-us-west-XXX.railway.app:5432/railway
HF_TOKEN=seu_token_aqui
Deploy Automatico
Conectar GitHub
- No servico da aplicacao, va para "Settings"
- Em "Source", conecte seu repositorio GitHub
- Configure:
- Branch:
main - Build command: (Railway detecta automaticamente)
- Start command:
python app.py
- Branch:
Configurar Build
Se necessario, crie um railway.toml:
[build]
builder = "nixpacks"
[deploy]
startCommand = "python app.py"
healthcheckPath = "/"
healthcheckTimeout = 100
restartPolicyType = "on_failure"
Ou use Procfile:
web: python app.py
Deploy Triggers
Agora, a cada push para main:
- Railway detecta a mudanca
- Faz build automatico
- Deploy da nova versao
- Mantem logs acessiveis
Ambientes de Preview
Railway pode criar ambientes de preview para cada PR:
- Va para "Settings" do projeto
- Habilite "PR Deploys"
- Cada PR recebera sua propria URL temporaria
Util para testar mudancas antes do merge!
Limites Free Tier
Railway oferece $5 de credito gratuito por mes:
| Recurso | Consumo |
|---|---|
| PostgreSQL | ~$5/mes (24/7) |
| App (512MB RAM) | ~$5/mes (24/7) |
| Bandwidth | $0.10/GB |
Estimativa: Com $5, voce consegue:
- PostgreSQL 24/7 (~$5)
- OU App + PostgreSQL com ~50% uptime
- OU Usar apenas para desenvolvimento (pausar quando nao usar)
Dicas para economizar:
- Desenvolvimento: Use PostgreSQL do Railway, mas rode app localmente
- Producao: Upgrade para plano Hobby ($5/mes) ou Pro ($20/mes)
- Pausar servicos: Railway pode pausar servicos sem uso
Monitoramento
Dashboard
O dashboard do Railway mostra:
- CPU e memoria em tempo real
- Logs de deploy e runtime
- Metricas de rede
- Uso de creditos
Logs
# Via CLI
railway logs
# Via dashboard
# Clique no servico → "Logs"
Metricas
# Via CLI
railway status
# Via dashboard
# Clique no servico → "Metrics"
CLI Avancado
Comandos Uteis
# Ver status
railway status
# Ver logs em tempo real
railway logs -f
# Executar comandos no contexto do Railway
railway run python manage.py
# Abrir shell no PostgreSQL
railway run psql $DATABASE_URL
# Backup
railway run pg_dump $DATABASE_URL > backup.sql
# Conectar localmente usando variaveis do Railway
railway run python app.py
Variables
# Listar variaveis
railway variables
# Adicionar variavel
railway variables add HF_TOKEN=seu_token
# Deletar variavel
railway variables delete OLD_VAR
Configuracoes de Producao
Health Checks
Railway pode fazer health checks automaticos:
# railway.toml
[deploy]
healthcheckPath = "/health"
healthcheckTimeout = 100
Adicione endpoint de health no app:
# app.py
@app.get("/health")
def health():
return {"status": "healthy"}
Restart Policy
[deploy]
restartPolicyType = "on_failure"
restartPolicyMaxRetries = 3
Resource Limits
No dashboard, configure:
- Memory: 512MB (free) ate 32GB (paid)
- CPU: Shared (free) ate dedicated (paid)
Troubleshooting
Erro: "Unable to connect to database"
Verifique:
- DATABASE_URL esta correto
- Variavel
${{Postgres.DATABASE_URL}}esta configurada - PostgreSQL esta rodando (veja Metrics)
Erro: "pgvector extension not found"
Execute:
railway run psql $DATABASE_URL -c "CREATE EXTENSION vector;"
Build Failing
Verifique:
requirements.txtesta completo- Python version compativel (configure em Settings)
- Logs de build para erros especificos
App Crashing
- Veja logs:
railway logs - Verifique variaveis de ambiente
- Teste localmente:
railway run python app.py
Migracao
De Local para Railway
# Dump local
pg_dump -h localhost -U postgres ragdb > dump.sql
# Restore no Railway
railway run psql $DATABASE_URL < dump.sql
De Outro Provider
# De Supabase/Neon
pg_dump "postgresql://..." > dump.sql
# Para Railway
railway run psql $DATABASE_URL < dump.sql
Upgrade de Plano
| Plano | Credito/mes | Recursos | Preco |
|---|---|---|---|
| Free | $5 | Compartilhado | $0 |
| Hobby | $5 + $5 uso | Dedicado leve | $5/mes |
| Pro | $20 + uso | Dedicado completo | $20/mes |
Quando fazer upgrade:
- App precisa rodar 24/7
- Mais de 512MB RAM
- Suporte prioritario
Veja: railway.app/pricing
Integracao com GitHub Actions
Voce pode usar Railway CLI no GitHub Actions:
# .github/workflows/deploy.yml
name: Deploy to Railway
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Railway CLI
run: npm i -g @railway/cli
- name: Deploy
run: railway up
env:
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
Database Branching
Railway ainda nao tem branching nativo como Neon, mas voce pode:
Criar multiplos projetos:
rag-template-prodrag-template-dev
Usar Railway Environments:
- production
- staging
- development
Cada environment pode ter suas proprias variaveis.
Recursos Adicionais
Comparacao com Outros Provedores
Veja DATABASE_COMPARISON.md para comparar Railway com Supabase, Neon e outros.
Proximo passo: Voltar ao README ou configurar deploy!