# Déployer un avant-poste

Exécutez l’avant-poste sur votre serveur ou NAS pour recevoir les notifications des dossiers de messagerie sélectionnés. Vous avez besoin de Docker, ainsi que de Docker Compose v2 pour l'installation recommandée de Compose.

**Disponibilité des images** : les versions disponibles sont répertoriées dans [Versions de GitHub](https://github.com/mingzaily/mailwake/releases) et [GHCR](https://github.com/mingzaily/mailwake/pkgs/container/mailwake).

## 1. Choisissez une méthode d'installation

**Docker Compose est recommandé** : l'installation, les mises à jour et les sauvegardes utilisent la même configuration. L'image est `ghcr.io/mingzaily/mailwake:latest` , pour Linux amd64 / arm64. `latest` suit la version stable. Pour épingler une version, remplacez `latest` par une balise publiée à partir des versions.

Dans votre terminal serveur :

```
mkdir -p ~/mailwake
cd ~/mailwake
```

Créez `compose.yaml` dans ce répertoire avec cette configuration complète :

```
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:
```

Téléchargez l'image et démarrez l'avant-poste :

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

**Vérifiez le résultat** : `core` affiche `Up` / `running` et les journaux contiennent le code de configuration initial. Gardez le terminal disponible pour l’étape suivante. Exécutez les futures commandes Compose à partir de `~/mailwake` .

Le volume Docker `core-data` stocke `/data` . Avec ce nom de répertoire, son nom Docker par défaut est `mailwake_core-data` . Recréer le conteneur le préserve ; `docker compose down -v` supprime le volume et son contenu.

### Exécution Docker

Choisissez cette installation équivalente si vous préférez une seule commande. Utilisez une méthode d'installation pour votre instance.

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

Cette installation utilise le volume `mailwake-data`. Les commandes de gestion suivantes utilisent Compose ; voir le [Instructions de sauvegarde Docker Run](backup.md#sauvegarder-une-installation-docker-run) pour l'alternative.

## 2. Ouvrez la console

**Sur l'hôte Docker** : ouvrez <http://127.0.0.1:8080> .

**Sur un serveur distant ou un NAS** : exécutez cette commande sur votre propre ordinateur, en remplaçant `user@server` par l'utilisateur et l'adresse SSH de votre serveur :

```
ssh -L 18080:127.0.0.1:8080 user@server
```

Gardez la connexion ouverte et visitez <http://127.0.0.1:18080> sur votre ordinateur. C'est suffisant pour terminer la configuration initiale. Configurez HTTPS ci-dessous lorsque vous souhaitez un accès continu via un domaine.

**Vérifiez le résultat** : l'écran de configuration Mailwake s'ouvre. Entrez le code de configuration à partir des journaux et créez un mot de passe administrateur d'au moins 12 caractères. Le redémarrage de l'avant-poste avant l'installation génère un nouveau code d'installation.

Continuez avec [votre première notification](first-notification.md) pour connecter une boîte aux lettres et un canal de notification.

## 3. Configurez HTTPS

Pointez votre domaine vers le serveur et configurez votre proxy inverse pour qu'il redirige vers `http://127.0.0.1:8080` . Pour Caddy installé sur le même hébergeur, ajoutez votre domaine à `Caddyfile` :

```
mail.example.org {
    reverse_proxy 127.0.0.1:8080
}
```

Vérifiez DNS et autorisez les ports entrants 80 / 443, puis validez et rechargez :

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

Ouvrez `https://mail.example.org` , confirmez que le certificat est valide et vérifiez que vous pouvez vous connecter et ouvrir une boîte aux lettres. Consultez le [guide d'installation officiel du Caddy](https://caddyserver.com/docs/install) pour installer Caddy. Dans un panneau proxy tel que Nginx Proxy Manager, entrez le domaine et l'adresse de transfert et demandez un certificat dans le panneau.

Pour un proxy dans un autre conteneur, rejoignez-le au réseau Docker de l'avant-poste et transférez-le à `http://core:8080` ; son `127.0.0.1` fait référence à lui-même. Conservez l'hôte d'origine et définissez `X-Forwarded-For` . L'avant-poste accepte les informations proxy provenant des réseaux de bouclage et privés ; exposez le port 8080 uniquement au proxy et aux clients locaux de confiance.

## 4. Mettez à jour l'avant-poste

Complétez un [sauvegarde](backup.md) , puis exécutez dans le répertoire Compose :

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

Pour une version épinglée, modifiez d'abord la balise d'image dans `compose.yaml`. Ouvrez la console, vérifiez la surveillance de la boîte aux lettres et envoyez un nouvel e-mail pour vérifier la livraison. Conservez la sauvegarde préalable à la mise à jour. Pour revenir en arrière, restaurez ses données et son image correspondante à l'aide du didacticiel de restauration.

## 5. Dépannage

### L'image ne peut pas être extraite

Vérifiez si GHCR contient la version demandée. `manifest unknown` signifie généralement une balise manquante. Vérifiez l'adresse de l'image et la visibilité du package pour les erreurs `denied`, ou la connectivité du serveur à GHCR pour les délais d'attente.

### La console ne s'ouvre pas

`127.0.0.1` fait référence à l'ordinateur que vous utilisez. Utilisez le tunnel SSH ou un domaine HTTPS pour une installation à distance. Vérifiez d'abord `docker compose ps` et `docker compose logs --tail=50 core`. Si 8080 est occupé, modifiez le mappage en `127.0.0.1:18080:8080` et utilisez le port hôte 18080 dans le navigateur et le proxy inverse.

### Réinitialiser un mot de passe administrateur

Exécutez dans le répertoire Compose et entrez le nouveau mot de passe à l'invite du terminal :

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

La commande de récupération acquiert le verrou du répertoire de données, arrêtez donc d'abord l'avant-poste. La réinitialisation du mot de passe révoque les sessions du navigateur et préserve les jetons API, les boîtes aux lettres et la file d'attente.

### Connectez l'application officielle et Pro

La console Web gratuite et la livraison Bark / Pushover / Webhook fonctionnent indépendamment. Pour l'application officielle, suivez [Connexion de l’app](connect-app.md) pour HTTPS et l’appairage.

Les builds sources et le développement local sont traités dans le [guide de développement](https://github.com/mingzaily/mailwake/blob/main/docs/development.md) .

## Constructions sources et paramètres de processus

Pour les versions de développement, suivez les [référentiel source README](https://github.com/mingzaily/mailwake#run-from-source) et [guide de création des contributeurs](https://github.com/mingzaily/mailwake/blob/main/CONTRIBUTING.md) .

`MAILWAKE_LISTEN` est par défaut `127.0.0.1:8080` en dehors de Docker ; le conteneur utilise `0.0.0.0:8080` . `MAILWAKE_DATA_DIR` est par défaut `data` ; le conteneur utilise `/data` . `MAILWAKE_RELAY_URL` est par défaut `https://notify.mailwake.oritx.com` . Conservez le répertoire de données complet, y compris `secret.key` , lors des redémarrages et des mises à niveau.

## Changer l’environnement de livraison push

Production et Sandbox utilisent des identités de appairage distinctes. Pour modifier intentionnellement des environnements, arrêtez l'avant-poste et exécutez la réinitialisation sur son répertoire de données existant et l'adresse enregistrée du service de transmission des notifications précédent :

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

Tapez `reset-native-push` lorsque vous y êtes invité. La commande révoque les appairages sur l’ancien service de transmission des notifications. Si ce service est inaccessible, conservez l'ancienne configuration et réessayez lorsqu'il est accessible. Après avoir confirmé zéro cible non résolue, définissez le nouveau `MAILWAKE_RELAY_URL` , recréez l'avant-poste avec `docker compose up -d` et [coupler à nouveau](connect-app.md) . La commande préserve l'identité de signature de l'avant-poste et l'historique du canal ordinaire.
