Madmail

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

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

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.