Claude_Homelab/services.json

198 lines
5.4 KiB
JSON

{
"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)"
}
]
}