feat: initial infra repo

- docker-services: 14 generic compose templates (portainer, npm, vaultwarden, gitea, jotty, nextcloud-aio, rustdesk, audiobookshelf, calibre-web, plex, erugo, jswiki, speedtest, watchtower)
- install-scripts: bash scripts for Ubuntu server bootstrap, docker, portainer, npm, backup, restore
- ansible: 4 playbooks (bootstrap, deploy-services, update-services, security-hardening) + roles skeleton
- hermes-install: Hermes CLI setup on macOS
- macos-setup: Brewfile + osx-defaults + fish-config
- home-nas-tools: metadata index for NAS projects (no binaries)
- docs: architecture, security, contributing
- README, LICENSE (MIT), .gitignore
This commit is contained in:
2026-08-01 16:25:58 +02:00
commit 444191d16d
73 changed files with 4032 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
# 📦 Docker Services
> Generické `docker-compose.yml` šablony pro self-hosted služby.
> Každá služba má **vlastní složku**, `.env.example` (šablona) a **README** s dokumentací.
## 🎯 Jak použít
```bash
# 1. Vyber službu
cd services/<service>
# 2. Vytvoř .env z šablony
cp .env.example .env
nano .env # nastav POUZE potřebné hodnoty (hesla, cesty)
# 3. Nasaď
docker compose up -d
# 4. Ověř
docker compose ps
docker compose logs -f
```
## 📚 Rejstřík služeb
| Služba | Účel | Port | Image |
|---|---|---|---|
| [`portainer`](portainer/) | Docker UI management | `9000`, `9443` | `portainer/portainer-ce` |
| [`nginx-proxy-manager`](nginx-proxy-manager/) | Reverse proxy + HTTPS | `80`, `443`, `81` | `jc21/nginx-proxy-manager` |
| [`vaultwarden`](vaultwarden/) | Správce hesel | `2999` | `vaultwarden/server` |
| [`nextcloud-aio`](nextcloud-aio/) | Cloud (soubory, kalendář) | `11000` | `nextcloud/all-in-one` |
| [`gitea`](gitea/) | Git server | `3000`, `222` | `gitea/gitea` |
| [`jotty`](jotty/) | Poznámky & checklisty | `1122` | `mrx23dotcom/jotty` |
| [`rustdesk`](rustdesk/) | Remote desktop | `21115-21119` | `rustdesk/rustdesk-server` |
| [`audiobookshelf`](audiobookshelf/) | Audio knihovna | `13378` | `advplyr/audiobookshelf` |
| [`calibre-web`](calibre-web/) | E-knihovna | `8083` | `linuxserver/calibre-web` |
| [`plex`](plex/) | Media server | `32400` | `linuxserver/plex` |
| [`erugo`](erugo/) | File sharing | `61080` | `wardy784/erugo` |
| [`jswiki`](jswiki/) | Wiki | `9180` | `linuxserver/wikijs` |
| [`speedtest`](speedtest/) | Speedtest tracker | `8072` | `linuxserver/speedtest-tracker` |
| [`watchtower`](watchtower/) | Auto-update kontejnerů | | `containrrr/watchtower` |
## 🧱 Společné konvence
Všechny compose soubory v tomto adresáři dodržují:
- **Porty:** nikdy nepoužívat konfliktní porty s ostatními službami
- **Volume:** `./data:/data` (host container, snadná záloha)
- **Restart:** `unless-stopped`
- **Network:** výchozí `bridge`, případně vlastní `*-net`
- **User:** `1000:1000` pro souborový přístup
- **Logging:** `json-file` driver, max 10 MB × 3 soubory
- **TZ:** `Europe/Prague`
- **Environment:** `.env` soubor (šablona `.env.example` v gitu)
## 🛡 Bezpečnost
-**Žádná hesla v `docker-compose.yml`** vše v `.env` (gitignored)
-**Restart policy** zamezí nechtěnému spuštění po rebootu
-**Networks** izolované `bridge` pro každou službu
-**Read-only filesystémy** kde to jde (`/etc/timezone`, `/etc/localtime`)
## 🗂 Struktura
```
docker-services/
├── README.md # Tento soubor
├── portainer/
│ ├── docker-compose.yml
│ ├── .env.example
│ └── README.md
├── nginx-proxy-manager/
│ ├── docker-compose.yml
│ ├── .env.example
│ └── README.md
└── ... (další služby)
```
## 🔄 Aktualizace služeb
```bash
# Pomocí Watchtower (auto-update)
docker compose pull && docker compose up -d
# Nebo ručně
cd services/<service>
docker compose pull
docker compose up -d
```
## 📦 Zálohování
Všechna data jsou v `./data/` uvnitř každé služby. Zálohuj celé adresáře:
```bash
# Pomocí našeho nástroje z install-scripts/
sudo bash install-scripts/backup-all.sh
```