AMP 'Proteus' 2.8.0 Release Notes

AMP 2.8.0.0 ‘Proteus’

:warning: It’s very important that you follow the update guide, especially on major release versions!
https://discourse.cubecoders.com/t/how-to-update-amp-to-the-latest-version/2297

In case you missed the recent announcement about the feature freeze:
https://discourse.cubecoders.com/t/the-future-of-cubecoders-and-amp-feature-freeze/40387

We’ve created a bug tracker on GitHub to keep tabs on the progress being made. If there’s a bug not listed, please be sure to create an issue in the AMP repo so we can properly address it:
https://github.com/orgs/CubeCoders/projects/4

This is the first bug fix only release since the announcement. There will be some cases where the line between bug fix and feature is blurred. We’re making sure that anything “added” is purely to fix existing bugs and defects rather than a new feature driving the change.

Advertised Connection Address

The endpoint handling in AMP has always been a big pain point and we want to fix that. While it tried to be smart and calculate the IP and port to use, it would commonly run into scenarios it wasn’t possible (proxy connections/LAN vs WAN/etc).

We’ve added a new “Advertised Connection Address” setting that overrides all the logic and puts what you want to display. You can set a default for this per ADS instance that will apply to all new instances and anything you do within ADS. You can also override it per instance for cases where you want dedicated domains or IP addresses to show that don’t fit the standard setting.

This value will display on ADS, Community Pages (the share button), and the endpoint info within an instance.

There’s a toggle in the network info section of the settings popup where you can prevent AMP from appending the port as well. This is useful if you’re using an SRV record for Minecraft or a game server that doesn’t require the port to be appended when it’s default.

If you put a specific port in the address AMP will not append one. This is useful for cases where you’re behind NAT and need to put a different public port than what AMP sees locally.





Backups

We’ve reviewed how AMP handles backups compared to industry standards and identified fundamental flaws that needed addressed. We had to change the process to account for all scenarios that come up with game servers and applications. Here is the updated process so you can be prepared to make adjustments on your existing backups:

To avoid unexpected shutdowns for people who update without reading release notes, we are NOT retroactively applying these changes to existing scheduler tasks. This means existing backups may still cause corruption and should be recreated to follow the new logic.

Some applications support “quiesce” where we can send a command to tell the application “Don’t save anything else to the disk until we say otherwise.” The game continues to function in memory only until we give the okay to continue saving to disk. This is great because we can do what we need with the existing files with guarantees the application won’t be editing or adding files while we work. Minecraft and Minecraft Bedrock are the two apps that support this currently.

Applications that don’t support a quiesce must be shutdown to take a backup. This is the only feasible way to ensure the backup won’t be corrupted by the application fighting for access. We want to minimize downtime, so we came up with some methods to address this.

In all scenarios below, AMP will perform the steps and then start the application while continuing the compression of the staged files in the background.

On Linux:
If the AMP instance is on the same filesystem as the Backups folder, it will make a hardlink to a staging directory which is almost instant. Any changes to the files after this are tracked by the OS and do not impact the linked files.

If the AMP instance is on a different filesystem as the Backups folder, AMP will clone the files to the staging directory which is fast but may take a few seconds to a minute depending on the size and file count. This requires double the space during the backup only.

On Windows:
AMP will clone the files to the staging directory which is fast but may take a few seconds to a minute depending on the size and file count. This requires double the space during the backup only.

We’ve attempted to minimize any surprises by adding warnings in the scheduler and backups sections.

The backup task that includes a shutdown has been combined into the main task as a toggle, as seen in the screenshot above.

  • Display backup errors in pop up messages
  • Don’t fail the full backup due to file being inaccessible/not existing
  • Hide the “No Backup Schedule” notice on the Backups tab if user doesn’t have Scheduler permissions
  • Default “Use Smart Backup Exclusions” to on for new instances
  • Files re-indexed after quiesce to account for final changes by the application
  • Minecraft waits for “Saved the game” or timeout before continuing backup
  • Generic Module quiesce delay moved from 5ms to 5000ms (5 seconds)
  • Replaced per directory .backupExclude and .autoExclude with instance directory backupExclusions.conf and backupExclusionsAuto.conf to fix incompatibility with some game servers - File exclusion status shows in File Manager per file

Scheduler Changes

  • Variables error when no input selected or unsupported input type selected when a variable is clicked to add
  • Tasks are hidden that aren’t supported by the application (Check for Steam updates on non-Steam apps/Do something when last player leaves but no player tracking, Send a console command when no writable console) - Existing schedules are not impacted, but will continue to work with the flawed logic
  • Default scheduled triggers that are automatically added in a new instance are based on the above logic as well
  • Prevent firing triggers that are disabled after startup
  • Fix the “x” button not closing the popup
  • Event triggers queue rather than silently dropping when multiple fire of the same type at once - Timed triggers will continue to be dropped to avoid accumulating the issue caused by long running tasks

Minecraft Changes

  • Allow empty setting values rather than reverting to defaults
  • Incorrect Java Version logic updated to properly change to the correct version when a wrong one is selected on startup. Added support for multiple modloaders
  • Fix Folia TPS monitoring
  • If “Specific Jar” is selected, reset it to Automatic when a new ModLoader or Version are selected
  • Fix for sleep on start where the server wouldn’t sleep after waking up
  • Velocity should select the latest non-SNAPSHOT release on Stable
  • Sleep mode now presents the proper server icon and text in grayscale rather than default icon and not formatted
  • Sleep mode wake up message support for languages that don’t use the Latin Alphabet
  • Switched Betacraft to handle alpha/beta/classic versions due to not being available from Mojang (IPv4 only due to DNS issues with their site)
  • Fix startup monitoring and arguments for many alpha/beta/classic versions
  • Adjust user join/leave tracking to handle [Something]PlayerName: format that certain mods use

ampinstmgr Changes

  • ampinstmgr upgradeall and ampinstmgr switchall skip Docker image updates and marks all instances for update prior to restarting ADS - Fixes some instances not getting updated randomly
  • ampinstmgr validateInstance fixes for version checks and release streams
  • ampinstmgr reconfigure no longer deactivates an instance or resets settings (e.g. OIDC getting disabled)

getamp Changes

  • Add Docker dependency to prevent hard shutdown on Docker updates (obtain by running getamp update on existing installs)
  • PhotonOS fixes courtesy of rtfmoz2
  • Prerequisite package install ordering courtesy of rtfmoz2
  • Remove tput as a hard requirement

Further Fixes

  • Fix duplicate port assignment and erroneous reassignment on update - Includes an overhaul to port assignment code to be cleaner/easier to maintain
  • First time setup tutorial no longer recommends managing a new instance from a target
  • Podman instances with mounts in read only mode failed to start due to incorrect syntax
  • Starting instances on boot will continue starting instances after one fails instead of stopping the entire startup sequence
  • Add a check for network status on container instances to avoid starting AMP before the network stack is fully loaded
  • Container images are pulled once every hour per image and only pulled on instance startup - Added Unlimited Container Image Pulls setting for users that wish to override this logic
  • Tweak CSS code for UI to avoid stuttering on things like the progress loading bar
  • Fix the new special notice Next/Finish button not responding
  • Enums (dropdown lists) should respond to setting change notifications when adjusted in a different session than this one
  • The following generic template changes are being merged simultaneously Changes for 2.8.0.0:
    1. Remove App.TemplateMatchRegex
    2. Remove backup exclusion file downloads for games that had special exclusions
    3. Switch Smart Backup Exclusion to supported for all apps
    4. Switch Quiesce Settle Delay Milliseconds from 5 to 5000 (5 seconds)
    5. Add Quiesce commands for Minecraft Bedrock

Known Issues

  • New instances are unable to store encrypted settings - Fix actively being implemented
  • Passthru Port showing on Status tab (visual bug only)
  • Duplicated ports showing with different numbers assigned
5 Likes

Patch 20260625.2

  • Fixed an issue where new setups/instances wouldn’t save their encryption setup causing passwords and keys to not persist across restarts
  • Removed the Passthru Port showing in instance Status pages - It’s unused at this time
  • Fixed port management for AMP managed ports where it created duplicates

Known Issues

AMP 2.8.0.2 ‘Proteus’

Special thanks to FMA Wrath 2069 and jeevis from Discord for their help and countless hours spent identifying key factors that led to the root cause being found!

This update comes after a long investigation into why Palworld saves on Windows (and potentially Wine) were getting corrupted in AMP.

The change is minor but we suspect a bigger impact on this one. We introduced Kestrel (by Microsoft) as the web server for AMP when we rolled out .NET 8. Most web servers host static content of some type when you visit their page. AMP serves everything through the API, so there was never a need to configure a directory for the content. This means Kestrel defaulted to the instance directory being treated as the content directory. In .NET the content directory of a web server is watched for file changes. Every file change gets checked by the server in case it needs to act on it. We’ve configured this setting and disabled the file watching to prevent this wasted file accessing.

We’re investigating how this impacts live backup issues we’ve been experiencing as that could involve the same mechanisms. As well, this would slightly hurt performance anytime file operations were done within an AMP instance or game server.

How does this involve Palworld?

There’s a bug in Palworld’s 30 second autosave process in 1.0 that makes it inherently fragile on Windows environments. They rename a temporary save file to replace the main one, and during this split-second change Kestrel was also trying to find out what changed on the file. This caused a race condition where both programs were trying to access the same file and one would lose. If Palworld lost it would result in a corrupted save.

In short, a bug in the autosave of Palworld was escalated by a bug in the configuration of AMP’s web server.

AMP 2.8.0.4 ‘Proteus’

This update further changes the backups handling based on user feedback from 2.8. We hope this is a good balance between functionality and consistent backups that you all will be happy with!

Backups

We’ve switched from a Shutdown for Backups setting to a Backup While Running setting to be more consistent with the back-end logic. You will want to review your scheduled backups and adjust accordingly. Currently, only Minecraft Java and Bedrock support backups while running. Any other server has the potential of writing to files at the same time AMP is saving them and could cause a corrupted backup. If this is a risk you are willing to take, you can toggle the new setting and AMP will allow you to take them regardless.

This version also adds the missing “Restart Even If Not Running” setting that was overlooked when merging the scheduler tasks.

The logic for hardlinks was removed in Linux and replaced with the same staging logic used by Windows. Hardlinks were not the correct solution for mirroring the files and could have caused corruption as well. Now, all server files will be cloned to the staging directory and backed up from there. Copying the files is quick which reduces the downtime or risk of files being edited by the game server.


  • Fixed two potential null reference exceptions
  • Determine the size of the symlink drive rather than the root when calculating backup size limits
  • Exclude .neoforge-tmp files from backups
  • Skip missing files with warning when staging the backup rather than failing the entire backup

Minecraft

  • Fix Custom Java Options causing the instance to crash
  • Adjust BTA startup regex
  • Fix null reference exception with sleep server
  • Fix null reference exception with favicon

Other Fixes

  • Add work around for SteamCMD Missing Configuration bug
  • Align the Upgrade This Instance button
  • Port assignment fixes to properly allow TCP/UDP ports to coexist on existing instances - Fixes ports getting reassigned erroneously for Minecraft
  • Allow ports to be set manually to something outside the Application Port Ranges
  • Custom ports are properly linked to the correct instance
  • Prevent duplicate port collisions when assigning ports
  • Prevent privilege escalation if granted at the ADS level while managing an instance
  • Modal pop-ups display an unknown error when a null value is provided by the web server
  • Additional logging to container startup network check
  • Additional logging for OIDC token exchange
  • More UI feedback for 2FA failures
  • Additional logging and UI feedback for Deployment Templates when a deployment fails
  • Fixed a crash caused by shutting down a game server using Ctrl+C method
  • Fixed a crash when failing to import a JSON config file
  • Fixed a crash when trying to write to the standard input of an app fails
  • Minor fixes based on new unit tests: RCON client packet handling edge cases, Steam Query responses, Linux user management, hex character handling, and type coercer
  • Implemented testing for UI elements and supported game servers

AMP 2.8.0.6 ‘Proteus’

:warning: It’s very important that you follow the update guide for this release. The system tools (ampinstmgr) must be updated before the new update button will work:
https://discourse.cubecoders.com/t/how-to-update-amp-to-the-latest-version/2297

This release is focused on bug fixes found during extensive live testing. The main areas are updating AMP from the UI, servers shutting down properly, and controller/target reliability.

Updating AMP from the UI

The Update this instance button is back! It’s been rebuilt so it actually works as expected, and it can now update the system tools and instances.

The update button on ADS now gives you four options:

  • Update this instance
  • Update all instances
  • Update the system tools
  • Update everything

The page now waits for AMP to come back online before refreshing, rather than landing on a “can’t reach this page” error.

A few things to know:

  • One-time manual step: Your system tools need to be updated to this version before the button can be used. On Linux run getamp update as root. On Windows download and run the latest AMPSetup.msi. After that, everything can be updated from the UI.
  • If your tools are too old, AMP will tell you what needs to be done.
  • New ampinstmgr toolsstream command to show or change which release stream (Mainline/Development/etc.) the system tools update from.

Graceful Shutdowns

This addresses the long standing reports of servers being killed instead of shut down properly and losing progress (AMP doesn't stop instances/applications properly · Issue #1019 · CubeCoders/AMP · GitHub). Stopping an instance, updating instances and shutting down the host should now give your game server the time it needs to save and exit cleanly.

  • Game servers are given their full stop timeout from the template rather than being killed after a few seconds
  • Update All properly stops instances before updating them
  • The web panel stays available while the game server is shutting down
  • ampinstmgr stopall is faster on hosts with multiple instances
  • Fixed leftover game processes after stopping certain servers (e.g. Colony Survival)
  • Fixed OS_CLOSE instantly killing the server on Windows
  • Fixed servers restarting themselves or showing “Application was killed by the system. This usually means the system ran out of memory.” while being stopped
  • Fixed stopping a server shortly after starting it causing it to restart or be killed
  • Fixed stop taking several minutes on some RCON servers (e.g. Rust)
  • Fixed a server started automatically after a backup being impossible to stop from AMP
  • Fixed Windows instances sometimes not showing as stopped when they exit

Instance Cloning and Migration

  • Cloning and migrating between controller and targets now copies all files correctly
  • Clear error message when the target is running a version of AMP too old to transfer files - The original instance is left untouched
  • Cloning the ADS instance itself is now blocked - It previously stopped ADS if done from the API
  • Failed or cancelled clones are properly cleaned up on the target
  • Large container instances no longer fail to clone

Controller/Target Changes

  • Fixed controllers losing the ability to start/stop/manage instances on a target
  • Fixed deployments not working until the controller was restarted
  • Actions for a target that isn’t connected show a clear error rather than “unauthorized” or running on the controller instead
  • Changing a target’s URL takes effect immediately
  • Deleting an instance from the controller no longer shows a failure when it succeeded
  • Fixed “This is not a Local instance.” when creating an instance with the same name as a deleted one
  • Fixed instance list briefly showing blank during refresh
  • Fixed a case where instances would not displaying in ADS
  • Fixed SFTP ports showing swapped between instances

Login and Session Changes

  • Fixed OIDC login failing with a redirect error when refreshing the page while on an instance (OIDC: page reload on sub-pages sends the current path · Issue #1469 · CubeCoders/AMP · GitHub)
  • Fixed refreshing the page sending you back to the login screen (mostly seen in Firefox)
  • “Remember Me” no longer logs you out when you have multiple tabs open
  • Console and live updates reconnect properly after the session is automatically renewed
  • Logging out now stops that tab from receiving updates

Generic Module Changes

  • New settings added to a template now keep the value already in your game server’s config file instead of overwriting it with AMP’s default
  • Log tailing now handles log files that change name each run or are rotated - Fixes the empty console on Farming Simulator and some Unreal Engine games
  • “Send a console command” scheduler tasks are now available for games managed over RCON
  • Container instances now open the full port range for games that need one (e.g. Dune Awakening)
  • Fixed firewall rules for port ranges and the upper port shown for a range
  • Fixed instances getting stuck with “State was PreStart” after an error during startup
  • Fixed sleep mode button showing when not supported
  • Generic templates are now downloaded from the CubeCoders CDN
  • Added $ApplicationIPBindingBracketed which can be used in cases where IPv6 requires brackets, passes through IPv4
  • ExcludeFromSeed config manifest for newly added settings that should always use AMP’s default instead of importing an existing config file value

Backups

  • Backup staging location is now configurable
  • A single file error no longer fails the entire backup
  • Fixed backups getting stuck on “Scanning files” when a folder can’t be read
  • Servers that support live backups are now shut down for the backup when Backup While Running is disabled
  • S3 errors are shown with a reason and no longer stop the backup plugin from loading
  • File Manager and Backups tabs no longer fail to load when a folder is inaccessible

Minecraft Changes

  • Added missing server settings: Resource Pack ID, Bug Report Link, Code of Conduct, Initially Enabled/Disabled Packs, Log IP Addresses, Enforce Secure Profile, Chat Filtering, Pause When Empty and Management Server settings
  • Settings removed in newer Minecraft versions now say so in their description
  • An invalid Minecraft version now shows an error rather than sitting at “Awaiting User Input”
  • Fixed an error when stopping a server that failed to start

ampinstmgr Changes

  • ampinstmgr quick can read the admin password from AMP_ADMIN_PASSWORD_FILE or AMP_ADMIN_PASSWORD instead of the command line for more secure setups
  • USE_ANSWERS now properly skips waiting for first time setup for fully unattended installs
  • Fixed updatefirewall --DryRun actually removing firewall rules, and other commands ignoring some of the options given
  • ampinstmgr upgrade no longer leaves running container instances stopped
  • ampinstmgr switch no longer leaves a Generic instance half switched when it fails
  • ampinstmgr deleteinstance shows a reason when it fails

getamp Changes

  • Removed the 2 update limit
  • Added getamp help for details on commands and variables available in the script
  • Typing “yes” at a prompt is no longer treated as “no”
  • Installs continue with a warning if an optional package isn’t available
  • Fixed installs on IPv6 only hosts, AlmaLinux, openSUSE Leap 16, Fedora and Photon OS
  • Fixed installs failing with Docker Desktop (WSL)
  • Re-running the installer skips steps already completed (use --fresh to redo everything)

Other Fixes

  • SteamCMD fix for ARM devices - https://discourse.cubecoders.com/t/arm-devices-steamcmd-not-installing/42982
  • Fixed AMP crashing when a config file fails to import during shutdown
  • Fixed theme update errors
  • Changing the container image of a running instance no longer leaves it stopped
  • Container image option changed from 26.04 to 24.04
  • Added PlayerCount to the GetAnalyticsSummary API
  • Updated licence server address
  • Removed benign plugin errors on startup

Known Issues

  • The ampinstmgr service fails to start AMP after a restart - Workaround after any reboot run sudo su -l amp then ampinstmgr start ads01 - Resolved in 2.8.0.8
1 Like

AMP 2.8.0.8 ‘Proteus’

:warning: It’s very important that you follow the update guide for this release:
https://discourse.cubecoders.com/t/how-to-update-amp-to-the-latest-version/2297

This is a bug fix release following up on issues found after 2.8.0.6, including the known issue where AMP would not start after a reboot on Linux.

The changes here are mostly hotfix worthy, but due to some being ampinstmgr related and the added ports feature a new version was needed.

Startup After Reboot

  • Fixed the ampinstmgr service failing to start AMP after a restart on Linux - The sudo su -l amp / ampinstmgr start ads01 workaround is no longer needed once updated
  • ampinstmgr startboot no longer takes a delay argument - ADS already staggers instance startup using its own start delay setting

Importing Configuration Files

  • Fixed Import Configuration in the File Manager editor reporting “0 imported” after saving a change - The import could run before the save finished and read the old file
  • The import report now lists each setting with the value found in the file, grouped as Imported, Already Up To Date, Unrecognised and Rejected
  • Imported values are now validated against the setting before being accepted (numbers, min/max, max length, dropdown and checkbox values) - Invalid values are listed under Rejected with the reason instead of being saved

Settings Validation

  • Generic Module Numeric settings no longer accept non-numeric values - Previously these could be saved and silently become 0
  • Min/max limits are now enforced on settings with decimal values

Backups

  • S3 storage no longer requires an access key and secret key for services that allow anonymous access (e.g. SeaweedFS, MinIO) - Leave both blank, or set both
  • S3 errors now say exactly what’s missing when only one of the access key/secret key is set
  • Fixed the S3 bucket check failing on anonymous services, and a changed bucket not being re-checked until restart
  • Free space checks for backups now look at the correct drive when the backup or staging folder is on a separate mount (Linux) or behind a symlink/junction (Windows)
  • Running out of disk space while staging a backup now fails the backup with a clear error rather than completing with files missing

Generic Module Changes

  • Added $<Ref>First, $<Ref>Last and $<Ref>Range variables for ported ranges so templates can pass the start, end or full range of a port range to a game server - Needed for Minecraft Bedrock “Nethernet” handling
  • Added RangeSeparator to port definitions to control how $<Ref>Range is written (e.g. 7777-7806 or 7777:7806)

ampinstmgr Changes

  • ampinstmgr quick now properly accepts a base64: encoded admin password from AMP_ADMIN_PASSWORD_FILE, matching the command line - Caused incorrect password issues on first login

getamp Changes (Not yet released)

  • Optional install steps can now be run at any time after install: installJava, install32BitDeps, installPodman, installDocker and installCPx2 - See getamp help for details
  • installDocker now works on hosts without a docker.service (e.g. Docker Desktop on WSL)
  • Install commands now report failure correctly and refresh package lists before installing
  • Fixed 32-bit library install failing on Ubuntu 24.04 when Java is already installed
  • Fixed output wrapping one word per line when piped or run without a terminal