Commit Graph
100 Commits
Author SHA1 Message Date
poprhythm a44f35e758 falco: fix git-hook-tamper false-positiving on every gitea push
The rule checked proc.name against gitea's managed hook names, but git's
hook dispatcher always execs these as `bash ./hooks/<hookname>.d/gitea` -
proc.name is "bash" (the interpreter), never the hook name. That check
could never match, so this fired CRITICAL 3x (pre-receive/update/
post-receive) on every single push since it was added - including two
notifications the user got moments ago from this repo's own commits.

Fixed to check the actual invoked script path in proc.cmdline instead.
This commit's own push is the live verification.
2026-08-16 15:41:05 +00:00
poprhythm 4420ed3c8b dashy: show local time in Falco alerts widget, cap to 5 entries 2026-08-16 15:35:58 +00:00
poprhythm 33868ee9bb falco: tune out gitea SSH and firefly-iii wait-for-it.sh stdio redirects
"Redirect STDOUT/STDIN to Network Connection in Container" (a reverse-shell
detector) was firing legitimately: gitea's sshd/sshd-session dup2 the
accepted SSH socket onto stdio for every session (4x per connection), and
firefly-iii's wait-for-it.sh does the same TCP-readiness-check dance while
waiting for postgres. Both confirmed recurring via netdata's alert history,
not one-off. Scoped exceptions added to each's specific binary/cmdline,
not the whole container/image.

Verified: a gitea SSH login no longer alerts, while a real dup2-based
redirect (bash's /dev/tcp exec pattern) from an unrelated container still
fires - the exception is narrow, not a blanket disable.

"Run shell untrusted" was also flagged as noisy, but investigation showed
it fired exactly once, during my own rule-testing window, and never
before or since - left alone rather than building a permanent exception
for a self-caused test artifact.
2026-08-16 15:25:04 +00:00
poprhythm d87c4e76ef dashy: add recent Falco alerts widget
Cron script (every 5m) pulls falco_rule_match raise transitions from
netdata's existing alert_transitions API - the same data already driving
the Telegram pipeline - and writes them as a Dashy custom-list JSON file.
No new containers/Redis/Falcosidekick needed for a quick-glance security
event feed on the dashboard.

conf.yml and the crontab entry live outside the repo (per existing
pattern) - conf.yml got a new custom-list widget block in the System
Widgets section, and crontab got a matching */5 entry alongside the
other host-cron jobs.
2026-08-16 15:20:09 +00:00
poprhythm 543d374179 firefly-iii: expose FIDI on 8383 for the SimpleFIN setup UI
Not proxied through NPM - it's a one-time interactive setup plus a
periodic cron target, doesn't need a permanent public hostname.
2026-08-16 14:44:22 +00:00
poprhythm 20e93cea4c falco: scope cloud-metadata-probe past netdata's own auto-detection curl
Found during live testing: netdata's cloud-provider auto-detection runs
curl --fail -s -m1 --noproxy * http://169.254.169.254 on every
startup/reconnect to check whether the host is in AWS/GCP/Azure - standard
monitoring-agent behavior, not a bug. Without this exception the rule
would have paged every time netdata restarts. Scoped to netdata's own
curl specifically so any other connection from that container still
alerts.
2026-08-16 14:40:39 +00:00
poprhythm 2ed0565486 add deploy-stack skill; falco: fix hook-tamper condition, add three more post-incident rules
git-hook-tamper.yaml's condition used proc.exepath, which resolves to the
script interpreter's path (e.g. /bin/busybox) for shebang scripts, not the
script's own path - switched to proc.cmdline, which retains the originally
invoked path. Confirmed via live-testing both ways.

ssh-persistence/cloud-metadata-probe/db-spawned-process round out the
post-incident hardening pass with a few more incubating-ruleset adaptations.
2026-08-16 14:33:56 +00:00
poprhythm 9bf72f8e19 falco: add rules for git hook tampering and unexpected pack-service children
Written after the 2026-08-10/11 gitea internal-API log-poisoning attack
that planted a malicious uploadpack.packObjectsHook backdoor. Catches
both the planting (unexpected exec from a hooks/ path) and the firing
(git-upload-pack/git-receive-pack spawning anything but its own
pack-objects binary), independent of how the hook config got written.
2026-08-16 14:24:29 +00:00
poprhythm 6a52b6195a Merge branch 'main' of https://gitea.kolpacksoftware.com/homelab/docker-infrastructure 2026-08-16 14:19:52 +00:00
poprhythm 4d9d15417a falco/netdata: tune out obsidian/ttyd/ollama noise, fix swap alarm flapping
No repeat intrusion - investigated all Falco alerts since deployment
(2026-08-08 to 2026-08-16); the only crypto-miner rule hits were the
original test alerts. The daily self-resolving Telegram alerts the user
was seeing came from four known-benign sources: Obsidian's Electron
self-re-exec pattern and s6-init sudoers setup (fires ~daily on container
recreation), ttyd/Synchronet's telnet/pv/busybox-extras BBS tooling, and
ollama's nvidia-ctk ldconfig-refresh hook (memfd_create by design). Added
scoped exceptions for each via Falco's own rule extension points, same
pattern as the earlier pg_isready/gitea fixes.

Also fixed netdata's used_swap alarm, which recalculated from the
instantaneous raw sample every 10s with only a 30s notification debounce -
a brief swap spike was enough to page both Telegram and (via Netdata
Cloud) email. Widened the up-delay to 5m so only sustained swap pressure
notifies.

Verified end-to-end via a fresh fake-xmrig test after redeploying Falco
and reloading netdata: CRITICAL alarm fired and Telegram delivery
succeeded.
2026-08-16 14:08:05 +00:00
poprhythm 9c4a54c0cd firefly-iii: add FIDI companion for CSV/OFX/SimpleFIN import
Enables autoimport HTTP endpoint (CAN_POST_AUTOIMPORT) for future
cron-driven scheduled syncs.
2026-08-16 13:52:40 +00:00
poprhythm 4eb0725832 minecraft: add 3rd Life server, comment out Create SMP 2026-08-14 23:00:00 +00:00
poprhythm 1858572c4d falco/netdata: tune out gitea SSH false positive, make alert text self-explanatory
- 'Drop and execute new binary in container' fired on every git push/pull
  to gitea over SSH (gitea's own binary re-executing itself for git-shell
  hooks looks like container drift). Scoped exception via
  known_drop_and_execute_activities to proc.name=gitea on that specific
  image, not a blanket container whitelist, so other unexpected binaries
  in that container still get caught.
- netdata alarm text was a static generic blurb requiring a manual
  'docker logs falco' every time to find out what actually happened.
  Now interpolates ${label:rule_name}/${label:priority} (exposed by
  Falco's Prometheus metric) so the Telegram message names the specific
  rule directly. Note: literal double-quotes in the info/summary text
  broke netdata's alarm-notify.sh (silent delivery failure, exit 1) -
  avoided.
- Added netdata/health.d and netdata/go.d to the repo for documentation;
  netdata does not auto-deploy these from git, same as gitea's app.ini -
  copy to /srv/netdata/config/ manually and restart the container.
2026-08-08 22:48:05 +00:00
poprhythm ebb2ad7b54 Scope Navidrome to music/albums (curated MusicBrainz-tagged set)
The nas_media share's music/ root also holds To Convert, shared, and
untagged folders that shouldn't feed the radio station's library.
2026-08-08 22:38:14 +00:00
poprhythm fb728d4bfc Add Navidrome and SUB/WAVE AI radio station
Navidrome indexes the existing music library on nas_media for Subsonic
access. SUB/WAVE (byo-proxy variant, LAN-only) provides the Icecast
broadcast, Liquidsoap crossfade/ducking, and AI DJ controller, reusing
the existing Ollama instance over npm-network for the LLM and Piper
for TTS.
2026-08-08 21:20:40 +00:00
poprhythm d6c214d80d minecraft: create SMP new seed -5296138078585483649, regen world 2026-08-08 18:06:59 +00:00
poprhythm ba925fe734 falco: add cryptominer/runtime-security scanner wired into netdata
Detects unauthorized miners (and other runtime threats) via Falco's
syscall/eBPF monitoring, following the 2026-08-06 gitea/xmrig
compromise. Wired into netdata rather than a new notification channel:
Falco exposes a Prometheus /metrics endpoint, netdata scrapes it, and a
new health.d alarm pages through netdata's already-configured Telegram
bot - no new alerting infra needed.

Includes a custom process-name rule for known miner binaries (the stock
Stratum-protocol rule wouldn't have caught the actual gitea incident,
which used a bare host:port with no scheme prefix), an outbound
miner-pool-port rule as a second layer, and rule_matching: all in the
Falco config - without it, Falco silently drops all but the first
matching rule per event, which would have suppressed our custom rule
whenever a stock rule also matched the same process.
2026-08-08 17:41:20 +00:00
poprhythm 225e872fe9 minecraft: add CF_SLUG placeholder to satisfy AUTO_CURSEFORGE zip requirement 2026-08-08 17:22:34 +00:00
poprhythm ee2a3c4d28 minecraft: add Create SMP server from local CurseForge modpack zip 2026-08-08 17:20:29 +00:00
poprhythm c23ff52563 netdata: alert on sustained high CPU via Telegram, restrict LAN exposure
Two cryptominer incursions (inbox-zero, then gitea) went unnoticed until
found manually — there was no alerting on sustained host CPU. Wired
netdata's existing 10min_cpu_usage alarm to notify via the shared Telegram
bot (config is host-only, not committed). Also narrowed the dashboard port
from 0.0.0.0 to the host's LAN IP to reduce exposure.
2026-08-07 00:12:18 +00:00
poprhythm 773e800b34 pin filebrowser, couchdb, statping to explicit versions instead of floating beta/dev/untagged
Same category of risk as the gitea :nightly issue: floating dev/beta tags
let watchtower silently pull unvetted upstream builds. couchdb had no tag
at all (implicit :latest); filebrowser and statping only publish
beta/dev channels upstream so pinned to the exact version in use rather
than a moving target.
2026-08-07 00:07:36 +00:00
poprhythm cfabe21791 gitea: lock down after cryptominer compromise
Pin image to digest instead of :nightly (DB schema already ahead of
stable 1.27, downgrading would break startup) and disable open
self-registration/OpenID signup, which attackers used to plant xmrig
via a git hook.
2026-08-06 23:56:28 +00:00
poprhythm 15640da229 minecraft: comment out immersive portals server 2026-07-29 23:44:06 +00:00
poprhythm 7468df2b8d watchtower: reduce poll interval to 24h to cut notification spam 2026-07-20 13:25:05 +00:00
poprhythm f665865762 cleanup: remove quizmaster and leafweb (unused/orphaned), add watchtower monitor-only labels, minor consistency fixes
- quizmaster: removed entirely (test service, no longer used); also removed Portainer stack and /srv/quizmaster data
- leafweb: removed orphaned MSSQL compose file (no running container, no Portainer stack, no data on disk)
- authelia, gitea, couchdb, portainer, immich (server + ml): add com.centurylinklabs.watchtower.monitor-only=true so watchtower still notifies on new versions without auto-applying them
- ladder: restore restart: unless-stopped (was commented out)
- rackpeek: add missing TZ env var
2026-07-20 02:19:32 +00:00
poprhythm 2f1a988ac3 security: remove hardcoded secrets, drop unneeded privileged mode, restrict internal-only ports to localhost
- watchtower: move Telegram token/chat ID to .env instead of plaintext in compose
- plex: remove stale/dead PLEX_CLAIM token
- uptime-kuma: mount docker.sock read-only (only needs to read container state)
- home-assistant: drop privileged: true (no device passthrough configured)
- glances: drop privileged: true, bind dashboard port to 127.0.0.1
- couchdb, docker-registry, leafweb: bind ports to 127.0.0.1 (proxy/localhost-only access confirmed, no direct LAN clients)
2026-07-20 01:49:56 +00:00
poprhythm 362643a064 minecraft: immersive: fix chat (disable enforce-secure-profile), op OlympicJumperL, allow flight 2026-07-12 17:27:07 +00:00
poprhythm eac385cc70 minecraft: immersive: force gamemode creative on login 2026-07-12 17:22:13 +00:00
poprhythm 586b48457b minecraft: immersive: set creative mode, enable command blocks, bump JVM heap to 3G 2026-07-12 17:18:41 +00:00
poprhythm 4febd0c303 minecraft: rename container to minecraft-immersive 2026-07-12 17:09:32 +00:00
poprhythm ac6946ccb5 minecraft: rename service key to immersive:, restore server name to Immersive Portals 2026-07-12 17:09:16 +00:00
poprhythm 6a2d24b6ea minecraft: bump immersive: to 1.20.4, pin gravity-api-fork to v1.3.0-mc1.20.4 2026-07-12 17:08:11 +00:00
poprhythm 69d6640d54 minecraft: rename modded to immersive:, set seed, add server icon 2026-07-12 16:58:36 +00:00
poprhythm 089f7eafa9 minecraft: add Immersive Portals SMP, comment out creative, rename terra to Terraforma SMP 2026-07-12 16:53:31 +00:00
poprhythm b9a050f8ab immich: migrate postgres from deprecated pgvecto.rs to VectorChord
immich-server auto-updated to v3.0.1 via watchtower but postgres stayed
pinned to the old pgvecto.rs image, causing a crash loop (missing vector
extension). Per official Immich migration guide.
2026-07-04 01:41:10 +00:00
poprhythm cbbcb76fcf ollama/open-webui: fix OIDC auth loop and session key persistence
open-webui was sending OAuth credentials via both client_secret_basic
(header) and client_secret_post (body) simultaneously, which Authelia
rejects. Setting OAUTH_TOKEN_ENDPOINT_AUTH_METHOD=client_secret_post
forces a single method and matches the updated Authelia client config.

WEBUI_SECRET_KEY is now a stable env var so watchtower image updates
no longer invalidate all user sessions.
2026-07-02 02:26:26 +00:00
poprhythm cfefcbfe1b minecraft: add Empire SMP server, comment out Battle Royale 2026-06-30 15:36:03 +00:00
poprhythm 8f3e7614fa inbox-zero: pin to v1.4.12 (latest tag has broken build, missing node_modules) 2026-06-15 01:56:41 +00:00
poprhythm 82cc6117fb homebox: add HBOX_AUTH_API_KEY_PEPPER env var (required by new version) 2026-06-15 01:36:40 +00:00
poprhythm 8087d19d7f nginx-proxy-acme: replace broken symlinks with empty files
These vhost.d entries were symlinks to a non-existent 'public' file.
Portainer refuses to clone repos containing symlinks, blocking all
git-based stack redeployments. Replace with empty regular files
(equivalent behavior: no extra nginx config = public access).
2026-06-15 01:33:20 +00:00
poprhythm 8871c8354b audiobookshelf: switch audiobooks mount from Docker NFS volume to systemd automount bind mount
NFS named volumes go ESTALE when unRAID drives spin down and Docker cannot recover.
systemd automount handles NFS reconnection transparently; Docker just sees a bind mount.
2026-05-05 20:27:13 +00:00
poprhythm 1ac9f06e29 ollama: restrict port 11434 to 127.0.0.1 (LAN security audit) 2026-05-03 01:40:33 +00:00
poprhythm cb17443ab6 couchdb: mount local.ini for persistent CORS config (entrypoint chowns config files, :ro breaks startup) 2026-04-26 23:39:08 +00:00
poprhythm 98d64139fe couchdb: mount persistent CORS config to survive container updates 2026-04-26 23:20:59 +00:00
poprhythm ca170af736 watchtower: remove debug logging now that scan/update/cleanup is confirmed working 2026-04-26 22:08:21 +00:00
poprhythm a925d61e83 watchtower: add debug logging + disable self-update to diagnose scanned=0 2026-04-26 17:18:05 +00:00
poprhythm 2c90e4218b watchtower: switch to nickfedor/watchtower fork (containrrr archived Dec 2025, Docker API 1.25 incompatible) 2026-04-26 17:02:34 +00:00
poprhythm ba8f1f7668 minecraft: update battle server seed to 9037888329883360986 2026-04-05 22:38:42 +00:00
poprhythm c1c86e3ab2 minecraft: add ViaVersion to battle server for cross-version client support 2026-04-03 16:22:08 +00:00
poprhythm 26c89ebb39 minecraft: fix MODRINTH_PROJECTS separator (comma not space) 2026-04-03 16:18:22 +00:00
poprhythm d4a23d0d6f minecraft: add Paper + EzCountdown + WorldResetPlugin to battle server 2026-04-03 16:16:09 +00:00
poprhythm 5353df05fb minecraft: add battle server on port 25573 for kids PVP
Survival mode, seed 854721609616927000, PVP enabled.
30-min resource gather then battle.
2026-04-03 16:10:09 +00:00
poprhythm 76e02bf26d authelia: add ownCloud iOS OIDC client to git config 2026-03-29 18:59:51 +00:00
poprhythm c58ffb1b68 romm: pass ScreenScraper credentials via Portainer env vars 2026-03-20 22:03:49 +00:00
poprhythm 03d4dae8b5 inbox-zero: add REDIS_URL env var for email-stream / Deep Clean
REDIS_URL was not set, causing "REDIS_URL is not set" errors in
/api/email-stream which powers the Deep Clean full-inbox scan.
2026-03-14 14:34:45 +00:00
poprhythm 9dee75e2a0 docs: update NAS connection strategies for Immich and nas_library/nas_family mounts 2026-03-14 02:10:52 +00:00
poprhythm b2d7f82c53 immich: migrate upload volume from NFS named volume to CIFS systemd bind mount
Replace fragile Docker NFS named volume with /mnt/nas_family/immich-library
bind mount backed by systemd mnt-nas_family.mount (permanent CIFS).
2026-03-14 02:04:33 +00:00
poprhythm f1a9346861 map-frontend: fix @protomaps/basemaps version (4 doesn't exist, use 5) 2026-03-13 14:24:44 +00:00
poprhythm a483c2e7fc map-frontend: use absolute /srv paths for nginx config and html mounts 2026-03-13 14:19:57 +00:00
poprhythm cd232d93ac map-frontend: fix nginx config mount (dir instead of file) 2026-03-13 14:14:55 +00:00
poprhythm ef1d136a3e Add map-frontend (nginx + MapLibre GL), make pmtiles internal-only
- map-frontend: nginx serves MapLibre GL static app, proxies /tiles/ to pmtiles internally
- pmtiles: remove host port binding (internal to npm-network only), update public-url
- 5 themes: light, dark, grayscale, white, black
2026-03-13 14:14:16 +00:00
poprhythm 662b558d21 torrents: document NPM web UI instance labels (OPEN/VPN badges) 2026-03-13 03:36:52 +00:00
poprhythm d7d20cd080 torrents: add nas_library bind mount to qbittorrent_open 2026-03-12 20:53:36 +00:00
poprhythm 0b4571205a Add kiwix and pmtiles services with NAS library share mounts 2026-03-12 19:50:18 +00:00
poprhythm 97ff83a246 romm: add arcade (FBNeo) to populate-roms, add IGDB credentials
100 arcade titles spanning Pac-Man/Namco classics, Street Fighter,
Mortal Kombat, Metal Slug, King of Fighters, Samurai Shodown,
Fatal Fury, beat-em-ups (TMNT, Simpsons, X-Men), and more.

Also adds IGDB_CLIENT_ID/SECRET env vars for metadata scraping.
2026-03-10 01:54:53 +00:00
poprhythm 0fe632e1b5 stable-diffusion: disable ai-dock service portal auth 2026-03-09 03:09:44 +00:00
poprhythm aa686d0827 romm: add GB, GBA, and Amiga to populate-roms script
32 Game Boy, 36 GBA, and 41 Amiga titles. Amiga includes the full
Lemmings trilogy plus Turrican, Monkey Island, Chaos Engine, Worms,
Sensible Soccer, and more. Note: Amiga requires Kickstart firmware
(not in No-Intro) to actually run.
2026-03-09 02:13:53 +00:00
poprhythm 597ed26f89 romm: add IGDB credentials, add populate-roms script 2026-03-08 23:56:44 +00:00
poprhythm 9d084f3f19 Add RomM retro game library manager
MariaDB backend, library on NAS via /mnt/nas_games CIFS automount,
EmulatorJS built-in for browser-based play.
2026-03-08 22:06:53 +00:00
poprhythm adcaa39e41 calibre: move SQLite DBs to local SSD, sync library to NAS via lsyncd 2026-03-08 00:03:17 +00:00
poprhythm 964c8bedf3 Configure Ollama to bind on all interfaces for remote access 2026-03-07 03:41:52 +00:00
poprhythm 35a6715f01 Add Firefly III data import plan
Documents FIDI + SimpleFIN approach for Capital One and Citi bank import,
including OFX Direct Connect option for Citi and the FIDI compose snippet.
2026-03-06 20:06:22 +00:00
poprhythm 2925305ded Add Firefly III personal finance manager
PostgreSQL backend, npm-network integration, uploads/db on /srv/firefly-iii/.
2026-03-06 19:47:04 +00:00
poprhythm a92d4d21d5 Add Gmail filter cleanup script to remove dead/redundant filters 2026-03-06 18:47:10 +00:00
poprhythm 06646b5dee Fix gmail-label-cleanup: reduce batch size to 100 (API limit) 2026-03-06 16:04:15 +00:00
poprhythm 1bb41f5cc9 Fix gmail-label-cleanup: use GmailLabel methods instead of GmailApp 2026-03-06 16:03:20 +00:00
poprhythm 3c6e1588e7 Add Gmail label cleanup script for inbox-zero migration 2026-03-06 16:00:22 +00:00
poprhythm d50e696162 minecraft: disable hardcore+survival, add mem_limits, keep terra active 2026-03-06 13:09:19 +00:00
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