Desplegar un puesto

Ejecute el puesto en su servidor o NAS para recibir notificaciones de carpetas de correo electrónico seleccionadas. Necesita Docker, además de Docker Compose v2 para la instalación recomendada de Compose.

Disponibilidad de imágenes: las versiones disponibles se enumeran en Lanzamientos de GitHub y GHCR.

1. Elija un método de instalación

Se recomienda Docker Compose: la instalación, las actualizaciones y las copias de seguridad utilizan la misma configuración. La imagen es ghcr.io/mingzaily/mailwake:latest, para Linux amd64/arm64. latest sigue la versión estable. Para fijar una versión, reemplace latest con una etiqueta publicada de Lanzamientos.

En su terminal de servidor:

mkdir -p ~/mailwake
cd ~/mailwake

Crea compose.yaml en ese directorio con esta configuración 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:

Extraiga la imagen e inicie el puesto:

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

Verifique el resultado: core muestra Up / running y los registros contienen el código de configuración inicial. Mantenga el terminal disponible para el siguiente paso. Ejecute futuros comandos de redacción desde ~/mailwake.

El volumen Docker core-data almacena /data. Con este nombre de directorio, su nombre Docker predeterminado es mailwake_core-data. Recrear el contenedor lo conserva; docker compose down -v elimina el volumen y su contenido.

Ejecución de Docker

Elija esta instalación equivalente si prefiere un solo comando. Utilice un método de instalación para su instancia.

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 instalación utiliza el volumen mailwake-data. Los siguientes comandos de administración utilizan Compose; consulte el Instrucciones de copia de seguridad de Docker Run para ver la alternativa.

2. Abra la consola.

En el host Docker: abra http://127.0.0.1:8080.

En un servidor remoto o NAS: ejecute este comando en su propia computadora, reemplazando user@server con el usuario y la dirección SSH de su servidor:

ssh -L 18080:127.0.0.1:8080 user@server

Mantenga la conexión abierta y visite http://127.0.0.1:18080 en su computadora. Esto es suficiente para completar la configuración inicial. Configure HTTPS a continuación cuando desee acceso continuo a través de un dominio.

Comprueba el resultado: se abre la pantalla de configuración de Mailwake. Ingrese el código de configuración de los registros y cree una contraseña de administrador de al menos 12 caracteres. Reiniciar el puesto antes de la configuración genera un nuevo código de configuración.

Continúe con tu primera notificación para conectar un buzón y un canal de notificación.

3. Configurar HTTPS

Apunte su dominio al servidor y configure su proxy inverso para reenviarlo a http://127.0.0.1:8080. Para Caddy instalado en el mismo host, agregue su dominio a Caddyfile:

mail.example.org {
    reverse_proxy 127.0.0.1:8080
}

Verifique DNS y permita los puertos entrantes 80/443, luego valide y vuelva a cargar:

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

Abra https://mail.example.org, confirme que el certificado sea válido y verifique que puede iniciar sesión y abrir un buzón. Consulte guía oficial de instalación de Caddy para instalar Caddy. En un panel de proxy como Nginx Proxy Manager, ingrese el dominio y la dirección de reenvío y solicite un certificado en el panel.

Para un proxy en otro contenedor, únalo a la red Docker del puesto y reenvíelo a http://core:8080; su 127.0.0.1 se refiere a sí mismo. Conserve el host original y configure X-Forwarded-For. El puesto acepta información de proxy de redes privadas y de loopback; exponga el puerto 8080 sólo al proxy y a los clientes locales de confianza.

4. Actualizar el puesto

Complete un respaldo y luego ejecútelo en el directorio Compose:

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

Para una versión fijada, primero cambie la etiqueta de imagen en compose.yaml. Abra la consola, verifique el monitoreo del buzón y envíe un nuevo correo electrónico para verificar la entrega. Mantenga la copia de seguridad previa a la actualización. Para retroceder, restaure tanto sus datos como su imagen coincidente usando el tutorial de restauración.

5. Solución de problemas

La imagen no se puede extraer

Compruebe si GHCR contiene la versión solicitada. manifest unknown normalmente significa que falta una etiqueta. Verifique la dirección de la imagen y la visibilidad del paquete para ver si hay errores denied o la conectividad del servidor a GHCR para ver si se han agotado los tiempos de espera.

La consola no se abre

127.0.0.1 se refiere a la computadora que está utilizando. Utilice el túnel SSH o un dominio HTTPS para una instalación remota. Verifique primero docker compose ps y docker compose logs --tail=50 core. Si 8080 está ocupado, cambie la asignación a 127.0.0.1:18080:8080 y use el puerto de host 18080 en el navegador y el proxy inverso.

Restablecer una contraseña de administrador

Ejecute en el directorio Compose e ingrese la nueva contraseña en el indicador del terminal:

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

El comando de recuperación adquiere el bloqueo del directorio de datos, así que detenga primero el puesto. Restablecer la contraseña revoca las sesiones del navegador y conserva los tokens de API, los buzones de correo y la cola.

Conecta la App oficial y Pro

La consola web gratuita y la entrega Bark/Pushover/Webhook funcionan de forma independiente. Para la aplicación oficial, siga Integración de aplicaciones para HTTPS y emparejamiento.

Las compilaciones de origen y el desarrollo local se tratan en guía de desarrollo.

Construcciones de código fuente y configuración de proceso

Para compilaciones de desarrollo, siga repositorio de origen README y guía de construcción para contribuyentes.

MAILWAKE_LISTEN por defecto es 127.0.0.1:8080 fuera de Docker; el contenedor utiliza 0.0.0.0:8080. MAILWAKE_DATA_DIR por defecto es data; el contenedor utiliza /data. MAILWAKE_RELAY_URL por defecto es https://notify.mailwake.oritx.com. Mantenga el directorio de datos completo, incluido secret.key, durante los reinicios y las actualizaciones.

Cambiar el entorno de entrega push

Production y Sandbox utilizan identidades de emparejamiento independientes. Para cambiar entornos intencionalmente, detenga el puesto y ejecute el reinicio en su directorio de datos existente y la dirección guardada del servicio de envío de notificaciones anterior:

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

Escriba reset-native-push cuando se le solicite. El comando revoca los emparejamientos en el antiguo servicio de envío de notificaciones. Si no se puede acceder a ese servicio, mantenga la configuración anterior y vuelva a intentarlo cuando esté disponible. Después de que confirme que no hay objetivos sin resolver, configure el nuevo MAILWAKE_RELAY_URL, vuelva a crear el puesto con docker compose up -d y emparejar de nuevo. El comando preserva la identidad de firma del puesto y el historial del canal ordinario.

Markdown · AGPL-3.0-only · Colaboradores de Mailwake