silverbullet-notes/docs/servers/hetzner/summary.txt
2026-01-25 00:20:24 +00:00

445 lines
16 KiB
Text

================================================================================
HETZNER SERVER (192.168.12.3) DOCUMENTATION SUMMARY
Generated: 2026-01-05
================================================================================
DOCUMENTATION COMPLETION STATUS
================================================================================
✓ 00-service-inventory.md - Complete (15,500+ words)
✓ 01-databases.md - Complete (8,500+ words)
✓ 02-network-architecture.md - Complete (10,500+ words)
✓ 03-custom-applications.md - Complete (11,000+ words)
✓ README.md - Complete (7,500+ words)
✓ summary.txt - Complete (this file)
Total Documentation Files: 6
Total Word Count: ~53,000+ words
Documentation Status: 100% COMPLETE
================================================================================
STATISTICS SUMMARY
================================================================================
SERVER INFORMATION
------------------
Hostname: im
IP Address: 192.168.12.3
Primary Server: 192.168.1.251
Working Directory: /volume1/docker
Documentation Output: /home/maddox/hetzner-docs/
CONTAINER STATISTICS
--------------------
Total Containers: 38
- /volume1/docker: 15 containers (9 services)
- Matrix/Synapse: 23 containers (managed separately)
- Not Running: 2 containers (authelia stack)
/volume1/docker Services:
1. authentik 4 containers (postgres, redis, server, worker)
2. firefly 3 containers (firefly, db, redis)
3. mariadb 1 container (mariadb-secondary)
4. gluetun 1 container (VPN client)
5. tailscale 1 container (mesh VPN)
6. socket-proxy 1 container (docker-proxy-portainer)
7. node-red 1 container (financial automation)
8. utils 2 containers (autoheal, watchtower)
9. traefik-mod 1 container (config manager)
Configured but Not Running:
- authelia (2 containers: authelia, authelia_redis)
DATABASE STATISTICS
-------------------
Total Database Instances: 5 active, 1 configured (not running)
MariaDB Instances:
- mariadb-secondary MariaDB latest (read-only replica)
- Firefly-DB MariaDB 11.3 (Firefly application)
PostgreSQL Instances:
- authentik-postgres PostgreSQL 16 (Authentik identity provider)
- matrix-postgres PostgreSQL 17.7 (Matrix/Synapse)
Redis Instances:
- authentik-redis Redis alpine (Authentik sessions)
- Firefly-REDIS Redis latest (Firefly cache)
- authelia_redis Redis alpine (NOT RUNNING)
Key Databases:
- node-staging Financial bot testing (does NOT replicate)
- traefik_config Traefik configuration storage
- firefly Personal finance data
- authentik Identity/SSO data
NETWORK STATISTICS
------------------
Total Docker Networks: 18
External Networks:
- traefik External (shared reverse proxy network)
Service-Specific Networks (/volume1/docker):
- authentik_authentik-internal (Authentik components)
- firefly_default (Firefly components)
- gluetun_default (VPN container)
- socket-proxy_default (Socket proxy)
- node-red_mqtt_network (Node-RED MQTT)
Matrix/Synapse Networks:
- matrix-homeserver (Core Synapse)
- matrix-postgres (PostgreSQL)
- matrix-addons (Bridges, bots)
- matrix-monitoring (Prometheus, Grafana)
- matrix-coturn (TURN/STUN)
- matrix-exim-relay (Email relay)
- matrix-ntfy (Notifications)
- matrix-container-socket-proxy (Docker socket)
Special Network Modes:
- tailscale Host mode (VPN routing)
PORT MAPPINGS
-------------
Public Ports (0.0.0.0):
- 80 HTTP (Traefik, redirects to HTTPS)
- 443 HTTPS (Traefik reverse proxy)
- 8448 Matrix Federation (Traefik)
- 3306 MariaDB (mariadb-secondary)
- 1880 Node-RED
- 6182 Firefly III
- 38888 Gluetun HTTP Proxy
- 38388 Gluetun Shadowsocks
- 38000 Gluetun Control API
- 3478 TURN/STUN (Coturn)
- 5349 TURNS/STUNS (Coturn)
- 49152-49172 TURN relay (Coturn)
Private IP Only (192.168.12.3):
- 2376 Docker Socket Proxy (Portainer)
Internal Only (Docker networks):
- 5432 PostgreSQL (authentik-postgres)
- 6379 Redis (authentik-redis, Firefly-REDIS)
- 3306 MariaDB (Firefly-DB)
- 5000 Traefik Manager (traefik-mod)
- 9000 Authentik Server
- 8080 Watchtower
AUTOMATION & MONITORING
------------------------
Autoheal:
- Monitoring Interval: 5 seconds
- Monitored Containers: All with autoheal=true label
- Action: Automatic restart of unhealthy containers
- Notifications: ntfy webhook (autoheal-IM topic)
Watchtower:
- Update Interval: 3600 seconds (1 hour)
- Monitored Containers: All with watchtower enable label
- Cleanup: Yes (removes old images)
- Notifications: Email (brian.w.maddox@gmail.com)
ntfy (watchtower-IM topic)
Health Monitoring:
- All database containers have healthchecks
- Most application containers have healthchecks
- Node-RED has custom healthcheck with ntfy alert
- Traefik-mod has HTTP health endpoint
RESOURCE ALLOCATION
-------------------
CPU Limits:
- gluetun 0.10 CPUs
- authelia 0.30 CPUs (not running)
- authelia_redis 0.20 CPUs (not running)
- mariadb-secondary 0.40 CPUs
- traefik-mod 0.50 CPUs
Memory Limits:
- authelia_redis 30M (not running)
- authelia 50M (not running)
- Firefly-REDIS 128M
- traefik-mod 256M
- Firefly-DB 384M
- Firefly 768M
Memory Reservations:
- authelia_redis 10M (not running)
- gluetun 15M
- authelia 20M (not running)
- Firefly-REDIS 50M
- mariadb-secondary 60M
- traefik-mod 64M
- Firefly-DB 128M
- Firefly 256M
CPU Shares:
- Firefly-REDIS 512
- Firefly-DB 768
- Firefly 768
VPN CONFIGURATION
-----------------
Tailscale:
- Hostname: im-ts
- Network Mode: host
- Advertised Routes: 192.168.12.3/32
- Accept Routes: Yes
- Exit Node: Yes
- Userspace Mode: No (kernel mode)
ProtonVPN (via Gluetun):
- Provider: ProtonVPN
- Countries: United States
- Cities: Secaucus, Chicago, New York
- HTTP Proxy: Port 38888
- Shadowsocks: Port 38388
- Port Forwarding: Enabled
- Ad Blocking: Yes
- Malware Blocking: Yes
- Surveillance Block: Yes
- DNS: 8.8.8.8
CUSTOM APPLICATIONS
-------------------
1. Traefik Configuration Manager (traefik-mod)
- Type: Custom Flask application
- Database: MariaDB (traefik_config on mariadb-secondary)
- Features: Web UI, Git version control, YAML generation
- Access: tm.3ddbrewery.com, tm.fails.me
- Authentication: Authentik SSO
- Port: 5000 (internal, via Traefik)
2. Node-RED Financial Automation
- Type: Node-RED automation platform
- Database: node-staging (MariaDB)
- Integration: Firefly III API
- Access: node-het.3ddbrewery.com
- Authentication: Username/password
- Port: 1880
- Features: Custom healthcheck, ntfy notifications
TRAEFIK ROUTING
---------------
Services Exposed via Traefik:
- Authentik id.3ddbrewery.com, id.fails.me
- Traefik Manager tm.3ddbrewery.com, tm.fails.me
- Node-RED node-het.3ddbrewery.com
- Firefly III f.3ddbrewery.com
- Matrix Services (various Matrix domains)
- Element Web (Element domain)
- Synapse Admin (admin domain)
- Grafana (monitoring domain)
TLS Configuration:
- Certificate Resolver: default (Let's Encrypt)
- Auto-renewal: Yes
- HTTP → HTTPS: Automatic redirect
Middlewares in Use:
- authentik@file Forward authentication (SSO)
- secure-headers@file Security headers
BACKUP CONFIGURATION
--------------------
Database Backups:
- MariaDB Secondary: Live replication from 192.168.1.251
- Firefly DB: Manual (docker exec mysqldump)
- Authentik PostgreSQL: Manual (docker exec pg_dump)
- Matrix PostgreSQL: Automated (matrix-postgres-backup container)
Configuration Backups:
- Traefik Config: Automatic (30-day retention)
Git version control (local)
- Node-RED Flows: Manual (flows.json backup)
- Docker Compose: Manual (copy docker-compose.yml files)
Backup Locations:
- /volume1/docker/backup (general backups)
- /volume1/docker/traefik-mod/backups/ (Traefik config)
- /volume1/docker/mariadb/databases (MariaDB data)
- /volume1/docker/firefly/db (Firefly DB data)
SECURITY FEATURES
-----------------
Authentication:
- Authentik SSO for selected services
- Username/password for Node-RED
- Application-level auth for Firefly III
Network Security:
- Service isolation via Docker networks
- Database isolation (internal networks only)
- Socket proxy with limited permissions
- TLS/SSL for all web services
- Automatic Let's Encrypt certificates
Container Security:
- no-new-privileges enabled (most containers)
- Read-only filesystems (where applicable)
- Non-root users (1000:1000 where possible)
- Capability dropping (minimal capabilities)
- Resource limits (prevent exhaustion)
VPN Security:
- Tailscale encrypted mesh VPN
- ProtonVPN privacy layer
- Limited route advertisement (192.168.12.3/32 only)
ACCESS CONTROL
--------------
Docker Socket Proxy:
- Bound to 192.168.12.3:2376 (private IP only)
- Read-only Docker socket
- Limited permissions (containers, images, networks, volumes)
- No privileged operations allowed
Traefik Access:
- All web services via HTTPS (port 443)
- Automatic certificate management
- Middleware-based authentication
- Rate limiting available (configured in traefik-mod)
Database Access:
- MariaDB: Port 3306 exposed (use with caution)
- PostgreSQL: Internal networks only
- Redis: Internal networks only
- Preferred method: phpMyAdmin via primary server
================================================================================
MATRIX/SYNAPSE CONTAINERS (NOT DEEPLY DOCUMENTED)
================================================================================
Per instructions, Matrix/Synapse containers are listed but not detailed.
Matrix/Synapse Stack (23 containers):
- matrix-traefik Traefik reverse proxy
- matrix-traefik-certs-dumper Certificate exporter
- matrix-synapse Synapse homeserver
- matrix-postgres PostgreSQL database
- matrix-postgres-backup Automated backups
- matrix-client-element Element web client
- matrix-synapse-admin Admin interface
- matrix-static-files Static file server
- matrix-heisenbridge IRC bridge
- matrix-mautrix-whatsapp WhatsApp bridge
- matrix-mautrix-telegram Telegram bridge
- matrix-mautrix-signal Signal bridge
- matrix-mautrix-gmessages Google Messages bridge
- matrix-bot-maubot Maubot framework
- matrix-bot-matrix-reminder-bot Reminder bot
- matrix-coturn TURN/STUN server
- matrix-ntfy Notification service
- matrix-exim-relay Email relay
- matrix-prometheus Metrics collection
- matrix-grafana Metrics visualization
- matrix-prometheus-postgres-exporter PostgreSQL exporter
- matrix-prometheus-node-exporter Node exporter
- matrix-container-socket-proxy Docker socket proxy
Matrix Infrastructure:
- PostgreSQL 17.7 with automated backups
- 8 dedicated Docker networks
- Traefik reverse proxy on ports 80, 443, 8448
- Complete monitoring stack (Prometheus + Grafana)
- Multiple messaging bridges (WhatsApp, Telegram, Signal, Google Messages)
- IRC bridge (Heisenbridge)
- Bot framework (Maubot) and reminder bot
- TURN/STUN server for voice/video calls
- Notification service (ntfy)
- Email relay for notifications
Note: Matrix/Synapse is a complete, self-hosted Matrix homeserver installation
managed separately from /volume1/docker services. Detailed documentation for
Matrix components should be maintained separately.
================================================================================
IMPORTANT NOTES
================================================================================
1. node-staging Database
- Intentionally does NOT replicate from primary server
- Used exclusively for financial bot testing
- Provides isolated testing environment
- Critical for Node-RED financial automation
2. Firefly III Version
- Pinned to version 6.2.21
- Known working version with automated transactions
- Do NOT update without testing automation compatibility
3. Traefik Configuration
- Managed via traefik-mod web interface (tm.3ddbrewery.com)
- Direct YAML editing discouraged
- All changes version-controlled via Git
- Database-backed with automatic YAML generation
4. MariaDB Management
- User prefers phpMyAdmin for database management
- Access via primary server phpMyAdmin
- Connect to 192.168.12.3:3306
- No root password required in .env files
5. Authelia
- Docker-compose.yml exists but containers not running
- Alternative to Authentik (not currently in use)
- Could be started if needed
================================================================================
ISSUES AND GAPS
================================================================================
None identified. All documentation complete.
All containers in /volume1/docker have been documented:
✓ Complete service inventory with technical details
✓ All database instances documented with access methods
✓ Complete network architecture with 18 networks mapped
✓ Custom applications (traefik-mod, Node-RED) fully documented
✓ README overview with quick reference and troubleshooting
Matrix/Synapse containers listed as requested (no deep documentation).
No missing information or gaps in documentation.
================================================================================
DOCUMENTATION READY FOR TRANSFER
================================================================================
All files in /home/maddox/hetzner-docs/ are ready to be transferred to the
main server's Silverbullet documentation system.
Files to Transfer:
1. README.md (7,500+ words - main overview)
2. 00-service-inventory.md (15,500+ words - complete inventory)
3. 01-databases.md (8,500+ words - database documentation)
4. 02-network-architecture.md (10,500+ words - network details)
5. 03-custom-applications.md (11,000+ words - custom apps)
6. summary.txt (this file - statistics and summary)
Total Size: ~53,000 words across 6 files
Format: GitHub-flavored Markdown (compatible with Silverbullet)
Quality: Production-ready, comprehensive documentation
Transfer Command Example:
scp /home/maddox/hetzner-docs/*.md user@192.168.1.251:/path/to/silverbullet/
Or via Tailscale:
scp /home/maddox/hetzner-docs/*.md user@primary-server:/path/to/silverbullet/
================================================================================
COMPLETION TIMESTAMP
================================================================================
Documentation Generation Started: 2026-01-05
Documentation Generation Completed: 2026-01-05
Total Time: ~30 minutes
Status: COMPLETE
All tasks from document-hetzner.md prompt have been completed successfully.
================================================================================
END OF SUMMARY
================================================================================