mates f91234c8fb fix: NetBird je samostatna aplikace (apt balicek), ne Docker sluzba
roles/netbird/tasks/main.yml:
- apt balicek 'netbird' (oficialni NetBird Linux klient)
- neni Docker, neni sluzba - je to VPN klient

roles/netbird/defaults/main.yml:
- odebrano netbird_run_as_system_service (nepotreba)
- pridana poznamka o instalaci

playbook priprav-novy-server.yml:
- hlavicka: 'NetBird (mesh VPN klient - apt balicek, NE Docker)'

group_vars/all.yml.example:
- pridana dokumentace https://docs.netbird.io/get-started/install
- komentare rikaji, ze to neni Docker sluzba

README.md:
- tabulka roli: 'apt balicek, ne Docker'
- krok 8: 'NetBird (mesh VPN klient - apt balicek)'

Postup instalace:
- Linux server: ansible role -> apt install netbird
- macOS workstation: brew install --cask netbird (v Brewfile)
- Windows: instalator z netbird.io
- Registrace: netbird up --setup-key <key> (z app.netbird.io)
2026-08-01 20:51:01 +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 klienta (mesh VPN) apt balíček, ne Docker

⚙️ 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 klient apt balíček)
  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.ymldeploy_ssh_public_keys
Base balíky roles/zaklad/defaults/main.ymlbase_packages
Porty group_vars/all.ymlallowed_ports
Docker daemon nastavení roles/docker/defaults/main.ymldocker_daemon_config
Služby k nasazení group_vars/all.ymlservices_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%