๐ Changelog (Version 3.0 โ 2025-06-23)
๐ฏ Major Milestone: Intelligent Auto-Update System
We're excited to announce a major milestone in the evolution of the Pterodactyl Nginx Egg! Version 3.0 introduces our most significant advancement yet: a fully automated update system powered by our custom-built Tavuru API.
โจ New Features & Improvements
๐ Intelligent Auto-Update System
NEW: Fully automated update checking and application via Tavuru API integration
NEW: Smart differential updatesโdownloads only changed files, not entire codebase
NEW: Self-update capability with safe staging mechanism for the update system itself
NEW: Three update modes: Conservative (check-only), Automatic (apply), and Disabled
NEW: Version tracking with automatic initialization for existing installations
NEW: Detailed update summaries showing files added, modified, and removed
๐ก๏ธ Enhanced Security & Data Protection
NEW: Selective update system that never touches user data (www/ directory)
NEW: Protected staging mechanism prevents corruption during self-updates
NEW: Automatic backup creation before applying updates
NEW: LogCleaner now respects protected directories (auto-update staging areas)
๐ Tavuru API Development
NEW: Custom-built API infrastructure for version management and differential updates
NEW: RESTful endpoints for version checking, diff generation, and download management
NEW: Intelligent caching and request optimization for reliable service delivery
NEW: ZIP-based differential update packages for efficient bandwidth usage
๐ Documentation & User Experience
IMPROVED: Comprehensive documentation for all auto-update features and configuration options
NEW: Detailed troubleshooting guides and configuration examples
NEW: Clear visual indicators for update status and progress
IMPROVED: Better error messages with actionable troubleshooting hints
๐ง Technical Details
Configuration Variables Added
AUTOUPDATE_STATUS - Enable/disable auto-update functionality (default: enabled)
AUTOUPDATE_FORCE - Automatically apply updates vs. check-only mode (default: check-only)
What Gets Updated
โ
Module scripts (modules/)
โ
Nginx configurations (nginx/)
โ
PHP configurations (php/)
โ
Core orchestration scripts (start-modules.sh)
โ
Documentation (README.md, LICENSE)
โ User content and data (www/, logs, uploads)
๐ Impact & Benefits
This release represents a paradigm shift in how Pterodactyl eggs can be maintained and updated. Users no longer need to manually track releases, download updates, or worry about missing critical security patches. The system intelligently manages its own evolution while protecting user data and maintaining system stability.
The underlying Tavuru API also opens possibilities for future enhancements including release notifications, rollback capabilities, and advanced deployment strategies.
๐ฎ Looking Forward
Version 3.0 establishes the foundation for continuous evolution. Future updates will be delivered seamlessly through this new infrastructure, ensuring that users always have access to the latest features, security improvements, and optimizations without manual intervention.
This milestone wouldn't have been possible without the development of our custom API infrastructure and the commitment to providing a seamless user experience. Thank you for your continued support!
Full Changelog: v2.1...v3.0
๐ Bug Fixes & Improvements
โ Fixes the problem that no web error occurs when the port is subsequently changed.
โ Fixes the problem that no web error occurs when the port is subsequently changed.
# ๐ Changelog (Version 2.0 โ 2025-05-01)
## โจ New Features
### ๐ Full Modular Orchestrator
- **Auto-discover modules** in `modules/*` and run them in a defined order
- **Dynamic enable flags**: each module uses `_STATUS` (`true`/`1` = on)
- **Execution order**:
1. **LogCleaner** (clears temp and log files)
2. All other enabled modules (Git, Composer, Cloudflare Tunnel, PHP-NGINX, etc.)
3. **NGINX** last in the foreground (blocks to keep container alive)
### ๐งน LogCleaner Module
- Controlled by `LOGCLEANER_STATUS` toggle
- Deletes temporary files, oversized logs (`> MAX_SIZE_MB`), and old logs (`> MAX_AGE_DAYS`)
- **Dry-run** support (`DRY_RUN`) to preview deletions
- Live output of each deleted file for full transparency
### ๐ฒ Git Module
- Controlled by `GIT_STATUS` toggle
- Guard-clause pattern: early exit if disabled, Git missing, or not a repository
- Auto-pulls latest changes in `/home/container/www`
### ๐ฆ Composer Module
- Controlled by `COMPOSER_STATUS`; installs packages from `COMPOSER_MODULES`
- Creates and exports a writable `COMPOSER_CACHE_DIR` to eliminate cache warnings
- Honors `COMPOSER_WWW_DIR` for custom webroot
### ๐ Cloudflare Tunnel Module
- Controlled by `CLOUDFLARED_STATUS`; token read from `CLOUDFLARED_TOKEN`
- Writes logs to `CLOUDFLARED_LOG_FILE` and PID to `CLOUDFLARED_PID_FILE`
- Monitors startup with configurable `CLOUDFLARED_STATUS_TIMES` and timeout (`CLOUDFLARED_MAX_ATTEMPTS`)
### ๐ PHP-NGINX Startup
- Auto-detects installed PHP version via CLI if `PHP_VERSION` unset
- Falls back between `php-fpm` and generic `php-fpm` binary
- Clear error on version mismatch between Docker image and `PHP_VERSION`
---
## ๐ Bug Fixes & Improvements
### ๐ง Script Hygiene
- Strips Windows CRLFs from all scripts at startup
- Unified `set -euo pipefail` and `trap` for consistent error reporting
- Centralized color definitions and header formatting
### ๐ Documentation
- Updated each moduleโs README with new env vars and usage examples
- Added Egg JSON snippets for all toggles (`*_STATUS`, etc.)
### โก Performance & Reliability
- Fixed Composer cache directory to eliminate โcannot create cacheโ warnings
- Replaced fragile `bash -c` calls with native shell functions (`delete_file`, `enabled()`)
- Eliminated stray โcommand not foundโ and misformatted output
---
## ๐จ Upgrade Notice
**This is a major, non-backwards-compatible update.**
Due to extensive script and configuration changes, **you must recreate or rebuild your webserver/container** when upgrading to v2.0. Existing instances will not automatically adapt to the new module structure, env var names, and startup sequence.
---
## ๐ Deprecated & Removed
- **PHP 8.0** support marked as EOL (no longer recommended)
- Legacy Cloudflared file-based token handling removed in favor of `CLOUDFLARED_TOKEN` env var
---
## What's Changed
* Feat/composer by @Ym0T in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/29
* Matched the egg's variable casing of the environment variable name by @mattmentrup in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/33
## New Contributors
* @mattmentrup made their first contribution in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/33
**Full Changelog**: https://github.com/Ym0T/pterodactyl-nginx-egg/compare/v1.5.1...v2.0
## What's Changed
* Complete Modularization & Startup Process Optimization by @Ym0T in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/34
**Full Changelog**: https://github.com/Ym0T/pterodactyl-nginx-egg/compare/v1.5.2...v2.0
## โจ New Features
### ๐ Full Modular Orchestrator
- **Auto-discover modules** in `modules/*` and run them in a defined order
- **Dynamic enable flags**: each module uses `_STATUS` (`true`/`1` = on)
- **Execution order**:
1. **LogCleaner** (clears temp and log files)
2. All other enabled modules (Git, Composer, Cloudflare Tunnel, PHP-NGINX, etc.)
3. **NGINX** last in the foreground (blocks to keep container alive)
### ๐งน LogCleaner Module
- Controlled by `LOGCLEANER_STATUS` toggle
- Deletes temporary files, oversized logs (`> MAX_SIZE_MB`), and old logs (`> MAX_AGE_DAYS`)
- **Dry-run** support (`DRY_RUN`) to preview deletions
- Live output of each deleted file for full transparency
### ๐ฒ Git Module
- Controlled by `GIT_STATUS` toggle
- Guard-clause pattern: early exit if disabled, Git missing, or not a repository
- Auto-pulls latest changes in `/home/container/www`
### ๐ฆ Composer Module
- Controlled by `COMPOSER_STATUS`; installs packages from `COMPOSER_MODULES`
- Creates and exports a writable `COMPOSER_CACHE_DIR` to eliminate cache warnings
- Honors `COMPOSER_WWW_DIR` for custom webroot
### ๐ Cloudflare Tunnel Module
- Controlled by `CLOUDFLARED_STATUS`; token read from `CLOUDFLARED_TOKEN`
- Writes logs to `CLOUDFLARED_LOG_FILE` and PID to `CLOUDFLARED_PID_FILE`
- Monitors startup with configurable `CLOUDFLARED_STATUS_TIMES` and timeout (`CLOUDFLARED_MAX_ATTEMPTS`)
### ๐ PHP-NGINX Startup
- Auto-detects installed PHP version via CLI if `PHP_VERSION` unset
- Falls back between `php-fpm` and generic `php-fpm` binary
- Clear error on version mismatch between Docker image and `PHP_VERSION`
---
## ๐ Bug Fixes & Improvements
### ๐ง Script Hygiene
- Strips Windows CRLFs from all scripts at startup
- Unified `set -euo pipefail` and `trap` for consistent error reporting
- Centralized color definitions and header formatting
### ๐ Documentation
- Updated each moduleโs README with new env vars and usage examples
- Added Egg JSON snippets for all toggles (`*_STATUS`, etc.)
### โก Performance & Reliability
- Fixed Composer cache directory to eliminate โcannot create cacheโ warnings
- Replaced fragile `bash -c` calls with native shell functions (`delete_file`, `enabled()`)
- Eliminated stray โcommand not foundโ and misformatted output
---
## ๐จ Upgrade Notice
**This is a major, non-backwards-compatible update.**
Due to extensive script and configuration changes, **you must recreate or rebuild your webserver/container** when upgrading to v2.0. Existing instances will not automatically adapt to the new module structure, env var names, and startup sequence.
---
## ๐ Deprecated & Removed
- **PHP 8.0** support marked as EOL (no longer recommended)
- Legacy Cloudflared file-based token handling removed in favor of `CLOUDFLARED_TOKEN` env var
---
## What's Changed
* Feat/composer by @Ym0T in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/29
* Matched the egg's variable casing of the environment variable name by @mattmentrup in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/33
## New Contributors
* @mattmentrup made their first contribution in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/33
**Full Changelog**: https://github.com/Ym0T/pterodactyl-nginx-egg/compare/v1.5.1...v2.0
## What's Changed
* Complete Modularization & Startup Process Optimization by @Ym0T in https://github.com/Ym0T/pterodactyl-nginx-egg/pull/34
**Full Changelog**: https://github.com/Ym0T/pterodactyl-nginx-egg/compare/v1.5.2...v2.0
โจ New Features
๐ Automatic Log Cleanup Before Cloudflared Startup
Logs are now automatically deleted if they exceed 10MB or are older than 30 days:
/home/container/logs/naccess.log
/home/container/logs/nerror.log
/home/container/logs/error.log
/home/container/logs/php_errors.log
/home/container/logs/php-fpm.log
๐ Prevents excessive log accumulation and improves disk space management.
๐จ Improved Status Messages & Formatting
Color-coded console output for better readability:
๐ต Blue โ Headers & sections
๐ฃ Purple โ Cleanup processes
๐ก Yellow โ Status messages (e.g., "Waiting for Cloudflared to start...")
๐ข Green โ Success messages
๐ด Red โ Errors or missing files
๐ข More structured output with section dividers (โโโโโโโโโโโโโโโโโโโโโโโโ).
๐ Optimized Cloudflared Startup
Cloudflared startup process improved:
Better error handling:
If Cloudflared fails, the error is displayed immediately.
Last 10 log lines are shown for troubleshooting.
Safer PID file storage.
๐ Bug Fixes & Improvements
โ Improved Error Handling:
Cloudflared token validation: If missing or empty, a clear error is shown.
Log existence checks: No errors if logs donโt exist.
๐ Code Refactoring:
Better script structure with logical sections.
Standardized use of echo -e for consistent formatting.
๐ Automatic Log Cleanup Before Cloudflared Startup
Logs are now automatically deleted if they exceed 10MB or are older than 30 days:
/home/container/logs/naccess.log
/home/container/logs/nerror.log
/home/container/logs/error.log
/home/container/logs/php_errors.log
/home/container/logs/php-fpm.log
๐ Prevents excessive log accumulation and improves disk space management.
๐จ Improved Status Messages & Formatting
Color-coded console output for better readability:
๐ต Blue โ Headers & sections
๐ฃ Purple โ Cleanup processes
๐ก Yellow โ Status messages (e.g., "Waiting for Cloudflared to start...")
๐ข Green โ Success messages
๐ด Red โ Errors or missing files
๐ข More structured output with section dividers (โโโโโโโโโโโโโโโโโโโโโโโโ).
๐ Optimized Cloudflared Startup
Cloudflared startup process improved:
Better error handling:
If Cloudflared fails, the error is displayed immediately.
Last 10 log lines are shown for troubleshooting.
Safer PID file storage.
๐ Bug Fixes & Improvements
โ Improved Error Handling:
Cloudflared token validation: If missing or empty, a clear error is shown.
Log existence checks: No errors if logs donโt exist.
๐ Code Refactoring:
Better script structure with logical sections.
Standardized use of echo -e for consistent formatting.
### โจ Added
- ๐ Integration of **Cloudflared** for secure tunneling. (#22 | @zarti0)
### ๐ Fixed
- ๐ Minor bug fixes to improve stability and performance.
### ๐ Changed
- ๐ Revised text for better clarity.
- ๐ Integration of **Cloudflared** for secure tunneling. (#22 | @zarti0)
### ๐ Fixed
- ๐ Minor bug fixes to improve stability and performance.
### ๐ Changed
- ๐ Revised text for better clarity.
New
[โ๏ธ] PHP8.4 support added
[โ๏ธ] PHP8.4 support added
[โ๏ธ] Fixes the problem that when not using Git or wordpress no php info file is created during the initial installation.
Fixed
[โ๏ธ] Fix the error that the web server is permanently marked as starting
[โ๏ธ] Fix the bug that the use of git login data led to an incorrect download url for the git repo
[โ๏ธ] Fix the error that the web server is permanently marked as starting
[โ๏ธ] Fix the bug that the use of git login data led to an incorrect download url for the git repo
Added
[+] Simplified version changer added
[+] Added support for git (www folder)
[+] Added support for ARM64 (thanks to @GergoEB)
[+] Comments have been added to some files for a better overview
[+] Added "install-script.sh" for a better overview of the installation script
Other
[O] PHP version 7.3 removed
[+] Simplified version changer added
[+] Added support for git (www folder)
[+] Added support for ARM64 (thanks to @GergoEB)
[+] Comments have been added to some files for a better overview
[+] Added "install-script.sh" for a better overview of the installation script
Other
[O] PHP version 7.3 removed
Fixed
[โ๏ธ] Incorrectly defined variable in egg-nginx.json (led to problems when assigning ram for php)
Other
[O] License updated
[โ๏ธ] Incorrectly defined variable in egg-nginx.json (led to problems when assigning ram for php)
Other
[O] License updated
Added
[+] More PHP extensions
[+] Access and error log now optionally displayable in the console
Fixed
[โ๏ธ] Missing PHP extensions between PHP versions
[โ๏ธ] Access and error log cannot be displayed in the console
Other
[O] Small improvements
[+] More PHP extensions
[+] Access and error log now optionally displayable in the console
Fixed
[โ๏ธ] Missing PHP extensions between PHP versions
[โ๏ธ] Access and error log cannot be displayed in the console
Other
[O] Small improvements
Added PHP8.3 support
Updatet Egg.nginx.json