Files
mates-ansible/README.md
T
mates ec2f1d639c feat: prepare-new-server playbook + role struktura
playbook prepare-new-server.yml:
- update systemu
- deploy user (UID 1000, heslo zamknuto)
- SSH klic pro deploy uzivatele
- adresarova struktura (/home/deploy/{docker,scripts,backups,logs,...})
- Docker Engine + Compose plugin (bez sudo)
- UFW firewall (22, 80, 443)
- fail2ban
- overeni docker bez sudo

Role (kazda v samostatnem adresari):
- common: update, base packages, timezone
- deploy-user: vytvoreni usera UID 1000
- ssh-keys: authorized_keys deployment
- firewall: UFW konfigurace
- docker: Docker Engine + Compose + daemon.json
- directories: /home/deploy/{docker/<sluzba>,backups,scripts,logs}

Pouziti:
  ansible-playbook -i inventory.yml playbooks/prepare-new-server.yml
2026-08-01 20:02:19 +02:00

120 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# mates-ansible
Ansible role a playbooky pro přípravu nového serveru a nasazení home infrastruktury.
## Playbooky
| Playbook | Účel |
|---|---|
| `prepare-new-server.yml` | Kompletní příprava nového serveru (od nuly) |
| `deploy-services.yml` | Nasaď Docker služby z `mates-docker-services/` |
| `update-services.yml` | Update všech služeb (`docker compose pull && up -d`) |
| `security-hardening.yml` | Sysctl, auditd, auto-updates |
## Quickstart pro nový server
### 1. Příprava inventory
```bash
cp inventory.example.yml inventory.yml
nano inventory.yml # nastavit IP a SSH klíč
```
### 2. Přidání svého SSH klíče
```bash
# Verejny klic z Macu
cat ~/.ssh/id_ed25519.pub
# Pridej do group_vars/all.yml:
deploy_ssh_public_keys:
- "ssh-ed25519 AAAAC3Nz... hermes@mac"
```
### 3. První připojení (s heslem)
```yaml
# inventory.yml - pro prvni pripojeni (jeste pred SSH klicem)
homeservers:
hosts:
novy-server:
ansible_host: <server-ip>
ansible_user: ubuntu # nebo root
ansible_ssh_pass: heslo # POZOR: jen docasne
ansible_become_pass: heslo # POZOR: jen docasne
```
### 4. Spuštění playbooku
```bash
ansible-playbook -i inventory.yml playbooks/prepare-new-server.yml
```
Playbook provede:
- ✅ Update systému (apt)
- ✅ Vytvoří `deploy` usera (UID 1000) bez hesla
- ✅ Nastaví SSH klíč pro `deploy`
- ✅ Vytvoří adresářovou strukturu (`/home/deploy/docker/<sluzba>/`)
- ✅ Nainstaluje Docker Engine + Compose plugin
- ✅ Přidá `deploy` do `docker` group (docker bez sudo)
- ✅ Nastaví UFW firewall (povoleno 22, 80, 443)
- ✅ Nainstaluje fail2ban
### 5. Po dokončení
```bash
# Prihlas se jako deploy
ssh deploy@<server-ip>
# Over Docker bez sudo
docker ps
# Nasad sluzby z docker-services
git clone http://<server-ip>:3000/mates/mates-docker-services.git
cd mates-docker-services/portainer
cp .env.example .env
docker compose up -d
```
## Role
| Role | Účel |
|---|---|
| `common` | Update systému, base packages, timezone |
| `deploy-user` | Vytvoření `deploy` usera (UID 1000) |
| `ssh-keys` | Nasazení authorized_keys |
| `firewall` | UFW konfigurace |
| `docker` | Docker Engine + Compose + user v docker group |
| `directories` | `/home/deploy/{docker,scripts,backups,logs,...}` |
## Struktura
```
mates-ansible/
├── README.md
├── ansible.cfg
├── inventory.example.yml
├── group_vars/all.yml.example
├── playbooks/
│ ├── prepare-new-server.yml
│ ├── deploy-services.yml
│ ├── update-services.yml
│ └── security-hardening.yml
├── roles/
│ ├── common/
│ ├── deploy-user/
│ ├── ssh-keys/
│ ├── firewall/
│ ├── docker/
│ └── directories/
└── requirements.yml
```
## Detailní návody
Detailní postupy najdeš v Jotty knowledge base.
## Licence
MIT viz [LICENSE](LICENSE)