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
+15
View File
@@ -0,0 +1,15 @@
# Vaultwarden proměnné prostředí
TZ=Europe/Prague
PUID=1000
PGID=1000
# URL přes kterou bude Vaultwarden dostupný (musí být https://)
DOMAIN=https://vault.example.com
# Po prvním přihlášení admin účtu nastavte na false
SIGNUPS_ALLOWED=true
INVITATIONS_ALLOWED=false
# Bezpečnost
SHOW_PASSWORD_HINT=false
LOG_LEVEL=warn
+79
View File
@@ -0,0 +1,79 @@
# Vaultwarden self-hosted správce hesel
> Kompatibilní s Bitwarden klienty. Open-source, lehký (Rust).
## 📋 Přehled
- **Image:** `vaultwarden/server:latest`
- **Porty:** `2999` (HTTP), `3012` (WebSocket, interní)
- **User:** `1000:1000`
- **Network:** `bridge`
## 🚀 Instalace
```bash
cp .env.example .env
nano .env # nastavit DOMAIN, ROCKET_PORT, hesla
docker compose up -d
```
## 🌐 Přístup
- **Web vault:** `http://<server>:2999` (za HTTPS terminuj v NPM)
- **Bitwarden app:** stejná URL jako vault
- **Doporučení:** terminuj HTTPS přes NPM a nepoužívej HTTP přímo
## 🔐 Bezpečnost
- **DOMAIN** musí být `https://vault.example.com` (ne `http`)
- **SIGNUPS_ALLOWED=false** po registraci admin účtu
- **INVITATIONS_ALLOWED=false** pokud nechceš zvát další
- **SHOW_PASSWORD_HINT=false** (odhalování hesel)
- **DATABASE_URL** zálohuj SQLite pravidelně
## 🔑 Záloha
```bash
# Zastavit kontejner
docker compose stop
# Zazálohovat SQLite DB
cp ./data/db.sqlite3 /backup/vaultwarden-$(date +%Y%m%d).sqlite3
# Restart
docker compose start
```
## 👥 Organizace
- **1 user** (ty) self-hosted
- **2FA** povinně aktivuj po registraci
- **FIDO2/WebAuthn** podpora hardwarových klíčů (YubiKey)
- **Organizace** pro sdílení hesel s rodinou
## 📁 Volumes
| Mount | Účel |
|---|---|
| `./data:/data` | SQLite DB, attachmenty, ikony, config |
## 📚 Klienti
- **Mobil:** Bitwarden (iOS/Android)
- **Desktop:** Bitwarden (Win/Mac/Linux)
- **Browser:** Bitwarden extension (Chrome/Firefox/Edge)
- **CLI:** `rbw` (Rust) nebo `bitwarden-cli`
## 🔄 Aktualizace
```bash
docker compose pull
docker compose up -d
# DB migrace probíhá automaticky
```
## 📚 Dokumentace
- [Vaultwarden Wiki](https://github.com/dani-garcia/vaultwarden/wiki)
- [Bitwarden klienti](https://bitwarden.com/download/)
@@ -0,0 +1,41 @@
# Vaultwarden kompatibilní Bitwarden server
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- "2999:80"
volumes:
- ./data:/data
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Prague
- DOMAIN=https://CHANGE_ME
- ROCKET_PORT=80
- SIGNUPS_ALLOWED=true
- INVITATIONS_ALLOWED=false
- SHOW_PASSWORD_HINT=false
- LOG_LEVEL=warn
- EXTENDED_LOGGING=true
- RUST_BACKTRACE=1
networks:
- vaultwarden_net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80/alive"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
networks:
vaultwarden_net:
name: vaultwarden_default
driver: bridge