2026-02-27 15:09:25 -07:00
|
|
|
---
|
|
|
|
|
# ============================================================
|
|
|
|
|
# Linderhof DNS Zones
|
|
|
|
|
# ============================================================
|
|
|
|
|
# Generated by setup.sh — edit to match your DNS needs.
|
|
|
|
|
# This file is loaded automatically by Ansible as part of group_vars.
|
|
|
|
|
#
|
|
|
|
|
# After first mail deployment, retrieve DKIM keys with:
|
|
|
|
|
# docker exec mailserver cat /tmp/docker-mailserver/rspamd/dkim/$domain/mail.pub
|
2026-02-28 00:51:16 -07:00
|
|
|
# Then add them to vault.yml under dkim_keys:
|
|
|
|
|
# dkim_keys:
|
|
|
|
|
# $domain: "v=DKIM1; k=rsa; p=..."
|
|
|
|
|
# The mail._domainkey record will be created automatically on next dns.yml run.
|
2026-02-27 15:09:25 -07:00
|
|
|
# ============================================================
|
|
|
|
|
|
|
|
|
|
dns_zones:
|
|
|
|
|
- zone: $domain
|
|
|
|
|
records:
|
|
|
|
|
# Root domain
|
|
|
|
|
- name: "@"
|
|
|
|
|
type: A
|
|
|
|
|
records:
|
2026-02-28 00:51:16 -07:00
|
|
|
- value: "{{ server_ip }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
|
|
|
|
|
- name: "@"
|
|
|
|
|
type: MX
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: "10 {{ mail_hostname }}."
|
|
|
|
|
|
|
|
|
|
- name: "@"
|
|
|
|
|
type: TXT
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: "{{ 'v=spf1 mx -all' | hetzner.hcloud.txt_record }}"
|
|
|
|
|
|
|
|
|
|
# Server A record
|
|
|
|
|
- name: $server_name
|
|
|
|
|
type: A
|
|
|
|
|
records:
|
2026-02-28 00:51:16 -07:00
|
|
|
- value: "{{ server_ip }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
|
|
|
|
|
- name: www
|
|
|
|
|
type: A
|
|
|
|
|
records:
|
2026-02-28 00:51:16 -07:00
|
|
|
- value: "{{ server_ip }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
|
2026-02-28 00:51:16 -07:00
|
|
|
# Mail subdomain A record
|
2026-02-27 15:09:25 -07:00
|
|
|
- name: "{{ mail_hostname.split('.')[0] }}"
|
|
|
|
|
type: A
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
2026-02-28 00:51:16 -07:00
|
|
|
- value: "{{ server_ip }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
|
|
|
|
|
# Service CNAMEs
|
|
|
|
|
- name: webmail
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: code
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_forgejo | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: watch
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_monitoring | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: rspamd
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: stats
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_goaccess | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: chat
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_tuwunel | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
- name: cal
|
|
|
|
|
type: CNAME
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_radicale | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: $server_name.$domain.
|
|
|
|
|
|
|
|
|
|
# DMARC
|
|
|
|
|
- name: _dmarc
|
|
|
|
|
type: TXT
|
2026-02-28 00:51:16 -07:00
|
|
|
when: "{{ enable_mail | default(false) }}"
|
2026-02-27 15:09:25 -07:00
|
|
|
records:
|
|
|
|
|
- value: "{{ 'v=DMARC1; p=none; rua=mailto:dmarc@$domain' | hetzner.hcloud.txt_record }}"
|