# Homeservers This repository contains Ansible scripts to setup our home servers. The `common` role executes some common OS tasks. The `docker` role installs Docker. The other roles are specifically for the various services we run. ## Running services All services below are running under Docker, except NSD because I couldn't figure out how to enable IPv6 for it. - Authoritative DNS using [NSD](https://www.nlnetlabs.nl/projects/nsd/about/) (ns.pizzapim.nl) - Reverse proxy using [Traefik](https://doc.traefik.io/traefik/) - Git server using [Forgejo](https://forgejo.org/) ([git.pizzapim.nl](https://git.pizzapim.nl)) - Static website using [Hugo](https://gohugo.io/) ([pizzapim.nl](https://pizzapim.nl)) - File sychronisation using [Syncthing](https://syncthing.net/) - Microblogging server using [Mastodon](https://joinmastodon.org/) ([social.pizzapim.nl](https://social.pizzapim.nl)) - Calendar and contact synchronisation using [Radicale](https://radicale.org/v3.html) ([dav.pizzapim.nl](https://dav.pizzapim.nl)) - KMS server using [vlmcsd](https://github.com/Wind4/vlmcsd) - Cloud file storege [Seafile](https://www.seafile.com) - Backups using [Borg](https://www.borgbackup.org/) and [Borgmatic](https://torsion.org/borgmatic/) ## Possible future services - matrix - peertube? - jitsi ## TODO - Forward to https not working correctly yet. - Fix known hosts between max and lewis ### NSD #### ZSK Rollover Could make automatic key rollovers with cron or some other tool. #### Idempotency Currently I always resign zones. But for idempotency I should probably only do it if the zone has changed or the keys have changed. ### Firewall A little more difficult because of docker networking but probably doable. ### Backup server Given that I am now backing up my data to another server using Borg, it makes sense to include that server into IaC as well. Should be pretty straight forward: - Install Borg and Borgmatic - Initialize the Borg repository if it doesn't exist yet. - Add the homeserver's public key to authorized keys.