Releases: demyxsh/demyx
Releases · demyxsh/demyx
Release list
1.11.0
Highlights
- Release-pinned image tags now make generated compose files, helper commands, installs, pulls, backups, restores, and upgrades resolve to the same Demyx release instead of drifting to
latest. - Daily telemetry now uses a local TOFU identity with Ed25519 signatures and registration, replacing shared-secret HMAC usage in the send path.
- Host upgrade handling now regenerates pinned compose config, force-recreates core services from the target release image, and avoids empty dangling-image cleanup runs.
- Update checks now track WordPress CLI versions and preserve full OpenSSH portable versions such as
10.0p2.
Added
- Added
ca-certificatesandopensslto the Demyx image for signed telemetry requests. - Added WordPress CLI version tracking to the update system.
- Added TOFU telemetry identity bootstrap in daily cron: auto-creates
/demyx/.telemetry, generates Ed25519 keypair when missing, and creates/demyx/.telemetry/identity.jsonforinstall_idandkey_id. - Added TOFU telemetry registration flow to
POST /wp-json/demyx/v1/telemetry/registerwhen local identity is not yet registered.
Changed
- Updated Demyx stack and app compose YAML generation to use direct
demyx/<image>:${DEMYX_VERSION}tags instead of runtime Docker Hub tag resolution. - Updated Docker run, pull, backup, restore, utility, install, host, and version-check commands to use release-pinned Demyx image tags.
- Updated code-server image references to use release-pinned variant tags such as
${DEMYX_VERSION}-wp,${DEMYX_VERSION}-browse, and${DEMYX_VERSION}-bedrock. - Updated Redis compose image from
redis:alpine3.18toredis:alpine3.22. - Added
v1moving tag to build and push steps in GitHub Actions workflow. - Updated GitHub Actions dependencies to
actions/checkout@v6anddocker/login-action@v4. - Changed scheduled GitHub Actions build day from Friday to Thursday.
- Pinned generated host helper and install-time helper commands to the release version.
- Simplified HAProxy and MariaDB version extraction using regex patterns with
grep. - Removed duplicate version checks and consolidated LSPHP/PHP version detection using environment variables.
- Refactored
awkcommands in the update workflow for better efficiency and consistency. - Standardized changelog section headers to align with Keep a Changelog formatting.
- Replaced shared-secret HMAC telemetry signing in cron with TOFU Ed25519 signed request flow against
POST /wp-json/demyx/v1/telemetry. - Telemetry request headers now use install identity metadata (
X-Demyx-Install-Id,X-Demyx-Key-Id,X-Demyx-Request-Id,X-Demyx-Signature-Alg) instead of HMAC-only auth headers. - Updated install
--no-pinghandling to pass telemetry-disabled state into the helper container.
Fixed
- Fixed
demyx host upgraderepeatedly re-running after helper updates by regenerating pinned compose config and force-recreating core services from the target release image. - Fixed
demyx host upgradedangling image cleanup to skipdocker rmiwhen no dangling images exist. - Fixed single-image
demyx pullcommands for Demyx images to use release-pinned tags instead of falling back tolatest. - Fixed version comparisons for OpenSSH portable versions such as
10.0p1and10.0p2. - Fixed SSH update cache parsing to preserve full OpenSSH portable versions such as
10.0p2. - Fixed regex escaping in the HAProxy version extraction pattern.
Removed
- Removed Docker Compose version metadata from the generated
VERSIONfile. - Removed
DEMYX_TELEMETRY_SECRETusage from the daily telemetry send path infunction/cron.sh.
Security
- Replaced shared-secret telemetry authentication with per-install Ed25519 signed telemetry requests.
1.10.0
[1.10.0] - 2026-05-11
Added
- New
demyx config --pmflag to configure PHP-FPM process manager mode (ondemand,dynamic,static). - SFTP config output now includes ready-to-copy IDE and SSH connection strings.
Changed
- Bumped project version references from
1.9.1to1.10.0across Dockerfile, install ping, and GitHub workflow. - Updated app PHP defaults from
8.3to8.4and expanded PHP flag handling to accept8.3|8.4|83|84. - Switched PHP-FPM compose environment wiring to use
DEMYX_PM(fromDEMYX_APP_PHP_PM) instead of PM average wiring. - Updated host and app compose resource defaults to auto-calculate at ~90% of available CPU and memory instead of fixed
0or half-resource defaults. - Updated dev compose resource assignment to use app-defined CPU/MEM env values for consistency.
Fixed
- Fixed app backup database export command to run through the WordPress container's
demyx-dbentrypoint. - Fixed backup ownership command pathing during archive staging.
- Preserved selected SFTP port in config output flow instead of re-opening/changing it during status rendering.
- Fixed PHP auto-upgrade logic to bump any app version below
8.3(including8.1/8.2and81/82) to8.4.
1.9.1
Changed
- Refactor demyx_host_upgrade function in host.sh to remove unnecessary refresh commands for code and traefik, streamlining the upgrade process. c7de857
- Refactor demyx_info_app and demyx_info_system functions in info.sh to improve output formatting and clarity by replacing echo statements with printf for better alignment, and update disk usage command for consistency. 9aa7acd
1.9.0
🚀 Major New Features
Enhanced Configuration Management
- Maintenance Mode Support - New
demyx config --maintenanceflag to activate WordPress core maintenance mode - Container Migration Tool - New
demyx config --convertflag to convert container and volume names to new format - Skip Confirmation - New
demyx config -fflag to bypass confirmation prompts
Advanced Container Management
- Traefik Operations - New backup/restore commands for Traefik (
demyx backup/restore traefik) - Extended Shell Access - New exec commands for Browser (
demyx exec code) and Traefik (demyx exec traefik) containers - Host Management - New
demyx host upcommand for better host control
Performance Optimizations
- FastCGI Cache Control - New
DEMYX_APP_CACHE_INACTIVEenvironment variable for cache expiration management - PHP Performance Tuning - New
--php-averageflag for optimized PHP configuration
⚡ Performance & Security Improvements
Network & Security Enhancements
- HTTP3/QUIC Support - Enabled for faster, more efficient connections
- A+ SSL Grade - Achieved top-tier SSL security rating
- Hot Configuration Updates - Auth, rate limiting, and whitelist changes now apply without container restarts
System Improvements
- Modern PHP Versions - Updated default PHP to 8.2/8.3
- Better IP Detection - Using
digfor improved server IP detection across distributions - Rsync Integration - Backup and restore operations now use rsync with backward compatibility
🧹 Code Quality & Modernization
Architectural Improvements
- Simplified Container Naming - Removed dynamic container name updates in favor of hard-coded names
- Cleaner Codebase - Removed deprecated logging code and CPU/memory restrictions
- Enhanced Installation Process - Improved Docker run commands with better volume mounts and environment variables
Function Refactoring
- Streamlined Login Logic - Simplified
demyx_app_loginfunction for better maintainability - Better Error Handling - Enhanced validation for environment variable names
- Improved Help Documentation - More consistent and clear command descriptions
Developer Experience
- Removed Legacy Features - Eliminated deprecated PHP process management flags
- Simplified Host Operations - Removed developer mode complexity
- Better Version Management - Improved upgrade logic with cleaner version checking
🐛 Critical Bug Fixes
System Stability
- Volume Creation - Fixed missing
demyx_uservolume creation - Variable Assignment - Corrected
DEMYX_APP_WP_VOLUMEcontainer variable reference - External Volume Errors - Resolved "external volume not found" issues
Version Management
- Upgrade Process - Fixed carriage return characters in version output for consistent comparisons
- Various Typos - Multiple variable name and syntax corrections
This release represents a significant step forward in system reliability, performance, and developer experience while maintaining backward compatibility.
1.8.3
Upgrading
This version requries updating the host helper script first.
# Update the demyx image to the latest version
docker pull demyx/demyx
# Update the host helper script
docker run -t --rm \
-v /usr/local/bin:/tmp \
--user=root \
--entrypoint=bash \
demyx/demyx -c 'cp -f /etc/demyx/host.sh /tmp/demyx; chmod +x /tmp/demyx'
# Use the latest version of demyx
demyx host restart
# Finally upgrade
demyx host upgrade -f
Fixes
- Move update counter commands to its own function so
demyx host restartcan work properly 5c782e3 - The script will error and exit if there are containers still using an old image c68a85b
- Suppress external network warning 483d57a
- Replace
demyx_host_dangling_images()with a single line command to make sure all dangling images gets deleted aaf660a - The image docker:cli should be included here 331f73b
- Use
demyx refreshto ensure containers are properly restarted 74bfa4e - Requires the
--remove-orphansflag when refreshing configs 856ec86 demyx config --opcachewasn't recreating the WP container 734e01bdemyx config --bedrockshould error on non bedrock stacks 21e111a- IPWhiteList is deprecated 8987f31
- Use official Docker CLI image to fix the
KeyConfigerror 0fa5d52 - Should be able to bypass "No updates available" and be able to upgrade demyx and host helper script only df2bec1
- Move commands into a global function since backups are using the old container name format which would break
demyx restore8f3f808
1.8.2
Upgrading
Due to a lot of changes with Docker, there had to be a lot of fixes/workarounds made in order to ease the burden of upgrading. Follow these steps for a smooth transition.
# Update the demyx image to the latest version
docker pull demyx/demyx
# Update the host helper script
docker run -t --rm \
-v /usr/local/bin:/tmp \
--user=root \
--entrypoint=bash \
demyx/demyx -c 'cp -f /etc/demyx/host.sh /tmp/demyx; chmod +x /tmp/demyx'
# Use the latest version of demyx
demyx host restart
# Force the upgrade
demyx host upgrade -f
Fixes
- Remove limitations on subdomains so SSL wildcards and www works on international domains and/or several levels deep of prefixes of subdomains 74fecb0
- The
-fflag should also bypass the no updates check bab05a1 - Fix GitHub Action failure 570991d
- Suppress the existing volume warning e4decaf
- Nginx would fail if the container names aren't updated to the new format 87eac07
- Remove the
versionis obsolete warning 57fdd73 - Upgrade to latest Docker version to fix
KeyError: 'ContainerConfig'errors and docker-compose is now deprecated 87c3be1
1.8.1
Fixes
- Creating new apps were erroring on subdomains using
--sslflag 72fd7da - Docker versions would mismatch between local and remote versions 7b18cb7
demyx host devwas targeting the wrong string 87398c4- Apparently the code-server service crashes when
mem_limitis too low a08eef2 - This was supposed to be included in the last update but phpmyadmin needed this upload limit bump f57aa3a
demyx restorewith sftp enabled was failing due to missing port 5c8883b- Shorthand was causing pipe errors for nginx which also crashed
demyx update, so might as well remove all shorthands a40d189 - Use
demyx_app_pathsince the functiondemyx_app_domainwas also affected by thefindbug b567ed9 findfound multiple paths matching the app's domain which was crashingdemyx restore345b44f--devshould enable/disable debug mode for WordPress 9ba3c32- Config flag
--rediswas outputtingpop_var_contexterror 5e25da5 - Missing key
workflow_dispatchfor manual build 909e993
1.8.0
Highlights
- Default PHP versions are now 8.1 and 8.2
- WP Rocket + rocket-nginx is now supported
- Wildcard SSL is now supported for any app, only for top level domains
- Weekly updates and showing updates should now be "smarter"
- General logging now only logs the function name
- Better error logging, simliar to PHP stack trace
- Thanks @NuclearMonster for the PR to fix one of my many errors
# Example of the new error log stack trace entry
"docker exec" requires at least 2 arguments.
See 'docker exec --help'.
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Execute a command in a running container
[2024-02-20-00:43:55] Fatal Error: 'docker exec' with exit code '1' in /etc/demyx/function/backup.sh:113
Stack Trace:
#0 /etc/demyx/function/backup.sh(113): demyx_backup_app
#1 /etc/demyx/function/backup.sh(66): demyx_backup
#2 /etc/demyx/bin/demyx.sh(22): demyx
#3 /etc/demyx/bin/demyx.sh(97): main
#4 backup domain.tld
New
- Custom stack trace for better error logging and debugging 47cb92f
demyx_event()will replace general logging and will log every function when executed 7906b4c- Add support for WP Rocket + rocket-nginx e72f8ef
- Add support for wildcard SSL f99be89
Changes
- Match help text with the KB c9c5530
- Remove/replace old logging function 07f3d59
- Only use demyx_execute to supress outputs from specific commands 04e8d09
- Bump default PHP versions to 8.1 and 8.2 3f1ef22
--wwwwill error if using with a subdomain 4cbaa65- Error on
--whitelistif DEMYX_IP isn't set d9738a8 - Make sure two core variables are set in order to enable SSL 5119d1a
- Update both php and lsphp versions when using
--php0f94720 - Move disk healthcheck to hourly 7377be3
- Add new/missing variables for OLS 99060d7
- Double the upload limit b147698
- Use exec to override the subshell 080bc99
- Move delete prompt and make sure to clear out old variables 31fa70b
- When checking for local image versions, make sure to only check if image is installed first e21414a
- Show updates if these images are installed only 73ab751
- Remove old conditional code 0136da6
- Hardcode the CPU for only the code-server services 2b21b47
- Add/remove environment variables for yml.sh 6724490
- One service was missing the custom volume fea20d7
- Hardcode the htpasswd instead of using .env c6c0967
- Output the latest error on the host if there is one f2a2813
- Miscellaneous changes/updates bb84dd3
- Output containers with cpu != 0% 6e75d6a
- Utility needs to be sourced again for non alpine 380f5c3
- Set fixed width c8a2491
- @NuclearMonster "Update pull.sh to pull OLS and resolve out of date OLS installs." 82a1b6d