fix: odstranit emoji ze vsech souboru
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).
This commit is contained in:
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
Ansible playbooky pro přípravu nového serveru a správu home infrastruktury.
|
Ansible playbooky pro přípravu nového serveru a správu home infrastruktury.
|
||||||
|
|
||||||
> **Jsi začátečník?** Čti od [Začínáme](#zaciname) – vše je tu vysvětleno krok za krokem.
|
> **Jsi začátečník?** Čti od [Začínáme](#zaciname) - vše je tu vysvětleno krok za krokem.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📚 Co je Ansible?
|
## 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.
|
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.
|
||||||
|
|
||||||
@@ -24,39 +24,39 @@ a Ansible to udělá **na všech serverech** najednou.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📦 Obsah repozitáře
|
## Obsah repozitáře
|
||||||
|
|
||||||
### 🎯 Playbooky (hlavní úkoly)
|
### Playbooky (hlavní úkoly)
|
||||||
|
|
||||||
| Playbook | Co dělá |
|
| Playbook | Co dělá |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **`priprav-novy-server.yml`** | Kompletní příprava nového serveru od nuly (update + user + SSH + Docker + adresáře + fail2ban) |
|
| **`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, …) |
|
| **`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`) |
|
| **`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) |
|
| **`zabezpec-server.yml`** | Bezpečnostní hardening (sysctl, auditd, automatické security updaty) |
|
||||||
|
|
||||||
### 🧩 Role (znovupoužitelné bloky)
|
### Role (znovupoužitelné bloky)
|
||||||
|
|
||||||
| Role | Co dělá |
|
| Role | Co dělá |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `zaklad` | Update systému, base balíky (btop, mc, tree, curl, …), timezone |
|
| `zaklad` | Update systému, base balíky (btop, mc, tree, curl, ...), timezone |
|
||||||
| `uzivatel-deploy` | Vytvoří uživatele `deploy` (UID 1000) s uzamknutým heslem |
|
| `uzivatel-deploy` | Vytvoří uživatele `deploy` (UID 1000) s uzamknutým heslem |
|
||||||
| `ssh-klice` | Nasadí SSH klíč pro `deploy` (heslo = klíč, ne heslo) |
|
| `ssh-klice` | Nasadí SSH klíč pro `deploy` (heslo = klíč, ne heslo) |
|
||||||
| `docker` | Docker Engine + Compose plugin + nastavení daemon.json |
|
| `docker` | Docker Engine + Compose plugin + nastavení daemon.json |
|
||||||
| `adresare` | `/home/deploy/{docker,scripts,backups,logs,~/.local/bin}` + 14 složek pro služby |
|
| `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 |
|
| `netbird` | Nainstaluje NetBird klienta (mesh VPN) - apt balíček, ne Docker |
|
||||||
|
|
||||||
### ⚙️ Konfigurace
|
### ️ Konfigurace
|
||||||
|
|
||||||
| Soubor | Co obsahuje |
|
| Soubor | Co obsahuje |
|
||||||
|---|---|
|
|---|---|
|
||||||
| `inventory.example.yml` | Ukázkový inventory – seznam serverů |
|
| `inventory.example.yml` | Ukázkový inventory - seznam serverů |
|
||||||
| `group_vars/all.yml.example` | Společné proměnné (SSH klíč, porty, balíky, …) |
|
| `group_vars/all.yml.example` | Společné proměnné (SSH klíč, porty, balíky, ...) |
|
||||||
| `ansible.cfg` | Konfigurace Ansible (cesty, SSH optimalizace, …) |
|
| `ansible.cfg` | Konfigurace Ansible (cesty, SSH optimalizace, ...) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Začínáme
|
## Začínáme
|
||||||
|
|
||||||
### Krok 1: Nainstaluj Ansible
|
### Krok 1: Nainstaluj Ansible
|
||||||
|
|
||||||
@@ -88,22 +88,22 @@ nano inventory.yml
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
all:
|
all:
|
||||||
vars:
|
vars:
|
||||||
ansible_user: ubuntu # SSH user na novém serveru
|
ansible_user: ubuntu # SSH user na novém serveru
|
||||||
ansible_become: true # potřebuje sudo (povinné)
|
ansible_become: true # potřebuje sudo (povinné)
|
||||||
ansible_ssh_pass: tvujHeslo # heslo pro první připojení (jen dočasně!)
|
ansible_ssh_pass: tvujHeslo # heslo pro první připojení (jen dočasně!)
|
||||||
|
|
||||||
children:
|
children:
|
||||||
homeservers:
|
homeservers:
|
||||||
hosts:
|
hosts:
|
||||||
novy-server:
|
novy-server:
|
||||||
ansible_host: <server-ip> # IP nového serveru
|
ansible_host: <server-ip> # IP nového serveru
|
||||||
```
|
```
|
||||||
|
|
||||||
### Krok 4: Přidej svůj SSH klíč
|
### Krok 4: Přidej svůj SSH klíč
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Na Macu – zobraz svuj verejny klic
|
# Na Macu - zobraz svuj verejny klic
|
||||||
cat ~/.ssh/id_ed25519.pub
|
cat ~/.ssh/id_ed25519.pub
|
||||||
# ssh-ed25519 AAAAC3Nz... hermes@mac
|
# ssh-ed25519 AAAAC3Nz... hermes@mac
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ nano group_vars/all.yml
|
|||||||
V souboru najdi řádek:
|
V souboru najdi řádek:
|
||||||
```yaml
|
```yaml
|
||||||
deploy_ssh_public_keys:
|
deploy_ssh_public_keys:
|
||||||
- "ssh-ed25519 AAAAC3Nz... hermes@mac" # ← sem vlož svůj klíč
|
- "ssh-ed25519 AAAAC3Nz... hermes@mac" # <- sem vlož svůj klíč
|
||||||
```
|
```
|
||||||
|
|
||||||
### Krok 5: Spusť playbook
|
### Krok 5: Spusť playbook
|
||||||
@@ -125,17 +125,17 @@ ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Co se stane:**
|
**Co se stane:**
|
||||||
1. ✅ Ansible se připojí na server přes SSH (s heslem)
|
1. Ansible se připojí na server přes SSH (s heslem)
|
||||||
2. ✅ Stáhne seznam balíků (`apt update`)
|
2. Stáhne seznam balíků (`apt update`)
|
||||||
3. ✅ Nainstaluje 17 základních balíků (btop, mc, tree, curl, …)
|
3. Nainstaluje 17 základních balíků (btop, mc, tree, curl, ...)
|
||||||
4. ✅ Vytvoří uživatele `deploy` (UID 1000)
|
4. Vytvoří uživatele `deploy` (UID 1000)
|
||||||
5. ✅ Zamkne mu heslo (přístup jen přes SSH klíč)
|
5. Zamkne mu heslo (přístup jen přes SSH klíč)
|
||||||
6. ✅ Přidá tvůj SSH klíč do `~/.ssh/authorized_keys`
|
6. Přidá tvůj SSH klíč do `~/.ssh/authorized_keys`
|
||||||
7. ✅ Nainstaluje Docker Engine + Compose plugin
|
7. Nainstaluje Docker Engine + Compose plugin
|
||||||
8. ✅ Přidá `deploy` do `docker` group (docker **bez sudo**)
|
8. Přidá `deploy` do `docker` group (docker **bez sudo**)
|
||||||
7. ✅ Vytvoří adresářovou strukturu pro 14 Docker služeb
|
7. Vytvoří adresářovou strukturu pro 14 Docker služeb
|
||||||
8. ✅ Nainstaluje NetBird (mesh VPN klient – apt balíček)
|
8. Nainstaluje NetBird (mesh VPN klient - apt balíček)
|
||||||
9. ✅ Nainstaluje fail2ban (ochrana proti brute-force SSH)
|
9. Nainstaluje fail2ban (ochrana proti brute-force SSH)
|
||||||
|
|
||||||
**Trvání:** 5-10 minut.
|
**Trvání:** 5-10 minut.
|
||||||
|
|
||||||
@@ -146,16 +146,16 @@ ansible-playbook -i inventory.yml playbooks/priprav-novy-server.yml
|
|||||||
ssh deploy@<server-ip>
|
ssh deploy@<server-ip>
|
||||||
|
|
||||||
# Over Docker
|
# Over Docker
|
||||||
docker ps # melo by fungovat bez sudo
|
docker ps # melo by fungovat bez sudo
|
||||||
docker compose version
|
docker compose version
|
||||||
|
|
||||||
# Adresare
|
# Adresare
|
||||||
ls /home/deploy/ # melo byt: docker, scripts, backups, logs, ...
|
ls /home/deploy/ # melo byt: docker, scripts, backups, logs, ...
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎬 Práce s playbooky
|
## Práce s playbooky
|
||||||
|
|
||||||
### Příprava nového serveru (úplně od nuly)
|
### Příprava nového serveru (úplně od nuly)
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml
|
|||||||
|
|
||||||
# Nasaď jen vybrané
|
# Nasaď jen vybrané
|
||||||
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml \
|
ansible-playbook -i inventory.yml playbooks/nasad-sluzby.yml \
|
||||||
--extra-vars "sluzby=[portainer,vaultwarden]"
|
--extra-vars "sluzby=[portainer,vaultwarden]"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Aktualizace služeb
|
### Aktualizace služeb
|
||||||
@@ -188,62 +188,62 @@ ansible-playbook -i inventory.yml playbooks/zabezpec-server.yml
|
|||||||
```
|
```
|
||||||
|
|
||||||
Tento playbook nastavuje:
|
Tento playbook nastavuje:
|
||||||
- **sysctl** – hardening síťových parametrů jádra
|
- **sysctl** - hardening síťových parametrů jádra
|
||||||
- **auditd** – logování bezpečnostních událostí
|
- **auditd** - logování bezpečnostních událostí
|
||||||
- **unattended-upgrades** – automatické bezpečnostní aktualizace
|
- **unattended-upgrades** - automatické bezpečnostní aktualizace
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🏗 Struktura projektu
|
## Struktura projektu
|
||||||
|
|
||||||
```
|
```
|
||||||
mates-ansible/
|
mates-ansible/
|
||||||
├── README.md # Tento soubor
|
+-- README.md # Tento soubor
|
||||||
├── LICENSE # MIT
|
+-- LICENSE # MIT
|
||||||
├── ansible.cfg # Konfigurace Ansible
|
+-- ansible.cfg # Konfigurace Ansible
|
||||||
├── inventory.example.yml # Ukázkový inventory
|
+-- inventory.example.yml # Ukázkový inventory
|
||||||
├── group_vars/
|
+-- group_vars/
|
||||||
│ └── all.yml.example # Společné proměnné
|
| +-- all.yml.example # Společné proměnné
|
||||||
├── playbooks/
|
+-- playbooks/
|
||||||
│ ├── priprav-novy-server.yml # Příprava nového serveru
|
| +-- priprav-novy-server.yml # Příprava nového serveru
|
||||||
│ ├── nasad-sluzby.yml # Nasaď Docker služby
|
| +-- nasad-sluzby.yml # Nasaď Docker služby
|
||||||
│ ├── aktualizuj-sluzby.yml # Aktualizuj služby
|
| +-- aktualizuj-sluzby.yml # Aktualizuj služby
|
||||||
│ └── zabezpec-server.yml # Bezpečnostní hardening
|
| +-- zabezpec-server.yml # Bezpečnostní hardening
|
||||||
└── roles/
|
+-- roles/
|
||||||
├── zaklad/ # Update + base balíky
|
+-- zaklad/ # Update + base balíky
|
||||||
├── uzivatel-deploy/ # Vytvoření deploy usera
|
+-- uzivatel-deploy/ # Vytvoření deploy usera
|
||||||
├── ssh-klice/ # Nasazení SSH klíče
|
+-- ssh-klice/ # Nasazení SSH klíče
|
||||||
├── docker/ # Docker Engine + Compose
|
+-- docker/ # Docker Engine + Compose
|
||||||
├── adresare/ # Adresářová struktura
|
+-- adresare/ # Adresářová struktura
|
||||||
└── netbird/ # NetBird (mesh VPN)
|
+-- netbird/ # NetBird (mesh VPN)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔑 Kde co nastavit
|
## Kde co nastavit
|
||||||
|
|
||||||
| Co | Kde |
|
| Co | Kde |
|
||||||
|---|---|
|
|---|---|
|
||||||
| IP serverů | `inventory.yml` |
|
| IP serverů | `inventory.yml` |
|
||||||
| SSH klíč pro deploy | `group_vars/all.yml` → `deploy_ssh_public_keys` |
|
| SSH klíč pro deploy | `group_vars/all.yml` -> `deploy_ssh_public_keys` |
|
||||||
| Base balíky | `roles/zaklad/defaults/main.yml` → `base_packages` |
|
| Base balíky | `roles/zaklad/defaults/main.yml` -> `base_packages` |
|
||||||
| Porty | `group_vars/all.yml` → `allowed_ports` |
|
| Porty | `group_vars/all.yml` -> `allowed_ports` |
|
||||||
| Docker daemon nastavení | `roles/docker/defaults/main.yml` → `docker_daemon_config` |
|
| Docker daemon nastavení | `roles/docker/defaults/main.yml` -> `docker_daemon_config` |
|
||||||
| Služby k nasazení | `group_vars/all.yml` → `services_to_deploy` |
|
| Služby k nasazení | `group_vars/all.yml` -> `services_to_deploy` |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔐 Bezpečnost
|
## Bezpečnost
|
||||||
|
|
||||||
- ✅ **Deploy user má zamknuté heslo** – přístup jen přes SSH klíč
|
- **Deploy user má zamknuté heslo** - přístup jen přes SSH klíč
|
||||||
- ✅ **Bez hesel v inventory** – použij `ansible-vault` nebo SSH klíče
|
- **Bez hesel v inventory** - použij `ansible-vault` nebo SSH klíče
|
||||||
- ✅ **Docker bez sudo** – user `deploy` je v `docker` group
|
- **Docker bez sudo** - user `deploy` je v `docker` group
|
||||||
- ✅ **fail2ban** – 3 pokusy o SSH = ban na 1 hodinu
|
- **fail2ban** - 3 pokusy o SSH = ban na 1 hodinu
|
||||||
- ✅ **Firewall se nenastavuje automaticky** – viz `priprav-novy-server.yml` pro vysvětlení
|
- **Firewall se nenastavuje automaticky** - viz `priprav-novy-server.yml` pro vysvětlení
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📚 Další zdroje
|
## Další zdroje
|
||||||
|
|
||||||
Detailní postupy najdeš v Jotty knowledge base.
|
Detailní postupy najdeš v Jotty knowledge base.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user