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.

Fazer deploy na Railway

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

  1. Abra o template pelo card acima e escolha Deploy now.
  2. Espere o deploy terminar e abra o serviço.
  3. Anote o domínio que a Railway atribuiu. Você pode trocar por um domínio próprio depois.
  4. 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.

1

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>
Dica

O passo a passo detalhado está em Criar credenciais AWS.

2

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.

GitHub App

Adicione estas variáveis na Railway.

GITHUB_ID="<seu-github-client-id>"
GITHUB_SECRET="<seu-github-client-secret>"
3

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>"
Dica

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_URL para o novo domínio, por exemplo https://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.

Configuração do SES

5. Sair do sandbox do SES

Atenção
Não esqueça de tirar a conta do SES do modo sandbox.

Modo sandbox

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.