- 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)
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).
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.
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.
- 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
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.
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.
- 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)
- 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
- 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
- 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
streamlit-predict was removed in newer ultralytics; yolo solutions inference
is the current equivalent. Installs streamlit on startup via pip cache volume.
- 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
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.
- 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
- 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
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.
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)
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.
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
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.
- SETUP.md: Complete deployment guide with WebSocket configuration
- portainer-setup.sh: Automated Portainer stack creation script
- fix-permissions.sh: Storage directory permission fixer
- .gitignore: Ensure .credentials file is not committed
Note: WebSocket support must be enabled in nginx-proxy-manager for OpenClaw to work.
- Switch to official ghcr.io/openclaw/openclaw:main image
- Remove port mappings in favor of nginx reverse proxy
- Add reverse proxy environment variables (VIRTUAL_HOST, etc.)
- Configure for Ollama integration instead of Anthropic API
- Add PUID/PGID for proper file permissions
Complete documentation for monitor and tag management workflows:
New documentation:
- README.md: Quick reference and complete workflow guide
- TAG_MANAGEMENT.md: Comprehensive tag management strategies
- tag_monitor.sh: Quick CLI script to tag monitors
Updated documentation:
- API.md: Added tag management section with quick reference
Coverage:
- Adding monitors with tags (complete workflow)
- Updating and deleting monitors
- Tag management strategies and patterns
- Common tagging patterns by service type
- Troubleshooting guide
- Best practices and maintenance tasks
All common operations are now documented with examples.
Successfully tagged all 12 monitors with service categories:
- Used add_monitor_tag API method instead of edit_monitor
- All hardware/monitoring, application, and infrastructure monitors now tagged
- Added verification and fix scripts for debugging
New files:
- check_tags.py: Verify tag assignments
- fix_missing_tags.py: Add specific missing tags
- test_single_tag.py: Debug single monitor tagging
- TAG_SUMMARY.md: Complete documentation of all tags and assignments
All monitors are now properly organized by service category.
Creates and assigns service category tags to all monitors:
- Hardware/monitoring: Server fan monitors (4 monitors)
- Application: Web apps, database, media services (3 monitors)
- Infrastructure: Storage, virtualization, VMs (5 monitors)
Tags with color coding:
- hardware (red), monitoring (orange)
- application (blue), web (cyan), database (purple), media (pink)
- infrastructure (green), storage (light green), virtualization (teal), vm (blue grey)