Deploy¶
Guia para deploy do Oraculo no Railway.
Arquitetura de Producao¶
graph TB
subgraph Cloudflare
DNS[DNS Records]
end
subgraph Railway
FE[Frontend<br/>Next.js]
PA[Platform API<br/>Spring Boot]
TA[Tracker API<br/>Go Fiber]
MA[Models API<br/>FastAPI]
PG[(PostgreSQL)]
MO[(MongoDB)]
MN[(MinIO)]
end
DNS -->|oraculo.haussoftwarehouse.com| FE
DNS -->|api.haussoftwarehouse.com| PA
DNS -->|tracker.haussoftwarehouse.com| TA
DNS -->|models.haussoftwarehouse.com| MA
FE --> PA
TA --> MA
PA --> PG
MA --> PG
MA --> MO
MA --> MN
TA --> MO
Servicos no Railway¶
Cada componente e um servico independente no Railway:
| Servico | Diretorio | Dockerfile | Dominio |
|---|---|---|---|
| Frontend | /app |
app/Dockerfile |
oraculo.haussoftwarehouse.com |
| Platform API | /plataform-api |
plataform-api/Dockerfile |
api.haussoftwarehouse.com |
| Tracker API | /tracker-api |
tracker-api/Dockerfile |
tracker.haussoftwarehouse.com |
| Models API | /models-api |
models-api/Dockerfile |
models.haussoftwarehouse.com |
| PostgreSQL | - | Plugin Railway | Internal |
| MongoDB | - | Plugin Railway | Internal |
Variaveis de Ambiente¶
Platform API¶
SPRING_DATASOURCE_URL=jdbc:postgresql://HOST:PORT/DATABASE
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=***
JWT_SECRET=chave-segura-producao-512bits
JWT_EXPIRATION=86400000
SERVER_PORT=8085
Tracker API¶
MONGO_URI=mongodb://user:pass@HOST:PORT/oraculo
FASTAPI_URL=http://models-api.railway.internal:8000
API_PORT=8282
Models API¶
DATABASE_URL=postgresql://user:pass@HOST:PORT/database
MONGO_URI=mongodb://user:pass@HOST:PORT/oraculo
MINIO_ENDPOINT=minio.railway.internal:9000
MINIO_ACCESS_KEY=***
MINIO_SECRET_KEY=***
MINIO_BUCKET=oraculo-models
API_PORT=8000
Frontend¶
NEXT_PUBLIC_API_URL=https://api.haussoftwarehouse.com
NEXT_PUBLIC_TRACKER_API_URL=https://tracker.haussoftwarehouse.com
NEXTAUTH_URL=https://oraculo.haussoftwarehouse.com
NEXTAUTH_SECRET=secret-seguro-producao
DNS (Cloudflare)¶
Configure os registros CNAME no Cloudflare apontando para os dominios fornecidos pelo Railway:
| Tipo | Nome | Conteudo |
|---|---|---|
| CNAME | oraculo |
{railway-domain-frontend} |
| CNAME | api |
{railway-domain-platform-api} |
| CNAME | tracker |
{railway-domain-tracker-api} |
| CNAME | models |
{railway-domain-models-api} |
Deploy da Documentacao (MKDocs)¶
Esta documentacao pode ser deployada como um servico adicional no Railway:
1. Crie o servico no Railway¶
Aponte para o diretorio /docs-mkdocs do repositorio.
2. Configure o dominio¶
3. Configure o Cloudflare¶
| Tipo | Nome | Conteudo |
|---|---|---|
| CNAME | oraculo-mk |
{railway-domain-docs} |
4. Deploy¶
O Railway detectara automaticamente o Dockerfile e fara o build.
Health Checks¶
Configure health checks no Railway para cada servico:
| Servico | Endpoint | Intervalo |
|---|---|---|
| Platform API | /actuator/health |
30s |
| Tracker API | /health/ready |
30s |
| Models API | /health |
30s |
| Frontend | / |
30s |
Checklist de Producao¶
- Alterar JWT secret (Platform API)
- Alterar NextAuth secret (Frontend)
- Configurar credenciais seguras para MinIO
- Configurar credenciais seguras para MongoDB
- Configurar credenciais seguras para PostgreSQL
- Habilitar HTTPS em todos os dominios
- Configurar CORS restritivo na Tracker API
- Configurar alertas no Grafana
- Testar health checks de todos os servicos
- Verificar que o scheduler de treinamento esta ativo