Changelog
Release history for HarbourOS. Each version is tagged and available on GitHub Releases.
Production Flux CUMULUS node support. Run a Flux node on the same Raspberry Pi 5 as Plex — fully managed from the HarbourOS dashboard with no source patching required.
New Features
- Flux node installer with hardware pre-flight checks (RAM, NVMe write speed, architecture)
- Automatic
flux.confgeneration with Insight Explorer mode (insightexplorer=1,experimentalfeatures=1,addressindex=1,timestampindex=1,spentindex=1) — eliminates P2SH transaction crashes in FluxOS without source patching - Correct
zelcash.serviceusing explicit-datadir=/var/lib/fluxd -conf=/var/lib/fluxd/flux.confflags, eliminating config path ambiguity between fluxd and FluxOS - Flux Node dashboard tab: node status (CONFIRMED/STARTED/EXPIRED), tier, sync progress, benchmark results, Docker container count
- Wallet monitoring: balance with collateral note, earned today/total, last payout date, payout count
- Explorer scanned height: live Insight Explorer indexing progress
- Benchmark status card: CPU cores, RAM, disk write speed (MB/s), EPS, download/upload speeds, tier qualification
- Node action buttons: Start, Stop, Restart — all via the UI
- Flux install log streaming in the UI
- Automatic
fluxbenchdRPC credential correction (fluxbenchuser/fluxbenchpassword) matching FluxOSbenchmarkService.jshardcoded values - P2SH compatibility patch script retained as legacy/emergency-use-only fallback
- Loose reverse-path filtering (
rp_filter=2) for correct Flux P2P peer routing through NAT/port forwarding
Bug Fixes
- Install Updates button: Fixed silent failure —
sudo bash -c "apt-get update && apt-get upgrade"was blocked by sudoers (only individualapt-getcommands were permitted). Split into two separate calls.
Infrastructure
apply-update.shnow deploys Flux sudoers, install script, and patch script on every update.gitignorehardened:wallet.dat,flux.conf,fluxnode.conf,*.dat,*.ldb,*.sst,migration-backup-*/
Dashboard UI overhaul — animated SVG ring gauges for system stats, System & Storage merged into one full-width card, glass polish across all cards, and icon colour fixes.
Improvements
- Animated SVG ring gauges replace plain stat text — CPU, Memory, Temp, and Disk each fill to their live % with a smooth 0.6s transition (CasaOS-inspired)
- System and Storage widgets merged into one full-width card with a single clean row of four rings
- Glass card border opacity increased for better card definition and depth
- Inset 1px top-edge highlight added to cards and app icons — premium lit-from-above look used by CasaOS and Umbrel
- Border-radius standardised to a two-value system (16px primary / 12px secondary) — was five inconsistent values
- Widget section titles more legible (0.6 → 0.7rem); stat labels 0.6 → 0.65rem
- Widget padding standardised to 1rem (was asymmetric 0.9 / 1.1rem)
Fixes
- Movie and TV show library icons now match the “Running” blue (#2563eb) for visual consistency
- “Running” and “Plex Running” status indicators restored to blue
Episode Manager, Plex session monitoring, one-line curl installer, CPU spike fixes, dashboard UI improvements, and core OS features: security tab, update transparency, mount diagnostics, storage health, backup/restore.
New Features
- Episode Manager with show grid, colour-coded completion cards, and per-season breakdown
- Missing episode detection with exact episode names and air dates
- 185,000+ shows, 5.7 million episode database hosted on harbouros.eu (MySQL)
- Pi queries only its own Plex shows (~4 MB) instead of downloading the full dataset
- Search, filter (All / Incomplete / Complete / Unmatched), and sort controls
- Plex session monitoring - live view of active streams with user, device, play mode (direct play / transcode), bitrate and resolution
- Transcoding warning when any session is transcoding on the Pi
- Security tab in System modal - fail2ban status, SSH configuration, password hygiene, banned IPs, failed login count
- Mount diagnostics - "Diagnose" button on unmounted mounts runs ping, port check, share access test, and returns a plain-English error
- Onboarding checks in setup wizard - Plex reachable, static IP recommendation, temperature, NAS mount count
- Backup & restore - export config to JSON, restore on a fresh install
Improvements
- Update transparency - changelog, previous/current version, last checked and last updated timestamps in Updates tab
- Storage health - per-partition warnings at 80% and 90% usage, SD card tip to move Plex data to NAS
- Self-update script now captures git log and includes it in the status JSON
- Episode database migrated from flat JSON file (167 MB) to remote MySQL API
- Plex sessions show full context: series name, season/episode number, and episode title
- Dashboard widgets widened to 760px to match the app grid
- Plex widget simplified - removed uptime and library count for a cleaner layout
- File input in backup restore styled to match the rest of the UI
- System stat values are now colour-coded: CPU/Temp green→yellow→red by load, Memory blue, Uptime purple
- Library widget icons colour-coded by type: movies gold, TV shows blue, music purple
- 100 tests passing
Fixes
- Fix Plex active sessions not visible -
harbourosuser now has read access toPreferences.xml - Fix Plex session title truncated - text now wraps and shows user & device below title
- Dead code sweep - removed unused API routes, deduplicated internal helpers, fixed subprocess calls that bypassed dev-mode mocking
Performance
- Fix periodic CPU spikes -
apt list --upgradablewas running every 30 s; now cached with a 1-hour TTL - Plex token and service status reads are now cached (5 min and 30 s TTL respectively) to reduce sudo calls
- Reduced gunicorn workers from 2 to 1 - eliminates per-process cache fragmentation on a single-user admin UI
Installation
- One-line curl installer -
curl -sL https://harbouros.eu/install.sh | sudo bashinstalls HarbourOS directly on the Pi, no git or make required - SSH password fallback in remote install - no longer requires pre-configured SSH keys; prompts for Pi password if keys are absent
Security hardening pass: CSRF protection, non-root service user, rate limiting, Plex log rotation, and fix for self-update git ownership errors.
Security
- CSRF protection - Origin/Referer header validation on all state-changing API requests
- Admin UI now runs as dedicated
harbourossystem user (non-root) with targeted sudoers - Login rate limiting - 5 attempts per minute per IP
- Security response headers - X-Content-Type-Options, X-Frame-Options, Content-Security-Policy
- Hardened sudoers - only specific commands allowed, no broad root access
Fixes
- Fix self-update: resolve git safe.directory ownership failure after non-root deploy
- Fix self-update: write success status before applying (survives restart)
- Fix update UI stuck on "in progress" after service restart
- Plex log rotation - prevent disk fill from runaway Plex logs
Backup and restore: export your full HarbourOS configuration to a JSON file and restore it on a fresh install.
New Features
- Config export - download a versioned JSON backup of all settings
- Config restore - validate and apply a backup file, including NAS remounting
- Backup includes: password hash, all NAS mounts, network settings, HarbourOS version
- Backup tab in System modal
Network configuration: set hostname, configure static IP or DHCP from the web dashboard.
New Features
- Hostname configuration - change from
harbourosto any name - Static IP configuration - set IP, gateway, DNS from the dashboard
- DHCP mode - switch back to automatic addressing
- Network app in the dashboard
NAS storage management: mount and manage NFS and SMB network shares from the web UI.
New Features
- NAS mount management - add, mount, unmount, and remove NFS/SMB shares
- Auto-discovery of NAS devices on the local network via mDNS
- Persistent mounts using systemd .mount and .automount units
- SMB credential support (username/password)
- NAS app in the dashboard with mount status cards
Self-update system: HarbourOS pulls updates from GitHub every 6 hours and applies them automatically.
New Features
- Automatic self-update via systemd timer (every 6 hours)
- Manual update trigger from System modal
- Update status shown in the Updates tab (current version, last checked)
- Safe update with rollback on failure
Plex management controls and auto-update for Plex Media Server.
New Features
- Plex start / stop / restart from the web UI
- Real-time Plex service status
- Plex log viewer
- Plex auto-update - checks and installs new versions
- Library counts shown on the dashboard widget
Initial release - HarbourOS as a custom Raspberry Pi OS image with a web-based admin UI, Plex pre-installed, and a first-boot setup wizard.
Initial Features
- Custom Raspberry Pi OS image based on Bookworm
- Plex Media Server pre-installed and configured
- Web-based admin dashboard (Flask + Gunicorn, port 8080)
- System monitoring: CPU, RAM, temperature, disk usage
- Service status overview (Plex, fail2ban, SSH)
- First-boot setup wizard: set password, connect NAS, verify Plex
- Remote install option - deploy over SSH without re-flashing
- Docker Plex migration tool - preserves libraries, watch history, metadata
- fail2ban pre-configured for SSH brute-force protection
- mDNS via avahi - accessible at
harbouros.local