{ "updated": "2026-06-15", "services": [ { "ct": 100, "hostname": "n8n", "ip": "192.168.1.29", "domain": "automation.spendlik.sk", "purpose": "Workflow automation", "stack": "npm global install", "version": "2.25.7", "port": 5678, "auth": "Authelia", "doc": "none" }, { "ct": 101, "hostname": "reverse-proxy", "ip": "192.168.1.10", "domain": null, "purpose": "nginx reverse proxy for all services", "stack": "nginx + certbot", "port": 80, "auth": "none", "doc": "none", "notes": "Always inspect nginx configs after certbot runs" }, { "ct": 102, "hostname": "authelia", "ip": "192.168.1.50", "domain": "auth.spendlik.sk", "purpose": "SSO / 2FA gateway", "stack": "Authelia", "port": 9091, "auth": "self", "doc": "none" }, { "ct": 103, "hostname": "matrix-synapse", "ip": "192.168.1.60", "domain": "matrix.spendlik.sk", "purpose": "Self-hosted Matrix messaging", "stack": "Matrix Synapse", "port": 8448, "auth": "native", "doc": "none" }, { "ct": 104, "hostname": "snappymail", "ip": "192.168.1.55", "domain": "email.spendlik.sk", "purpose": "Webmail client", "stack": "SnappyMail", "port": 80, "auth": "Authelia", "doc": "none" }, { "ct": 105, "hostname": "audiobookshelf", "ip": "192.168.1.70", "domain": "books.spendlik.sk", "purpose": "Ebooks and audiobooks", "stack": "Audiobookshelf", "port": 80, "auth": "native", "doc": "04_audiobookshelf_deployment.md", "notes": "NAS bind mount for media library" }, { "ct": 106, "hostname": "jellyfin", "ip": "192.168.1.75", "domain": "jellyfin.spendlik.sk", "purpose": "Media server", "stack": "Jellyfin", "port": 8096, "auth": "native", "doc": "05_jellyfin_deployment.md", "notes": "NAS NFS mount for media" }, { "ct": 107, "hostname": "wireguard", "ip": "192.168.1.80", "domain": null, "purpose": "VPN", "stack": "WireGuard", "port": 51820, "protocol": "UDP", "auth": "key-based", "doc": "06_wireguard_deployment.md", "notes": "Mobile client on Galaxy S25. Endpoint still raw IP — vpn.spendlik.sk DDNS fix pending." }, { "ct": 108, "hostname": "ddns", "ip": "192.168.1.95", "domain": null, "purpose": "WebSupport DDNS updater", "stack": "bash script + cron", "script": "/usr/local/bin/ddns-update.sh", "auth": "WebSupport API v2 HMAC-SHA1", "doc": "10_ddns_deployment.md" }, { "ct": 109, "hostname": "gitea", "ip": "192.168.1.90", "domain": "git.spendlik.sk", "purpose": "Self-hosted Git", "stack": "Gitea binary", "version": "1.22.6", "port": 3000, "auth": "native + token", "doc": "11_gitea_deployment.md", "notes": "Code indexer enabled (bleve). startup order=6." }, { "ct": 110, "hostname": "windows11", "type": "vm", "ip": "192.168.1.227", "domain": null, "purpose": "Windows 11 VM with GPU passthrough", "stack": "Windows 11 + RTX 4060 Ti passthrough + Sunshine", "auth": "Windows login", "doc": "09_gpu_setup.md", "notes": "Backup weekly Sunday, keep-last=2" }, { "ct": 111, "hostname": "paperless", "ip": "192.168.1.111", "domain": "paperless.spendlik.sk", "purpose": "Document management with OCR", "stack": "Docker Compose — paperless-ngx + PostgreSQL 16 + Redis 7", "compose": "/opt/paperless/docker-compose.yml", "port": 8000, "auth": "native", "doc": "none", "notes": "media + data volumes on NAS (/mnt/paperless/). consume dir: /mnt/paperless/consume. 6-language OCR: slk+ces+rus+hun+deu+eng. RAM: 8GB (bumped for heavy OCR)." }, { "ct": 112, "hostname": "mcp-server", "ip": "192.168.1.100", "domain": "mcp.spendlik.sk", "purpose": "MCP bridge for Claude AI", "stack": "Node.js + @modelcontextprotocol/sdk", "dir": "/opt/mcp-server", "port": 3500, "auth": "none (LAN only)", "doc": "none" }, { "ct": 115, "hostname": "vaultwarden", "ip": "192.168.1.115", "domain": "vault.spendlik.sk", "purpose": "Password manager (Bitwarden-compatible)", "stack": "Docker Compose — vaultwarden/server", "compose": "/opt/vaultwarden/docker-compose.yml", "port": 8080, "auth": "native", "doc": "13_vaultwarden_deployment.md", "notes": "Signups disabled after initial account creation" } ], "planned": [ { "ct": 113, "hostname": "bambuddy", "ip": "192.168.1.113", "domain": "bambuddy.spendlik.sk", "purpose": "Bambu A1 management (BAMbuddy)" }, { "ct": 114, "hostname": "euro-office", "ip": "192.168.1.114", "domain": "office.spendlik.sk", "purpose": "Online office suite (Euro-Office Docker)", "doc": "12_euro_office_deployment.md" }, { "ct": 116, "hostname": "bookmark-manager", "ip": "192.168.1.116", "domain": "bookmarks.spendlik.sk", "purpose": "Bookmark manager (Linkding / Hoarder / Shiori — TBD)" } ] }