Skip to content

Releases: upcode-oss/Harbor

v0.7.0 - Secure Operations & Recoverable Deployment

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 06 Aug 14:19

Release Date: 2026-08-06

What's New in Upcode Harbor v0.7.0

Upcode Harbor 0.7.0 is a major operational and security release. It introduces a
fixed privilege boundary, immutable signed updates, recoverable installation,
Linux/PAM-only login, durable background jobs, authenticated cluster transport,
validated App Store templates, and safer network and reverse-proxy management.


Highlights

Upcode Harbor Name

  • Version 0.7.0 is the first release under the Upcode Harbor name. The new
    name is used throughout the UI, installer, API metadata, CLI output, logs,
    documentation, and release communication.
  • The technical namespace is renamed completely: source directories, systemd
    units, service accounts, PAM, filesystem paths, helper binaries, the CLI,
    UPCODE_HARBOR_* variables, manifests, and artifacts all use the new name.
    No compatibility aliases are installed.

Recoverable Installation and Signed Updates

  • Releases are installed as immutable, root-owned directories below
    /opt/upcode-harbor/releases and activated through the atomic
    /opt/upcode-harbor/current symlink.
  • API, frontend, job worker, health monitoring, and update execution now run in
    separate systemd services with dedicated service identities.
  • The update path accepts only a versioned archive with a matching SHA-256 file
    and detached signature. Configuration is backed up before activation and a
    failed readiness check switches back to the previous release.
  • install.sh --resume finishes an interrupted installation without replacing
    the release, while install.sh --reinstall moves a broken installation into
    a mode-0700 recovery directory before installing cleanly.
  • Fresh interactive installations provide a Space-toggle checklist for Docker,
    K3s, LXC/LXD, and ZFS. OpenSSH is always installed and enabled; automation
    profiles and individual --with-* flags remain available.
  • Installation is keyless by default. Node-local TLS, encryption, session, and
    cluster key material is generated automatically. Signed updates are enabled
    only when the external release public key is supplied.

Linux Accounts, Sessions, and Permissions

  • Upcode Harbor no longer creates application login accounts. Existing Linux users
    authenticate through /etc/pam.d/upcode-harbor using a root-owned, allowlisted PAM
    broker that receives the password only through standard input.
  • Browser sessions are signed, expiring, and revocable through hashed
    server-side session records. Password changes and relevant 2FA operations
    revoke affected sessions.
  • Named API tokens replace the legacy plaintext global key. Tokens support
    admin, operator, and read-only roles, scoped actions, expiry, one-time
    plaintext display, and immediate revocation.
  • Authorization is deny-by-default: every HTTP method and route has an explicit
    action. Linux groups, API tokens, and cluster principals have separate
    permission paths, and unknown routes fail closed even for administrators.
  • Configuration and secret files use owner-only atomic persistence and reject
    unsafe symlink components.

Authenticated Cluster Transport

  • Node-to-node traffic uses a dedicated TLS listener on port 9501 instead of
    sharing the browser/API transport.
  • Cluster requests carry HMAC-SHA256 signatures over peer identity, key ID,
    timestamp, nonce, method, target, and body digest.
  • Persistent replay protection, bounded clock skew, peer identity checks, and
    pinned node CA trust protect internal routes.
  • Browser sessions and API tokens, including admin tokens, cannot call internal
    cluster routes.

Durable Jobs, Backups, and Operations

  • Backups, replications, exports, security scans, upgrades, and updates run
    through a durable SQLite job queue outside HTTP worker processes.
  • The persistent worker provides transactional claims, progress and heartbeat
    updates, timeouts, cancellation, retry, process-group termination, and
    interrupted-job recovery.
  • Backup configuration, execution, verification, restore, retention,
    scheduling, remote targets, and SSH key operations now use explicit API
    models and generated OpenAPI client contracts.
  • Locked Python/npm dependencies and expanded CI gates cover backend and CLI
    tests, route permissions, generated contracts, App Store validation, shell
    syntax, frontend lint, and the production build.

Validated App Store

  • All 62 bundled templates use manifest schema version 1 and intentional image
    versions instead of floating release tags.
  • Template validation checks JSON Schema, rendered Docker Compose structure,
    required variables, generated secrets, unsafe credentials, image tags,
    managed paths, and port declarations.
  • Mutable templates, Compose projects, and application data live below
    /var/lib/upcode-harbor rather than inside immutable releases.

Network, Reverse Proxy, and UI Improvements

  • Reverse Proxy & SSL and VPN management now live in the Network module.
  • Every managed proxy entry has an Advanced Settings editor for its Nginx site
    configuration. Only Linux administrators may use it; API tokens and cluster
    principals are denied.
  • Advanced Nginx changes are UTF-8 and size validated, written atomically,
    checked with nginx -t, and rolled back when validation or reload fails.
  • VM-network command failures now return actionable responses and use dedicated
    permission actions.
  • System and container terminals support automatic fitting and live PTY resize;
    shell working-directory/environment behavior and log presentation were also
    improved.
  • Proxy deletion now reports successful removal correctly instead of displaying
    Failed to delete: undefined.

Upgrade Notes

  1. Version 0.7.0 is a clean-install boundary. Its complete technical rename
    is intentionally incompatible with the 0.6.x deployment namespace and
    updater. Back up any existing host separately, stop its services, and deploy
    0.7.0 from a clean checkout or on a clean host. No automatic in-place state
    migration is provided.

  2. Signed updates start with the new deployment contract. After 0.7.0 is
    installed with its release public key, stage future root-owned update files
    under /var/lib/upcode-harbor/updates/VERSION/ using these names:

    • upcode-harbor-VERSION.tar.gz
    • upcode-harbor-VERSION.sha256
    • upcode-harbor-VERSION.sig

    Then write VERSION to /var/lib/upcode-harbor/updates/latest and start the
    update through Settings or sudo ./update.sh VERSION.

  3. Recover a broken 0.7.0 installation with --reinstall. Run
    sudo ./install.sh --reinstall from a separate 0.7.0 source checkout. The
    current Upcode Harbor release, configuration, state, logs, and system files
    are moved below /var/backups/upcode-harbor/ before a clean installation.

  4. Login uses Linux accounts only. Ensure the intended Linux administrator
    belongs to sudo or wheel and has an unlocked PAM password. An account
    configured exclusively for SSH-key login needs a Linux password before it
    can use the web login.

  5. Use the printed HTTPS URL. Ports 9200 and 9500 are loopback-only
    upstreams. Remote browser access terminates at nginx on port 443. The
    automatically generated certificate may require initial browser approval.

  6. Legacy API keys migrate automatically to a hashed, revocable admin token
    and are removed from settings.json. Create narrower scoped tokens for new
    automation.

  7. Upgrade cluster nodes as one maintenance operation. Verify peer
    certificates and connectivity on port 9501 after the update. The custom HA
    implementation does not provide quorum fencing/STONITH and should not be
    treated as a complete split-brain guarantee.

  8. No manual database migration is required. Persistent job and backup
    schemas are initialized or upgraded automatically. The updater creates a
    configuration backup before switching releases.

  9. Optional host components are installation choices. A signed application
    update does not install Docker, K3s, LXC/LXD, libvirt, or ZFS packages that
    were not selected during host installation.

  10. Update webhook receivers for the new brand header. Configured webhook
    secrets are sent as X-Upcode-Harbor-Secret, and the user agent is
    Upcode Harbor/1.0.

Release Artifact

The signed release bundle must be created outside the repository with the
offline private key:

deploy/build-release-artifact 0.7.0 /secure/release-private.pem /tmp/upcode-harbor-0.7.0

The private key is intentionally not part of the source tree. The resulting
archive contains .upcode-harbor-release.json with format 1 and version 0.7.0;
the updater rejects artifacts whose manifest, checksum, or signature does not
match.

v0.6.0 - Cluster HA & UX Improvements

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 06 Jun 15:55

Release Date: 2026-06-06

What's New in UpservX v0.6.0

This release focuses on cluster reliability and usability. High Availability coordination has been tightened across nodes, child nodes now see the full cluster state from the master, and the cluster management UI was aligned with the rest of the application for a more consistent full-width tab layout.


Highlights

High Availability Improvements

  • Cross-node VIP ownership propagation

    • New inter-node endpoint POST /cluster/ha/vip-owner-update distributes the active VIP owner state across the cluster
    • Cluster status now exposes vip_owner_hostname, vip_owner_ip and the active HA interface for better diagnostics
  • Safer VIP placement

    • VIPs are now assigned directly on the configured physical interface instead of a dedicated dummy interface
    • This avoids routing inconsistencies and LAN reachability issues during failover
  • Local HA config boundaries

    • Node-local HA settings are no longer synchronized between nodes
    • GET /cluster/ha/config now only returns shareable HA settings for cluster sync

Cluster Visibility & Management

  • Full cluster view on child nodes

    • Child nodes now load the complete cluster view from the master instead of building a reduced local view
    • Secondary nodes now display the same membership list as the master
  • More robust node removal

    • Node removal now resolves targets reliably by stored hostname, original hostname, assigned hostname or IP address
    • Force-leave cleanup is now best-effort and non-blocking when a child node is offline

UI Consistency

  • HA settings safeguards

    • HA configuration inputs are locked while HA is enabled to prevent live edits of active failover settings
  • Cluster UI polish

    • Remaining HA and cluster-adjacent labels were standardized to English
    • Cluster module tabs now span the full page width like the other administration modules

Upgrade Notes

  • No database migration required for this release.
  • Review local HA interface and VIP settings after upgrading if you previously relied on dummy-interface based VIP placement.
  • No additional dependency installation steps are required beyond the usual application update process.

Release v0.5.2 - Security Patch

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 19 May 10:58

Release Date: 2026-05-19

What's New in UpservX v0.5.2

This is a security patch release addressing multiple vulnerabilities in third-party dependencies across the frontend (Next.js, PostCSS) and backend (python-multipart, python-dotenv, paramiko, pytest).


Highlights

Dependency Security Updates (Frontend)

  • Next.js updated from 16.1.6 to 16.2.6

    • Fixes SSRF vulnerability in applications using WebSocket upgrades (High)
    • Fixes Middleware / Proxy bypass via dynamic route parameter injection (High)
    • Fixes Denial of Service via connection exhaustion with Cache Components (High)
    • Fixes Middleware / Proxy bypass in Pages Router applications using i18n (High)
    • Fixes Middleware / Proxy bypass in App Router via segment-prefetch routes (High, including incomplete fix follow-up)
    • Fixes Denial of Service with Server Components (High)
    • Fixes cross-site scripting in beforeInteractive scripts with untrusted input (Moderate)
    • Fixes Denial of Service in the Image Optimization API (Moderate)
    • Fixes cache poisoning in React Server Component responses (Moderate)
    • Fixes cross-site scripting in App Router applications using CSP nonces (Moderate)
    • Fixes cache poisoning via collisions in React Server Component cache-busting (Low)
    • Fixes Middleware / Proxy redirect cache poisoning (Low)
  • PostCSS forced to 8.5.15 via npm overrides

    • Fixes XSS via unescaped </style> in CSS Stringify output (Moderate)

Dependency Security Updates (Backend)

  • python-multipart updated from 0.0.22 to 0.0.29

    • Fixes Denial of Service via unbounded multipart part headers (High)
    • Fixes Denial of Service via large multipart preamble or epilogue data (Moderate)
  • python-dotenv updated from 1.0.1 to 1.2.2

    • Fixes symlink following in set_key allowing arbitrary file overwrite via cross-device rename fallback (Moderate)
  • paramiko updated from 3.5.0 to 5.0.0

    • Fixes rsakey.py allowing the SHA-1 algorithm (Low)
  • pytest updated from 8.3.4 to 9.0.3

    • Fixes vulnerable tmpdir handling (Moderate)
  • pytest-asyncio updated from 0.25.2 to 1.3.0

    • Required to maintain compatibility with pytest 9.x

Upgrade Notes

  • No database migration required for this release.
  • No configuration changes required.
  • After pulling, run npm install in upservx/ and pip install -r requirements.txt in upservx-service/ to apply updated dependencies.

Release v0.5.1 - Auth & Activity Reliability

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 11 May 22:57

Release Date: 2026-05-12

What's New in UpservX v0.5.1

This maintenance release focuses on security hardening, activity visibility, and operational reliability. Authentication was migrated away from persisted Basic credentials to signed expiring session tokens, activity/status tracking was expanded in the sidebar, and several polling and auth edge cases were fixed.


Highlights

Secure Session Authentication

  • Added signed session tokens via lib/session_tokens.py (HMAC-SHA256)
  • Session tokens carry expiry and are validated by middleware
  • Login and 2FA completion now return session_token and set cookie-based session state
  • Cookie fallback is treated as Bearer token in middleware

CLI Auth Modernization

  • CLI login now uses POST /auth/login
  • CLI stores username + session token (no persisted Basic credentials)
  • CLI API client now uses Bearer token model

Activity & Progress UX Improvements

  • New sidebar activity bell above theme switcher
  • Activity overlay expanded and layered above other UI
  • Activity feed filtered to notification-eligible events only
  • Added status timeline for latest backup/replication state changes
  • Running items show progress bars; completed/failed items are retained in recent list
  • Recent status list no longer clears on transient fetch errors
  • Progress polling for activity/status endpoints standardized to 10 seconds
  • Completed/failed backup and replication jobs are no longer polled continuously

VPN Settings Path Standardization

  • OpenVPN profiles are now stored and read from /etc/upservx/vpn only
  • Legacy handler-local VPN path usage removed
  • Docs updated to point to handlers/settings.py and /etc/upservx/vpn

Frontend Auth Conflict Fix

  • Removed browser-stored Authorization header injection from getAuthHeaders()
  • Prevents stale token override of valid session-cookie auth
  • Fixes intermittent 401 responses on endpoints such as /vm-networks and /metrics

Upgrade Notes

  • Existing users should log in again once after upgrade so all clients use the new session-token flow.
  • If browser sessions behave inconsistently after upgrade, perform one fresh login to refresh cookie/session state.
  • No database migration required for this release.

Release v0.5.0 - Security Module 🔐

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 03 May 19:49

Release Date: 2026-05-03

🎉 What's New in UpservX v0.5.0

This release introduces the Security Module — a dedicated administration area giving server operators a unified view of their system's security posture. Five features are bundled in a single tabbed interface accessible to admin-group users: Fail2Ban management, package upgrade tracking, SSL/TLS certificate inspection, open port scanning and CVE vulnerability scanning via the OSV.dev database.

✨ Highlights

🛡️ Fail2Ban Management

  • View all configured jails with banned IP counts and total failed attempts
  • List all currently banned IPs per jail
  • Unban individual IPs directly from the dashboard

📦 Package Upgrade Tracker

  • Discover all upgradeable packages (Debian/Ubuntu) at a glance
  • Filter to security-only updates
  • Upgrade all packages or a single package with one click

🔏 SSL/TLS Certificate Inspector

  • Automatic scan of common certificate locations (/etc/ssl/, /etc/letsencrypt/, /etc/nginx/, etc.)
  • Status badges: VALID / EXPIRING SOON (< 30 days) / EXPIRED
  • Filter by status and sort by days remaining

🌐 Open Port Scanner

  • See every listening port on the system (TCP + UDP)
  • Filter by protocol and by public vs. loopback address

🐛 CVE Vulnerability Scanner

  • Batch-query installed packages against the OSV.dev vulnerability database
  • CVSS scores (V2/V3/V4), severity filter and advisory links
  • Manual scan trigger — no background polling

📄 Full Release Notes

See releases/0.5.0.md for complete details including all API changes and upgrade notes.

Hotfix: Updated node modules and pip packages

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 05 Apr 03:01
0.4.1

fix: update requests dependency to version 2.33.0

Release v0.4.0 - VM Network Isolation & VLAN Support 🌐

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 04 Apr 18:40

Release Date: 2026-04-04

🎉 What's New in UpservX v0.4.0

This release extends the virtual machine networking stack with two new capabilities: VLAN tagging for bridge-mode interfaces and full lifecycle management of isolated internal libvirt networks — enabling air-gapped VM communication with no IP configuration on the host side.

✨ Highlights

🔖 VLAN Support for VMs

  • Bridge-mode VM interfaces now support optional VLAN tagging (802.1Q)
  • Specify a VLAN ID (1–4094) when creating, editing or importing a VM
  • A tagged sub-interface (e.g. eth0.100) is created automatically on the host if it does not yet exist
  • VLAN ID stored in the VM registry and restored on edit

🔒 Internal VM Networks

  • New Internal Network mode alongside NAT, Bridge and None
  • Create isolated L2 libvirt networks with a name — no subnet, no DHCP, no host routing
  • All IP addressing happens inside the VMs themselves; the host gains no route
  • Full network lifecycle: create, start, stop and delete via the new Manage Networks dialog in the VM dashboard
  • Network state (active / inactive) shown in the networks table with one-click start/stop toggles
  • New API endpoints: GET /vm-networks, POST /vm-networks, DELETE /vm-networks/{name}, POST /vm-networks/{name}/start, POST /vm-networks/{name}/stop

🖥️ CLI Version Bump

  • upservx CLI updated to v0.4.0
  • All existing commands remain unchanged: auth, service, containers, system, apps, backup, logs

📄 Full Release Notes

See releases/0.4.0.md for complete details including all API changes and upgrade notes.

Release v0.3.0 - RBAC, VM Portability & App Store Expansion 🔐

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 13 Mar 17:29

🎉 What's New in UpservX v0.3.0

This release is the biggest security and feature update since the initial launch. The authentication layer has been fully rewritten around HttpOnly session cookies and Linux-group-based access control, VMs can now be exported and imported as industry-standard OVA/OVF packages, the App Store grows by 19 new one-click templates, and the UI receives a full customization system together with a polished light/dark/system theme toggle.


✨ New Features

🔐 Group-based Access Control (RBAC)

Every API request is now checked against the authenticated user's Linux groups. Users only see and can access what their groups explicitly permit — no more all-or-nothing admin access.

Linux Group Access granted
sudo / wheel Full administrator (all endpoints)
docker Container management, Docker images, App Store
lxd / lxc LXC container management, LXC images
libvirt / kvm Virtual machine management, ISO management
disk / storage Physical storage management
tty System shell access
adm / log Log viewer access
  • API keys and cluster tokens retain implicit full-admin rights
  • The sidebar dynamically hides items the current user has no permission for
  • New GET /auth/me endpoint returns username, Linux groups and a structured permissions object
  • New GET /info endpoint exposes the server hostname without requiring admin access

🍪 Session-Cookie Authentication

The auth token has been moved out of localStorage and into an HttpOnly SameSite=Lax cookie, eliminating the entire class of XSS token-theft attacks.

  • POST /auth/login issues the session cookie; POST /auth/logout deletes it server-side
  • All frontend fetch calls use credentials: "include" — no more manual Authorization headers
  • Session is validated on page load via /auth/me; sidebar does not render until permissions are resolved (no flash of wrong content)
  • Removed hardcoded admin:admin Basic-auth fallback from api.ts

📦 VM OVA/OVF Export

Virtual machines can now be exported as portable, standards-compliant OVA or OVF packages and imported into any compatible hypervisor (VMware, VirtualBox, Proxmox, etc.).

Export (POST /vms/{name}/export):

  • Accepts { "format": "ova" | "ovf" }
  • Converts disks from qcow2 to VMDK (streamOptimized) via qemu-img
  • Builds a standards-compliant OVF 1.0 descriptor with CPU, RAM, network and disk mappings
  • SHA-256 manifest file (.mf) generated and included automatically
  • OVA → single TAR archive; OVF → named directory under /etc/upservx/exports/
  • VM must be stopped before export — running VMs are rejected with a clear error

Import (POST /vms/import):

  • Accepts multipart upload (.ova / .ovf) plus name, network_mode, bridge_interface, autostart, storage_path
  • OVA archives extracted with path-traversal protection; OVF directories read directly
  • VMDK disks converted to qcow2 via qemu-img convert with auto-detected source format
  • VM registered with libvirt via virt-install --import and added to the UpservX registry
  • Export ↓ and Import buttons added to the Virtual Machines UI (Grid + List views)

🛒 App Store — 19 New Templates

The App Store now ships with 19 additional pre-configured one-click applications:

Networking

  • RustDesk – Self-hosted remote desktop relay and ID server (hbbs + hbbr)
  • Apache Guacamole – Clientless browser-based RDP/VNC/SSH gateway
  • Traefik – Modern reverse proxy with automatic Docker service discovery and Let's Encrypt SSL

Development

  • Harbor – Enterprise container image registry with RBAC and Trivy vulnerability scanning
  • GitLab – Complete DevSecOps platform with CI/CD pipelines and container registry
  • Docker Registry – Lightweight private registry with web UI

Security

  • Keycloak – Identity and Access Management; SSO, OIDC/OAuth 2.0/SAML 2.0
  • OpenLDAP – Centralised LDAP directory with phpLDAPadmin web UI

Productivity

  • ONLYOFFICE Community Edition – Full office suite (DocumentServer, CommunityServer, MailServer)
  • Roundcube – Browser-based IMAP webmail client

Monitoring

  • Loki – Horizontally scalable log aggregation by Grafana Labs
  • MotionEye – Web frontend for the motion daemon; supports USB cameras and IP streams

Other / Data

  • Apache Kafka – Distributed event streaming platform in KRaft mode with Kafka UI
  • Elasticsearch – Search and analytics engine (v8.17.0) with Kibana
  • Mailcow – Complete self-hosted mail server suite (17 containers)
  • Neo4j – Graph database (v5) with APOC plugin and Browser UI
  • RabbitMQ – Message broker with Management UI
  • OctoPrint – Web interface for 3D printers with USB and webcam support
  • Tunarr – Virtual live TV channels from Plex/Jellyfin/Emby libraries

📄 App Store Pagination

  • Configurable page size: 10, 20, 30 or 50 apps per page (default: 20)
  • Numbered page buttons with ... ellipsis, Prev/Next navigation
  • App count ("X Apps gefunden") and page indicator ("Seite X von Y")
  • Automatically resets to page 1 on search, category or page-size change

🎨 Application Customization

Admins can now brand the login screen and dashboard without touching any code.

  • Login Banner Text: configurable title and subtitle on the login page left panel
  • Custom Logo: upload PNG/JPG/SVG/GIF/WebP — replaces the default logo on the login page and in the sidebar
  • Custom Banner Image: upload a background image for the login page left panel
  • Image previews displayed in the Settings UI; files can be removed to revert to defaults
  • Files stored in /etc/upservx/customization/; text config in config.json
  • All GET customization endpoints are public (no auth required) so the login page can load them before a session exists

🖥️ UI Improvements

  • Theme toggle in sidebar: Light/Dark toggle switch + System mode button, placed directly above the user profile row — the top-right header toggle has been removed
  • Header removed: the now-empty top bar has been removed entirely, giving content more vertical space
  • Logout icon: the logout button is now a compact icon to the right of the username
  • Light mode fixes: tabs now have a visible grey background (slate-200); outline and link button variants use text-foreground in light mode instead of hardcoded text-white
  • Active sidebar item: removed the white dot indicator from selected navigation items

⚙️ API Changes

New endpoints:

Method Path Description
GET /auth/me Returns username, groups and permissions
POST /auth/logout Deletes the session cookie server-side
GET /info Returns server hostname (no admin required)
POST /vms/{name}/export Export VM as OVA or OVF
GET /vms/exports/{filename} Download exported VM archive
POST /vms/import Import VM from OVA or OVF upload
GET /settings/customization Get customization config
POST /settings/customization Save banner text config
POST /settings/customization/logo Upload custom logo
DELETE /settings/customization/logo Remove custom logo
GET /settings/customization/logo/file Serve custom logo file
POST /settings/customization/banner Upload custom banner image
DELETE /settings/customization/banner Remove custom banner
GET /settings/customization/banner/file Serve custom banner file

Changed:

  • Auth middleware resolves Linux groups and enforces check_path_permission() on every request
  • System shell WebSocket now uses has_shell_access() instead of is_admin() — tty group members can access the shell
  • getAuthHeaders() / getJsonHeaders() no longer inject Authorization headers; auth is handled via session cookie

Security:

  • HTTP 403 returned for any path the caller's Linux groups do not cover
  • admin:admin Basic-auth fallback permanently removed
  • Session token stored in HttpOnly cookie — not accessible to JavaScript

📦 Upgrade Notes

On first start after updating, the backend will automatically resolve the groups of authenticated users on every request — no database migration or manual step required.

Action required for multi-user setups: Ensure each user that needs access is in the appropriate Linux group (e.g. docker, libvirt, tty) before updating. Users not in any recognised group will receive HTTP 403 on all protected endpoints after the update.

The localStorage-based token is no longer used. Existing sessions will be invalidated on upgrade — users will need to log in once after the update.

Release v0.2.0 - Notifications, Activity Logging & Cluster Replication 🔔

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 01 Mar 17:56

Release Date: 2026-03-01

🎉 What's New in UpservX v0.2.0

This release focuses on observability, alerting and cluster operations. Every important action on your node is now logged to a structured activity log, critical events trigger instant push notifications via Email or Webhook (Discord, Slack, custom), and the cluster now supports full container and VM replication between nodes.

✨ Highlights

🔔 Notification System

  • Email (SMTP) and Webhook (Discord / Slack / custom) push notifications
  • Node hostname included in every message — useful in multi-node setups
  • 12 per-event toggles: Container create/start/stop/crash/delete, VM create/start/stop/delete, Backup success/failure, System alert
  • Rich context per event (image, ports, CPU, memory, backup size/path, error messages)
  • New Notifications tab in Settings UI

📋 Structured Activity Logging

  • All service modules write to /var/log/upservx/activity.log
  • Consistent YYYY-MM-DD HH:MM:SS [TAG] Message format with INFO / ERROR levels
  • 174 cluster print() calls now dual-write via _clog() helper

🔁 Cluster Replication

  • Replicate Docker containers and KVM VMs between nodes from the Cluster UI
  • Full export/import including volumes, disk images, port mappings and environment variables
  • Manual trigger per replication entry

🗄️ Persistent Storage Mounts

  • Drives mounted via UI are persisted to /etc/fstab with UUID-based identification
  • Automatic fstab cleanup on unmount, backup before every modification

🔒 12 Security Fixes

WebSocket shell auth, debug endpoint removal, path traversal (ISO, tarfile, SSH keys), SSRF, exception leak, rate limiting, input validation, shell allowlist, logout bug.

📄 Full Release Notes

See releases/0.2.0.md for complete details including all API changes and upgrade notes.

Release v0.1.0 - Initial Pre-Release 🚀

Choose a tag to compare

@m-schwarzinger m-schwarzinger released this 16 Feb 17:02

🎉 What's New in UpservX v0.1.0

UpservX is a comprehensive web-based server management platform that simplifies managing your server infrastructure with a modern, user-friendly interface.

✨ Key Features

📦 Container & VM Management

  • Full container lifecycle management
  • Real-time logs and monitoring
  • Image management and registry integration
  • VM management with VNC support

🏪 Integrated App Store

Over 25 pre-configured application templates for quick deployments:

  • CMS & Web: WordPress, TYPO3, Nextcloud, Jitsi
  • Media: Jellyfin, Emby, Plex, Ombi
  • Development: Gitea, n8n, Jenkins, Jupyter
  • Databases: MySQL, PostgreSQL, MongoDB, InfluxDB, Redis
  • Monitoring: Grafana, Prometheus, Uptime Kuma
  • Network: Nginx Proxy Manager, Pi-hole, TeamSpeak
  • Security: Vaultwarden, Paperless-ngx

💾 Automated Backup System

  • Scheduled backups with Cron
  • Local and SSH remote storage
  • Encryption and compression
  • Recovery functions

👥 User & Group Management

  • System user management
  • SSH key management
  • Permissions and access control

🌐 Network Management

  • Network interface configuration
  • IP address management
  • Firewall rules

🛠️ System Services

  • SystemD service management
  • Service monitoring and control

📊 System Monitoring

  • Real-time metrics (CPU, RAM, Disk, Network)
  • Resource monitoring
  • Performance analysis

🗄️ Storage Management

  • Disk management
  • ZFS pool support
  • Mount point configuration