Skip to content

Releases: demyxsh/demyx

1.11.0

Choose a tag to compare

@demyxco demyxco released this 29 May 14:32
6cc3e46

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-certificates and openssl to 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.json for install_id and key_id.
  • Added TOFU telemetry registration flow to POST /wp-json/demyx/v1/telemetry/register when 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.18 to redis:alpine3.22.
  • Added v1 moving tag to build and push steps in GitHub Actions workflow.
  • Updated GitHub Actions dependencies to actions/checkout@v6 and docker/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 awk commands 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-ping handling to pass telemetry-disabled state into the helper container.

Fixed

  • Fixed demyx host upgrade repeatedly re-running after helper updates by regenerating pinned compose config and force-recreating core services from the target release image.
  • Fixed demyx host upgrade dangling image cleanup to skip docker rmi when no dangling images exist.
  • Fixed single-image demyx pull commands for Demyx images to use release-pinned tags instead of falling back to latest.
  • Fixed version comparisons for OpenSSH portable versions such as 10.0p1 and 10.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 VERSION file.
  • Removed DEMYX_TELEMETRY_SECRET usage from the daily telemetry send path in function/cron.sh.

Security

  • Replaced shared-secret telemetry authentication with per-install Ed25519 signed telemetry requests.

1.10.0

Choose a tag to compare

@demyxco demyxco released this 11 May 23:51

[1.10.0] - 2026-05-11

Added

  • New demyx config --pm flag 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.1 to 1.10.0 across Dockerfile, install ping, and GitHub workflow.
  • Updated app PHP defaults from 8.3 to 8.4 and expanded PHP flag handling to accept 8.3|8.4|83|84.
  • Switched PHP-FPM compose environment wiring to use DEMYX_PM (from DEMYX_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 0 or 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-db entrypoint.
  • 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 (including 8.1/8.2 and 81/82) to 8.4.

1.9.1

Choose a tag to compare

@demyxco demyxco released this 29 Aug 01:55
b0c3f07

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

Choose a tag to compare

@demyxco demyxco released this 01 Aug 20:42
a168dd8

🚀 Major New Features

Enhanced Configuration Management

  • Maintenance Mode Support - New demyx config --maintenance flag to activate WordPress core maintenance mode
  • Container Migration Tool - New demyx config --convert flag to convert container and volume names to new format
  • Skip Confirmation - New demyx config -f flag 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 up command for better host control

Performance Optimizations

  • FastCGI Cache Control - New DEMYX_APP_CACHE_INACTIVE environment variable for cache expiration management
  • PHP Performance Tuning - New --php-average flag 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 dig for 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_login function 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_user volume creation
  • Variable Assignment - Corrected DEMYX_APP_WP_VOLUME container 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

Choose a tag to compare

@demyxco demyxco released this 08 Apr 21:03
94825b1

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 restart can 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 refresh to ensure containers are properly restarted 74bfa4e
  • Requires the --remove-orphans flag when refreshing configs 856ec86
  • demyx config --opcache wasn't recreating the WP container 734e01b
  • demyx config --bedrock should error on non bedrock stacks 21e111a
  • IPWhiteList is deprecated 8987f31
  • Use official Docker CLI image to fix the KeyConfig error 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 restore 8f3f808

1.8.2

Choose a tag to compare

@demyxco demyxco released this 27 Mar 11:47
f5f40e9

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 -f flag 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 version is obsolete warning 57fdd73
  • Upgrade to latest Docker version to fix KeyError: 'ContainerConfig' errors and docker-compose is now deprecated 87c3be1

1.8.1

Choose a tag to compare

@demyxco demyxco released this 19 Mar 23:49

Fixes

  • Creating new apps were erroring on subdomains using --ssl flag 72fd7da
  • Docker versions would mismatch between local and remote versions 7b18cb7
  • demyx host dev was targeting the wrong string 87398c4
  • Apparently the code-server service crashes when mem_limit is too low a08eef2
  • This was supposed to be included in the last update but phpmyadmin needed this upload limit bump f57aa3a
  • demyx restore with 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_path since the function demyx_app_domain was also affected by the find bug b567ed9
  • find found multiple paths matching the app's domain which was crashing demyx restore 345b44f
  • --dev should enable/disable debug mode for WordPress 9ba3c32
  • Config flag --redis was outputting pop_var_context error 5e25da5
  • Missing key workflow_dispatch for manual build 909e993

1.8.0

Choose a tag to compare

@demyxco demyxco released this 05 Mar 22:51
086d268

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
  • --www will error if using with a subdomain 4cbaa65
  • Error on --whitelist if 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 --php 0f94720
  • 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

Fixes

  • Be sure to exit on error for subshells c44e466
  • Redis wasn't configuring properly when switching stacks 7b1c1cd
  • Fix incorrect filename 6d4bcf3
  • This is supposed to be defaulted at 7 e0ffd28
  • Add missing logrotate rule faa2056

1.7.1

Choose a tag to compare

@demyxco demyxco released this 16 Nov 19:40
f06da75

Changes

  • Missing backup/restore commands for custom volume aa8e543

1.7.0

Choose a tag to compare

@demyxco demyxco released this 15 Nov 02:47
440b7b8

New

  • Add new volume custom for user customizations 5a1d155
  • demyx config <app> --backup new flag to skip backups of a specifc app a2497a3
  • Add new variable DEMYX_APP_BACKUP 04cfb4c

Changes

  • Use demyx_wordpress_ready in demyx_run_extras 974fed2
  • Log error for demyx_wordpress_ready 7d377cb
  • Skip app backup if DEMYX_APP_BACKUP is set to false 14bd04e