Para uma instalacao nova funcionar de ponta a ponta, o Fabroku precisa de quatro blocos configurados: banco interno, broker do Celery, OAuth do GitHub e acesso SSH ao servidor Dokku. A chave SSH e o usuario do servidor sao necessarios, mas nao sao a unica parte da configuracao.
No servidor que vai hospedar os apps dos usuarios:
- Instale e configure o Dokku.
- Instale os plugins de servico que a instalacao vai oferecer, por exemplo Postgres e Redis.
- Para oferecer PostGIS, use o mesmo plugin Postgres; o Fabroku cria o servico com uma imagem PostGIS configurada pela instalacao.
- Garanta que o usuario SSH configurado no Fabroku consiga executar comandos Dokku sem senha interativa.
- Cadastre a chave publica correspondente a
DOKKU_SSH_KEYno servidor. - Confirme host, porta e usuario SSH que o backend vai usar.
Variaveis principais:
DOKKU_SSH_KEY=/app/keys/dokku_id_rsa
DOKKU_SSH_USERNAME=dokku
DOKKU_SSH_HOST=dokku.example.com
DOKKU_SSH_PORT=22Em algumas instalacoes o usuario pode nao ser dokku, desde que ele consiga
executar os comandos Dokku necessarios. O importante e o backend conseguir
criar apps, configurar variaveis, rodar deploys, escalar processos e gerenciar
servicos pelo Dokku.
O backend precisa de um banco para guardar usuarios, projetos, apps, logs, auditoria e resultados das tarefas. Tambem precisa de um broker para o Celery.
Variaveis obrigatorias/recomendadas:
SECRET_KEY=troque-este-valor
DEBUG=False
ALLOWED_HOSTS=fabroku-api.example.com
DATABASE_URL=postgres://usuario:senha@host:5432/fabroku
BROKER_URL=amqp://usuario:senha@host:5672/vhost
FRONTEND_URL=https://fabroku.example.com
BACKEND_URL=https://fabroku-api.example.com
GITHUB_CLIENT_ID=seu-client-id
GITHUB_CLIENT_SECRET=seu-client-secret
GITHUB_REDIRECT_URI=https://fabroku-api.example.com/api/auth/github/callback
GITHUB_WEBHOOK_SECRET=um-segredo-para-webhooks
FABROKU_POSTGIS_IMAGE=postgis/postgis
FABROKU_POSTGIS_IMAGE_VERSION=17-3.5Se usar cookies entre subdominios, configure tambem:
AUTH_COOKIE_DOMAIN=.example.com
CORS_ALLOWED_ORIGINS=https://fabroku.example.com
CSRF_TRUSTED_ORIGINS=https://fabroku.example.comDepois de configurar as variaveis, rode as migrations e mantenha web e worker ativos:
python src/manage.py migrate
dokku ps:scale fabroku-api web=1 worker=1O Procfile do backend ja possui:
release: roda migrations durante o deploy.web: sobe a API Django/Gunicorn.worker: processa tarefas longas do Celery, como deploys e comandos Dokku.flower: opcional para monitoramento do Celery.
Crie um OAuth App no GitHub e configure:
- Homepage URL: URL publica do frontend.
- Authorization callback URL:
https://fabroku-api.example.com/api/auth/github/callback.
O GITHUB_CLIENT_ID e o GITHUB_CLIENT_SECRET desse app devem ir para o
backend. Se o callback estiver errado, login web e login da CLI vao falhar.
O frontend precisa apontar para a API publica:
VITE_API_BASE_URL=https://fabroku-api.example.com/apiPara apps frontend hospedados pelo Dokku/Nginx, normalmente tambem sao usadas:
NGINX_ROOT=dist
NGINX_DEFAULT_REQUEST=index.htmlPor padrao, o Fabroku preserva a regra da instalacao IFC. Para outra organizacao, ajuste a politica de login:
AUTH_ALLOWED_EMAIL_DOMAINS=example.com
AUTH_ALLOW_ALL_VERIFIED_EMAILS=False
AUTH_EMAIL_REJECTION_MESSAGE=Seu email nao esta autorizado nesta instalacao.Se quiser permitir qualquer conta GitHub com email verificado:
AUTH_ALLOWED_EMAIL_DOMAINS=
AUTH_ALLOW_ALL_VERIFIED_EMAILS=True- Backend responde em
https://fabroku-api.example.com/api/. - Frontend abre e consegue chamar
/api/platform/config/. - GitHub OAuth redireciona para
/callbackno frontend apos login. - Celery worker esta rodando.
- Backend consegue conectar por SSH no Dokku.
BACKEND_URLe publico, para webhooks do GitHub funcionarem.- Cookies, CORS e CSRF apontam para os dominios publicos corretos.
O Fabroku preserva os defaults da instalacao IFC, mas pode ser executado em outros ambientes usando variaveis de ambiente:
AUTH_ALLOWED_EMAIL_DOMAINS: dominios de email GitHub verificados que podem entrar. Default:estudantes.ifc.edu.br.AUTH_ALLOW_ALL_VERIFIED_EMAILS: quandoTrue, qualquer email verificado do GitHub pode entrar.AUTH_EMAIL_REJECTION_MESSAGE: mensagem exibida quando o email nao passa na politica de acesso.FABROKU_ORGANIZATION_NAME: nome da organizacao exibido no frontend. Default:Fábrica de Software.FABROKU_PRIVILEGED_ROLE_LABEL: label publico para usuarios comis_fabric=True.FABROKU_REGULAR_ROLE_LABEL: label publico para usuarios comuns.FABROKU_APP_DOMAIN_SUFFIX: sufixo mostrado na criacao de apps.FABROKU_POSTGIS_IMAGEeFABROKU_POSTGIS_IMAGE_VERSION: imagem usada ao criar novos servicos PostGIS. Defaults:postgis/postgise17-3.5.CSRF_TRUSTED_ORIGIN_REGEXES,CORS_ALLOWED_ORIGIN_REGEXESeAUTH_COOKIE_DOMAIN: ajustam dominios publicos da instalacao.SERVICE_PROXY_POSTGRES_HOST,SERVICE_PROXY_POSTGRES_PORT,SERVICE_PROXY_REDIS_HOST,SERVICE_PROXY_REDIS_PORT,SERVICE_PROXY_RABBITMQ_HOSTeSERVICE_PROXY_RABBITMQ_PORT: hosts e portas dos proxies de servicos, quando usados.