mates dfc1ca514d feat: pridat netbird roli do priprav-novy-server.yml
Nove role:
- roles/netbird/ - instaluje NetBird mesh VPN klient

Konfigurace:
- netbird_setup_key: '' (placeholder, dopln v group_vars/all.yml)
- netbird_run_as_system_service: true
- netbird_management_url: 'https://api.netbird.io'

Playbook priprav-novy-server.yml:
- pridana role netbird mezi docker a fail2ban
- update hlavicky (krok 8 NetBird)
- update README strom (netbird role)
2026-08-01 20:48:55 +02:00
2026-08-01 19:51:59 +02:00
2026-08-01 19:51:59 +02:00
2026-08-01 19:51:59 +02:00

mates-ansible

Ansible playbooky pro přípravu nového serveru a správu home infrastruktury.

Jsi začátečník? Čti od Začínáme – vše je tu vysvětleno krok za krokem.


📚 Co je Ansible?

Ansible je nástroj, který automatizuje konfiguraci serverů. Místo toho, aby ses ručně přihlašoval přes SSH a psal 50 příkazů, napíšeš jeden příkaz a Ansible udělá všechno za tebe.

Příklad: Místo

ssh server "apt update && apt install -y docker docker-compose-plugin && usermod -aG docker deploy"

napíšeš

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

a Ansible to udělá na všech serverech najednou.


📦 Obsah repozitáře

🎯 Playbooky (hlavní úkoly)

Playbook Co dělá
priprav-novy-server.yml Kompletní příprava nového serveru od nuly (update + user + SSH + Docker + adresáře + fail2ban)
nasad-sluzby.yml Nasaď Docker služby z mates-docker-services/ (Portainer, Vaultwarden, Gitea, …)
aktualizuj-sluzby.yml Aktualizuj všechny běžící služby (docker compose pull && up -d)
zabezpec-server.yml Bezpečnostní hardening (sysctl, auditd, automatické security updaty)

🧩 Role (znovupoužitelné bloky)

Role Co dělá
zaklad Update systému, base balíky (btop, mc, tree, curl, …), timezone
uzivatel-deploy Vytvoří uživatele deploy (UID 1000) s uzamknutým heslem
ssh-klice Nasadí SSH klíč pro deploy (heslo = klíč, ne heslo)
docker Docker Engine + Compose plugin + nastavení daemon.json
adresare /home/deploy/{docker,scripts,backups,logs,~/.local/bin} + 14 složek pro služby
netbird Nainstaluje NetBird (mesh VPN klient) a registruje přes setup key

⚙️ Konfigurace

Soubor Co obsahuje
inventory.example.yml Ukázkový inventory – seznam serverů
group_vars/all.yml.example Společné proměnné (SSH klíč, porty, balíky, …)
ansible.cfg Konfigurace Ansible (cesty, SSH optimalizace, …)

🚀 Začínáme

Krok 1: Nainstaluj Ansible

# macOS
brew install ansible

# Linux (apt)
sudo apt install -y ansible

Krok 2: Naklonuj repo

git clone http://<server-ip>:3000/mates/mates-ansible.git
cd mates-ansible

Krok 3: Vytvoř inventory.yml

Zkopíruj ukázkový soubor a uprav:

cp inventory.example.yml inventory.yml
nano inventory.yml

Co v inventory nastavit:

all:
  vars:
    ansible_user: ubuntu           # SSH user na novém serveru
    ansible_become: true          # potřebuje sudo (povinné)
    ansible_ssh_pass: tvujHeslo   # heslo pro první připojení (jen dočasně!)

  children:
    homeservers:
      hosts:
        novy-server:
          ansible_host: <server-ip>       # IP nového serveru

Krok 4: Přidej svůj SSH klíč

# Na Macu – zobraz svuj verejny klic
cat ~/.ssh/id_ed25519.pub
# ssh-ed25519 AAAAC3Nz... hermes@mac

# Pridej do group_vars/all.yml.example
cp group_vars/all.yml.example group_vars/all.yml
nano group_vars/all.yml

V souboru najdi řádek:

deploy_ssh_public_keys:
  - "ssh-ed25519 AAAAC3Nz... hermes@mac"   # ← sem vlož svůj klíč

Krok 5: Spusť playbook

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

Co se stane:

  1. ✅ Ansible se připojí na server přes SSH (s heslem)
  2. ✅ Stáhne seznam balíků (apt update)
  3. ✅ Nainstaluje 17 základních balíků (btop, mc, tree, curl, …)
  4. ✅ Vytvoří uživatele deploy (UID 1000)
  5. ✅ Zamkne mu heslo (přístup jen přes SSH klíč)
  6. ✅ Přidá tvůj SSH klíč do ~/.ssh/authorized_keys
  7. ✅ Nainstaluje Docker Engine + Compose plugin
  8. ✅ Přidá deploy do docker group (docker bez sudo)
  9. ✅ Vytvoří adresářovou strukturu pro 14 Docker služeb
  10. ✅ Nainstaluje NetBird (mesh VPN) a registruje přes setup key
  11. ✅ Nainstaluje fail2ban (ochrana proti brute-force SSH)

Trvání: 5-10 minut.

Krok 6: Ověř

# Prihlas se jako deploy (s klicem, bez hesla)
ssh deploy@<server-ip>

# Over Docker
docker ps                # melo by fungovat bez sudo
docker compose version

# Adresare
ls /home/deploy/        # melo byt: docker, scripts, backups, logs, ...

🎬 Práce s playbooky

Příprava nového serveru (úplně od nuly)

ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml

Nasazení Docker služeb

# Nasaď všechny (portainer, gitea, vaultwarden, ...)
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml

# Nasaď jen vybrané
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml \
    --extra-vars "sluzby=[portainer,vaultwarden]"

Aktualizace služeb

# Aktualizuj všechny běžící služby (docker compose pull && up -d)
ansible-playbook -i inventory.yml playbooks/aktualizuj-sluzby.yml

Bezpečnostní hardening

ansible-playbook -i inventory.yml playbooks/zabezpec-server.yml

Tento playbook nastavuje:

  • sysctl – hardening síťových parametrů jádra
  • auditd – logování bezpečnostních událostí
  • unattended-upgrades – automatické bezpečnostní aktualizace

🏗 Struktura projektu

mates-ansible/
├── README.md                          # Tento soubor
├── LICENSE                            # MIT
├── ansible.cfg                        # Konfigurace Ansible
├── inventory.example.yml              # Ukázkový inventory
├── group_vars/
│   └── all.yml.example                # Společné proměnné
├── playbooks/
│   ├── priprav-novy-server.yml        # Příprava nového serveru
│   ├── nasad-sluzby.yml              # Nasaď Docker služby
│   ├── aktualizuj-sluzby.yml          # Aktualizuj služby
│   └── zabezpec-server.yml            # Bezpečnostní hardening
└── roles/
    ├── zaklad/                        # Update + base balíky
    ├── uzivatel-deploy/               # Vytvoření deploy usera
    ├── ssh-klice/                    # Nasazení SSH klíče
    ├── docker/                        # Docker Engine + Compose
    ├── adresare/                      # Adresářová struktura
    └── netbird/                       # NetBird (mesh VPN)

🔑 Kde co nastavit

Co Kde
IP serverů inventory.yml
SSH klíč pro deploy group_vars/all.yml → deploy_ssh_public_keys
Base balíky roles/zaklad/defaults/main.yml → base_packages
Porty group_vars/all.yml → allowed_ports
Docker daemon nastavení roles/docker/defaults/main.yml → docker_daemon_config
Služby k nasazení group_vars/all.yml → services_to_deploy

🔐 Bezpečnost

  • ✅ Deploy user má zamknuté heslo – přístup jen přes SSH klíč
  • ✅ Bez hesel v inventory – použij ansible-vault nebo SSH klíče
  • ✅ Docker bez sudo – user deploy je v docker group
  • ✅ fail2ban – 3 pokusy o SSH = ban na 1 hodinu
  • ✅ Firewall se nenastavuje automaticky – viz priprav-novy-server.yml pro vysvětlení

📚 Další zdroje

Detailní postupy najdeš v Jotty knowledge base.


Poslední update: 2026-08-01

S
Description
Ansible playbooky pro nasazeni a spravu home infrastruktury
Readme MIT
81 KiB
Languages
INI 100%