AMP 'Halimede' 2.4 Release Notes

AMP 2.4 ‘Halimede’ is a major update, with several new features and changes. The changes are so numerous that we’ve not listed some of the minor changes, and just focused on the main issues.

This release has been in the works for a long time, and we’ve spent a lot of time and effort making sure that it’s one of the biggest and best AMP releases ever.

There are significant API changes, so if you’re updating AMP then you’ll need to apply those updates across the board. As always we recommend users take backups before making major changes to their systems.

Check out the release video if you haven’t already that covers the major changes:

New Feature: Datastores

This allows AMP to store instances in multiple locations, such as multiple drives in the same system or on high-speed network shares.

For Network and Enterprise deployments, the use of tags on datastores also allows you to implement automated storage tiering, dictating that certain types of deployed instances need to be installed onto, say, a regular hard disk, a SATA SSD, or a fast NVMe drive. This is achieved by tagging the datastore with what type of storage it’s backed by, and then adding the same tag to a deployment template.

This also – for the first time – allows you to see what your storage usage is from within AMP. While nominally a simple feature, it’s not as straight forward as it seems. The logic that calculates datastore usage also calculates the storage usage of individual instances, so we expect to expose that information to the interface soon.

New Feature: Target tagging

Similar to the datastore tagging, this feature allows you to add tags to individual remote targets. This is similarly very useful for template deployments as it allows you to automatically have certain types of instances deployed to certain types of hardware - for example, premium tier hardware vs. budget friendly hardware for different deployment scenarios.

New Feature: Docker support on Windows

Previously, the use of containers in AMP was limited purely to Linux systems. This made AMP on Windows unsuitable for Enterprise deployments, for example, as there was no way to isolate the individual instances.

Starting with AMP 2.4, it’s now possible to deploy instances into Docker containers on Windows hosts. This uses the exact same Debian-based containers that AMP uses on Linux systems, so you get consistent behaviour and compatibility when using Docker instances across Windows and Linux targets. It also means that this will provide a path to more easily migrate instances between Windows and Linux once we implement the ability to relocate an instance to a new target. All Linux instances can be moved to Windows targets (by way of converting them to container instances) and Windows instances that are in containers can be moved to Linux targets. This will provide unprecedented cross-compatibility between systems not seen in any other panel.

This does, however, mean that instances that cannot run in Linux at all – such as Space Engineers – cannot be used with Docker on Windows at this time, and these instances must run outside of containers. The upshot is that some Linux-only applications such as Kaboom! and Pavlov VR can now be run from Windows targets.

Like on Linux systems, we’re using transient containers and transparent storage via mount binds and automatic port handling, which provides you with easy access to instance data without having to worry about networking.

Generic module Improvements

We’ve made a number of enhancements to the Generic module to give configuration builders more flexibility and control. Some of these improvements include:

  • Support for 7zip archives. Assumes that either 7zip is installed normally on Windows or that 7z(.exe) is available in PATH.
  • Support for unpacking gzip/tar/tgz/similar on Windows if tar.exe is available in PATH.
  • The ability for downloaded files to be saved with a different name than the original.
  • Minimum and maximum values for numeric settings.
  • Better handling of child-processes (AMP now processes the entire parent/child process tree rather than just one level deep).
  • Use of $PATH/ to run binaries that are located in an unknown location on the system but are normally accessible via PATH.
  • Ability to generate random values by default for new instances. Great for things like seeds for games that use procedural generation.

Docker container enhancements

As part of supporting Docker on Windows, we’ve made the containers less reliant on the host system. This means that the containers will work consistently in more environments and avoid some of the pitfalls associated with the previous mechanisms used to make libraries and configuration files from the host available to the containers. The container base images are slightly larger as a result, but more de-coupled from the host.

AMP is also better at updating the status of Docker instances promptly, so there’s fewer delays and holdups waiting for AMP to report that instances have started after deploying them or restarting them.

Time-zone and scheduling

Some common complaints and issues with AMP’s scheduler stemmed from a mixture of different types of time-handling within AMP, which could cause things to get out-of-sync if the server’s time zone wasn’t UTC. AMP now uses UTC globally internally to fix these inconsistencies.

Other widespread improvements

  • Package and library updates across the board, including the latest version of our Licencing system.
  • Improvements to AMP’s use of async across the board for long-running tasks. The webserver stack was rewritten in places to be fully asynchronous. This fixes a lot of issues that could cause timeouts where AMP transitioned between synchronous and asynchronous code by removing these boundaries entirely; especially when AMP is communicating with instances on remote targets.
  • Removed a load of unused cruft/partially implemented features that were ultimately superseded just to tidy things up. The old templates system was originally built around the notion of building template instances, but we went down a different route for this feature so all of the metadata that was previously associated with this has been removed.
  • A general UI pass to improve layout/feel in various locations throughout AMP.
3 Likes

2.4.0.2 has been released as a point release. It fixes a regression that prevented logging into the SFTP server of individual instances (The library doesn’t tolerate async event handlers well), fixes the StartApplication update stage, and fixes a crash in ADS when it can’t query a remote target that was previously available.

1 Like

2.4.0.4 has been released as a point release. It fixes a regression preventing the registration of new targets (They actually got registered, but the target didn’t get reconfigured), a regression of SFTP session handling that prevented any file operations, and controllers showing an infinite ‘loading’ animation when there are no targets present.

2 Likes

AMP 2.4.0.6, while nominally a point release because it has no breaking API changes, has some fairly major new functionality and cool new features that enhance AMPs security and general usability.

Notable are the inclusion of Webauthn support which allows you to login with fingerprints, hardware security devices, your mobile device, and many other mechanisms rather than just your password.

We’ve also made some changes to the activation system to reduce the chance that mere network configuration changes will cause deactivations. This as it happens may cause a one-time deactivation for some users as part of this update, but after you reactivate again it’ll all be good.

Core

  • When an instance is in a docker container, it’ll show the docker container memory limit (as set) as the total rather than the system total.
  • Licencing system change - machine hash generation is more stable and less likely to be affected by network changes.
  • Some images have been swapped from PNG to WebP to reduce total load size.
  • Webauthn support!
  • Added new ‘Aura’ theme.
  • Refreshed logos/icons in a few places to be in line with the current design language.

Generic Module

  • RCONHeartbeatMinutes now supports fractional minutes (e.g. 0.5 for every 30 seconds) to allow for titles that require keep alives faster than every minute to remain working.
  • Implemented FlagValue to dynamic setting specs to allow for a flag value that is off by default.

SteamCMD plugin

  • Now uses a one-time script to give it instructions, excluding the users password which is now fed via STDIN rather than a command line flag. Also fixes issues with special characters in passwords.

ADS/AIM

  • If AMP becomes deactivated, the user is warned in a sane way and directed to re-enter their key and reactivate instances rather than things just failing.
  • Changed sync logic between controllers and targets. Much faster, much more reliable. You get prompt UI updates when creating/starting/stopping/removing instances now.
  • Fixed a regression where new instances wouldn’t start automatically if they were created in Docker containers.
  • Docker invocations now strip ANSI control codes to make the console behave better.
  • First-time setup has new stages to prompt for Webauthn/2FA setup.

Factorio Module

  • Added an option to load the most recent save by default.
  • Implemented a “Scan for new saves” button.

AMP 2.4.0.8 Release Notes

This is a fairly major release, with several new features - and lots of cool changes under the hood.

S3 Storage support for Backups

AMP can now use any S3 compatible storage provider to store your backups, and can be configured to upload every backup to S3 after created. This feature is going to be expanded over time, but it’s very usable and simple to use.

Token Management

We recently introduced Webauthn support to allow you to use fingerprints, devices such as Yubikeys or other platform specific security methods. In this update, we’ve given you the ability to view and revoke these tokens, complete with information on when they were last used to you can easily figure out which tokens are no longer useful.

Responsive scaling fixes for Apple devices

Perhaps one of the oldest bugs in AMP, we finally sprung for a new MacBook to fix this issue - AMP no longer tries to revert to the Mobile view on Apple devices with retina displays!

‘Force click’ on Apple Devices

In addition to the above, Apple users often experienced issues with the push+hold right click equivalent we used for various users. Now, Apple users can do a hard ‘Force push’ on items to bring up their menu or alternative action.

Mobile UX Enhancements

We’ve made changes in several parts of AMP with a focus on User/Role management, template/datastore management, the audit log and the file manager. These changes significantly improve AMPs feel and usability on mobile devices and make better use of the vertical space.

Other Changes

  • Allowed for different version streams for different AMP release streams, so it won’t pester LTS users to update when the LTS version is already the most recent.
  • Minor layout tweaks for the new Aura theme.
  • Fixed UFW not being correctly detected as the default firewall provider. NFT has been moved to the bottom of the list so that iptables compatibiltiy takes priority.
  • CI builds now show up as “Development” in AMP at the bottom.
  • Fixed XML merging for fields that have no value in the Generic module.
  • Fixed the TelnetRCON provider not releasing its connection properly, meaning that you couldn’t restart a game server without restarting the whole instance if it used this provider.
  • Addressed some issues with the licence system that made it misbehave in certain types of virtual machine.

AMP 2.4.0.10 Release Notes

This update addresses a number of issues that primarily affected controller/target setups.

Activation Issues

We’ve made a change to the licencing system so that on bare-metal hosts with Docker installed, the virtual network adapter for Docker is no longer considered to be part of the system when producing the system hash. This should avoid the issue where AMP loses its activation after a reboot as the virtual adapter would change its MAC address each reboot.

S3 Backups

S3 backups are now compatible with more S3 providers - previously there was an issue where you couldn’t use some providers due to them not supporting the same pre-defined ACLs. This has been addressed by using the ‘Private’ default.

We’ve also fixed an issue where AMP was trying to upload backups to S3 even if the S3 option was turned off.

Deployment Templates

We’ve added the ability to clone deployment templates so you can quickly make a variant of an existing configuration without having to start from scratch. There’s also a new option to log all deployment attempts to a file to help with development and diagnostics when working with external services.

Controller and Target setups

The biggest change is a fix (finally!) to the problem where AMPs performance would slwoly degrade over time in controller/target setups and eventually stop responding.

This was caused by an ever growing list of secure login tokens, which are rigged to require roughly 100ms of compute time to validate. Each time a user managed an instance, another token was added. The tokens originally had an expiration of about 5 minutes. If too many tokens built up in that 5 minute period, login attempts would slow to a crawl.

To address this we’ve made a few changes. First, in most cases these secure tokens are now deleted immediately after they are used. Those that hang around have had their expiry time shortened significantly. The tokens can also be made specific to a single instance, which reduces the number of comparisons AMP has to make. The result is that there’s no longer a rapid build up of tokens that can cause delays and timeouts.

We’ve also added a new access mode for use in controller/target setups called “Bypass Controller” which reduces load on the controller by allowing the browser to communicate directly with the target. This does however require that every target is set up for use with HTTPS and is publicly accessible.

‘Force Click’ Rollback

We’ve temporarily rolled back this feature as it was causing issues with some mobile devices.


I’d like to give a special thanks to Arc from Southnode for their assistance tracking down some of the issues addressed in this update.

1 Like