Commit Graph
100 Commits
Author SHA1 Message Date
poprhythm 9bd4b70960 Fix inbox-zero: OLLAMA_BASE_URL must include /api path prefix 2026-03-06 04:27:59 +00:00
poprhythm 1e13be7739 Fix inbox-zero: bind web server to 0.0.0.0 for npm-network access 2026-03-06 04:02:04 +00:00
poprhythm b7b9dc91b4 Fix portainer.sh deploy: forward extra args (env vars) to cmd_deploy 2026-03-06 03:55:53 +00:00
poprhythm a08c7ffbcb Add inbox-zero service (Gmail AI assistant, Ollama backend) 2026-03-06 03:46:45 +00:00
poprhythm b615c503cd Fix clue-picker: remove host port binding (NPM handles ingress) 2026-03-04 20:11:40 +00:00
poprhythm 460afd7221 Add clue-picker service (docker-registry image, port 3001) 2026-03-04 20:07:33 +00:00
poprhythm 9a9d0562ae Fix ocis: replace Docker NFS volume with systemd automount bind mount
Same pattern as calibre fix — Docker NFS named volumes with soft mount
fail when unRAID drives spin down. Use systemd NFS automount at
/mnt/nas_owncloud instead; hard mount blocks on spin-up rather than EIO.
2026-03-02 03:59:43 +00:00
poprhythm aee517463d Fix calibre: switch to NFS systemd automount bind mounts
CIFS uid/gid mismatch caused Permission denied on files created via NFS
(cert.key, .gnupg, etc. owned by uid=99 with mode 600/700; SMB user
can't access them server-side). NFS maps uid/gid directly, avoiding the
issue. Use hard mount so spin-up blocks briefly instead of returning EIO.
2026-03-02 03:45:31 +00:00
poprhythm eb5f9117c8 Fix calibre: use /mnt/media (consolidate with existing mount point)
/mnt/media already existed; no need for a separate /mnt/nas_media.
Same CIFS share (//192.168.1.192/media), shorter bind mount paths.
2026-03-02 01:15:19 +00:00
poprhythm ebd813afcc Fix calibre: replace NFS volumes with systemd automount bind mounts
SQLite (Calibre Notes DB) fails with SQLITE_IOERR on soft NFS when unRAID
drives spin down. Replace Docker NFS named volumes with bind mounts to
/mnt/nas_media (CIFS via systemd automount), same pattern as backrest and
filebrowser-colleen-hd. systemd handles drive reconnection independently.
2026-03-02 01:06:29 +00:00
poprhythm d186aec6e5 Switch ocis NAS share from SMB to NFS Docker named volume
Replace /mnt/nas_owncloud CIFS bind mount with nas_owncloud external
NFS volume (192.168.1.192:/mnt/user/owncloud). Removes dependency on
systemd CIFS automount units.
2026-03-01 14:56:25 +00:00
poprhythm e2050fee96 Fix Spoolman: remove user override, add PUID/PGID env vars 2026-03-01 04:29:31 +00:00
poprhythm 860b7772cc Add Spoolman filament spool manager 2026-03-01 04:27:40 +00:00
poprhythm 0cd293e763 Fix ownCloud Desktop OIDC client config in Authelia
- Change public: true → false (desktop app sends client_secret_basic)
- Add client_secret reference to secrets file
- Add token_endpoint_auth_method: client_secret_basic
- Add response_types: [code] (required for offline_access scope)
- Add grant_types: [authorization_code, refresh_token] (required to issue refresh_token)
2026-03-01 02:53:14 +00:00
poprhythm ec56e1f68e Fix ownCloud Desktop client_id (missing '69' suffix) 2026-03-01 01:12:12 +00:00
poprhythm 9d5f5cec43 Add ownCloud Desktop OIDC client to Authelia
Uses the well-known desktop app client_id with localhost redirect URI
for PKCE authentication flow (RFC 8252 loopback).
2026-03-01 01:11:13 +00:00
poprhythm 650be93503 Add get-env/set-env commands to portainer.sh; fix redeploy env var wipe
- get-env: display env vars for a named stack
- set-env: merge KEY=VALUE pairs into a stack's env vars and redeploy
  (uses git/redeploy endpoint with pullImage:false for git-linked stacks)
- redeploy: now preserves existing env vars by including them in the
  git/redeploy payload (previously wiped them when env was omitted)
2026-03-01 01:02:49 +00:00
poprhythm 6ad7e74c39 Add portainer.sh management script (list/redeploy/deploy) 2026-03-01 00:46:48 +00:00
poprhythm 4f1c422d4d Store oCIS user files on unRAID owncloud share 2026-03-01 00:40:38 +00:00
poprhythm f03033b176 Set OCIS_ADMIN_USER_ID for poprhythm 2026-02-28 23:42:52 +00:00
poprhythm 294bbde259 Add CSP config to allow Authelia OIDC connections from browser 2026-02-28 23:39:08 +00:00
poprhythm dab1267e90 Add CORS config to Authelia OIDC for browser-based PKCE clients 2026-02-28 23:33:12 +00:00
poprhythm fc886e89e0 Fix oCIS init: pipe answer to avoid interactive prompt 2026-02-28 23:22:28 +00:00
poprhythm 827675d847 Add oCIS cloud storage with Authelia OIDC
Deploy ownCloud Infinite Scale as a self-hosted cloud storage service
at cloud.kolpacksoftware.com using Authelia as the external OIDC IdP.
Configures a PKCE public client (no secret required).
2026-02-28 23:19:28 +00:00
poprhythm 1c8547d5da Remove picoshare and dashy (unused services) 2026-02-28 23:00:39 +00:00
poprhythm 44c773c943 Mount Docker config into Watchtower for private registry auth 2026-02-28 16:22:07 +00:00
poprhythm 3417fdcfaa Exclude unupdatable containers from Watchtower
- dns-updateip: local image not on any registry
- immich redis/postgres: pinned by digest, no floating tag
2026-02-28 16:07:23 +00:00
poprhythm dce25c6ed4 Add Telegram notifications to Watchtower via Shoutrrr 2026-02-28 15:57:43 +00:00
poprhythm acfde6f040 Upgrade Uptime Kuma from v1 to v2 2026-02-28 14:58:33 +00:00
poprhythm 10d008636c Enable watchtower image cleanup after updates 2026-02-28 14:50:11 +00:00
poprhythm 66664a5925 Fix open-webui OIDC token auth method to client_secret_basic
Open WebUI (authlib) sends credentials in the Authorization header
(client_secret_basic), not the POST body. Authelia was rejecting it.
2026-02-27 03:08:30 +00:00
poprhythm bfb71d67d2 Add Immich OIDC client to Authelia 2026-02-27 03:01:56 +00:00
poprhythm 696398a863 Document OIDC JWK key handling in git config
path:// scheme not supported for key field in Authelia 4.38.
Host copy inlines the PEM as a YAML block scalar written via Python.
2026-02-26 20:49:19 +00:00
poprhythm e6d4b0a349 Revert OIDC client secrets to file-based approach
Bcrypt hashes contain $ signs which Portainer interpolates when storing
as env vars, truncating the values. Use {{ secret "file" }} template
syntax instead — hashes live in /srv/authelia/config/secrets/ on the
host, written via Python to avoid shell interpolation.

Only $ -safe values (hex strings) remain as env vars.
2026-02-26 20:03:03 +00:00
poprhythm 39f6ca8530 Fix Authelia OIDC client secret syntax to use template filter
expand-env double-processes substituted values so $ in bcrypt hashes
get re-expanded. Switch back to template filter with {{ env "VAR" }}
syntax which returns values as-is.
2026-02-26 20:00:44 +00:00
poprhythm 907d214b5c Fix Authelia OIDC config to use expand-env filter with ${VAR} substitution
- Switch X_AUTHELIA_CONFIG_FILTERS from template to expand-env so ${VAR}
  syntax in config files is actually substituted
- Add missing env var pass-throughs for OIDC HMAC secret and client secrets
- Update git config client_secret fields to use ${VAR} syntax (matching host)
- Update .env.example to document all required Portainer env vars
2026-02-26 19:57:55 +00:00
poprhythm 6e62d9ba2f Fix obico model_cache mount path to /model_cache/ml_api 2026-02-26 17:04:22 +00:00
poprhythm a6f2d4c4b2 Mount model_cache volume for Obico ML model weights
Model weights (~193MB each, darknet + onnx) are stored at
/srv/obico/config/model_cache/ and mounted at /model_cache in the
container since they are not baked into the imagegenius image.
2026-02-26 16:46:28 +00:00
poprhythm 196613f684 Add Obico server for 3D printer failure detection
imagegenius monolithic image with NVIDIA GPU (GTX 1660 SUPER) via cuda tag.
Includes internal Redis, npm-network for reverse proxy, DJANGO_SECRET_KEY
as env var placeholder for Portainer.
2026-02-26 16:26:34 +00:00
poprhythm 5e91f0c68b Fix Authelia OIDC client secrets using template secret files
- Switch from unsupported \${VAR} substitution to {{ secret "..." }} template syntax
- Enable X_AUTHELIA_CONFIG_FILTERS=template in compose
- Client secrets now loaded from /config/secrets/oidc_* files on host
- Use PBKDF2-SHA512 hashes (not bcrypt, not plaintext)
2026-02-26 02:04:52 +00:00
poprhythm 0ce030275b Add OIDC secret placeholders to .env.example files
- Add OIDC HMAC and client secrets to authelia/.env.example
- Create ollama/.env.example with OIDC client secret placeholder
2026-02-26 01:42:34 +00:00
poprhythm 645d908ca5 Add Authelia OIDC SSO to Open WebUI
- Add open-webui OIDC client to Authelia config
- Configure open-webui with OIDC env vars pointing to Authelia
- Secret managed via AUTHELIA_OIDC_CLIENT_SECRET_OPEN_WEBUI env var in Portainer
2026-02-26 01:37:28 +00:00
poprhythm 94819639dd Add LiveSync synchronization method step to Obsidian setup guide 2026-02-24 18:02:18 +00:00
poprhythm e923fe0655 Add Obsidian LiveSync setup guide with verified step-by-step instructions 2026-02-24 17:55:10 +00:00
poprhythm fecb4831ad Add Brave API key to openclaw, fix uptime-kuma auth and TCP monitors
- openclaw: expose BRAVE_API_KEY env var for web search tool
- uptime-kuma: prefer username/password auth (API key token auth unreliable)
- uptime-kuma: add TCP monitor type support to manage_monitors.py
2026-02-23 19:14:01 +00:00
poprhythm c4157023f6 Add token_endpoint_auth_method: client_secret_post to linkding OIDC client 2026-02-23 19:00:11 +00:00
poprhythm 38d5edc37f Fix linkding OIDC env var names: drop LD_ prefix from provider settings 2026-02-23 18:56:00 +00:00
poprhythm d0037cf4cd Add Linkding OIDC via Authelia, fix jwks key name in config
- linkding: add OIDC env vars pointing to Authelia as identity provider
- authelia/config: fix issuer_private_keys → jwks (correct key for 4.38.x)
  and replace non-functional template function with host-managed note
2026-02-23 18:45:33 +00:00
poprhythm 4c838e1989 code-server: mount /srv/authelia/config for editing users_database.yaml 2026-02-23 15:25:26 +00:00
poprhythm 3ec74c1f69 Restrict wildcard rule to admins; jsmith (guests) can only access ultralytics 2026-02-23 14:41:18 +00:00
poprhythm 4ec70062ce revert 877d916c15
revert Update ultralytics/docker-compose.yml
2026-02-23 13:43:05 +00:00
poprhythm 877d916c15 Update ultralytics/docker-compose.yml 2026-02-23 13:40:28 +00:00
poprhythm 4293022561 Fix authelia: default_redirection_url must differ from authelia_url 2026-02-22 20:26:00 +00:00
poprhythm 9f98a4081e Add Authelia SSO, remove authentik, restrict ultralytics port
- Add authelia/ stack: Authelia 4.38 + Redis 7-alpine on isolated
  authelia-internal bridge; Authelia also on npm-network for NPM
  forward-auth. Secrets via env vars (not committed).
- Add authelia/config/configuration.yaml: file-based users, SQLite
  storage, one_factor policy for *.kolpacksoftware.com
- Add **/users_database.yaml to .gitignore (host-only secret)
- Remove authentik/ (non-functional leftover)
- ultralytics: bind port 8501 to 127.0.0.1 only (auth enforced via NPM)
2026-02-22 20:21:11 +00:00
poprhythm 717ba151e5 Rename leafweb-vision to ultralytics 2026-02-22 19:50:12 +00:00
poprhythm 7ef6d248da Load yolo-plant-leaf-detection model as default in Streamlit UI
Run streamlit directly to pass model path via -- arg, loading
yolo11x_leaf.pt as the preselected model in the sidebar dropdown.
2026-02-21 19:58:49 +00:00
poprhythm aa9560569f Fix leafweb-vision: use YAML list form for command to avoid parse errors 2026-02-21 19:53:32 +00:00
poprhythm 697818845d Fix leafweb-vision: patch cv2.destroyAllWindows via sed at startup
opencv-python-headless swap doesn't override conda's cv2. Instead,
sed-patch the one offending line in streamlit_inference.py directly.
2026-02-21 19:51:49 +00:00
poprhythm eebb5d11d0 Fix leafweb-vision OpenCV headless error on cv2.destroyAllWindows
Replace opencv-python with opencv-python-headless so GUI calls are
no-ops instead of crashing in a display-less container.
2026-02-21 19:49:00 +00:00
poprhythm 3eeaa8ff6d Fix leafweb-vision: use yolo solutions inference + install streamlit at startup
streamlit-predict was removed in newer ultralytics; yolo solutions inference
is the current equivalent. Installs streamlit on startup via pip cache volume.
2026-02-21 19:46:00 +00:00
poprhythm 0aae4324a8 Add leafweb-vision service with YOLO Streamlit web UI
Runs ultralytics/ultralytics with yolo streamlit-predict on port 8501,
NVIDIA GPU passthrough, and npm-network for reverse proxy access.
2026-02-21 19:39:59 +00:00
poprhythm 1944589989 Revert OLLAMA_NUM_CTX (not a valid env var; using Modelfile instead) 2026-02-20 22:27:49 +00:00
poprhythm 03bf4bc05c Set OLLAMA_NUM_CTX=16384 to prevent prompt truncation for openclaw 2026-02-20 22:23:15 +00:00
poprhythm 2ab1cccdc8 Switch openclaw default model to qwen2.5:7b (supports tools) 2026-02-20 22:11:54 +00:00
poprhythm 0b38b19d20 Fix openclaw model contextWindow to 32768 (minimum is 16000) 2026-02-20 22:08:29 +00:00
poprhythm 18b202909c Rebuild openclaw from npm instead of premade image, configure Ollama
- Add Dockerfile using node:22-bookworm-slim + npm install -g openclaw@latest
- Update docker-compose.yml: use local build, add OLLAMA_API_KEY=ollama-local,
  remove legacy OPENCLAW_AGENT_PROVIDER/MODEL/OLLAMA_BASE_URL env vars
- Add setup.sh to create openclaw.json with explicit Ollama provider config

Key fixes vs previous attempt:
- Config file is openclaw.json (not config.json or auth-profiles.json)
- models.providers.ollama needs baseUrl with /v1 suffix + explicit model list
- OLLAMA_API_KEY env var is required to opt in to Ollama support
- reasoning:false on models prevents 400 errors from Ollama
2026-02-20 22:03:43 +00:00
poprhythm e9bf43469c Switch backrest and filebrowser-colleen-hd to systemd automount bind mount
Replace Docker CIFS named volumes with bind mounts to /mnt/nas_backup,
which is managed by a systemd automount unit. This handles drive spin-down
reconnection independently of Docker container lifecycle.
2026-02-20 21:30:57 +00:00
poprhythm bb41473360 Replace hard (ignored) with echo_interval=300 for CIFS spin-down resilience 2026-02-20 21:06:25 +00:00
poprhythm 03a2ce647b Add hard+noserverino to CIFS mounts to survive unRAID drive spin-down 2026-02-20 21:02:54 +00:00
poprhythm c84175640f Fix CIFS mount permissions: use uid=0/noperm for root-running containers 2026-02-19 02:33:43 +00:00
poprhythm 8523f597da Switch filebrowser-colleen-hd from NFS to SMB for reliable reconnection after drive spin-up 2026-02-18 19:18:46 +00:00
poprhythm 2544694586 Move hardcoded secrets to .env files for dns-updateip, docker-registry, openclaw
- dns-updateip: APIKEY now uses ${APIKEY} substitution
- docker-registry: SECRET_KEY_BASE now uses ${SECRET_KEY_BASE} substitution
- openclaw: OPENCLAW_GATEWAY_TOKEN now uses ${OPENCLAW_GATEWAY_TOKEN} substitution
- Add .env.example templates for backrest, dns-updateip, docker-registry, openclaw
2026-02-18 19:02:01 +00:00
poprhythm 5f704441fb Switch backrest backup mount from NFS to SMB for reliable reconnection after drive spin-up 2026-02-18 13:45:52 +00:00
poprhythm 3474043bb9 Update README with working ttyd web terminal configuration 2026-02-16 03:53:08 +00:00
poprhythm 9a7b00780c Set baud rate to 56k (7000 bytes/sec) for better balance 2026-02-16 03:35:02 +00:00
poprhythm ab465c0234 Add 2400 baud rate throttling for classic BBS nostalgia 2026-02-16 03:34:29 +00:00
poprhythm 54f3c37e7c Increase font size to 18 and set custom ORMG BBS title 2026-02-16 03:30:58 +00:00
poprhythm 9fbd6f6900 Enable write mode in ttyd with -W flag 2026-02-16 03:28:44 +00:00
poprhythm d7f7f19fbd Revert to simple busybox telnet - users can set ANSI in BBS settings 2026-02-16 03:26:44 +00:00
poprhythm eaaf15339d Use socat for raw TCP connection to BBS 2026-02-16 03:24:19 +00:00
poprhythm cba9531a71 Switch ttyd to use SSH instead of telnet for proper ANSI support 2026-02-16 03:23:24 +00:00
poprhythm 9f0d0249cd Use inetutils-telnet for proper terminal type negotiation 2026-02-16 03:22:18 +00:00
poprhythm 57150c9e5c Configure ttyd with xterm-256color for ANSI support 2026-02-16 03:20:45 +00:00
poprhythm 058247465a Fix ttyd container - use alpine image with busybox telnet 2026-02-16 03:19:20 +00:00
poprhythm e846a9c1cb Add ttyd web terminal for browser-based BBS access 2026-02-16 03:13:58 +00:00
poprhythm 23498377fc Add ORMG branding customization for Synchronet BBS
- Add custom ANSI art with "ORMG" branding instead of "Synchronet"
- Replace "bbs software" with "door games" in welcome screen
- Include original synch.ans as backup
- Update README with customization instructions
- Custom branding applied to /srv/synchronet/ctrl/answer.ans
2026-02-15 03:32:20 +00:00
poprhythm 752de89955 Change Synchronet HTTPS port to 8444 (8443 in use by code-server) 2026-02-15 02:46:09 +00:00
poprhythm eb56dd2513 Add Synchronet setup helper script 2026-02-15 02:42:05 +00:00
poprhythm 15901a6ff7 Add Synchronet BBS with Legend of the Red Dragon
- Configure bbsio/synchronet:3.19c Docker image
- Expose web interface (ports 8023/8443) and fTelnet websocket terminals
- Include telnet (23), SSH (2222), and classic BBS protocols
- LORD (Legend of the Red Dragon) included as built-in door game
- Add comprehensive README with setup and configuration instructions
2026-02-15 02:40:17 +00:00
poprhythm 0b34690bc5 Add user directive to RackPeek for proper permissions 2026-02-14 02:48:41 +00:00
poprhythm a712132eef Change RackPeek port to 8081 (8080 used by qbittorrent) 2026-02-14 02:47:36 +00:00
poprhythm 68f97de1ea Add RackPeek infrastructure documentation tool
RackPeek is a CLI tool to discover, manage, and document IT infrastructure
and home lab setups. It will help track hardware, services, networks, and
their relationships in a scriptable way.
2026-02-14 02:44:59 +00:00
poprhythm 7ab8533910 Simplify audiobookshelf volume configuration
Use local storage for application data and single NFS volume:
- /srv/audiobookshelf/config - local application config
- /srv/audiobookshelf/metadata - local metadata database
- NFS volume: /mnt/user/media/audiobooks (contains library/ and untagged/ subdirs)
2026-02-10 19:31:00 +00:00
poprhythm 2bf8895740 Configure audiobookshelf to use NFS volumes
Switch from local bind mounts to NFS volumes on 192.168.1.192:
- config: /mnt/user/media/audiobooks/config
- metadata: /mnt/user/media/audiobooks/metadata
- library: /mnt/user/media/audiobooks/library
- untagged: /mnt/user/media/audiobooks/untagged

Follows the same NFS pattern used by calibre for media storage.
2026-02-10 19:28:37 +00:00
poprhythm 24b6e247a6 Add audiobookshelf setup
Configure audiobookshelf for audiobook library management with:
- Library path: /mnt/media/audiobooks/library
- Untagged imports: /mnt/media/audiobooks/untagged
- Reverse proxy integration via npm-network
- Accessible at audiobookshelf.kolpacksoftware.com
2026-02-10 19:19:36 +00:00
poprhythm 2d91aab062 Add Home Assistant setup
Home automation platform for smart home device integration. Configured with:
- nginx reverse proxy integration at homeassistant.kolpacksoftware.com
- Data persistence at /srv/home-assistant
- Privileged mode for device access
2026-02-09 15:44:04 +00:00
poprhythm f0902944e0 Document OpenClaw troubleshooting attempts
Add comprehensive troubleshooting documentation for OpenClaw auth issues:
- All configuration attempts with Ollama and Anthropic
- Error messages and findings
- Links to relevant GitHub issues and documentation
- Recommendations for future attempts

Issue: Gateway mode fails with 'No API key found' despite correct auth-profiles.json configuration with both Ollama and real Anthropic API key.
2026-02-09 03:03:56 +00:00
poprhythm c7733147b3 Hardcode OpenClaw gateway token in docker-compose
Token is safe to commit as this is a private repo
2026-02-09 02:33:22 +00:00
poprhythm 716718504d Configure OpenClaw to use Ollama with llama3
Add environment variables to specify Ollama as the agent provider:
- OPENCLAW_AGENT_PROVIDER=ollama
- OPENCLAW_AGENT_MODEL=llama3
- OPENCLAW_OLLAMA_BASE_URL=http://ollama:11434
2026-02-09 02:32:23 +00:00
poprhythm 8209caecff Fix OpenClaw architecture mismatch - specify linux/amd64 platform
Adds explicit platform: linux/amd64 to prevent pulling ARM64 image on x86_64 systems, which causes "Exec format error"
2026-02-09 02:04:57 +00:00