19 guias passo a passo para Docker® Compose, sistemas operacionais, NAS & provedores de hospedagem

Implante via Docker® Compose, serviço do Windows® (sem Docker®), Linux®, NAS, Proxmox® e grandes provedores de hospedagem

Escolha sua plataforma exata: de exemplos Docker® Compose prontos para uso e um serviço nativo do Windows Server® sem Docker® até Proxmox® VE, Raspberry Pi®, Synology®, ASUSTOR, UGREEN, TerraMaster e Unraid, além da configuração exata de PTR & firewall em netcup, Hetzner, IONOS, ALL-INKL.COM, Hostinger, Strato e OVHcloud.

# Linux & macOS: SHA-256-geprüfter Installer & Updater v1.0.0 (Docker Compose, .deb oder systemd)
curl -fsSL https://nextxch.com/install.sh | sudo bash

# Windows Server (2019 / 2022 / 2025): Lädt das .msi, prüft SHA-256 & startet den Assistenten
irm https://nextxch.com/install.ps1 | iex

# Gepinnter Container-Start (Version 1.0.0 für linux/amd64 & linux/arm64)
docker run -d --name nextxch -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 80:80 -p 443:443 \
  -v nextxch-data:/app/data nextxch/server:1.0.0
No ar em 60 segundos

Um único binário unificado em vez de sete daemons frágeis.

Pare de juntar Postfix, Dovecot, Rspamd, OpenDKIM, Certbot, Redis e webmail PHP legado: o nextxch entrega transporte de e-mail, groupware, Webmail PWA, Admin Cockpit, CLI/API e Let's Encrypt com SNI em 0 ms em um único pacote autocontido.

Instaladores de terminal em uma linha & pacotes nativos verificados v1.0.0 (.msi, .deb, .tar.gz)

Verifica automaticamente os digests SHA-256, solicita interativamente domínio, hostname, admin e armazenamento, ou executa uma atualização do serviço no local

v1.0.0 · verificado com SHA-256
# === Linux (Debian / Ubuntu / RHEL) & macOS - Interaktiver Installer & Updater (v1.0.0) ===
curl -fsSL https://nextxch.com/install.sh | sudo bash

# Späteres Update auf neue Release-Version mit einem Befehl:
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update

# === Windows Server (2019 / 2022 / 2025) - Lädt .msi, prüft SHA-256 & startet den Assistenten ===
irm https://nextxch.com/install.ps1 | iex

Docker® e Docker® Compose (versão fixada v1.0.0 para Linux®, Windows®, macOS® e NAS)

Imagem OCI multiarquitetura reproduzível (nextxch/server:1.0.0 · linux/amd64 & linux/arm64) com SQLite WAL ou PostgreSQL® 18, CalDAV/CardDAV, S3 Object Lock & OpenTelemetry

OCI v1.0.0
Nota sobre o registro de contêineres: recomendamos expressamente tags de versão fixadas (1.0.0 em vez de :latest) em produção. Enquanto o espelhamento público no Docker® Hub estiver em rollout gradual, a execução de install.sh --mode docker verifica automaticamente o SHA256SUMS.txt de nextxch.com e compila nextxch/server:1.0.0 localmente no seu host.
  1. Opção A: Compose compacto de contêiner único (SQLite WAL + Zstandard): ideal para até milhares de caixas de correio em um único VPS, servidor dedicado ou NAS, sem dependências de banco de dados externo e com ~40 MB de RAM em repouso.
  2. Opção B: Compose de produção Enterprise (PostgreSQL® 18 + S3 WORM + OpenTelemetry): escalonamento horizontal, S3 Object Lock em conformidade com a GoBD e traces, métricas e logs OpenTelemetry OTLP.
# === VARIANTE A: Kompakter Einzelcontainer-Stack (docker-compose.yml) ===
services:
  nextxch:
    image: nextxch/server:1.0.0
    container_name: nextxch
    hostname: mail.firma.de
    restart: unless-stopped
    ports:
      - "25:25"       # ESMTP-Eingang (MX)
      - "465:465"     # SMTPS-Einlieferung (Implicit TLS)
      - "587:587"     # SMTP-Einlieferung (STARTTLS)
      - "143:143"     # IMAP4rev2 (STARTTLS)
      - "993:993"     # IMAPS (Implicit TLS)
      - "4190:4190"   # ManageSieve (Filter & Abwesenheit)
      - "80:80"       # Let's Encrypt HTTP-01 & Autoconfig
      - "443:443"     # Admin-Cockpit, Webmail PWA, JMAP, CalDAV/CardDAV, Mobile Push (WBXML) & REST API
    environment:
      Urls: "http://*:80;https://*:443"
      Bootstrap__DefaultDomain: "firma.de"
      Bootstrap__AdminEmail: "admin@firma.de"
      Bootstrap__AdminPassword: "BitteSofortAendern!2026"
      Storage__Provider: "Sqlite"
      Storage__DataDirectory: "/var/lib/nextxch"
      Storage__BlobBackend: "FileSystem"
      Storage__Compression: "Zstd"
      Smtp__ServerHostName: "mail.firma.de"
      Imap__ServerHostName: "mail.firma.de"
      OpenTelemetry__Enabled: "true"
      OpenTelemetry__ServiceName: "nextxch"
    volumes:
      - ./nextxch-data:/var/lib/nextxch

# Starten (oder automatischer lokaler Image-Build via install.sh --mode docker):
# docker compose up -d && docker compose logs -f nextxch
# === VARIANTE B: Enterprise-Stack mit PostgreSQL 18, S3 Object Lock & OpenTelemetry ===
services:
  nextxch:
    image: nextxch/server:1.0.0
    restart: unless-stopped
    depends_on: [postgres, otel-collector]
    ports: ["25:25", "465:465", "587:587", "993:993", "4190:4190", "80:80", "443:443"]
    environment:
      Urls: "http://*:80;https://*:443"
      Storage__Provider: "Postgres"
      Storage__PostgresConnectionString: "Host=postgres;Database=nextxch;Username=nextxch;Password=${PG_PASSWORD}"
      Storage__BlobBackend: "Hybrid"
      Storage__Compression: "Zstd"
      Storage__S3Endpoint: "https://s3.eu-central-1.ionoscloud.com"
      Storage__S3Bucket: "firma-gobd-mail-archive"
      OpenTelemetry__Enabled: "true"
      OpenTelemetry__ServiceName: "nextxch-Prod"
      OpenTelemetry__OtlpEndpoint: "http://otel-collector:4317"
    volumes:
      - nextxch-nvme-cache:/var/lib/nextxch

  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: nextxch
      POSTGRES_USER: nextxch
      POSTGRES_PASSWORD: "${PG_PASSWORD}"
    volumes:
      - pg-data:/var/lib/postgresql

  otel-collector:
    image: otel/opentelemetry-collector-contrib:0.112.0
    restart: unless-stopped
    ports: ["127.0.0.1:4317:4317"]

volumes:
  nextxch-nvme-cache:
  pg-data:

Windows Server® (2019 / 2022 / 2025): serviço nativo do Windows® sem Docker®

Daemon real do Service Control Manager (SCM) do Windows®, sem sobrecarga de Docker®, Hyper-V ou WSL2

Serviço nativo do Windows®
  1. Recomendado: assistente oficial .msi para Windows® (v1.0.0): em uma instalação nova, solicita interativamente domínio, hostname MX, login de admin, SQLite WAL vs. Microsoft® SQL Server® (2019–2025 / Express / Azure® SQL) vs. PostgreSQL® 18, Let's Encrypt ACME, Firewall do Windows® e token de licença opcional. Executar um .msi mais novo faz uma atualização no local do serviço do Windows® com 1 clique, preservando appsettings.Production.json e os dados de e-mail.
  2. CLI silenciosa e autônoma para Ansible, GPO & Microsoft® Intune: passe qualquer propriedade de configuração sem interface via msiexec.exe /qn.
# Variante A: Einzeiler in PowerShell (prüft SHA-256, lädt .msi & startet den Assistenten)
irm https://nextxch.com/install.ps1 | iex

# Variante B: Unbeaufsichtigte Installation / Dienst-Aktualisierung per msiexec.exe
curl.exe -fLO https://nextxch.com/downloads/Nextxch-Setup-win-x64.msi
msiexec.exe /i Nextxch-Setup-win-x64.msi /qn `
  DEFAULT_DOMAIN="firma.de" `
  MAIL_HOSTNAME="mail.firma.de" `
  ADMIN_EMAIL="admin@firma.de" `
  ADMIN_PASSWORD="BitteSofortAendern!2026" `
  STORAGE_PROVIDER="Sqlite" `
  DATA_DIR="C:\ProgramData\nextxch"

Daemon nativo para Linux® sem Docker® (systemd e .deb)

Debian® · Ubuntu® · Red Hat® · Rocky
  1. Usuário dedicado não root: executa sem root com CAP_NET_BIND_SERVICE para as portas 25/443.
  2. Ativar a unidade systemd nativa Type=notify: integra-se nativamente ao journald e à prontidão do systemd.
# Schnellweg für Debian 12 / Ubuntu 24.04 LTS:
curl -fLO https://nextxch.com/downloads/nextxch_1.0.0_amd64.deb
sudo dpkg -i nextxch_1.0.0_amd64.deb

# Alternativ für RHEL / Rocky / AlmaLinux via .tar.gz + systemd:
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/nextxch nextxch
sudo mkdir -p /opt/nextxch /var/lib/nextxch
curl -fsSL https://nextxch.com/downloads/nextxch-linux-x64.tar.gz | sudo tar -xz -C /opt/nextxch
sudo chown -R nextxch:nextxch /var/lib/nextxch
sudo cp /opt/nextxch/nextxch.service /etc/systemd/system/
sudo systemctl enable --now nextxch

macOS® (Apple® Silicon M1–M4 & Intel)

macOS® · ARM64 · launchd
  1. Apple® Silicon ARM64 nativo: ideal para servidores Mac mini® / Mac Studio® no escritório e staging local em MacBook Pro®.
  2. Execução persistente via launchd: inicia automaticamente no boot com uso de ~40 MB de RAM.
sudo mkdir -p /usr/local/nextxch /usr/local/var/nextxch/logs
curl -fsSL https://nextxch.com/downloads/nextxch-osx-arm64.tar.gz | sudo tar -xz -C /usr/local/nextxch
sudo xattr -dr com.apple.quarantine /usr/local/nextxch
sudo bash /usr/local/nextxch/install-macos.sh

# Alternativ per OrbStack / Docker Desktop auf macOS:
docker run -d --name nextxch -p 2525:25 -p 2993:993 -p 8080:80 \
  -v ~/nextxch-data:/app/data \
  nextxch/server:1.0.0

Cluster Kubernetes® ativo-ativo (EKS, AKS, GKE, K3s, OpenShift®) & Podman rootless

100% PostgreSQL® 18 · sem Redis · Helm v3
  1. Cluster engine 100% PostgreSQL® 18 (sem Redis/Kafka): as réplicas distribuem o push em tempo real IMAP IDLE e JMAP SSE em < 2 ms via PostgreSQL® LISTEN/NOTIFY, compartilham desafios efêmeros/limites de taxa via tabelas UNLOGGED e elegem líderes de ACME/retenção via pg_try_advisory_lock.
  2. Protocolo PROXY v1/v2 do HAProxy e sessões stateless: preserva os IPs reais dos clientes atrás de balanceadores de carga L4 para verificações precisas de SPF/DMARC/CIDR; tokens assinados permitem escalonamento HPA sem sticky sessions.
  3. Licenciamento Ed25519 seguro para cluster: um único token de licença cobre pods ilimitados e é sincronizado automaticamente em todos os nós quando ativado no /admin/.
# Offizielles Helm v3 Chart installieren (gepinnter Release-Tag 1.0.0, skaliert per HPA auf 3 bis 12 Pods)
helm upgrade --install nextxch ./deploy/helm/nextxch -n nextxch --create-namespace \
  --set image.repository=nextxch/server \
  --set image.tag=1.0.0 \
  --set replicaCount=3 \
  --set cluster.enabled=true \
  --set cluster.enableProxyProtocol=true \
  --set storage.provider=Postgres \
  --set storage.blobBackend=S3 \
  --set service.externalTrafficPolicy=Local

# Oder direkt per Kustomize-Manifesten (/health/live & /health/ready + PDB + Anti-Affinity):
kubectl apply -k ./deploy/kubernetes/

# Alternativ: Rootless Podman (RHEL 9 / Fedora / AlmaLinux ohne Docker-Daemon)
podman run -d --name nextxch --restart=always \
  -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 4190:4190 -p 8443:443 \
  -v /var/lib/nextxch:/app/data:Z \
  nextxch/server:1.0.0
Virtualização, ARM64 & appliances NAS

Instalação em Proxmox®, Raspberry Pi®, Synology®, ASUSTOR, UGREEN, TerraMaster & Unraid

Proxmox® VE (LXC & KVM)

Proxmox® VE 8+ · ZFS / NVMe
  1. Criar contêiner LXC: crie um contêiner LXC Debian® 12 não privilegiado (2 vCPU, 1024 MB de RAM) com um ponto de montagem ZFS/NVMe em /var/lib/nextxch.
  2. Diretamente via .deb / systemd: dentro do LXC, execute o serviço nativo .deb/systemd para não ter sobrecarga de contêineres aninhados e obter snapshots instantâneos do Proxmox® Backup Server.
  3. Firewall do Proxmox®: permita TCP 25, 465, 587, 993, 4190, 80, 443 de entrada no firewall do Datacenter/CT.
# Auf dem Proxmox-Host (erstellt schlanken Debian-LXC CT 210 & installiert nativ):
pct create 210 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname mail --cores 2 --memory 1024 --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --storage local-zfs --rootfs local-zfs:32 --unprivileged 1 --start 1
pct exec 210 -- bash -c "curl -fsSL https://nextxch.com/install.sh | bash -s -- --mode native -y"

Raspberry Pi® 4 & Raspberry Pi® 5

linux/arm64 · ~40 MB de RAM
  1. Sistema de 64 bits & NVMe em vez de cartão SD: use o Raspberry Pi® OS Lite de 64 bits e coloque /var/lib/nextxch em um HAT M.2 NVMe ou SSD USB 3 em vez de microSD.
  2. Dica para conexão residencial (smarthost): em IPs dinâmicos residenciais, defina Smtp__OutboundSmartHost para o relay do seu ISP/provedor de hospedagem para uma entrega de saída confiável.
# Nativ per ARM64-.deb-Paket oder Container (v1.0.0) auf Raspberry Pi 4 / 5:
curl -fLO https://nextxch.com/downloads/nextxch_1.0.0_arm64.deb
sudo dpkg -i nextxch_1.0.0_arm64.deb

Synology® NAS (DSM 7.2+)

Container Manager · Btrfs
  1. Criar pasta no File Station: crie /volume1/docker/nextxch no File Station, no seu volume Btrfs/SSD.
  2. Evitar conflito de portas: garanta que o Synology® MailPlus esteja parado para que as portas 25, 465, 587 e 993 fiquem livres.
  3. Abrir o Container Manager: abra Container Manager -> Project -> Create, selecione /volume1/docker/nextxch e cole:
services:
  nextxch:
    image: nextxch/server:1.0.0
    container_name: nextxch
    restart: unless-stopped
    ports:
      - "25:25"
      - "465:465"
      - "587:587"
      - "993:993"
      - "4190:4190"
      - "8443:443"
    volumes:
      - /volume1/docker/nextxch:/app/data
    environment:
      Storage__Provider: "Sqlite"
      Storage__Compression: "Zstd"

ASUSTOR NAS (ADM 4.x)

App Central · Docker®-CE · Portainer
  1. Instalar Docker®-CE & Portainer CE: instale o Docker®-CE e o Portainer CE pelo ADM App Central.
  2. Pasta persistente: crie /volume1/Docker/nextxch no ADM File Explorer.
  3. Implantar a stack: implante uma stack no Portainer mapeando /volume1/Docker/nextxch:/app/data e libere as portas de e-mail no ADM Defender.
mkdir -p /volume1/Docker/nextxch
docker run -d --name nextxch --restart unless-stopped \
  -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 8443:443 \
  -v /volume1/Docker/nextxch:/app/data \
  nextxch/server:1.0.0

UGREEN NASync (UGOS Pro)

UGOS Pro · projeto Docker®
  1. Usar pool de armazenamento NVMe: nos modelos UGREEN NASync DXP, coloque /volume1/docker/nextxch no seu pool NVMe M.2 para busca instantânea.
  2. App Docker® do UGOS Pro: abra UGOS Pro Docker® -> Project -> Create, cole o arquivo Compose e clique em Deploy.
# UGOS Pro -> Docker -> Projekt -> Compose-Konfiguration:
services:
  nextxch:
    image: nextxch/server:1.0.0
    restart: always
    ports: ["25:25", "465:465", "587:587", "993:993", "4190:4190", "8443:443"]
    volumes:
      - ./data:/app/data

TerraMaster NAS (TOS 5 / TOS 6)

TOS Docker® Manager
  1. Instalar o Docker® Manager: instale o Docker® Manager pelo TOS App Center e crie /Volume1/docker/nextxch.
  2. Implantar o projeto: em Docker® Manager -> Projects -> Add, cole a stack YAML e inicie.
volumes:
  - /Volume1/docker/nextxch:/app/data
# Admin-Cockpit nach Start: https://TERRAMASTER-IP:8443/admin/

Servidor Unraid (6.12+ / 7.x)

Unraid · Cache NVMe · Custom br0
  1. Colocar o appdata no NVMe de cache: mapeie /mnt/cache/appdata/nextxch para que os discos do array de paridade possam entrar em repouso enquanto os índices rodam na velocidade do NVMe.
  2. IP de LAN próprio via tipo de rede Custom: br0 (recomendado): atribua o tipo de rede Custom br0 com um IP de LAN dedicado, para que as portas 80/443/25 nunca entrem em conflito com a WebGUI do Unraid.
# Unraid Terminal oder Docker Compose Manager Plugin:
docker run -d --name nextxch --net=br0 --ip=192.168.178.25 --restart=unless-stopped \
  -v /mnt/cache/appdata/nextxch:/app/data \
  -e ASPNETCORE_URLS="http://*:80;https://*:443" \
  -e Bootstrap__DefaultDomain="firma.de" \
  nextxch/server:1.0.0
Guias de provedores de hospedagem & DNS

Guias de configuração para netcup, Hetzner, IONOS, ALL-INKL.COM, Hostinger, Strato e OVHcloud

A entrega confiável na caixa de entrada do Gmail™, do Outlook® e de gateways corporativos exige uma reputação limpa do IP remetente e três configurações no provedor de hospedagem: acesso de saída à porta 25, DNS reverso PTR IPv4/IPv6 correspondente e registros SPF/DKIM/DMARC alinhados.

netcup.de (Root-Server & VPS)

SCP · CCP DNS · porta 25 aberta
  1. Configurar DNS reverso (PTR) no SCP: no netcup SCP -> Network, defina o DNS reverso (PTR) para o seu endereço IPv4 e para o IPv6 primário como mail.yourdomain.de.
  2. Gerenciar o DNS no CCP: em netcup CCP -> Domains -> DNS, adicione os registros A, AAAA, MX (prio 10), SPF e TXT de DKIM.
  3. Instalação: implante a ISO do Debian® 12 ou do Windows Server® no SCP e instale nativamente ou via Docker®.

hetzner.de (Cloud CX/CAX & Dedicated)

Cloud Console · x64 & Ampere ARM64
  1. Liberação da porta 25 para novos clientes: novas contas da Hetzner Cloud bloqueiam inicialmente a saída nas portas 25/465; solicite o desbloqueio da porta em Cloud Console -> Limits após sua primeira fatura.
  2. Configurar PTR IPv4 & IPv6: no Hetzner Cloud Console -> Networking -> Edit Reverse DNS, defina tanto o IPv4 primário quanto o IPv6 ::1 para mail.yourdomain.de.
  3. Dica de custo-benefício: roda nativamente nas instâncias ARM64 Hetzner CAX, de altíssima eficiência, e se integra diretamente ao Hetzner S3 Object Storage.

ionos.de (VPS & Cloud Server)

IONOS Cloud Panel · S3 Object Lock
  1. Abrir o firewall externo da IONOS: abra IONOS Cloud Panel -> Rede -> Políticas de firewall e permita TCP 25, 80, 443, 465, 587, 993 e 4190 de entrada.
  2. Configurar o DNS reverso: defina o DNS reverso em Network -> Public IPs como mail.yourdomain.de assim que o registro A resolver.
  3. Arquivo GoBD com IONOS S3: combine com o IONOS S3 Object Storage em Frankfurt/Berlim com S3 Object Lock nativo (COMPLIANCE).

ALL-INKL.COM (KAS DNS & smarthost)

Ferramentas DNS do KAS · Smarthost
  1. Variante A (domínio na ALL-INKL, nextxch em VPS próprio): em ALL-INKL KAS -> Tools -> DNS Tools, aponte A/AAAA de mail e o MX para o IP do seu nextxch e adicione os registros TXT de SPF/DKIM/DMARC.
  2. Variante B (nextxch no escritório / NAS com ALL-INKL como relay de envio): Executa o nextxch em um NAS/Proxmox® de escritório com IP dinâmico? Configure w01abc.kasserver.com:587 como Smtp__OutboundSmartHost e adicione include:_spf.kasserver.com ao SPF.

Hostinger (KVM VPS & hPanel)

hPanel · KVM 2 / KVM 4
  1. Registro PTR na área de VPS: em Hostinger hPanel -> VPS -> Endereços IP, defina o registro PTR como mail.yourdomain.de.
  2. Atenção à porta 25 / relay: verifique se a porta 25 de saída está liberada no seu plano KVM ou configure no nextxch um smarthost autenticado na porta 587.
  3. Gerenciamento de DNS no hPanel: substitua as entradas MX padrão no DNS Zone Editor do hPanel por mail.yourdomain.de e seus registros TXT de SPF/DKIM/DMARC.

Strato (V-Server Linux®/Windows® & dedicado)

Login no servidor STRATO · Windows® & Linux®
  1. Ideal para Windows Server® sem Docker®: nos V-Servers Windows® da STRATO, instale diretamente como serviço nativo do Windows® usando o comando PowerShell® acima.
  2. DNS reverso no STRATO Server Login: em STRATO Server Login -> Endereços IP, defina o DNS reverso para IPv4 e IPv6 como mail.yourdomain.de.
  3. Gerenciamento de domínios da STRATO: no STRATO Domain Management -> DNS Settings, mude o MX para servidor de e-mail personalizado (mail.yourdomain.de) e adicione os registros TXT.

OVHcloud (VPS, Dedicated & Public Cloud)

Painel de controle OVHcloud · S3 WORM na UE
  1. Ordem importante para o PTR na OVHcloud: a OVHcloud valida o DNS direto antes de aceitar uma alteração de PTR: crie primeiro os registros A e AAAA para mail.yourdomain.de e depois defina o DNS reverso em Network -> Public IPs.
  2. Firewall de rede & S3 Object Lock: libere as portas de e-mail no OVHcloud Edge Network Firewall e, opcionalmente, conecte o OVHcloud S3 Object Storage (Limburg/Estrasburgo) para arquivamento GoBD WORM imutável.