System Change log
2026-10-10 Saturday
ul, danknasty):
mc-manager (/usr/local/bin/mc-manager, mc-manager.service), mc-runner (/usr/local/bin/mc-runner, minecraft@<slug>.service PTY wrapper with /run/mc-manager/<slug>.sock), and mc-seed-render (/usr/local/bin/mc-seed-render, native cubiomes biome & structure map generator) at mc.drheck.dev behind Nginx and Authentik ForwardAuth.
Added Minecraft Text, MOTD, Color Gradient & 8-Bit Pixel Icon Studio to both the + New World wizard and existing server Configuration panel (Unicode font styles, Java-safe symbols, § RGB gradient interpolator, live server-list preview, and 64×64 8-bit pixel badge/icon generator).
Updated /etc/haproxy/minecraft.lua and HAProxy backend rules so all Multiplayer Server List pings (state == 1) query mc-manager (BuildLiveStatusJSON), overlaying live motd (server.properties) and favicon (server-icon.png) onto running server status responses without requiring a server restart.
Updated /data/minecraft/ipctl to authenticate programmatically to danknasty using short-lived (5-minute) SSH user certificates issued by step-ca (webshell-svc provisioner) and trusted via /etc/sshd_config.d/10-drheck-certs.conf on danknasty.
Externalized all dynamic ipctl state out of code-reviewed base configs into /etc/systemd/network/20-wired.network.d/minecraft.conf, /etc/haproxy/conf.d/minecraft_backends.cfg, /etc/haproxy/minecraft_hosts.map, and /var/unbound/etc/unbound.minecraft.conf (included from unbound.conf and parsed recursively by update_dns.py, dns_danger_sync.py, and verify_dns.sh), with tracked mirrors in /data/minecraft/.network/.
Provisioned desertworld.drheck.dev (fd77:7777:5010::1337:3c:d00d:2/64) and updated Minecraft Worlds and Service List.
2026-09-27 Sunday
- amux (Agent-Modified tmux) & Persistent Session Infrastructure (
ul):- Created custom tmux fork (
amux) built from/home/luke/git/tmuxand installed at/usr/local/bin/tmux-custom. - Implemented native
write-pane(writep) command supporting-b <base64>and-f <file>with-e(auto-enter) to inject scripts directly into PTY buffers with zero quote escaping or keystroke lag. - Built structured audit logging directly into
cmd-write-pane.cusingsd_journal_send(SYSLOG_IDENTIFIER=amux,AMUX_PANE_ID,AMUX_WINDOW_NAME,AMUX_ARCHIVE_PATH). - Configured automatic pre-execution script archival to persistent storage in
/data/amux/scripts/(YYYY-MM-DD_HHMM.SS_<window_name>.sh). - Configured dedicated
atxagent session in/home/luke/bin/tmux_controlon socket/tmp/tmux-1000/tmux_luke_atx, styled with orange status bar (#ff8800),C-bprefix, and persistent agent environment in~/.agent_profile. - Added backup and restore scripts for amux (
/home/luke/git/backups/ul/scripts/backup/amuxand/restore/amux). - Documented architecture and audit procedures on HeckWiki pages 137 (amux) and 56 (SSH & Agent Command Tracking Guide).
- Created custom tmux fork (
- Minecraft Datapack Enhancements (
pokelovers) (ul):- Installed 5 verified Minecraft 26.3 datapacks in
/data/minecraft/poke lovers/world/datapacks/:fast_leaf_decay(rapid leaf decay upon log breakage)graves(death chest/grave saving inventory and XP)invisframes(invisible item frames via shears while sneaking)player-drops-head(player head drops on death)shulker-drops-two-shells(guaranteed 2 shulker shells)
- Broadcasted in-game countdown notices to online players prior to executing live
/reload.
- Installed 5 verified Minecraft 26.3 datapacks in
- BlueMap 3D Web Map & Authentik SSO Integration (
pokelovers) (ul):- Deployed BlueMap 5.28 standalone CLI renderer running as
bluemap-pokelovers.servicein watch mode (-w -u), serving live world updates and Server-Sent Events (SSE) on port 8100. - Configured NGINX reverse proxy on port 443 with wildcard SSL (
*.drheck.dev) in/etc/nginx/sites-available/pokelovers. - Gated
https://pokelovers.drheck.devbehind Authentik ForwardAuth proxy provider and application on embedded outpost, protecting map coordinates and player builds behind authentication.
- Deployed BlueMap 5.28 standalone CLI renderer running as
2026-09-26 Saturday
- Zero-Config Minecraft HAProxy SNI Stream Routing (
ul,danknasty):- Decommissioned application-level proxy (Velocity) to preserve native vanilla Diffie-Hellman encryption and Microsoft
online-mode=trueauthentication. - Deployed HAProxy 3.4.5 on dual-stack endpoints (
10.0.0.113:25565and[fd77:7777:5010::1337:f1ac:d00d:3c]:25565). - Implemented
/etc/haproxy/minecraft.luausing non-draining buffer peeking (txn.req:dup()) to inspect the raw unencrypted Minecraft handshake packet (0x00), dynamically extracting the SNI virtual host (pokelovers.drheck.dev). - Routed traffic via
/etc/haproxy/minecraft_hosts.mapdirectly to dedicated internal ULA addresses on standard port 25565 ([fd77:7777:5010::1337:3c:d00d:1]:25565). - Implemented native fallback responder (
mc_offline) returning custom protocol packets when backends are stopped:- Multiplayer Server List MOTD:
"[Server] is currently offline. Ping Luke" - Multiplayer Join Screen: Immediate disconnect with red bold error:
"[Server] is currently offline. Ping Luke"
- Multiplayer Server List MOTD:
- Decommissioned application-level proxy (Velocity) to preserve native vanilla Diffie-Hellman encryption and Microsoft
- Network & DNS Automation (
ipctl) (ul,danknasty):- Developed
/data/minecraft/ipctl(symlinked in/home/luke/bin/ipctl). - Automates ULA IPv6 allocation (
fd77:7777:5010::1337:3c:d00d:<hex>/64) oneth77withsystemd-networkdreload. - Automates HAProxy backend and map configuration reload.
- Integrated SSH agent validation checking for key
ultra-arikui(SHA256:7Xr0vCxgfpPhbKE3hN9fE2IC9y4x3Kj+kYmXwzgJY3s). - Implemented 7-step automated DNS provisioning over SSH to
danknasty: updates~/git/router_config/unbound.conf, validates viaunbound-checkconf, deploys to/var/unbound/etc/, restartsunbound, verifies local resolution, and triggersdns_danger_sync.py --forceto push public A and AAAA records to deSEC.io. - Created dedicated backup and restore scripts in
/home/luke/git/backups/ul/scripts/backup/minecraft_routerand/restore/minecraft_router. - Documented entire architecture and quickstart HOWTO on HeckWiki page 136 (Minecraft Worlds).
- Developed
- Firewall Configuration for Minecraft Port 25565 (
danknasty):- Configured
mc_ipv4(10.0.0.113),mc_gu($gu_prefix:1337:f1ac:d00d:3c), andmc_ula($ula_prefix:1337:f1ac:d00d:3c) in~/git/router_config/pf.conf. - Added inbound port 25565 forwarding rules for IPv4 NAT and IPv6 ULA redirection.
- Validated with
pfctl -nf, deployed to/etc/pf.conf, loaded into the kernel, and verified reachability externally fromrng.
- Configured
2026-09-21 Monday
- Native Sunshine & Gamescope Migration on ul:
- Decommissioned legacy
steam-headlesscontainer; migrated to bare-metal Gamescope DRM compositor + Sunshine host on AMD Radeon AI PRO R9700 (1002:7551, Navi 48). - Injected AOC 1080p EDID on
DP-1via mkinitcpio & systemd-boot loader options. - Configured Steam library paths directly to 151TB ZFS pool (
/data/games/steam/steamapps). - Resolved PS5 DualSense controller disconnection: disabled Steam proprietary HIDAPI polling (
SDL_JOYSTICK_HIDAPI_PS5=0,SDL_JOYSTICK_HIDAPI=0) to preventhid_read failuretimeout on virtualuhiddevices. - Added
-e(--steam) integration flag to Gamescope launch script to ensure proper Wayland focus relaying to Steam, enabling Steam Input in-game instead of dropping to Desktop mouse layout. - Documented complete architecture, launch scripts, and controller gotchas on HeckWiki page 130 (Sunshine Remote Setup).
- Decommissioned legacy
2026-09-21 Monday
- Steam Storage Migration to 151TB ZFS Pool (
/data/games/steam) (ul):- Discovered root NVMe filesystem at 85% utilization (71GB free).
- Consolidated all Steam games, runtimes, manifests, and shader caches from temporary docker volumes to
/data/games/steam/steamapps/on the 151TB ZFS pool. - Replaced
~/.local/share/Steam/steamappsand~/.steam/steam/steamappswith permanent atomic symlinks pointing to/data/games/steam/steamapps/. - Cleaned
libraryfolders.vdfensuring 100% of game downloads route directly to/data/games/steam/with zero bytes hitting the root SSD.
- TTY1 Getty Deactivation & Display Console Fix (
ul):- Disabled
getty@tty1.service(systemctl disable --now getty@tty1.service) to prevent Linux console login prompts from broadcasting over KMS onDP-1.
- Disabled
2026-09-20 Sunday
- PS5 DualSense Controller Hardware Support & uhid Activation (
ul):- Identified PlayStation 5 DualSense controller emulation failure in Sunshine due to missing
/dev/uhid(User HID) device node. - Loaded
uhidkernel module and made persistent across reboots in/etc/modules-load.d/uhid.conf. - Configured udev rule in
/etc/udev/rules.d/85-sunshine-uinput.rulesgrantinginputgroup permissions to both/dev/uinputand/dev/uhid(MODE="0660", GROUP="input").
- Identified PlayStation 5 DualSense controller emulation failure in Sunshine due to missing
- Native Gamescope + Headless DRM Stack Migration (
ul):- Decommissioned legacy
steam_headlessDocker container to eliminate Xorg CPU dummy-driver bottleneck (xf86-video-dummy) and software rasterization (15 FPS). - Installed native Arch Linux gaming stack:
gamescope,steam,vulkan-radeon,lib32-vulkan-radeon,pipewire-pulse,wireplumber,seatd,socat, andsunshine-bin(AUR). - Granted real-time scheduling capabilities to Gamescope (
setcap cap_sys_nice=eip /usr/bin/gamescope) and rootless DRM frame capture to Sunshine (setcap cap_sys_admin,cap_sys_nice=eip /usr/bin/sunshine). - Configured
seatddaemon with groupvideooverride in/etc/systemd/system/seatd.service.d/group.confto allow Gamescope DRM session management without an active logind seat. - Configured Gamescope launcher script
/home/luke/bin/launch-gamescope-steam.shdriving connectorDP-1via--backend drmwith RADV Vulkan acceleration on the AMD Radeon AI PRO R9700.
- Decommissioned legacy
- Headless Virtual Display via Boot-Time EDID Injection (
ul):- Resolved
*ERROR* No EDID found on connector: DP-1kernel spam on headless AMD GPU. - Sourced verified 1080p 144Hz CEA-861 DisplayPort EDID (
aoc_1080p.bin) in/usr/lib/firmware/edid/. - Packaged EDID into early initramfs via
FILES=(/usr/lib/firmware/edid/aoc_1080p.bin)in/etc/mkinitcpio.confand regenerated boot image viamkinitcpio -P. - Configured bootloader kernel parameters in
/boot/loader/entries/arch.conf:drm.edid_firmware=DP-1:edid/aoc_1080p.bin video=DP-1:1920x1080@60e. - Pinned Sunshine KMS capture explicitly to
adapter_name = /dev/dri/card1andoutput_name = DP-1, preventing BMC graphics capture (VGA-1).
- Resolved
- Dual-Stack IPv4/IPv6
socatBridge (ul):- Bound native Sunshine directly to dedicated IPv6 ULA address
[fd77:7777:5010:0:1337:f1ac:d00d:4799]. - Deployed
/usr/local/bin/sunshine-ipv4-bridge.shand systemd unit/etc/systemd/system/sunshine-ipv4-bridge.servicelistening on10.0.0.112and forwarding all GameStream TCP and UDP ports bidirectionally to IPv6 to prevent asymmetric routing drops on dual-stack LANs.
- Bound native Sunshine directly to dedicated IPv6 ULA address
- Client Authentication & Stale Certificate Remediation (
ul):- Diagnosed
Warning: SSL Verification error :: Client certificate identity is not enabled(LizardByte issue #5696) caused by duplicate client certificates with conflicting UUIDs insunshine_state.json. - Cleared stale device records in
sunshine_state.jsonallowing clean one-time client pairing across desktop and TV clients.
- Diagnosed
- NetworkManager D-Bus Mock for Steam (
ul):- Diagnosed Steam Gamepad UI offline status (
An internet connection is required to load this content/ slashed Wi-Fi icon) caused by absence of NetworkManager onsystemd-networkdhost. - Implemented lightweight Python D-Bus daemon
/usr/local/bin/fake-networkmanager.pyand service/etc/systemd/system/fake-networkmanager.servicereportingNM_STATE_CONNECTED_GLOBAL(70) andNM_CONNECTIVITY_FULL(4) to satisfy Steam network checks.
- Diagnosed Steam Gamepad UI offline status (
- Documentation:
- Authored and published comprehensive architecture and setup runbook on HeckWiki: sunshine remote setup (Page 130).
2026-09-19 Saturday
- Sunshine Network Tuning & Steam Container Bootstrap (
ul):- Diagnosed container web assets and API communication issues on
josh5/steam-headless. - Configured Sunshine CORS origins (
csrf_allowed_origins = https://sunshine.drheck.dev) and dual-stack network settings insunshine.conf. - Bootstrapped Steam runtime inside container and configured Steam Big Picture startup commands.
- Authored and published initial HeckWiki guide: Steam Streaming (Page 129).
- Updated LDAP group enrollment documentation (
ldap-sssd-client-enrollment-guide, Page 25) with corrected repository clone instructions.
- Diagnosed container web assets and API communication issues on
2026-09-18 Friday
- Immich Machine Learning AMD ROCm Migration (
ul):- Migrated
immich_machine_learningfrom NVIDIA CUDA to native AMD ROCm: pulledghcr.io/immich-app/immich-machine-learning:v3.1.0-rocm. - Updated
/data/docker/immich/.env(IMMICH_MACHINE_LEARNING_GPU_TYPE=rocm). - Recreated Immich stack and verified PyTorch ROCm device detection (
torch.cuda.is_available() = Trueon AMD Radeon AI PRO R9700gfx1201). - Verified VA-API hardware video acceleration on
/dev/dri/renderD128insideimmich_server.
- Migrated
- Sunshine & Steam-Headless Initial Deployment (
ul&danknasty):- Provisioned dedicated internal IPv4 (
10.0.0.112) and IPv6 ULA (fd77:7777:5010:0:1337:f1ac:d00d:4799). - Updated
unbound.confin~/git/router_configondanknastywithsunshine.drheck.devA and AAAA records; deployed via./sync_unbound. - Synced public DNS records via
dns_danger_sync.pyon deSEC.io. - Configured
/etc/nginx/sites-available/sunshinewith Authentik ForwardAuth and deployed reverse proxy. - Provisioned
sunshineapplication and ProxyProvider in Authentik embedded outpost. - Deployed
josh5/steam-headlesscontainer in/data/docker/sunshine/docker-compose.yml.
- Provisioned dedicated internal IPv4 (
2026-09-17 Thursday
- Tmux & SSH Auth Environment Maintenance (
ul):- Re-initialized Tmux Plugin Manager (
tpm) and checked plugin compatibility (check_tmux_version.sh). - Maintained persistent SSH agent socket symlinks.
- Re-initialized Tmux Plugin Manager (
2026-09-15 Tuesday
- System Package Maintenance & Initramfs Rebuild (
ul):- Upgraded system packages via
paru -Syu. - Rebuilt
initramfs-linux-lts.imgvia ALPM hooks. - Verified systemd service health.
- Upgraded system packages via
2026-09-12 Saturday
- System Package Maintenance & LTS Kernel Update (
ul):- Upgraded system packages via
paru -Syu/pacman -Syu. - Kernel update to
6.18.52-1-ltsand regeneratedinitramfs-linux-lts.img. - Re-verified NVIDIA kernel module conftest compilation checks for
580.178.04. - Media library maintenance: sorted and updated Adventure Time subtitle filenames.
- Upgraded system packages via
2026-09-08 Tuesday - 2026-09-11 Friday
- System Maintenance & Driver Toolchain Compilation (
ul):- Executed routine system maintenance and package updates across
ul. - Kernel module conftest compilation and pacman keyring verification.
- Executed routine system maintenance and package updates across
2026-09-05 Saturday
- OpenBSD Router Reinstallation & CrowdSec Perimeter Restoration (
danknasty):- Reinstalled and configured
crowdsec-firewall-bouncerconnecting toul's LAPI over IPv6 ULA (http://[fd77:7777:5010:0:1337:f1ac:d00d:c70d]:8080/). - Restored OpenBSD PF firewall tables (
<crowdsec-blacklists>,<crowdsec6-blacklists>,<bruteforce>) with rate limiting (max-src-conn-rate 3/30), loading ~23,880 blacklisted attacker IPs directly into kernel tables. - Verified remote syslog forwarding of
auth,authpriv.infoover IPv6 UDP toul's CrowdSec syslog parser.
- Reinstalled and configured
- Router Network Mapping & Dynamic IPv6 DNS Cron Jobs (
danknasty):- Aligned network interface roles after hardware reinstallation (
em0WAN,em1LAN with delegated/64prefix). - Updated interface configurations across
/etc/hostname.em0,/etc/hostname.em1,/etc/dhcp6leased.conf,/etc/rad.conf, and/etc/dhcpd.conf. - Deployed dynamic deSEC.io IPv6 DNS updater (
/etc/update_dns.py) and keepalive monitor (/etc/ipv6_keepalive.sh). - Restored root crontab on
danknastyto run/etc/update_dns.pyevery minute and/etc/ipv6_keepalive.shevery 5 minutes. - Triggered manual sync: verified all 43 domain AAAA records updated on deSEC and verified public IPv6 reachability via
rngtohttps://auth.drheck.dev/.
- Aligned network interface roles after hardware reinstallation (
- Router Disaster Recovery & Reinstall Survival Automation (
danknasty):- Created single-command idempotent provisioning script
~/git/router_config/bootstrap.sh(doas ./bootstrap.sh): installs package dependencies, copies system configs, sets file permissions and ownership, restores root crontab, applies sysctl, and starts all services. - Created zero-touch OpenBSD post-install hook
~/git/router_config/install.siteto automatically pull repository and executebootstrap.shinsidechroot /mntat OS installation completion. - Added
/etc/sysctl.conf(net.inet.ip.forwarding=1,net.inet6.ip6.forwarding=1) to repo with automated activation viasysctl -f. - Added package manifests to repo:
pkglist(generated viapkg_info -mzfor native OpenBSDpkg_add -I -lrestoration) andpackages.txt(human-readable catalog with descriptions). - Added
/etc/dhcpd.conf(DHCPv4 server) and/var/unbound/etc/unbound.conf(DNS resolver) deployment and service management intobootstrap.sh. - Backed up all router configuration templates into
~/git/router_config(boot.conf,ttys,doas.conf,crontab.root,dhcp6leased.conf,rad.conf,pf.conf,syslog.conf,rc.conf.local,mygate,crowdsec-firewall-bouncer.yaml).
- Created single-command idempotent provisioning script
- Nextcloud Landing Page & occ Runbook Guide (
ul):- Configured post-authentication redirect on
cloud.drheck.devto default directly to/apps/files/files(occ config:system:set defaultapp files,occ config:app:set core defaultpage /apps/files/files). - Authored and published comprehensive Nextcloud occ Guide on HeckWiki documenting command-line administration, alias setups, user management, and maintenance mode operations.
- Configured post-authentication redirect on
2026-09-04 Friday
- Danknasty Router Hardware & Platform Diagnostics (
danknasty):- Identified router hardware platform: Broachlink NOAH4C V10 (Intel Atom E3845 quad-core @ 1.91GHz, 4GB RAM, 4x Intel I210 Gigabit Ethernet ports
em0-em3). - Enabled RJ45 serial console access on
com0at 115200 baud via/etc/boot.conf(stty com0 115200,set tty com0) and/etc/ttys(tty00 std.115200 vt220 on secure). - Diagnosed periodic SSH responsiveness latency: traced kernel system CPU lockups and interrupt activity using
vmstat -i,sensorsd, andbsd.re-config.
- Identified router hardware platform: Broachlink NOAH4C V10 (Intel Atom E3845 quad-core @ 1.91GHz, 4GB RAM, 4x Intel I210 Gigabit Ethernet ports
- Split-Horizon Unbound Authoritative LAN Resolution (
danknasty):- Analyzed Unbound configuration on
danknastyacting as authoritative LAN resolver (local-zone/local-datawithaaflag set in LAN responses). - Evaluated DNS high-availability options: Git-based Unbound configuration replication vs authoritative secondary migration to NSD.
- Analyzed Unbound configuration on
2026-09-03 Thursday
- SSH CA Documentation Modularization (HeckWiki):
- Cleanly partitioned SSH Certificate Authority documentation into two focused reference runbooks under the
LDAP+PAM+SSH CAbook:- SSH CA setup (Page 26): Core architecture, Ed25519 CA keys, Vaultwarden storage, signing principles, and Certificate Revocation Lists (KRL).
- SSH Client and Host Onboarding Guide (Page 112): Step-by-step out-of-band bootstrap and verification workflows for onboarding new clients and servers without circular SSH dependencies.
- Cleanly partitioned SSH Certificate Authority documentation into two focused reference runbooks under the
2026-09-02 Wednesday
- OpenBSD Router IPv6 Dynamic DNS Rewrite (
update_dns.py) (danknasty):- Diagnosed HTTP 400 bulk update failures on deSEC.io caused by regex string parsing errors and duplicate records in
unbound.conf. - Replaced legacy bash/awk script (
update_dns.sh) with robust Python 3 implementation (update_dns.py) using Python's nativeipaddresslibrary and typed dictionary deduplication. - Added unit test suite
test_update_dns.pywith 9 unit tests verifying zone record parsing, address synthesis, and deduplication. - Removed duplicate
libresprite.drheck.deventry and cleaned up interleaved records inunbound.conf. - Deployed
/etc/update_dns.py(0755 root:wheel), removed/etc/update_dns.sh, and signed/committed all changes to~/git/router_config.
- Diagnosed HTTP 400 bulk update failures on deSEC.io caused by regex string parsing errors and duplicate records in
- CrowdSec Log Synchronization & False-Positive Ban Remediation (
ul&danknasty):- Investigated repetitive
/var/log/authlogsession spam ondanknasty. - Identified redundant SSH polling in
crowdsec-sync-authlogonulrunning viacrowdsec-export-bans.timerevery 60s. - Disabled unnecessary SSH scraping, relying on native real-time UDP IPv6 syslog forwarding (
auth,authpriv.info) fromdanknastyto CrowdSec onul. - Resolved false-positive ban on VPS
rng(66.186.37.205) in<crowdsec-blacklists>PF table caused by unprivileged TCP connect scans.
- Investigated repetitive
- SSH CA Inventory Tracking & Streamlined Key Signing (
ul):- Implemented key archival and inventory management in
/usr/local/bin/sign-host-keyand/usr/local/bin/sign-user-keyarchiving signed public keys in/etc/ssh/ca_inventory/{hosts,users}with mandatory labeling for revocation tracking. - Built revocation utility
/usr/local/bin/revoke-ssh-key. - Documented out-of-band onboarding workflow on HeckWiki.
- Implemented key archival and inventory management in
2026-08-31 Monday
- System Package Maintenance & Toolchain Updates (
ul):- Executed system upgrades via
paru/pacman. - Updated Haskell libraries (
haskell-uuid-types,haskell-vector,haskell-witherable),shellcheck, and system info documentation. - Updated Opencode CLI,
csvtools, andnethack-git.
- Executed system upgrades via
2026-08-30 Sunday
- Demucs Stem Separation Deployment (
https://demucs.drheck.dev/):- Added
demucs.drheck.devDNS records tounbound.confondanknasty(~/git/router_config). - Built and deployed container running Demucs v4 web service (
app.py, HTML5 Multi-Track Mixer) on dedicated ULA IPv6 (fd77:7777:5010:0:1337:f1ac:d00d:de3:8000). - Supports
htdemucs_ft(Fine-tuned 4-Stem),htdemucs(4-Stem),htdemucs_6s(6-Stem with Piano & Guitar), andmdx_extra. - Features synchronized multi-track audio playback with per-stem Solo, Mute, Volume faders, and ZIP export.
- Provisioned Authentik ForwardAuth
demucsProxyProvider and Application in Authentik Embedded Outpost. - Configured
/etc/nginx/sites-available/demucsreverse proxy with 512MB max body size and 600s read timeout. - Added firewall isolation reject rule in
/etc/nftables.conf. - Created
demucsbackup and restore scripts withpar2parity in~/git/backups.
- Added
2026-08-29 Saturday
-
Sopro V2 TTS Deployment (
https://sopro.drheck.dev/):- Enhanced web interface and backend API to expose configurable acoustic solver
Steps(1-64 steps). - Added
sopro.drheck.devDNS records tounbound.confondanknasty(~/git/router_config). - Built and deployed container running
soprotts serve --device cpu --host 0.0.0.0 --port 7860 --no-openon dedicated ULA IPv6 (fd77:7777:5010:0:1337:f1ac:d00d:509:7860). - Provisioned Authentik ForwardAuth
soproProxyProvider and Application in Authentik Embedded Outpost. - Configured
/etc/nginx/sites-available/soproreverse proxy with WebSocket support and pushed to~/git/nginx. - Added firewall isolation reject rule in
/etc/nftables.confand pushed to~/git/configs. - Created
soprobackup and restore scripts withpar2parity in~/git/backups.
- Enhanced web interface and backend API to expose configurable acoustic solver
-
BentoPDF Deployment (
https://bentopdf.drheck.dev/):- Added
bentopdf.drheck.devDNS records tounbound.confondanknasty(~/git/router_config). - Deployed
ghcr.io/alam00000/bentopdf:latestcontainer on dedicated ULA IPv6 (fd77:7777:5010:0:1337:f1ac:d00d:bdf:8080). - Provisioned Authentik ForwardAuth
bentopdfProxyProvider & Application in Authentik Embedded Outpost. - Configured
/etc/nginx/sites-available/bentopdfreverse proxy and pushed to~/git/nginx. - Added firewall isolation reject rule in
/etc/nftables.confand pushed to~/git/configs. - Created
bentopdfbackup and restore scripts withpar2parity in~/git/backups.
- Added
-
SSL Certificate Automation & SSSD TLS:
- Fixed expired LDAP
CertificateKeyPairinside Authentik database viaak shelland restartedauthentik-ldap. - Deployed
/usr/local/bin/update-authentik-cert.shautomated renewal hook inacme.shconfiguration with/etc/sudoers.d/acme_sslNOPASSWD grant.
- Fixed expired LDAP
-
Docker
.env& Secret File Hardening:- Stripped POSIX extended ACLs (
setfacl -b) across all.envfiles and SSH keys in/data/docker/. - Restricted permissions to
0640 root:docker-dataand parent directories to0750.
- Stripped POSIX extended ACLs (
-
Universal Admin Account Transition:
- Transferred administrative roles to
akadmin/adminacross Authentik, Gitea, Immich, Anchor, BookStack, Nextcloud, Kavita, Navidrome, and RomM. - Demoted
luketo standard user on web applications while preservingwheel(sudo) access on host OS.
- Transferred administrative roles to
-
PostgreSQL Authentication Hardening:
- Removed obsolete
0.0.0.0/0and::/0wildcard rules for non-existentinfisicalrole from/data/postgres/data/pg_hba.conf.
- Removed obsolete
-
nftablesEgress Isolation (chain output):- Added reject rules (
meta skuid != { 0, 33, 1101 } reject) inchain outputfor all 26 active ULA IPv6 backend services to prevent unprivileged local processes onulfrom bypassing Authentik ForwardAuth. - Tracked
/etc/nftables.confin~/git/configs/nftables.conf.
- Added reject rules (
-
Nginx Hash Table Performance Tuning:
- Added
variables_hash_max_size 2048;andvariables_hash_bucket_size 128;to/etc/nginx/nginx.confand pushed to~/git/nginx.
- Added
-
Authentik 2026.8.0 Outpost & OIDC Remediation:
- Populated missing
authentication_flow(default-authentication-flow) andinvalidation_flow(default-invalidation-flow) UUIDs across all 19ProxyProviderdatabase records, fixing Rust Embedded Outpost deserialization crash and restoring ForwardAuth across all services. - Updated OpenID
emailScopeMapping expression to enforceemail_verified = Truefor Better-Auth (WIPStudio) / SSO client logins.
- Populated missing
-
Cockpit Removal:
- Uninstalled
cockpitandcockpit-dockerpackages; purged/etc/motd.d/cockpit,/etc/issue.d/cockpit.issue, and/run/cockpit.
- Uninstalled
-
Arch
.pacnewMerge & Maintenance:- Adopted updated upstream makepkg drop-ins and TPM2 FAPI JSON profiles.
- Tuned
/etc/pacman.confwithDownloadUser = alpmandParallelDownloads = 5. - Cleaned all lingering
.pacnewfiles in/etc/.
-
BMO95 Display Mirroring (
~/git/audio_config):- Installed
wl-mirroronbmo95and configured Sway (common/sway/config) to mirror DisplayPortDP-3to HDMIHDMI-A-1(TV) via zero-copy DMA-BUF. - Consumed Sway configuration into
~/git/audio_configand committed changes.
- Installed
-
Studio Control (
scontrol) UI & Toggle Controls:- Added
POST /api/power/{device}/{action}supporting individual Sub-GHz RF outlet toggling (pa,sub,rack,computer,tv,neewer,mrc,all) andPOST /api/atx/{action}for PiKVM motherboard ATX button clicks. - Added Individual Power Controls view with dedicated toggle buttons and view-switcher button to
scontrol.drheck.dev. - Checked in and pushed to
https://git.drheck.dev/luke/scontrol.git.
- Added
-
Kavita Arch Linux / AUR Upgrade & Database Migrations (
ul):- Checked SQLite database integrity on
/opt/kavita/config/kavita.db(PRAGMA integrity_check). - Created safety database backup at
/opt/kavita/config/kavita.db.pre_0.9.1_upgrade. - Restarted
kavita.servicefollowingparuupgrade to Kavitav0.9.1.0. - Executed automatic backup (
/opt/kavita/config/temp/migration/0.9.0.2) and applied database migrations (MetadataSettingFieldRenumber,ManualMigrateOriginalNameBackfill,ManualMigrateNormalizedOriginalNameBackfill,ManualMigrateLastReadDates,ManualMigrationExternalSeriesMetadataIds,ManualMigrationCorrectAuditStatus). - Verified service initialization and HTTP 200 on
http://[fd77:7777:5010:0:1337:f1ac:d00d:7ead]:5000/.
- Checked SQLite database integrity on
-
Full Docker Fleet Update & Service Migrations (
ul):- Authentik: Created PostgreSQL database backup at
/tmp/authentik_pre_upgrade.dump. Upgradedserver,worker, andldapto2026.8.0. Applied blueprint and Django migrations across all applications. Verifiedemail_verified: Trueinak shellscope mapping and testedhttps://auth.drheck.dev/. - Infra (Valkey): Upgraded shared Redis/cache container to
valkey/valkey:8.1-alpine(v8.1.9). Verified active session reconnection for Authentik, Immich, and Nextcloud. - Immich: Upgraded
immich-serverandimmich-machine-learningto latestv3.1.0builds with GPU acceleration. Verifiedhttps://photos.drheck.dev/. - Kasm Workspaces: Upgraded manager container to
lscr.io/linuxserver/kasm:latest(Kasm 1.19.0). Initialized internal services and verifiedhttps://kasm.drheck.dev/. - BookStack: Upgraded
bookstack(v26.05.4) and internalmariadb:latest. Verified Laravel migrations andhttps://wiki.drheck.dev/. - Penpot: Upgraded
frontend,backend,exporter(v2.17.2),postgres:15.19, andredis:7. Verifiedhttps://penpot.drheck.dev/. - Anchor: Upgraded image tag to
ghcr.io/zhfahim/anchor:0.16.0. Executed database schema migrations and verifiedhttps://keep.drheck.dev/. - Vaultwarden: Upgraded to
vaultwarden/server:latest(v1.37.2). Verifiedhttps://pw.drheck.dev/. - Navidrome: Upgraded to
deluan/navidrome:latest(v0.63.2). Verified web and Subsonic API endpoints onhttps://navidrome.drheck.dev/andhttps://music.drheck.dev/. - WebShell / Step-CA: Upgraded
smallstep/step-ca:latest(v0.30.2). Verified HTTPS on port 9000. - WIPStudio / MinIO: Upgraded storage backend to
minio/minio:latest. - YOURLS: Upgraded
yourls:latest(1.10.5) and internalmariadb:10.11. - Drawpile: Upgraded server to
drawpile/drawpile-srv:2(2.3.0). Verified TCP/WebSocket listeners on ports 27750-27752. - Stateless Web Services: Upgraded
wick(nginx:alpine),webrcade(webrcade:latest),excalidraw(excalidraw:latest), andtldraw(ratneo/tldraw:latest). - Offsite Cloud Backups: Executed full service backups and synced to Google Drive and Proton Drive via rclone (
2026-08-29_112824).
- Authentik: Created PostgreSQL database backup at
2026-08-28 Friday
- Funkwhale Audio Streaming & Range Request Fix (
ul):- Diagnosed audio playback failures and stream disconnects on Funkwhale API endpoints (
/api/v1/listen/.../?upload=...and transcoded audio streams). - Resolved Nginx reverse proxy byte-range streaming failure (
206 Partial Content) by updating/data/docker/funkwhale/funkwhale_nginx.templateand volume mounting custom/data/docker/funkwhale/mime.typesinside the container. - Recreated container and verified byte-range audio playback via
curl -i -r 0-65535returning HTTP206 Partial Content. - Updated Funkwhale backup and restore scripts (
/home/luke/git/backups/ul/scripts/backup/funkwhaleandrestore/funkwhale) to includemime.typesandfunkwhale_nginx.templatein backup tarballs (verified withshellcheck).
- Diagnosed audio playback failures and stream disconnects on Funkwhale API endpoints (
2026-08-27 Thursday
- System Package Maintenance & Kernel Audit (
ul):- Executed system package upgrades via
paru -Syu/pacman -Syu. - Updated mirrorlist and restarted
reflector.service. - Verified kernel image and module consistency using
kernel-checkagainst/boot/vmlinuz-linux-lts.
- Executed system package upgrades via
2026-08-26 Wednesday
- Studio Control Gateway & ATX Power Automation (
ul&pikvm-studio):- Integrated ATX motherboard power button controls (
kvmd-cli atx) intostudio-powerCLI and synchronized executable betweenulandpikvm-studio. - Resolved container DNS and IPv6 resolution for
bmo95.drheck.devinsidescontrolDocker container oninfra_netbridge. - Updated and redeployed
app.pyin/data/docker/scontroland committed changes to/home/luke/git/scontrol.
- Integrated ATX motherboard power button controls (
2026-08-24 Monday
- Studio PiKVM Hardware & Perimeter Ingress Security (
ul&pikvm-studio):- Configured dual-hostname architecture:
studio-kvm-ssh.drheck.dev(direct hardware & SSH) andstudio-kvm-web.drheck.dev(Authentik-gated Web UI). - Implemented kernel-level outbound firewall isolation in
/etc/nftables.conf(chain output) onulblocking non-root, non-nginx (http, UID 33) users from connecting to PiKVM ports 80/443. - Configured Pre-Shared Proxy Secret Header (
X-Proxy-Secret) in/etc/nginx/certs/studio_secret.conf(mode0600, owned byhttp:http). - Configured Mutual TLS (mTLS) with internal CA and client certificate authentication (
/etc/nginx/certs/pikvm_ca.crt,pikvm_client.crt,pikvm_client.key). - Updated Authentik
ProxyProviderandApplication(Studio PiKVM) with implicit consent (default-provider-authorization-implicit-consent) and groupstudioaccess restriction. - Set
kvmd.auth.enabled: falsein/etc/kvmd/override.yaml(committed in/home/luke/git/pikvm_studio). - Updated Studio PiKVM & Studio Control Gateway documentation.
- Configured dual-hostname architecture:
- Studio Control Gateway Deployment (
scontrol.drheck.dev) (ul):- Developed and deployed asynchronous FastAPI orchestration service (
scontrol) in/data/docker/scontrolbinding to dedicated ULA IPv6 address[fd77:7777:5010:0:1337:f1ac:d00d:5c01]:8000. - Implemented tactile mobile-optimized dark UI with dynamic state buttons, live monospace console, and status indicators.
- Generated dedicated service ed25519 key (
/data/docker/scontrol/id_scontrol) registered inluke@studio-kvm-ssh.drheck.dev:~/.ssh/authorized_keys. - Integrated real-time Server-Sent Events (SSE) streaming pipeline (
/api/stream/onand/api/stream/off):- RF Power Outlets: switches all 7 studio devices via
studio-power all onover SSH. - ATX Motherboard: queries PiKVM
/api/atxand pulses motherboard power button if off. - Studio PC Boot: probes DNS hostname
bmo95.drheck.devwith a 100-second boot timeout. - Soundcards & Audio: audits ALSA/JACK multi-channel recording interfaces.
- RF Power Outlets: switches all 7 studio devices via
- Created Nginx ForwardAuth reverse proxy configuration
/etc/nginx/sites-available/scontrol(symlinked to/etc/nginx/sites-enabled/scontrol) with SSE buffering bypass. - Configured Authentik
ProxyProviderandApplication(Studio Control) bound to Authentik Groupstudio. - Created Git repository at
/home/luke/git/scontroltrackingbuild.sh(verified withshellcheck),Dockerfile,entrypoint.sh,app.py,docker-compose.yml,templates/index.html, andREADME.md. - Created, tested, and verified backup/restore scripts (
scontrol_backupandscontrol_restorein/home/luke/git/backups/ul/scripts/) withpar210% redundancy.
- Developed and deployed asynchronous FastAPI orchestration service (
- Studio PC (
bmo95) Boot & Audio Stack Audit:- Resolved
libkmod: ERROR: conf_files_filter_out: Cannot stat directory entry: /etc/modprobe.d/no_intel_sound.confby replacing early-boot symlink with a direct regular file (blacklist snd_hda_intel). - Verified 4x Echo AudioFire 12 FireWire interfaces (
hw:AudioFire12,0..hw:AudioFire12_3,0), Emagic Unitor8 USB MIDI interface,jackd,zita-a2j/zita-j2abridges, and autostartingardour.serviceDAW instance.
- Resolved
- SSH Command Tracking Enhancement (
ul):- Upgraded
/usr/local/bin/audit-loghelper script to automatically decode hexadecimal kernel byte strings into plaintext and sort rotated log files (audit.log.*) in chronological order. - Updated SSH Command Tracking Guide documentation.
- Upgraded
2026-08-22 Saturday
- Sub-GHz RF Studio Power Automation (
pikvm-studio):- Integrated Great Scott Gadgets YARD Stick One (
1d50:605b, CC1111) onpikvm-studioto switch 433.92 MHz RF wireless power relays. - Reverse-engineered 33-bit Princeton / Fosmon PWM baseband protocol ($T_e = 291.27\text{ }\mu\text{s}$, 3433.22 baud).
- Identified and resolved critical CC1111 24.0 MHz reference crystal mismatch (recalculated
FREQ = 0x121473from 26.0 MHz default0x10B071, resolving a 33 MHz carrier transmission error). - Resolved double sync gap bug and configured 30-frame contiguous burst streaming (630 bytes, 1.468 s) to satisfy superheterodyne receiver AGC settling.
- Installed
/usr/local/bin/studio-powerCLI tool managing all 7 studio devices and whole-studio batch switching. - Built standalone C direct transceiver utilities (
yard_tx.c,flipper_replay.c,cc1111_rfcat.h) withlibusb-1.0. - Created, configured, and pushed Gitea repository at studio_yardstick.
- Documentation
- Integrated Great Scott Gadgets YARD Stick One (
- PiKVM GPG / Pass Pinentry TUI Fix (
pikvm-studio):- Resolved
gpg: public key decryption failed: Screen or window too smallwhen executinggpush passin subshell pipes. - Configured
/home/luke/.gnupg/gpg-agent.confwithpinentry-program /usr/bin/pinentry-ttyandallow-loopback-pinentry. - Configured
export GPG_TTY="$(tty)"andgpg-connect-agent updatestartuptty /byein~/.bashrconpikvm-studio.
- Resolved
- 48-Channel FireWire Synchronous Audio Stack (
bmo95):- Consolidated 4x Echo AudioFire12 interfaces into a sample-accurate 48-channel synchronous recording engine on Linux 6.13 PREEMPT_RT kernel.
- Established hardware color mapping (
RedMasterfc79,BlueSlave 19815,GreenSlave 28525,YellowSlave 394e8) with 75Ω BNC Word Clock daisy-chain wiring. - Configured master
jackdbound to Red with synchronouszita-a2j/zita-j2aduplex ALSA bridges (locked at $\rho = 1.0000000000$). - Conducted 10-minute continuous 1 kHz stress test proving absolute phase synchronization (0.000 ms / 0 samples drift across 28.8M samples).
- Deployed systemd user services (
jack.service,zita-*-{blue,green,yellow}.service) and canonical port alias mapping (Red_01..12,Blue_01..12,Green_01..12,Yellow_01..12). - Documentation
- Studio Hardware Documentation (Setup Detail) (
ul):- Published comprehensive hardware register maps, wiring diagrams, and automation runbooks for the recording studio, audio stack, and RF power systems under the new Setup Detail book.
- BookStack KaTeX TeX Math & Typography Integration (
ul):- Globally enabled KaTeX 0.16.11 client-side LaTeX math rendering across BookStack via
app-custom-head. - Implemented a CSP
strict-dynamiccompliant nonced JavaScript loader to dynamically load KaTeX assets without violating browser security policies. - Published the Meta: Wiki Capabilities, TeX Math & Typography Reference guide documenting TeX math syntax, Japanese Furigana (
<ruby>), callout alert banners, and collapsible accordions. - Updated the Agent Guide: Updating BookStack Wiki Pages with typography standards, CLI helper workflows, and operational gotchas.
- Verified automated backup and restore scripts (
/home/luke/git/backups/ul/scripts/{backup,restore}/bookstack) properly archive and restore database settings and media withpar2parity.
- Globally enabled KaTeX 0.16.11 client-side LaTeX math rendering across BookStack via
2026-08-20 Thursday
- pikvm-studio (PiKVM V4 Plus) Configuration & Dotfile Management:
- 1080p60 Video Pass-Through & Capture Optimization:
- Imported and applied the
v4plus.no-1920x1200EDID preset viakvmd-edidconfto lock capture to uncropped 1920x1080 @ 60Hz. - Enabled
gpu_freq=700in/boot/config.txtfor H.264 60fps hardware encoding boost. - Configured
h264_boost: trueanddesired_fps: 60in/etc/kvmd/override.yaml.
- Imported and applied the
- Chezmoi Configuration Repository Setup:
- Installed and configured
chezmoionpikvm-studio(~/.config/chezmoi/chezmoi.yaml) withsourceDir: ~/git/pikvm_studioanddestDir: /. - Established clean 2-stage signed Git history: baseline vanilla OS configuration followed by 1080p60 optimizations.
- Connected and pushed repository to Gitea (
https://git.drheck.dev/luke/pikvm_studio.git) viagpush.
- Installed and configured
- 1080p60 Video Pass-Through & Capture Optimization:
- SSH Auth Socket & GPG Agent Fixes:
- Resolved SSH key retention issue in
/home/luke/bin/auth_socket.shby prioritizing existing live agent sockets and testing responsiveness withssh-add -lrather than relying on obsolete PID suffix parsing. - Cleaned up stale lockfiles in
~/.gnupg/onpikvm-studioand configuredpinentry-program /usr/bin/pinentry-cursesin~/.gnupg/gpg-agent.conf. - Successfully committed and pushed updated password store entry (
gitea/token/pikvm_studio) viagpush pass.
- Resolved SSH key retention issue in
- HeckWiki Documentation & Host Maintenance:
- Authored and verified HeckWiki documentation pages for pikvm-studio and automation.
- Verified LTS kernel update (
kernel-check), performed planned system reboot onul, and verified all running systemd services and Docker containers viastatus_all.
2026-08-19 Wednesday
- VPS rng Assessment & Infrastructure Monitoring Plan:
- Inspected VPS
rng(rng.drheck.dev) hardware resources, memory, disk, network, and listening services. - Authored and published the Infrastructure Monitoring & Alerting Plan on HeckWiki detailing metrics, alerting strategy, and agent deployment.
- Inspected VPS
- PiKVM Network Configuration:
- Verified dual-stack IPv4/IPv6 reachability and latency response (
fping) forpikvm-studio. - Added host entry and identity mapping in
~/.ssh/configfor direct SSH connectivity.
- Verified dual-stack IPv4/IPv6 reachability and latency response (
- System Package & Media Maintenance:
- Upgraded host packages via
paru -Syuincluding Java runtime environment updates. - Built and installed latest
nethack-git(5.0.0 release) from AUR. - Restarted
plexmediaserverand monitored service journal logs.
- Upgraded host packages via
2026-08-18 Tuesday
- ul NVIDIA Driver Upgrade & Container CDI Fix:
- Diagnosed Immich Outage: Immich server (
immich_server) and machine learning (immich_machine_learning) exited (127) after host NVIDIA driver upgrade (580.173.02→580.178.04). The OCI runtime failed mounting/usr/lib/libEGL_nvidia.so.580.173.02due to obsolete paths in/etc/cdi/nvidia.yaml. - Regenerated CDI Spec & Restored Services: Ran
nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yamlto update the CDI specification for580.178.04, restarted the Immich container stack, and verified healthy container status and restored upstream proxying via Nginx (photos.drheck.dev). - Automated via Pacman Hook: Created
/etc/pacman.d/hooks/nvidia-cdi.hookwith aPostTransactiontrigger onnvidia*and*nvidia*packages to automatically regenerate/etc/cdi/nvidia.yamlon futureparu/pacmandriver updates.
- Diagnosed Immich Outage: Immich server (
- Opencode Wiki Skill & Knowledge Integration:
- Embedded HeckWiki / BookStack management rules and helper workflows into global Opencode instructions (
~/.config/opencode/INSTRUCTIONS.md). - Created dedicated skill
~/.config/opencode/skill/update-wiki/SKILL.mdfor seamless automated wiki editing and querying.
- Embedded HeckWiki / BookStack management rules and helper workflows into global Opencode instructions (
- Funkwhale Album Track Ordering Fix:
- Diagnosed track numbering and sort discrepancy in Funkwhale where album and artist views displayed tracks out of sequence.
- Directly updated track
positionattributes and calibratedcreation_datetimestamps in the Funkwhale database via Django management shell (/app/api/manage.py shell) for Album 10 so both default chronological sorting and album sequence sorting correctly align.
2026-08-17 Monday
- bmo95 Arch Linux Boot & dmesg Diagnostics & Resolution:
- Resolved FireWire Audio Crash Loop & Massive dmesg Spam:
- Diagnosed >50,000 repeating kernel errors (
snd_fireworks fw1.0: oPCR0: plug is already in use) and FireWire CMP stack trace warnings (sound/firewire/cmp.c:300/cmp.c:193). - Fixed missing ALSA period count in
zita-j2a.serviceandzita-a2j.serviceby adding-n 3(required bysnd_fireworksdriver) and fixed client naming (-j Up/-j Up_In). - Cleaned up
set-port-aliases.shto remove conflictingpkill -9invocations and background spawns that were killing services mid-handshake and wedging the FireWire CMP isochronous plug state. - Fixed hardware clock synchronization sequence: moved clock configuration into
firewire-ready.service(wait-for-firewire.sh) using dynamic GUID-to-node matching (0x00148602c583fc79-> Internal Master,0x001486a296a59815-> Word Clock Slave) with a 2-second bus settling delay before starting JACK. - Verified full 24-channel capture/playback routing stably running in JACK with zero kernel errors on boot.
- Diagnosed >50,000 repeating kernel errors (
- Udev Rules & System Tuning:
- Fixed udev substitution syntax in
50-firewire-irq.rules(pipingpgrepintoxargsto avoid invalid$()substitution error in udevd). - Fixed quote syntax and
power/controlattribute assignment in50-usb-midi.rulesfor low-latency Emagic Unitor8 USB MIDI operation. - Configured
WIRELESS_REGDOM="US"in/etc/conf.d/wireless-regdom.
- Fixed udev substitution syntax in
- Wireless Regulatory Database: Installed
wireless-regdbpackage to resolveDirect firmware load for regulatory.db failed with error -2. - PCIe Correctable AER Timeouts: Added
pci=noaertoGRUB_CMDLINE_LINUX_DEFAULTin/home/luke/git/audio_config/common/gruband regenerated GRUB config to eliminate spurious correctable error logging from the ASMedia USB 3.1 controller. - ASUS ACPI SuperIO Hardware Monitor Conflict: Added
acpi_enforce_resources=laxto GRUB kernel parameters to resolve ACPI OpRegion conflict on ASUS PRIME Z270-A motherboard.
- Resolved FireWire Audio Crash Loop & Massive dmesg Spam:
2026-08-16 Sunday
- bmo95 Audio Workstation Infrastructure & Low-Latency Tuning:
- Multi-Profile Audio Config Repo: Established
/home/luke/git/audio_configgit repository tracking audio profiles (jack-alsa,pipewire), metadata mappings (filedata.json), and custom management scripts (apply-profile,consume). - Sound Card & Clock Synchronization: Configured dual Echo AudioFire12 interfaces with forced internal clock on primary card (Node 1 / Bottom card) and Word Clock sync on secondary card (Node 2 / Top card).
- ALSA + JACK2 Engine Setup: Configured JACK2 server via ALSA backend (48kHz / 512 period / 3 buffer) for low-latency audio processing.
- Systemd User Service Modularization: Modularized JACK audio services into individual systemd user units (
jack.service,firewire-ready.service,zita-j2a.service,zita-a2j.service,a2jmidid.service,jack-aliases.service,patchage.service,ardour.service). - Custom Port Aliases & Metadata: Scripted automatic routing and pretty-name metadata (
Down_01..Down_12andUp_01..Up_12) for hardware inputs and outputs. - Realtime System & Kernel Tuning: Configured GRUB kernel parameter
threadirqs, udev rules for FireWire IRQ thread scheduling (50-firewire-irq.rules), HPET/RTC audio timers, sysctl swappiness, and PAM realtime privileges. - Software & Documentation: Enabled Ardour 9 integration (
use-jack-pretty-names) and added comprehensive architecture and routing documentation (README.md).
- Multi-Profile Audio Config Repo: Established
- System SSH Audit Logging Setup on bmo95:
- Installed
auditpackage, enabledauditd, and configured/etc/audit/rules.d/execve.ruleswith strictauid >= 1000human session command tracking. - Deployed
/usr/local/bin/audit-logexecution tracking script.
- Installed
2026-08-12 Wednesday
- BookStack Wiki & Nginx Reverse Proxy SSO Integration:
- Reverse Proxy Routing: Configured Nginx
/loginredirect behavior. - Unauthenticated Homepage Auto-Redirect: Implemented DOMContentLoaded JavaScript trigger in BookStack's
app-custom-headsetting. - Ensured unauthenticated visitors accessing
https://wiki.drheck.dev/are automatically forwarded to Authentik (/login), while keeping deep links (e.g./books/...) publicly viewable. - this is for convenience, not security. I just don't want to click in "login" if I visit wiki/
- Reverse Proxy Routing: Configured Nginx
2026-08-10 Monday
- Opencode CLI Agent Configuration & Setup:
- Configured Opencode settings (
opencode.json/opencode.jsonc) and system instructions. - Added instruction mandate to comment bash tool command batches.
- Deployed global Opencode skills under
~/.config/opencode/skill/.
- Configured Opencode settings (
- SSH Audit Logging & Command Tracking:
- Configured Linux
auditdrules onulforauid >= 1000system call executions. - Configured OpenBSD process accounting (
acct) and verbose SSH payload auditing ondanknasty. - Implemented unified
audit-logCLI helper scripts across both machines. - Documented SSH command tracking guide and created
daily-change-listskill.
- Configured Linux
2026-08-09 Sunday
- documenting services
- in this process saw that kavita permissions were messed up, fixed
- saw that moebius is like halfway removed but don't know why, leading to the realization that I need to track commands.
- SSH Command Tracking
- now I remember why it was removed, because it sucks. The "web service" is just a viewer for multiple drawers connecting with thier own clients.
- some updates to the crowdsec blocks. realized it has crowed sourced blocking rules, not sure about implementing them though.
2026-08-08 Saturday
- setting up navidrome, and other audio related software.
- put albums up on funkwhale
- power outtage caused IPv6 netblock to change, the IPv6 update scripts still suck. Tried to make them better
- had AI write a script to pull down missing artwork for Jellyfin
- noticed collation version mismatch when poking around in posgresql.
- created a short-link service
- drheck.dev/$short_link
- editable at drheck.dev/admin
- Check Which Databases Have Collation Version Mismatches
sudo -u postgres bash -c 'for db in $(psql -At -c "SELECT datname FROM pg_database WHERE datistemplate = false;"); do
echo "=== DATABASE: $db ==="
psql -d "$db" -c "SELECT 1;" 2>&1
done'
- Run amcheck to Detect Corrupted B-Tree Indexes
sudo -u postgres bash -c '
for db in spacebar immich nextcloud_db anchor authentik postgres gitea nextcloud; do
echo "=== AMCHECK: $db ==="
psql -d "$db" -c "
CREATE EXTENSION IF NOT EXISTS amcheck;
SELECT c.relname, bt_index_check(c.oid, true)
FROM pg_index i
JOIN pg_class c ON c.oid = i.indexrelid
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = '\\\\\\\\''i'\\\\\\\\'' AND i.indisready AND i.indisvalid AND n.nspname = '\\\\\\\\''public'\\\\\\\\'';" 2>&1
done'
- Reindex Databases and Refresh Collation Versions
sudo -u postgres bash -c '
for db in spacebar immich nextcloud_db anchor authentik postgres gitea nextcloud; do
echo "=== REINDEXING & REFRESHING: $db ==="
psql -d "$db" -c "REINDEX DATABASE \\\\\\\\"$db\\\\\\\\";"
psql -d "$db" -c "ALTER DATABASE \\\\\\\\"$db\\\\\\\\" REFRESH COLLATION VERSION;"
done'
- Verify All Warnings Are Cleared
sudo -u postgres bash -c '
for db in $(psql -At -c "SELECT datname FROM pg_database WHERE datistemplate = false;"); do
echo "=== VERIFY: $db ==="
psql -d "$db" -c "SELECT 1;" 2>&1
done'
2026-08-05 Wednesday
- updates to crowdsec
- parsing more SSH errors
- generated a table of banned IPs but it's not very interesting. Live world view would be cooler
2026-08-04 Tuesday
- docker updates
- anchor: 0.13.0 → 0.14.0
- authentik: 2026.5.5 → 2026.5.6
- bookstack: Updated to latest image
- immich: v3.0.3 → v3.1.0
- infra (valkey): Updated to latest image build
- kasm: Updated to latest image
- nextcloud: 34.0.1-apache → 34.0.2-apache
- penpot: Frontend, backend, exporter, postgres, and redis updated
- romm: Updated to latest image (5.1.0)
- vaultwarden: Updated to latest image
- webrcade: Updated to latest image
- wick: Updated to latest image
- installed crowdsec
- review of publicly accesible service logs (eg: wiki) shows no bot traffic (yet)!
- review of nginx logs straight from the public IPs shows bot traffic looking for common vulnerabilities, exploits, and staged malware.
- documentation
2026-08-03 Monday
- pull all new docker images and prepare for update
- in preparation for more users, ensure unencrypted backups aren't world readable
- gdrive backup credentials failed again
- finally cleaned up google cloud project, renamed properly and created two separate subprojects, google sso, and rclone for ul
- redid the certs for rclone, tested good
- ran a backup to repare for docker update and all the online backups had no files except the instructions!
- setting all the backups to root rendered the rclone script useless.
- Trying all backup files owned by my user with a plan
- create a dedicated backup user
- create a new gpg key for backups
- backup gpg key
- move rclone credentials to backup user
- chown all backups to 700 backup user
- Profit!
2026-08-02 Sunday
- Removed old unused "web shells" like the old ttyd, whatever else. Also warpgate.
- Made webshell awesome. Picked a single font, created a service to show ANSI art on login
- made big improvements to ansview
- first render is completely in memory, remove all jumps and relative and exact positions. This allows the final product to be rendered correctly when not placed at the first screen column.
- due to this success, added an auto wide mode, if artwork can fit on the screen multiple times horizontally, do it
- also truncate the artwork if viewing on a smaller screen rather than an awful wrap. This is great for the phone shell.
2026-08-01 Saturday
- Created webshell, and spent a lot time trying to make it customizable per user. This was a failure.
2026-07-31 Friday
- Set up moebius in KASM, generated a KASM setup guide.
2026-07-30 Thursday
- giving up on warpgate for now, trying ttyd again with step-ca to tie it into OIDC. I really want an authentik OIDC enabled direct web -> shell.
2026-07-28 Tuesday
- got warpgate to stop crashing but I'm not sure how I can use it for a web based terminal.. we'll see
2026-07-26 Sunday
- accidentally blocked the git users with the new firewall rules, allowed it to access the gitea service and we are able to upload again
- started to set up warpgate as it looks like it can provide a shell that can login with OIDC
2026-07-25 Saturday
- replaced gemini-cli with opencode, it's way better
- went through each docker service moving off of the default 1000 UID
- removed broken web "shells"
- Made a process to generate short lived ssh certs for web users to get a shell without typing a password but it felt really insecure and I think you could impersonate other users, so I killed it.
2026-07-23 Thursday
- Set nginx to cache large uploads on the ZFS array as / was filling up with video uploaded from immich
- Set permanent redirects on short names in the browser for convenience, eg: http://photos -> https://photos.drheck.dev/
2026-07-22 Wednesday
- Configured rclone for Google drive and Proton drive. Added this to the backup scripts. Now we have automated on-line backups.
- created rclone client config in Google's cloud console
2026-07-21 Tuesday
- transmission would timeout quickly since exposed behind authentik. After some research I modifed the nginx config to start forwarding
$host,$remote_addr,$proxy_add_x_forwarded_for, and$scheme.
2026-07-20 Monday
- IPv6 netblock was wrong again. This time an IPv6 netblock change was detected then the network went out. This caused the API call to desec.io to fail. We were writing the new IPv6 netblock unconditionally though so no more updates were going to happen. Script is updated 1 2
- also added logging to the desec.io call in change 2 ^
2026-07-19 Sunday
- Tested LDAP users
- could log in but did not have the ability to choose the window environment
- LDAP guide updated to fix this problem
2026-07-17 Friday
- LDAP guide updated to add
systemdtoshadowfor NSS. This was breaking the graphical boot environment on Mitsuki's laptop. - write-up
2026-07-16 Thursday
- router updates
- Remote IPv6 was not updated in public DNS. The router update script was failing to execute in cron
- shebang was /usr/local/bin/bash but
- cron executed /bin/ksh $script... (just openbsd things!)
- fixed
- also router IPv6 update script updated to use persistent storage for IPv6 address as a reboot would remove the older address
- bad firewall rule forwarded all IPv6 traffic arriving on 22 to ul
- fixed
- Remote IPv6 was not updated in public DNS. The router update script was failing to execute in cron
2026-07-13 Monday
- created ldap enable doc and test on desktop
- works!
- completed SSH cert setup for deskop
- works!
- drafted a process to auto generate ssh keys and sign them with authentik
2026-07-12 Sunday
- created "admin" specific firefox profile on desktop
- cleared all old disparate passwords for the old individual service passwords
- fixed www server for mitsuki
- checked in kanji service in gitea
- added bounding boxes
- changed the stroke order color to be more legible and not run into the background
2026-07-11 Saturday
- created this server change log
- added "backup_all" script to run each service backup
- finally checked in backup/restore scripts
- separated backup output into current and all previous to simplify disk backup
- modified nginx config for immich, upload cap 30GB -> 100GB