Implantar um posto

Execute o posto em seu servidor ou NAS para receber notificações de pastas de e-mail selecionadas. Você precisa do Docker, além do Docker Compose v2 para a instalação recomendada do Compose.

Disponibilidade de imagem: as versões disponíveis estão listadas em Lançamentos do GitHub e GHCR .

1. Escolha um método de instalação

Docker Compose é recomendado: instalação, atualizações e backups usam a mesma configuração. A imagem é ghcr.io/mingzaily/mailwake:latest, para Linux amd64/arm64. latest segue a versão estável. Para fixar uma versão, substitua latest por uma tag publicada em Releases.

No terminal do seu servidor:

mkdir -p ~/mailwake
cd ~/mailwake

Crie compose.yaml nesse diretório com esta configuração completa:

services:
  core:
    image: ghcr.io/mingzaily/mailwake:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      MAILWAKE_LISTEN: "0.0.0.0:8080"
      MAILWAKE_DATA_DIR: "/data"
      MAILWAKE_RELAY_URL: "${MAILWAKE_RELAY_URL:-}"
    volumes:
      - core-data:/data
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    stop_grace_period: 30s
volumes:
  core-data:

Extraia a imagem e inicie o posto:

docker compose pull core
docker compose up -d
docker compose ps
docker compose logs --tail=50 core

Verifique o resultado: core mostra Up / running e os logs contêm o código de configuração inicial. Mantenha o terminal disponível para a próxima etapa. Execute comandos futuros do Compose de ~/mailwake .

O volume Docker core-data armazena /data . Com esse nome de diretório, seu nome Docker padrão é mailwake_core-data . Recriar o contêiner o preserva; docker compose down -v exclui o volume e seu conteúdo.

Execução do Docker

Escolha esta instalação equivalente se preferir um único comando. Use um método de instalação para sua instância.

docker volume create mailwake-data
docker run -d \
  --name mailwake \
  --restart unless-stopped \
  --stop-timeout 30 \
  --read-only \
  --security-opt no-new-privileges:true \
  --cap-drop ALL \
  -p 127.0.0.1:8080:8080 \
  -v mailwake-data:/data \
  ghcr.io/mingzaily/mailwake:latest
docker logs --tail=50 mailwake

Esta instalação usa o volume mailwake-data. Os comandos de gerenciamento a seguir usam o Compose; consulte Instruções de backup de execução do Docker para obter a alternativa.

2. Abra o console

No host Docker: abra http://127.0.0.1:8080 .

Em um servidor remoto ou NAS: execute este comando em seu próprio computador, substituindo user@server pelo usuário e endereço SSH do seu servidor:

ssh -L 18080:127.0.0.1:8080 user@server

Mantenha a conexão aberta e visite http://127.0.0.1:18080 em seu computador. Isso é suficiente para concluir a configuração inicial. Configure o HTTPS abaixo quando desejar acesso contínuo por meio de um domínio.

Verifique o resultado: a tela de configuração do Mailwake é aberta. Insira o código de configuração dos registros e crie uma senha de administrador de pelo menos 12 caracteres. Reiniciar o posto antes da configuração gera um novo código de configuração.

Continue com sua primeira notificação para conectar uma caixa postal e um canal de notificação.

3. Configurar HTTPS

Aponte seu domínio para o servidor e configure seu proxy reverso para encaminhar para http://127.0.0.1:8080 . Para Caddy instalado no mesmo host, adicione seu domínio a Caddyfile:

mail.example.org {
    reverse_proxy 127.0.0.1:8080
}

Verifique o DNS e permita as portas de entrada 80/443, depois valide e recarregue:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Abra https://mail.example.org , confirme se o certificado é válido e verifique se você pode entrar e abrir uma caixa de correio. Consulte o guia oficial de instalação do Caddy para instalar o Caddy. Em um painel proxy como o Nginx Proxy Manager, insira o domínio e o endereço de encaminhamento e solicite um certificado no painel.

Para um proxy em outro contêiner, junte-o à rede Docker do posto e encaminhe para http://core:8080 ; seu 127.0.0.1 refere-se a si mesmo. Preserve o Host original e defina X-Forwarded-For . O posto aceita informações de proxy de redes privadas e de loopback; exponha a porta 8080 apenas ao proxy e aos clientes locais confiáveis.

4. Atualize o posto

Conclua um backup e execute no diretório Compose:

docker compose pull core
docker compose up -d
docker compose ps
docker compose logs --tail=50 core

Para uma versão fixada, altere primeiro a tag da imagem em compose.yaml. Abra o console, verifique o monitoramento da caixa de correio e envie um novo email para verificar a entrega. Mantenha o backup pré-atualização. Para reverter, restaure os dados e a imagem correspondente usando o tutorial de restauração.

5. Solução de problemas

A imagem não pode ser extraída

Verifique se o GHCR contém a versão solicitada. manifest unknown geralmente significa uma tag ausente. Verifique o endereço da imagem e a visibilidade do pacote para erros denied ou a conectividade do servidor com o GHCR para ver se há tempos limite.

O console não abre

127.0.0.1 refere-se ao computador que você está usando. Use o túnel SSH ou um domínio HTTPS para uma instalação remota. Verifique docker compose ps e docker compose logs --tail=50 core primeiro. Se 8080 estiver ocupado, altere o mapeamento para 127.0.0.1:18080:8080 e use a porta host 18080 no navegador e no proxy reverso.

Redefinir uma senha de administrador

Execute no diretório Compose e insira a nova senha no prompt do terminal:

docker compose stop core
docker compose run --rm -it core admin reset-password
docker compose start core

O comando de recuperação adquire o bloqueio do diretório de dados, portanto, pare o posto primeiro. A redefinição da senha revoga as sessões do navegador e preserva os tokens de API, as caixas de correio e a fila.

Conecte o aplicativo oficial e o Pro

O console Web gratuito e a entrega Bark/Pushover/Webhook funcionam de forma independente. Para o aplicativo oficial, siga Integração de aplicativos para HTTPS e emparelhamento.

As compilações de origem e o desenvolvimento local são abordados no guia de desenvolvimento .

Construções de origem e configurações de processo

Para compilações de desenvolvimento, siga README do repositório de origem e guia de criação de contribuidores .

MAILWAKE_LISTEN é padronizado como 127.0.0.1:8080 fora do Docker; o contêiner usa 0.0.0.0:8080 . MAILWAKE_DATA_DIR é padronizado como data ; o contêiner usa /data . MAILWAKE_RELAY_URL é padronizado como https://notify.mailwake.oritx.com . Mantenha o diretório de dados completo, incluindo secret.key , durante reinicializações e atualizações.

Alterar o ambiente de entrega push

Production e Sandbox usam identidades de emparelhamento separadas. Para alterar ambientes intencionalmente, pare o posto e execute a redefinição em seu diretório de dados existente e no endereço salvo do serviço de envio de notificações anterior:

sh
docker compose stop core
docker compose run --rm -it core admin reset-native-push

Digite reset-native-push quando solicitado. O comando revoga os emparelhamentos no antigo serviço de envio de notificações. Se esse serviço estiver inacessível, mantenha a configuração antiga e tente novamente quando estiver acessível. Depois de confirmar zero alvos não resolvidos, defina o novo MAILWAKE_RELAY_URL , recrie o posto com docker compose up -d e emparelhar novamente . O comando preserva a identidade de assinatura do posto e o histórico do canal comum.

Markdown · AGPL-3.0-only · Colaboradores do Mailwake