No description
Find a file
2026-04-22 14:00:04 +00:00
inventory feat: deploy Homepage dashboard and fix fleet-wide Trivy GPG keys 2026-04-22 09:21:43 +00:00
keys feat: configure atop with conservative retention and interval 2026-04-13 11:42:56 +00:00
playbooks feat: deploy Homepage dashboard and fix fleet-wide Trivy GPG keys 2026-04-22 09:21:43 +00:00
roles feat(homepage): fix search widget with custom SearXNG provider and refine UI 2026-04-22 13:04:57 +00:00
.ansible-lint feat: Add Caddy role and fix common roles 2025-12-24 11:22:36 +00:00
.gitignore Secure slava_password using Ansible Vault 2026-04-05 08:41:26 +00:00
ansible.cfg sec: enable host key checking and add known_hosts automation 2026-04-10 18:09:27 +00:00
ansible.md docs: update README and ansible guide with PVE firewall and docker maintenance 2026-04-14 06:08:36 +00:00
backup.md docs: repurpose reports as functional manuals and add ansible cheat sheet 2026-04-22 07:51:43 +00:00
cheat_sheet.md docs: repurpose reports as functional manuals and add ansible cheat sheet 2026-04-22 07:51:43 +00:00
forgejo.md docs: add beginner's Ansible guide and update Authelia config 2026-04-09 06:35:40 +00:00
gemini.md docs: update roadmap with latest dashboard and security accomplishments 2026-04-22 14:00:04 +00:00
hardening.md docs: repurpose reports as functional manuals and add ansible cheat sheet 2026-04-22 07:51:43 +00:00
jellyfin_debug.md Security: Implement fleet-wide hardening and auditing 2026-04-14 20:27:12 +00:00
lint_and_notify.sh Fix: Apply system-wide proxy settings and resolve linting issues 2025-12-25 15:00:15 +00:00
oidc_issuer.pem feat: replace Fail2Ban with CrowdSec Security Mesh fleet-wide 2026-04-09 18:58:45 +00:00
power.md feat: implement automated LXC provisioning, SearXNG deployment, and bootstrapping fixes 2026-04-20 17:30:36 +00:00
README.md docs: repurpose reports as functional manuals and add ansible cheat sheet 2026-04-22 07:51:43 +00:00
zabbix_docker_template.yaml fix(zabbix): restored nested triggers for proper import compatibility 2026-04-15 17:38:20 +00:00
zabbix_security_template.yaml fix(zabbix): restored nested triggers for proper import compatibility 2026-04-15 17:38:20 +00:00

🚀 Slava's Home Server Automation (Ansible Project)

Welcome to the magic folder that controls all the servers! 🎩

If you've ever played a video game where you build a city, this is kind of like the control panel for our real-life digital city. Instead of logging into every single computer (server) to install things one by one, we use a tool called Ansible to give them instructions all at once.

This guide is written so anyone can understand how our digital house is built and how to add new rooms (servers) to it.


📖 Table of Contents

  1. What is this? (The Simple Explanation)
  2. How the Folders are Organized
  3. The Core Services We Run
  4. How to Manage the Servers
  5. 📦 Centralized APT Repository & "Lazy Mirror"
  6. 💾 Immich Media Backup (Restic)
  7. 🛠️ Tutorial: How to Provision & Onboard a New Server
  8. 🛠️ Tutorial: How to Add a New Website (Subdomain)
  9. 🔑 Tutorial: Single Sign-On (SSO) with Authelia
  10. 🛡️ Tutorial: CrowdSec "Security Mesh"
  11. 📊 Zabbix Security Monitoring
  12. 📚 Playbooks Explained
  13. 🧩 Roles Explained
  14. 🛡️ Security Auditing & Hardening
  15. Security Stuff

1. What is this? (The Simple Explanation)

Imagine you have 20 robots, and you want them all to put on a blue hat.

  • The hard way: Walk up to each robot, hand it a hat, and tell it to put it on.
  • The Ansible way: You stand at a microphone, shout "Everyone put on a blue hat!" and they all do it at the exact same time.

Ansible is our microphone.

  • The Playbooks are the scripts we read into the microphone (e.g., "Install Docker!").
  • The Inventory is our list of robots (IP addresses) so the microphone knows who to talk to.

2. How the Folders are Organized

Here is what all the folders in this project actually do:

  • 📂 inventory/: This is the address book.
    • hosts.yml: A list of every single server we own and what "groups" they belong to (like the docker group or the caddy group).
    • group_vars/: Settings that apply to a whole group of servers.
    • host_vars/: Settings for one specific server (like a specific firewall port).
  • 📂 playbooks/: These are the instruction manuals.
  • 📂 roles/: These are reusable "recipes".
  • 📂 keys/: Contains our digital keys (SSH keys) for passwordless login.

3. The Core Services We Run

Our home network runs a lot of cool stuff automatically:

  • 🌐 Caddy (.53): The Traffic Cop. Handles HTTPS and sends you to the right server.
  • 🛑 Pi-hole (.25 & .10): The Ad Blocker and Phonebook (DNS).
  • 🔐 Authelia (.7): The Bouncer. Single Sign-On (SSO) protection.
  • 🔍 SearXNG (.251): The Private Eye. Our own private, ad-free search engine.
  • 🛡️ UFW, PVE Firewall & CrowdSec: The Bodyguards. Firewall and Intrusion Prevention.
  • ✈️ atop: The "Flight Recorder". Records system activity every 10 minutes for crash analysis.
  • 📊 Zabbix (.18): The Doctor. Constant health monitoring and alerts.
  • 📦 APT Cacher (.253): The Warehouse. Stores a copy of every software package we use.
  • 🐳 Docker Cache & Maintenance (.253): The Image Library. Local copies of Docker images and automated cleanup.
  • 💿 ISO Repository (.26): The DVD Shelf. Local OS images on the NAS.
  • 💾 Immich Backup (.217): The Safety Net. Nightly Restic backups of 600GB of media to OMV.

4. How to Manage the Servers

The Master Playbook (site.yml)

Instead of running individual playbooks, you can use the master playbook to manage everything. We've added Tags so you can run only specific parts of the setup:

  • Apply ONLY Common settings:
    ansible-playbook playbooks/site.yml --tags common
    
  • Update EVERYTHING (Standard run):
    ansible-playbook playbooks/site.yml
    

📚 Specialized Manuals & Guides

For detailed instructions, refer to these dedicated manuals:


3. The Core Services We Run