290aedf82d
Documentation: - OpenCode + LiteLLM integration guide - LiteLLM complete setup with 16 models - Gitea centralized configuration guide - Testing procedures and verification - API keys setup instructions Configurations: - OpenCode config pointing to LiteLLM - Updated LiteLLM config with all models - Nextcloud docker-compose template Scripts: - Gitea setup automation - OpenCode testing script Infrastructure: - Gitea: 192.168.88.200:3000 - LiteLLM: 192.168.88.27:4000 - Nextcloud: 192.168.88.62
5.5 KiB
5.5 KiB
Siklos Docker Services — Project Knowledge
Host
- VM112 / siklos / docker-server
- IP:
192.168.88.27 - Specs: 4c/12GB RAM (reduced from 16GB after photo services migrated to VM113)
- SSH:
jgitta@192.168.88.27(via Proxmox host jump) - Docker compose files:
/srv/docker/<service>/docker-compose.yml - Note:
vm.swappiness=10set in/etc/sysctl.conf(April 2026)
Running Containers (as of April 2026)
| Container | Image | Port(s) | Compose Path |
|---|---|---|---|
| pihole | pihole/pihole:latest | 53, 8080 | /srv/docker/pihole/ |
| open-webui | ghcr.io/open-webui/open-webui:main | 3000 | /srv/docker/open-webui/ |
| onlyoffice | onlyoffice/documentserver | 8880 | /srv/docker/media/ |
| homarr | homarr:latest | 7575 | /srv/docker/homarr/ |
| uptime-kuma | uptime-kuma:2 | 3001 | /srv/docker/uptime-kuma/ |
| grafana | grafana:latest | 3020 | /srv/docker/monitoring/ |
| prometheus | prom/prometheus:latest | 9090 | /srv/docker/monitoring/ |
| node-exporter | prom/node-exporter:latest | 9100 | /srv/docker/monitoring/ |
| cadvisor | cadvisor:latest | 8090 | /srv/docker/monitoring/ |
| graphite-exporter | prom/graphite-exporter:latest | 9108-9109 | /srv/docker/monitoring/ |
| glances | nicolargo/glances:latest | 61208 | /srv/docker/glances/ |
| meshcentral | typhonragewind/meshcentral:latest | 444 | /srv/docker/meshcentral/ |
| guacamole | jwetzell/guacamole | 8383 | /srv/docker/guacamole/ |
| karakeep-web-1 | karakeep:release | 3010 | /srv/docker/karakeep/ |
| karakeep-meilisearch-1 | meilisearch:v1.13.3 | 7700 (internal) | /srv/docker/karakeep/ |
| karakeep-chrome-1 | alpine-chrome:124 | — | /srv/docker/karakeep/ |
| linkwarden-linkwarden-1 | linkwarden:latest | 3015 | /srv/docker/linkwarden/ |
| linkwarden-postgres-1 | postgres:16-alpine | 5432 | /srv/docker/linkwarden/ |
| wordpress | wordpress:php8.3-apache | 8095 | /srv/docker/wordpress/ |
| wordpress-db | mariadb:10.11 | 3306 (internal) | /srv/docker/wordpress/ |
| dashy | lissy93/dashy:latest | 8081 | /srv/docker/dashy/ |
| dashboard | dashboard-dashboard | 8096 | /srv/docker/dashboard/ |
| grav | linuxserver/grav:latest | 8585 | /srv/docker/grav/ |
| watchtower | containrrr/watchtower | — | /srv/docker/watchtower/ |
Open WebUI
- URL:
https://ai.jgitta.com - Port: 3000
- Compose:
/srv/docker/open-webui/docker-compose.yml - Connects to Ollama backend running on ThinkStation (192.168.88.41, no external port)
Migrated Services
- PhotoPrism and Immich were migrated to VM113 (photos, 192.168.88.32) in April 2026
- See
/home/jgitta/Documents/Claude/Projects/Photos/photos.mdfor current details
Pi-hole
- Port: 53 (DNS), 8080 (web UI)
- URL:
https://pihole.jgitta.com - Network mode:
host(no docker-proxy — eliminates the port-53 freeze bug) - Config:
listeningMode = "ALL"in pihole.toml - Upstream DNS:
192.168.88.1only (MikroTik) — MikroTik resolves local jgitta.com domains and forwards everything else to 1.1.1.1/8.8.8.8. Do NOT add 1.1.1.1 directly as a Pi-hole upstream — dnsmasq load-balances across all upstreams, which would cause local domains to sometimes resolve to the WAN IP instead of internal Caddy IP. - FTL DB:
/etc/pihole/pihole-FTL.db - Rate limit: 300 concurrent queries
- Excluded from Watchtower auto-updates
- Pi-hole v6
- Watchdog: native cron on Siklos at
*/5 * * * *→/usr/local/bin/pihole-watchdog.sh(restarts if DNS fails); Claude scheduled task is a secondary layer - Uptime Kuma DNS monitor uses
192.168.88.27(host IP, not Docker internal)
Monitoring Stack
- Compose:
/srv/docker/monitoring/ - Grafana: port 3020 (
grafana.jgitta.com), datasource UID:cffiqslf48feod - Prometheus: port 9090
- Node Exporter on: siklos (.27), proxmox (.25), nextcloud (.62), jellyfin (.10), pbs (.60), caddy (.110), thinkstation (.41) — all port 9100
- Grafana alert folder "Homelab Alerts":
- High RAM >90% for 5min
- Swap >50% for 5min
- CPU >90% for 10min
- Disk >85% for 5min
- Node Down 2min
- Alert annotations:
{{ $labels.instance }}and{{ $values.B }}% - Alerts use three-step reduce+threshold pipeline (not classic conditions)
- Telegram: bot token
8758434542:AAEW6omM7twyInsb2INuy6mD1w2EWXHqmzE, chat8260387200, repeat every 4h - Uptime Kuma: port 3001 (
status.jgitta.com), joined topihole_defaultnetwork
OnlyOffice
- URL:
https://office.jgitta.com - Port: 8880 (all interfaces)
- Compose:
/srv/docker/media/docker-compose.yml - Replaces Collabora (
richdocumentsapp is disabled in Nextcloud;onlyofficeapp is enabled) - JWT secret (must match Nextcloud config):
4f2b0c719af2de99befacfec9ca5e8373cbdeb76 - Nextcloud
occsettings (set on VM103/next):DocumentServerUrl=https://office.jgitta.com/DocumentServerInternalUrl=http://192.168.88.27:8880/StorageUrl=https://next.jgitta.com/jwt_secret= (matches containerlocal.jsonabove)jwt_header=Authorization
- To reconfigure after container recreation: re-run
occ config:app:set onlyoffice jwt_secret --value="<secret from local.json>" - Container JWT secret location:
/etc/onlyoffice/documentserver/local.json→.services.CoAuthoring.secret.inbox.string
Key Notes
- Watchtower excludes Pi-hole from auto-updates
- NFS mount
/mnt/photoswas removed from Siklos/etc/fstabafter PhotoPrism/Immich migration - OnlyOffice replaced Collabora (lighter RAM usage)
- RAM reduced from 16GB → 12GB (April 2026, live via Proxmox balloon driver, no reboot)
vm.swappiness=10set to reduce swap pressure after photo services migrated out