Self hosting na Railway
A Railway é o caminho mais curto para colocar uma instância própria no ar: o template já provisiona a aplicação, o Postgres e o Redis. O template é o do projeto open-source que dá origem ao Madmail e, por isso, se chama usesend na Railway — é o nome do repositório, não um produto diferente.
Abre o template usesend na Railway com a aplicação, o Postgres e o Redis já
configurados. Você continua precisando de uma conta AWS para o envio.
Pré-requisitos
1. Fazer o deploy na Railway
- Abra o template pelo card acima e escolha Deploy now.
- Espere o deploy terminar e abra o serviço.
- Anote o domínio que a Railway atribuiu. Você pode trocar por um domínio próprio depois.
- Sempre que quiser puxar a imagem mais recente, é só redeployar pelo painel.
2. Variáveis de ambiente
O Madmail envia por AWS SES e recebe os eventos de status por SNS. O template da Railway já provisiona Postgres (banco) e Redis (fila) — para esses dois você não precisa fazer nada. As variáveis abaixo vão na aba Variables do seu serviço.
Credenciais AWS
Resumo: no console da AWS, crie um usuário IAM com acesso programático, anexe as políticas AmazonSNSFullAccess e AmazonSESFullAccess e gere uma access key.
Adicione estas variáveis na Railway.
AWS_ACCESS_KEY_ID=<access-key-id>
AWS_SECRET_ACCESS_KEY=<secret-access-key>
O passo a passo detalhado está em Criar credenciais AWS.
Credenciais do GitHub App para login
O login da instância usa autenticação pelo GitHub.
Use este link para criar um GitHub App.
Callback URL: https://<seu-dominio-na-railway>/api/auth/callback/github
Em Permissions & events, deixe Account permissions → Email addresses como Read-only. O Madmail precisa do email do usuário autenticado para casar contas novas com convites de equipe.

Adicione estas variáveis na Railway.
GITHUB_ID="<seu-github-client-id>"
GITHUB_SECRET="<seu-github-client-secret>"
URL do NextAuth
Informe a URL pública da aplicação para o NextAuth.
Adicione esta variável na Railway:
NEXTAUTH_URL="https://<seu-dominio-na-railway>"
Depois de adicionar as variáveis, clique em Redeploy para o serviço subir com a nova configuração.
3. Domínio próprio (opcional)
- Adicione o domínio na Railway e configure o DNS.
- Atualize
NEXTAUTH_URLpara o novo domínio, por exemplohttps://mail.seudominio.com.br. - Faça um redeploy para valer.
4. Configurar a região do SES
Para enviar emails você precisa escolher uma região na AWS. Use a região onde estão os seus destinatários ou onde a instância está hospedada. Na dúvida, use us-east-1.
As regiões disponíveis estão nesta lista da AWS.
No primeiro login, a instância pede a configuração do SES:
- informe a região;
- informe a callback URL, que é a própria URL da aplicação. Ela precisa ser acessível pela Internet: é por ela que chega o status de entrega dos emails;
- não mexa na taxa de envio, ela acompanha automaticamente a da sua conta.

5. Sair do sandbox do SES

Próximos passos
Está tudo pronto. A partir daqui:
- configure um domínio de envio;
- crie uma chave de API;
- comece a enviar.
Dúvidas sobre self-host são respondidas na comunidade do projeto open-source — canal #self-host no Discord. Não é o suporte da Madmail.