Files
nixos-config/servers/hetzner/modules/services/mailserver.nix
T
jory ca4a0b23ab
CI / Flake check (aarch64-linux) (push) Successful in 32s
CI / Flake check (x86_64-linux) (push) Successful in 30s
CI / Pre-commit checks (aarch64-linux) (push) Successful in 27s
CI / Pre-commit checks (x86_64-linux) (push) Successful in 10s
Harden server and add Nix-native CI + self-hosted Gitea Actions
- caddy: security headers (X-Content-Type-Options/X-XSS-Protection/
  X-Frame-Options) on all vhosts + baseline CSP; strip SnappyMail
  upstream copies via header_down on mail.severijnse.eu
- tlsa-updater: compute TLSA 3 1 1 from cert SPKI (SHA-256), sync
  _25/_465/_993, fail-safe placeholders; coredns zone updated
- pre-commit: wire cachix/git-hooks.nix (alejandra, statix, actionlint,
  ...); CI pre-commit job over x86_64 + aarch64 matrix
- gitea: enable Gitea Actions + self-hosted runner (native:host,
  aarch64 via binfmt); add .gitea/workflows/ci.yml and local hook
- fix statix warnings (merge repeated systemd/database/configFile keys,
  inherit, bool-compare guards); add missing trailing newlines
2026-07-12 02:08:23 +02:00

42 lines
1.3 KiB
Nix

{...}: {
virtualisation.oci-containers.containers.mailserver = {
image = "ghcr.io/docker-mailserver/docker-mailserver:latest";
autoStart = true;
hostname = "mail.severijnse.eu";
ports = [
"25:25"
"[::]:25:25"
"143:143"
"[::]:143:143"
"465:465"
"[::]:465:465"
"587:587"
"[::]:587:587"
"993:993"
"[::]:993:993"
];
volumes = [
"/home/admin/dms/mail-data/:/var/mail/:Z"
"/home/admin/dms/mail-state/:/var/mail-state/:Z"
"/home/admin/dms/mail-logs/:/var/log/mail/:Z"
"/home/admin/dms/config/:/tmp/docker-mailserver/:Z"
"/etc/localtime:/etc/localtime:ro"
# On the running Debian, Caddy v2 stores certs at /home/admin/caddy/data/caddy/certificates/...
# On NixOS, Caddy stores certs at /var/lib/caddy/certificates/...
"/var/lib/caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.severijnse.eu/:/etc/letsencrypt/live/mail.severijnse.eu/:ro"
];
environment = {
OVERRIDE_HOSTNAME = "";
LOG_LEVEL = "info";
SPOOF_PROTECTION = "1";
MOVE_SPAM_TO_JUNK = "1";
};
environmentFiles = ["/home/admin/mailserver.env"];
extraOptions = [
"--label=com.centurylinklabs.watchtower.enable=true"
"--dns=1.1.1.1"
"--dns=8.8.8.8"
];
};
}