chore: initial commit for Bruchtal Docker + deploy
This commit is contained in:
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# OS
|
||||
.DS_Store
|
||||
|
||||
# MkDocs build
|
||||
site/
|
||||
|
||||
# Secrets
|
||||
.env
|
||||
.env.*
|
||||
secrets/
|
||||
*.key
|
||||
*.pem
|
||||
17
README.md
Normal file
17
README.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Homelab Documentation & Infrastructure
|
||||
|
||||
Zentrale Dokumentation und Konfigurationsbasis für mein Homelab.
|
||||
|
||||
## Inhalt
|
||||
- 📚 Technische Dokumentation (Markdown, MkDocs)
|
||||
- 🐳 Docker-Compose Stacks
|
||||
- 🖧 Netzwerk- & VM-Übersicht
|
||||
- 🗂 Versionierte Infrastruktur
|
||||
|
||||
## Struktur
|
||||
- `/docs` → Dokumentation
|
||||
- `/docker` → docker-compose Dateien
|
||||
- `/diagrams` → Architektur- & Netzdiagramme
|
||||
|
||||
## Grundsatz
|
||||
> Git ist die Quelle der Wahrheit.
|
||||
16
deploy/deploy-bruchtal.sh
Executable file
16
deploy/deploy-bruchtal.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "===== Bruchtal Deploy $(date) ====="
|
||||
|
||||
cd /docker/Bruchtal
|
||||
|
||||
echo "Pulling latest changes..."
|
||||
git pull
|
||||
|
||||
echo "Updating containers..."
|
||||
docker restart bruchtal-docs
|
||||
|
||||
|
||||
echo "Deploy finished."
|
||||
17
deploy/hooks.json
Normal file
17
deploy/hooks.json
Normal file
@@ -0,0 +1,17 @@
|
||||
[
|
||||
{
|
||||
"id": "bruchtal-deploy",
|
||||
"execute-command": "/docker/deploy/deploy-bruchtal.sh",
|
||||
"command-working-directory": "/docker/Bruchtal",
|
||||
"trigger-rule": {
|
||||
"match": {
|
||||
"type": "payload-hmac-sha256",
|
||||
"secret": "!!Zazen17-Doshin17**",
|
||||
"parameter": {
|
||||
"source": "header",
|
||||
"name": "X-Gitea-Signature"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
17
docker-compose.yml
Normal file
17
docker-compose.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
bruchtal-docs:
|
||||
image: squidfunk/mkdocs-material:latest
|
||||
container_name: bruchtal-docs
|
||||
restart: unless-stopped
|
||||
|
||||
ports:
|
||||
- "8005:8000"
|
||||
|
||||
volumes:
|
||||
- /docker/Bruchtal:/docs
|
||||
|
||||
command: serve --dev-addr=0.0.0.0:8000
|
||||
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
- WATCHDOG_FORCE_POLLING=true
|
||||
13
docker/adguardhome/docker-compose.yml
Normal file
13
docker/adguardhome/docker-compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
adguardhome:
|
||||
image: adguard/adguardhome:v0.107.69
|
||||
container_name: adguardhome
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
volumes:
|
||||
- /docker/Daten/adguardhome/work:/opt/adguardhome/work
|
||||
- /docker/Daten/adguardhome/conf:/opt/adguardhome/conf
|
||||
environment:
|
||||
TZ: Europe/Berlin
|
||||
22
docker/gitea/docker-compose.yml
Normal file
22
docker/gitea/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
networks:
|
||||
gitea:
|
||||
external: false
|
||||
|
||||
services:
|
||||
server:
|
||||
image: gitea/gitea:1.24
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- /docker/Daten/gitea/data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3002:3000"
|
||||
- "2222:22"
|
||||
#rem
|
||||
16
docker/heimdall/docker-compose.yml
Normal file
16
docker/heimdall/docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: "2.1"
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall:latest
|
||||
container_name: heimdall2
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Berlin
|
||||
volumes:
|
||||
- /home/christian/docker/heimdall/data/config:/config
|
||||
|
||||
ports:
|
||||
- 1280:80
|
||||
- 12443:443
|
||||
restart: unless-stopped
|
||||
16
docker/wikijs/docker-compose.yml
Normal file
16
docker/wikijs/docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: "2.1"
|
||||
services:
|
||||
wikijs:
|
||||
image: linuxserver/wikijs:2.5.312
|
||||
container_name: wikijs
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Berlin
|
||||
volumes:
|
||||
- /docker/Daten/wikijs/config:/config
|
||||
- /docker/Daten/wikijs/data:/data
|
||||
- /mnt/wikijsBackupOnQnap:/backup
|
||||
ports:
|
||||
- 3000:3000
|
||||
restart: unless-stopped
|
||||
22
docs/docker/adguardhome/adguardhome.md
Normal file
22
docs/docker/adguardhome/adguardhome.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Adguardhome
|
||||
|
||||
## Allgemein
|
||||
|
||||
- Image: `adguard/adguardhome:v0.107.69`
|
||||
- Port: `3000`
|
||||
- Restart Policy: `unless-stopped`
|
||||
|
||||
|
||||
## Volumes
|
||||
|
||||
| Host Path | Container Path | Zweck |
|
||||
|------------|----------------|--------|
|
||||
| /docker/Daten/adguardhome/conf| /opt/adguardhome/conf | Konfiguration |
|
||||
| /docker/Daten/adguardhome/work| /opt/adguardhome/work | Datenbank & Inhalte |
|
||||
|
||||
## Deployment
|
||||
```bash
|
||||
cd /docker/Bruchtal/docker/adguardhome
|
||||
git pull
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
0
docs/docker/architecture.md
Normal file
0
docs/docker/architecture.md
Normal file
23
docs/docker/heimdall/heimdall.md
Normal file
23
docs/docker/heimdall/heimdall.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Heimdall
|
||||
|
||||
## Allgemein
|
||||
|
||||
- Image: `lscr.io/linuxserver/heimdall:2.7.6`
|
||||
- Port: `1280:80`, `12443:443`
|
||||
- Restart Policy: `unless-stopped`
|
||||
|
||||
## Volumes
|
||||
|
||||
| Host Path | Container Path | Zweck |
|
||||
|------------|----------------|--------|
|
||||
| /docker/Bruchtal/docker/heimdall/data/config:/config | /config | Konfiguration |
|
||||
|
||||
|
||||
## Deployment
|
||||
|
||||
```bash
|
||||
cd /docker/Bruchtal/docker/heimdall
|
||||
git pull
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
``
|
||||
24
docs/docker/wikijs/wikijs.md
Normal file
24
docs/docker/wikijs/wikijs.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Wikijs
|
||||
|
||||
## Allgemein
|
||||
|
||||
- Image: `linuxserver/wikijs:2.5.312`
|
||||
- Port: `3000`
|
||||
- Restart Policy: `unless-stopped`
|
||||
|
||||
## Volumes
|
||||
|
||||
| Host Path | Container Path | Zweck |
|
||||
|------------|----------------|--------|
|
||||
| /docker/Daten/wikijs/config | /config | Konfiguration |
|
||||
| /docker/Daten/wikijs/data | /data | Datenbank & Inhalte |
|
||||
| /docker/Daten/wikijs/backup | /backup | Backups |
|
||||
|
||||
## Deployment
|
||||
|
||||
```bash
|
||||
cd /docker/Bruchtal/docker/wikijs
|
||||
git pull
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
``
|
||||
18
docs/index.md
Normal file
18
docs/index.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Bruchtal
|
||||
|
||||
Willkommen in der Infrastruktur-Dokumentation von **Bruchtal**.
|
||||
|
||||
## Ziel
|
||||
|
||||
Diese Dokumentation beschreibt:
|
||||
|
||||
- ⚙️ Workflows
|
||||
- 🖧 Netzwerk
|
||||
- 🧱 Proxmox & VMs
|
||||
- 🐳 Docker-Services
|
||||
- 💾 Backup & Storage
|
||||
- 🔐 Sicherheit
|
||||
|
||||
---
|
||||
|
||||
> Git ist die Quelle der Wahrheit.
|
||||
0
docs/network/topology.md
Normal file
0
docs/network/topology.md
Normal file
74
docs/network/tunnel.md
Normal file
74
docs/network/tunnel.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Pangolin-Tunnel: Zugriff über Hetzner42
|
||||
|
||||
## Sicherheits-Setup
|
||||
|
||||
```
|
||||
+------------------+
|
||||
| Internet |
|
||||
+--------+---------+
|
||||
|
|
||||
| TCP 80 / 443
|
||||
v
|
||||
+------------------------------------------------------------------+
|
||||
| Hetzner Server |
|
||||
| seanluc1 |
|
||||
| |
|
||||
| +------------+ shared docker network +---------------+ |
|
||||
| | Traefik | <--------------------------> | CrowdSec | |
|
||||
| | v3.4.1 | | LAPI | |
|
||||
| | | | | |
|
||||
| | :80 :443 | | Decisions | |
|
||||
| | :8080 | | (CAPI) | |
|
||||
| +------+-----+ +---------------+ |
|
||||
| | |
|
||||
| | dynamic config (file provider) |
|
||||
| v |
|
||||
| +-----------------------------------------------------------+ |
|
||||
| | Pangolin | |
|
||||
| | v1.14.1 | |
|
||||
| | | |
|
||||
| | Web UI :3002 | |
|
||||
| | API :3000 | |
|
||||
| | Internal API :3001 | |
|
||||
| | | |
|
||||
| | - generates Traefik routers | |
|
||||
| | - manages resources | |
|
||||
| | - controls Gerbil / Newt | |
|
||||
| +-----------+-----------------------------------------------+ |
|
||||
| | |
|
||||
| | WireGuard control |
|
||||
| v |
|
||||
| +-----------------------------------------------------------+ |
|
||||
| | Gerbil | |
|
||||
| | | |
|
||||
| | WireGuard Exit Node | |
|
||||
| | wg0: 100.89.128.1/24 | |
|
||||
| | Control API :3003 | |
|
||||
| | | |
|
||||
| | - terminates tunnel | |
|
||||
| | - forwards TCP ports | |
|
||||
| +-----------+-----------------------------------------------+ |
|
||||
| | |
|
||||
+---------------|--------------------------------------------------+
|
||||
|
|
||||
| WireGuard tunnel (encrypted)
|
||||
v
|
||||
+------------------------------------------------------------------+
|
||||
| Local Network (LAN) |
|
||||
| |
|
||||
| +-------------+ +------------------------------------+ |
|
||||
| | Newt | | Target Services | |
|
||||
| | | | | |
|
||||
| | wg IP | | Home Assistant | |
|
||||
| | 100.89.128.4| | 192.168.178.203:8123 | |
|
||||
| | | | | |
|
||||
| | TCP Proxy | | Wiki / Bitwarden | |
|
||||
| +-------------+ +------------------------------------+ |
|
||||
| |
|
||||
+------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
0
docs/overview/index.md
Normal file
0
docs/overview/index.md
Normal file
9
docs/proxmox/vms.md
Normal file
9
docs/proxmox/vms.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Proxmox Host
|
||||
|
||||
- Hostname: vm-proxmox
|
||||
- OS: Debian 12
|
||||
- VMs:
|
||||
- paperless-ngx
|
||||
- home-assistant
|
||||
- Docker-VM
|
||||
- Backup: tägliche Snapshots
|
||||
66
docs/workflows/docker-workflow.md
Normal file
66
docs/workflows/docker-workflow.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Docker-Workflow (Bruchtal Standard)
|
||||
|
||||
Dieser Workflow ist verbindlich für alle Änderungen an Docker-Stacks in Bruchtal.
|
||||
|
||||
Ziel:
|
||||
- Keine Konfiguration direkt auf der VM
|
||||
- Alles versioniert in Git
|
||||
- Reproduzierbare Deployments
|
||||
- Dokumentation immer synchron zur Infrastruktur
|
||||
|
||||
---
|
||||
|
||||
## Grundprinzip
|
||||
|
||||
**Konfiguration passiert lokal in VS Code.**
|
||||
Die VM ist nur noch Laufzeitumgebung.
|
||||
|
||||
|
||||
1. Lokal ändern, egal was
|
||||
2. Committen & Pushen
|
||||
3. Auf VM pullen
|
||||
4. Container neu starten
|
||||
|
||||
---
|
||||
|
||||
## Workflow "neuer Container"
|
||||
- VSCode starten in ~Bruchtal mit code . => VS startet sauber mit der Giteinstellung
|
||||
**ALLE ÄNDERUNGEN NUR IN VS**
|
||||
|
||||
### neuen Containeranlegen
|
||||
- `Bruchtal/<Containername>` anlegen
|
||||
- `Bruchtal/<Containername>/docker-compose.yml` anlegen
|
||||
- docker-compose.yml editieren,
|
||||
- commit mit Message `"infra(<Containername>): docker-compose.yml neu angelegt"`
|
||||
- push
|
||||
|
||||
|
||||
### neuen Container dokumentieren
|
||||
- `Bruchtal/docs/<Containername>` anlegen
|
||||
- `Bruchtal/docs/<Containername>/<Containername>.md` anlegen
|
||||
- `<Containername>.md` editieren, Blaupause z.B: wikijs.md
|
||||
- commit message `docs(<Containername>): Dokumentation angelegt`
|
||||
- `Bruchtal/mkdocs.md`: nav sinnvoll ergänzen
|
||||
- commit message `docs(mkdocs): <Containername>` ergänzt
|
||||
- push
|
||||
|
||||
### Übernehmen auf VM Docker
|
||||
```bash
|
||||
ssh docker
|
||||
cd /docker/Bruchtal
|
||||
git pull
|
||||
cd /docker/Bruchtal/<Containername>
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## Repository-Struktur
|
||||
```
|
||||
Bruchtal/
|
||||
├── docker/
|
||||
│ └── <Containername>/
|
||||
│ └── docker-compose.yml
|
||||
└── docs/
|
||||
└── docker/
|
||||
└── <Containername>/
|
||||
└── <Containername>.md
|
||||
```
|
||||
24
mkdocs.yml
Normal file
24
mkdocs.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
site_name: Bruchtal
|
||||
site_description: Infrastruktur- und Betriebsdokumentation von Bruchtal
|
||||
site_author: Bruchtal
|
||||
|
||||
theme:
|
||||
name: material
|
||||
language: de
|
||||
|
||||
nav:
|
||||
- Übersicht: index.md
|
||||
- Workflows:
|
||||
- Docker-workflow: workflows/docker-workflow.md
|
||||
- Netzwerk:
|
||||
- Topologie: network/topology.md
|
||||
- Tunnel: network/tunnel.md
|
||||
- Proxmox:
|
||||
- VMs: proxmox/vms.md
|
||||
- Docker:
|
||||
- Adguardhome: docker/adguardhome/adguardhome.md
|
||||
- Wikijs: docker/wikijs/wikijs.md
|
||||
- Architektur: docker/architecture.md
|
||||
- Backup_Storage:
|
||||
- Backup: backup/backup.md
|
||||
- Storage: backup/storage.md
|
||||
Reference in New Issue
Block a user