This is a moderately sized QoL update with a couple of significant new features to make life easier for users and administrators.
Multiple IP address handling
Important note: This feature changes how some network related settings within AMP are handled and where you change certain options
AMP is now aware of multiple IP addresses within a single system and how this affects port usage. It is now possible for example to have two separate instances using the same port number(s) so long as they are bound to different IP addresses. AMP also accounts for the way that instances listening on all interfaces consume ports.
The notable UI change here is that instances no longer have an option within their configuration to alter their IP binding. This setting has been moved to the ‘Network and Ports’ section of an instances settings which is accessible by clicking the pencil button on an instance.
Rather than entering a set of login details for the controller and giving those to the target, instead you put the controller into ‘Pairing’ mode with the new “Pair new target” option. This will show a code that you supply to the new target rather than having to enter login details. This also makes adding targets possible when using OIDC or 2FA which didn’t work previously.
Improved handling of ‘Waiting for input’ scenarios
In situations where AMP is waiting for some information or response from users, this is better reflected on the status page and within instances. So a Minecraft instance that failed to start because the EULA hasn’t been accepted will show as waiting for input rather than failed.
Creating instances in groups view
Eliminating a source of confusion while making things easier. You can now create instances while using the ‘Groups’ view for the instance list, and instances will be created within those specific group.
Improvements to the new-user experience
We’ve tidied up large parts of the first time experience for new users to help make it easier to get started with AMP and updated the text and iconography to reflect other changes we’ve made.
Configuration importing improvements for Minecraft
Importing server.properties in the Minecraft module now works as intended again (a previous update broke it) and as a bonus - the changes are now reflected immediately in the interface without requiring a refresh.
Bug Fixes and Changes
Reduced size of icons font from 4MB down to 300KB, improving loading times significantly.
Editing ports for instances on remote targets now works properly.
IP address listings for remote targets now work correctly.
Improved handling for large multi-gigabyte files with S3 along with improved logging.
Fixed not being able to create/submit tickets from the support interface.
Installations for C++, DirectX and Git are skipped if they’re already installed and properly work on Windows Server. This will take two update passes if Tools are updated first.
Fixed handling of SteamCMD logins where the username contains a space.
Refreshed the appearance of the Deployment Templates editor to match other areas of AMP.
Role management now includes descriptions/icons to show different types of role at a glance.
AMP now properly waits for an instance to stop before continuing to other tasks. Noted on instance restarts.
Editing instance settings now correctly waits for user to accept restarting before shutting down an instance.
Added ModifyCustomFirewallRule to the API.
Addressed child process monitoring for apps that use the console assistant on Windows (Arma Reforger Metrics bug)
Fixed an issue where archives couldn’t be extracted when created on a different OS.
Minecraft whitelist errors added to AMP user disconnect monitoring to properly track which players actually joined.
Improved asynchronous processing in many areas for slight performance improvements.
Generic instance Pre-start stages now complete fully before app startup.
Fixes for scheduler tasks not saving or saving with null values.
Addressed some controller<->target syncing issues.
Known Issues
It may sometimes be necessary to open an instances settings a second time to get the list of available IP addresses to show up.
This patch fixes an issue with applying new instance settings on remote targets when an instances description is empty, but then not correctly reporting that failure. It also addresses an issue where certain network related settings weren’t being updated and written promptly.
Known Issues
Generic instances don’t honor the IP
Can’t edit the IP from controller/target
IP doesn’t reflect being changed on controller/target
This patch corrects a couple of issues noted in the original release. This does not solve all the issues found, as you can see further below. Only apply this hotfix if you already updated to 2.6.2.0 and are experiencing the issues. Please wait to update if you have not already, while we continue to work on more fixes.
We have enabled the Match ADS Version setting for all license types for people who prefer to stick on a specific version for longer periods of time. This was previously locked to higher license tiers.
Mike will be providing an update about future plans for releases after we get this under control.
Fixes
Ports assigned twice to different instances
Instances outside of Docker now honor the IP/Port settings from ADS
Editing the IP binding in ADS on controller/target setups saves the changes
Update stages always hide the start/update button for generic instances
Fixed images and layout for community pages
Minor tweak to mobile “Pair New Target” button
Known Issues
Instance in Docker containers don’t honor the IP assigned - Fixed in next release
Can’t edit the application IP (greyed out)
IP doesn’t reflect being changed on controller/target
Editing an instance’s network info restarts it without prompting
SteamGuard fails for app sign in (works for e-mail codes) - Fixed in next release
Wait for Startup in update stages not registering a full startup - Fixed in next release
Controller crashes periodically - Fixed in next release
This patch addresses some of the more major outstanding bugs from the 2.6.2 release. This also unlocks the option for everyone to use Match ADS Version to keep instances locked to a specific version. This was previously only an option for Advanced and Enterprise license holders. It was decided this was the best move to prevent disappointment if people run into issues like this update caused.
Fixes
Match ADS Version license check removal
SteamGuard no longer fails for app sign in - Was changed on Valve’s side
Wait for Startup now detects the app as started again
Controller no longer crashes periodically and other API issues addressed
SRCDS games attempt to select a sane IP inside a container when using non-host networking mode
Added a warning if someone tries to create a ticket from ADS
Known Issues
Can’t edit the application IP (greyed out)
IP doesn’t reflect being changed on controller/target
Editing an instance’s network info restarts it without prompting
Instance in Docker containers don’t honor the IP assigned
This patch addresses the issue many people were seeing on controller/target setups that the instances would never show. This seemed to be caused by a target being offline. This isn’t a big hotfix, but was a tough one to work through figuring out the cause so it took some time.
Fixes
Removed a loop causing a lock on instance refreshes.
Pointed the analytics plugin to the new c7rs.com URL
Known Issues
Can’t edit the application IP (greyed out)
IP doesn’t reflect being changed on controller/target
Editing an instance’s network info restarts it without prompting
Instance in Docker containers don’t honor the IP assigned
This hotfix has most the major bugs resolved. The two remaining have workarounds that aren’t ideal, but should hold people over for the next hotfix. Thank you everyone for your patience while we worked through all the issues caused by the new mutli-IP awareness changes.
If you were waiting to update and aren’t worried about the two known issues, now should be an alright time to get on 2.6.2.
Fixes
Can’t edit the application IP (greyed out)
IP doesn’t reflect being changed on controller/target
Editing an instance’s network info restarts it without prompting
Instance in Docker containers don’t honor the IP assigned. If a specific IP is selected on the host, then AMP selects the first private IP in Docker that isn’t loopback.
Some applications fail to start properly. This was a secondary issue of the app not starting properly. This was noted on Node, Factorio, and others. The root issue will still need addressed by the server admin, but now AMP should at least give any console output it can before the app crashes.
Generic template variables can contain special characters
Known Issues
Network info popup takes opening twice to populate IP address list - Fixed in next release
SFTP port no longer opens inside instances - Fixed in next release
Template Depoyment fails if no user/role is specified - Fixed in next release
Child port logic for generic instances not honored when manually editing instance ports
IP selection does not take affect on generic instances - Fixed in next release
This release contains even more 2.6.2 bug fixes. Due to the changes needed, this one required a point release (.2) so be sure to follow the upgrade guide fully to get the latest ampinstmgr version as well!
Fixes
Network info popup takes opening twice to populate IP address list
SFTP port no longer opens inside instances - Fixed aside from the known issue below
Template Depoyment fails if no user/role is specified
IP selection does not take affect on generic instances
Added support for multi-line messages for scheduler task variables
New user creation gives access automatically to the instance they’re created in
Removed deprecated skins/whitelist APIs from the Minecraft module
Adjust the free memory calculation to include cached memory as available
Any changes to the instance settings from the ADS Instances tab requires a restart of the instance for now
Adjusted minimum / maximum values for analytics
Analytics floating point display issue causing 0.000000000 formatted values to show
Minecraft instances in Docker with memory limits set will automatically adjust the heap sizes accordingly. Set MinecraftModule.Java.UseContainerMemoryLimits = false to disable this functionality
Adjust scheduled tasks for AMP tasks (Not the Scheduler tab within AMP) for non-English Windows systems
Properly adjust the original repo to include -main for generic instances - Was causing State 3 errors on instance update
Fixed a null reference exception in FileTailLogger shutdown
S3 backup manifests are now properly deleted
Known Issues
SFTP port no longer opens inside instances if running in Docker and a specific IP is selected - Fixed in next release
Child port logic for generic instances not honored when manually editing instance ports - This safeguard wasn’t implemented previously. It’s on the to-do list for a future release
Instances that have Start/Wait/Stop update stages not registering as started - Fixed in next release
Can’t add scheduler task variables by clicking them when there’s a textarea box - Fixed in next release
New Minecraft “Use container memory limits” doesn’t show when using Restrict mode for container memory limit - Fixed in next release
Instances deployed from the Templates tab does not honor the multi-IP setting being enabled - Fixed in next release
Custom added ports are not opened in the firewall - Fixed in next release
This release contains all outstanding 2.6.2 bug fixes! This also includes a few minor QoL changes people have asked for.
Please be sure to follow the upgrade guide fully to get the latest ampinstmgr version.
Fixes
Instances will always be updated by ADS on first startup after running ampinstmgr from command line.
SFTP port no longer opens inside instances if running in Docker and a specific IP is selected
Instances that have Start/Wait/Stop update stages not registering as started
Can’t add scheduler task variables by clicking them when there’s a textarea box - “insertAtCaret” error in browser console
New Minecraft “Use container memory limits” doesn’t show when using Restrict mode for container memory limit
Instances deployed from the Templates tab does not honor the multi-IP setting being enabled - Also matched up Application IP logic
Custom added ports are not opened in the firewall
Disable Direct Mode File Transfers by default - API is much more performant these days and Direct Mode doesn’t work in many scenarios (e.g. controller/target setups)
Fixed an issue where ports couldn’t be assigned to more than one generic instance even if they had different IPs
Backups now display the Compressed / Uncompressed sizes
Backup tasks should display until completion - Async code fixes
S3 backups will only warn if a bucket can’t be verified rather than failing the backup - This allows for more restricted S3 accounts but requires admins to ensure buckets are configured properly manually
Added “DisablePayloadSigning” to the manifest upload to address issues with some providers
Added “WHEN_REQUIRED” to S3 Checksum to allow older APIs like Backblaze R2
Blank enum values are properly hidden now (e.g. Startup Mode)
Known Issues
None! And let’s keep it that way! >:(
Child ports not being allocated properly when there are conflicting non-child ports, preventing instance creation
This addresses a bug preventing people from making new instances with the error “Port #### is already in use, but initially wasn’t. You can address this by trying again or adding an extra port range. Search “Application Port Ranges” in the top right of AMP.”
This also fixes an issue that was preventing AMP variables from being used within config files managed by the metaconfig in Generic instances. This doesn’t mean much to most of you, but was a majorly needed change that adds more capabilities to the Generic Module.
Finally, there was JavaScript clean up regarding plugin loading that specifically fixes backups showing duplicates on page refresh, but also addressed some double API calls on the backend and replaced some deprecated JavaScript methods.
This is a fairly substantial release with a mixture of bug fixes, QoL improvements, and new features that focus on the scheduler and external integrations.
Exclusive to AMP Professional, Advanced and Enterprise editions, this facility makes it much easier to integrate third party services with AMP. A few examples of things you can do with it are:
Run an in-game command when you press a button on a Stream Deck.
Spawn a Redstone block in Minecraft when someone rings your real-life smart doorbell to play a sound using a note block.
Restart the server when a Github repository you own is updated.
Give everyone XP when someone pledges to you on Patreon
Basically any time you want things to happen either with AMP or in-game as a result of something happening at an external source, this is a great way to do this.
There is an option to require a bearer token for anything posting to these webhooks to keep them private.
New Feature - Minecraft Block Change Event
If you use a command block to place a block in-game using the setblock command - AMP can now detect that and respond to it via the Scheduler. It will expose the blocks position and coordinates to the event, so you can use a block being placed at a certain location as a trigger for something else.
Some cool examples of things you can do with this are:
Take a backup when a specific in-game button is pressed.
Send a notification on Discord when a player walks over a pressure plate.
Start or stop other game servers when a player approaches a certain position in-game.
New Feature - stacked “Else If” statements in the scheduler
We’ve added Else If and End If to the scheduler by popular demand. These can’t be nested as it currently stands (they’re just tasks that jump forward or not) but they allow a little more flexibility in terms of how you respond to events.
New Feature - Start/Stop/Restart instances in scheduler
ADS can now start/stop/restart instances via the scheduler in response to a time interval or an external event (such as a webhook ;))
Updated - Web Request Plugin
The web request plugin has some cool new functionality, notably the inclusion of a Discord embed:
And the ability to specify custom headers when making POST requests for interacting with other APIs and services.
Breaking Change Warning
Three breaking changes coming:
The general API has been changed to use an Authorization: bearer TOKEN header rather than the SESSIONID attribute in the JSON POST body. Be sure to update any custom plugins or clients you use as this feature is currently deprecated, but will be removed fully in a future update.
The ampinstmgr createInstancecommand has been deprecated in favor of the API. It also has been noted for now with plans to remove in a future release.
See this notice on deprecated game modules that have been replaced with generic alternatives. This is effective immediately, but the existing instances will continue to work but will no longer receive updates. Retiring AMP legacy modules - News - CubeCoders Support
Other Changes and Fixes
The instance filter in ADS will also consider port numbers, so you can type “27015” and it’ll find instances that have that as their primary port.
The search box now accounts for the actual setting node names so you can search for them as they appear in the config files and as they are referenced in the API.
Made ExtractArchive non-blocking which was causing the UI to become unresponsive if you extracted a large archive.
Fixed soft-stop of Docker instances so they shut down cleanly.
Response compression for the API has been enabled in the web server which speeds things up for API calls with large responses.
Fixed a browser memory leak caused by trying to add infinite entries to the console and never pruning them.
Theme is preloaded to avoid an apparent style change on slower connections.
OIDC logouts are now handled correctly.
OIDC scopes are configurable.
Fixed plugin library dependency handling - fixes the early-loading of maxmind.db for analytics among others.
Added “MultipleOf” as a field in Generic settings to allow more control over how those settings are handled for very large or very small values. Gives control over integer v.s. floating point values.
Backup notifications are no longer hidden when executed by the scheduler.
Instance creation will fail if the config.json or metaconfig.json files are missing.
Adjust sensitive API responses to “identity” encoding type to increase security.
Fixes the enable/disable toggle not showing on schedule triggers.
Fixes the scheduler crashing AMP if a previously referenced trigger is not present (happens if for example the Backup plugin doesn’t load because an invalid location was specified)