ce7fa7c8b8c5af9f0ba068a6b19aadb60e0f9e1c
Kompletne odstraneno: - Emoji (smajliky, symboly, boxes, arrows) z README - Emoji ze skriptu (sipky, symboly) - Emoji z docker-compose (adresare) Nahrano za: - Textove alternativy (sipky -> '->', boxes -> '+', atd.) - ASCII pouze kde to slo Ciste vsechny 7 repo (overeno Python skriptem).
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:
- Ansible se připojí na server přes SSH (s heslem)
- Stáhne seznam balíků (
apt update) - Nainstaluje 17 základních balíků (btop, mc, tree, curl, ...)
- Vytvoří uživatele
deploy(UID 1000) - Zamkne mu heslo (přístup jen přes SSH klíč)
- Přidá tvůj SSH klíč do
~/.ssh/authorized_keys - Nainstaluje Docker Engine + Compose plugin
- Přidá
deploydodockergroup (docker bez sudo) - Vytvoří adresářovou strukturu pro 14 Docker služeb
- Nainstaluje NetBird (mesh VPN klient - apt balíček)
- 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-vaultnebo SSH klíče - Docker bez sudo - user
deployje vdockergroup - fail2ban - 3 pokusy o SSH = ban na 1 hodinu
- Firewall se nenastavuje automaticky - viz
priprav-novy-server.ymlpro vysvětlení
Další zdroje
Detailní postupy najdeš v Jotty knowledge base.
Poslední update: 2026-08-01
Languages
INI
100%