From d8cd933c9b051e9dd15f6e4c6e9da94756f575f3 Mon Sep 17 00:00:00 2001 From: Spendlik Date: Mon, 15 Jun 2026 18:09:49 +0000 Subject: [PATCH] =?UTF-8?q?Add=20services.json=20=E2=80=94=20structured=20?= =?UTF-8?q?inventory=20of=20all=20containers,=20VMs=20and=20planned=20serv?= =?UTF-8?q?ices?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services.json | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 services.json diff --git a/services.json b/services.json new file mode 100644 index 0000000..c92a36c --- /dev/null +++ b/services.json @@ -0,0 +1,197 @@ +{ + "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)" + } + ] +}