This file is a running track of new features and fixes to each version of the daemon released starting with v0.2.0
.
- Fixes a bug that would throw a
setStatus
undefined error when deleting a failed install server. - Fixes bug in private registry verification function that wasn't using authentication correctly on wildcards.
- Updated Socket.io to v2.0.3, will require
[email protected]
as a minimum supported version to work correctly. - Updated dependencies to latest versions as well as verified support for Nodejs v8.
- Fixes security hole which set the active socket permissions to the last user to request the socket, potentially allowing users without permissions to access different console options.
- Fixed bug causing
undefined startup
when using an invalid service tag, or general loading issues. - Fixes potential race condition when booting daemon that would lead to services being incomplete when attemting to load all data.
- Fixes installation process hanging when no script is defined for a service option.
- Cleaner handling of errors when attemping to create a new server. If an error occurs the daemon will self-clean and remove the broken server.
- Fixes a race condition that would cause duplicate socket streams for data output and generally confuse both the panel and daemon.
- Fixes a race condition when booting SFTP subsystem container.
socketio-file-upload
bumped to0.6.0
in order to address a potential issue in file uploads in Chrome.- Fixes potential bug with CPU math if no object is defined.
- Fixes bug with test suite due to missing eslint rule.
- Fixes crash that might occur if a server fails to install a docker container and is then deleted.
- Fixes issue with private docker registries being applied to all images on the system when pulling.
- Minor version updates to multiple dependencies (no change in daemon function).
- SFTP subsystem now looking for container based on assigned ID and if a container is not found it will also attempt to locate it by image name before trying to create a new container.
- Updated dependencies to latest versions.
- Docker containers are now named after the SFTP username to ease finding those servers in the listing.
- Provide cleaner errors when a server is not found on the system. Return
HTTP/404
if server is missing, andHTTP/400
if the headrs are invalid. - Use
/daemon
for all calls to the panel, rather than/remote
.
- Service configuration files are now retrieved from the panel the daemon is associated with rather than being locally managed. Any changes are automatically pulled on daemon boot.
- Daemon configuration is now possible using
npm run-script configure
to contact remote panel and collect the configuration file. - Support for sending commands and receiving server log over websockets.
- Servers can now auto-start on completion of the install process.
- Errors encountered when parsing files during pre-flight are now thrown to the console websocket to be displated to users.
- Server status changes are now displayed in the console stream, as well as clearer docker connection updates.
- Support for running service scripts when installing a server for the first time.
- Support for reinstalling a server with a given service and option configuration.
- Ability to use the
host
network stack if needed. Allows containers to access resources on127.0.0.1
without having to do any routing. This option should only be used in private environments as it allows a container access to the host network stack. - Support for working disk limits that pevent server booting, and stop a server automatically if it is found to be violating limits.
- Gamedig removed due to lack of updates and multiple security vulnerabilities in dependencies.
- Removed unused
is-json
dependency.
- Support for running service scripts when installing a server for the first time.
- Support for reinstalling a server with a given service and option configuration.
- Ability to use the
host
network stack if needed. Allows containers to access resources on127.0.0.1
without having to do any routing. This option should only be used in private environments as it allows a container access to the host network stack. - Support for working disk limits that pevent server booting, and stop a server automatically if it is found to be violating limits.
- Use
/daemon
for all calls to the panel, rather than/remote
.
- Provide cleaner errors when a server is not found on the system. Return
HTTP/404
if server is missing, andHTTP/400
if the headrs are invalid.
- Fixes issue with private docker registries being applied to all images on the system when pulling.
[pre.3]
— Failed pack downloads/installs no longer cause the server to throw an error and fail installation.
- Docker containers are now named after the SFTP username to ease finding those servers in the listing.
- Servers can now auto-start on completion of the install process.
- Errors encountered when parsing files during pre-flight are now thrown to the console websocket to be displated to users.
- Server status changes are now displayed in the console stream, as well as clearer docker connection updates.
[pre.2]
— Fixes broken regex not detecting missing spaces in file parser text replacements.[pre.2]
— Address bug preventing editing of files via file manager in panel.
[pre.2]
— Re-addsmmmagic
dependency to address issues with file manager.
- Updated dependencies to latest versions.
[pre.1]
— Server boot now checks if service files exist for the server and if not throws a fatal error.[pre.1]
— Packs are now deleted if the hashes are different and a new one is being downloaded.
- Fixes potential bug with CPU math if no object is defined.
- Fixes bug with test suite due to missing eslint rule.
- Fixes crash that might occur if a server fails to install a docker container and is then deleted.
- Removes
mmmagic
dependency in favor of just checking the file extension as any potential mime bypassing is mitigated by low-level processes.
- Service configuration files are now retrieved from the panel the daemon is associated with rather than being locally managed. Any changes are automatically pulled on daemon boot.
- Daemon configuration is now possible using
npm run-script configure
to contact remote panel and collect the configuration file. - Support for sending commands and receiving server log over websockets.
socket.io
bumped to1.7.2
socketio-file-upload
bumped to0.6.0
in order to address a potential issue in file uploads in Chrome.- Minor version updates to multiple dependencies (no change in daemon function).
- SFTP subsystem now looking for container based on assigned ID and if a container is not found it will also attempt to locate it by image name before trying to create a new container.
- Fixes a race condition that would cause duplicate socket streams for data output and generally confuse both the panel and daemon.
- Fixes a race condition when booting SFTP subsystem container.
- Gamedig removed due to lac of updates and multiple security vulnerabilities in dependencies.
- Removed unused
is-json
dependency.
- Fixes a network configuration issue with
Docker 1.12.4
caused by no assigned IPv6 gateway.
- ICC is now enabled by default on
pterodactyl0
.
- Additional network configuration options are available in core.json if needed to customize network name and subnets.
- Added support for pulling images from private registries.
- Fixes runtime bug that broke socket connections on newly created servers until the daemon was restarted. This was most obvious if you created a new server and then started it and reloaded the page. Due to a modification in the build script the server was improperly initialized and requests would get sucked into the wrong portals.
- Fixes some race conditions and random bugs that would occur when attempting to create a server on the system.
- Fixes a flaw in underlying docker/dockerode implementation that would return a
container not found
error if there was an execution error in the container. Changeserr.statusCode
checks to simply read the response message and look forNo such container:
in the message instead.
- Added configurable docker policies to allow for more lax security settings if needed. The full list of policies can be found in our documentation.
- Added
PATCH /config
route to allow panel to tweak core configuration file.
- Changes the way that server creation is handled to allow initialization of the
Server()
class without a docker container existing on the system. This change causes the application startup to take longer if containers are missing for servers, as we hold application boot until all containers are created now. - Better file upload error handling, stops file upload if maximum size is exceeded rather than uploading to maximum size.
- Fixes a race condition when updating a server that would fail to assign the correct memory limits to a container.
- Fixes an issue where file decompression would be extremely slow on large files, and might never occur.
- Fixes mislabeled TeamSpeak 3 in configuration preventing proper boot sequence.
uploads.maxFileSize
removed in favor ofuploads.size_limit
which accepts a size in MB rather than bytes.
- Daemon now checks if it is up-to-date when booting.
- Fixes hardcoded path for SFTP containers that was causing a whole host of issues on some systems.
- Fixes previously known issue where decompressing large files through the file manager throws a
EMFILE: too many open files
error. - Fixes permissions and error response for URLs.
- Updates dependencies across the platform.
- Docker containers are now named with the template
<sftp username>:<randomstring:3>
for easier identification when runningdocker ps (-a)
. - Changes to deletion and creation function to run certain aspects in parallel to increase speed by utilizing
Async.auto()
. Most notable in the delete function. - Compression and Decompression now use native
tar
andunzip
modules to reduce memory footprint and keep things speedy. - Chown function now uses native module for speed and reliability purposes.
- Startup function modified to run more processes in parallel where possible to cut down on startup time.
- Daemon now requires Nodejs
v6
orv7
to run. Previous versions are no longer supported. - Daemon no longer supports Windows ecosystems due to changes in chown and compression functions.
- Fixes bug where Bungeecord and Spigot could not make use of certain features due to security restrictions. This release removes the
noexec
flag from the/tmp
directory. - Fixes bug where daemon would report an extraneous error when starting a container marked for rebuild.
- Fixes bug in certain file parsers that prevented the proper functioning of the parser.
- Support for
*
node in config file search, as well as support for search and replace in config values. Only applies toyaml
andjson
parsers. - Calling base route now returns system information for authenticated admins using the global token.
- Services now properly extend the
Core
class so that you only need to add functions and extendparent()
if something is being done differently. - Changed
{{ build.<options> }}
replacements in service configurations to useserver.
orconfig.
starts to identify values that should be replaced. This is a breaking change from0.3.0
ONLY if you are using custom templates.
- Fixes a fatal error that was thrown when rebooting servers at times even though there was no actual server error.
- Fixes a bug with the docker gateway being assigned with a subnet when it should not.
- Fixes a bug that didn't detected bungeecord server's first startup, preventing the correct allocation binding. Bungeecord servers cannot run on
:25577
without triggering this reboot line, apologies in advance.
🎉🎉
- Added method to handle assigning a percent extra memory to containers based on the current allocated. Should help with Minecraft servers hitting OOM when java attempts to allocate a bit over the hard limit.
- Support for ARK Servers.
- Switched to using a pure Socket.io stream to handle file uploads from the browser. Faster, and much less buggy.
- Added support for file copying.
- Added support for creating empty folders though the API.
- Changed some docker container creation options to prevent fork-bombing as well as prevent additional routes for privilege escalation in containers.
- Changed server startup async pathway to call
onStarting
notonStart
.onStart
is now called when server is marked as started. - Daemon now uses internal Docker API to determine the container interface to use. Better support for non-linux environments.
- Fallback to
minecraftping
method for all Minecraft servers to mitigate some Gamedig issues. - Dependencies are now hard-coded to prevent potential issues with the panel or version changes breaking features.
- Servers now report core stats when starting and wait for performing query.
- Query failures no longer spam log, and can be configured to kill servers after a set number of consecutive failures (or just keep on trucking).
- Daemon now defaults to checking for updated docker images unless specifically configured otherwise.
- The following API Endpoints have been modified:
GET /server/file/<file path>
->GET /server/file/f/<file path>
POST /server/file/<file path>
->POST /server/file/save
withpath
:/path/to/saveas.txt
andcontents
:file contents
DELETE /server/file/<file path>
->DELETE /server/file/f/<file path>
GET /server/download/<token>
->GET /server/file/download/<token>
- Properly call
onStop
,onStarting
, andonStart
when server actions occur. - Files with spaces in their name would break the
path()
function, this has been fixed. - Timezone was improperly set inside server containers.
- Decompressing large files through the file manager throws a
EMFILE: too many open files
error.
- BinaryJS has been removed due to it being abandoned and buggy.
- Remove PID limit that broke literally every Minecraft server with an "unrelated" error. Sorry about that...
Known Issue: Decompressing large files through the file manager throws a EMFILE: too many open files
error.
- Added method to handle assigning a percent extra memory to containers based on the current allocated. Should help with Minecraft servers hitting OOM when java attempts to allocate a bit over the hard limit.
- Support for ARK Servers.
- Changed some docker container creation options to prevent fork-bombing as well as prevent additional routes for privilege escalation in containers.
- Changed server startup async pathway to call
onStarting
notonStart
.onStart
is now called when server is marked as started.
- Properly call
onStop
,onStarting
, andonStart
when server actions occur. - Fix decompressing files setting the wrong permissions on extractions.
- Switched to using a pure Socket.io stream to handle file uploads from the browser. Faster, and much less buggy.
- Daemon now uses internal Docker API to determine the container interface to use. Better support for non-linux environments.
- Fallback to
minecraftping
method for all Minecraft servers to mitigate some Gamedig issues.
- Chown function was checking paths incorrectly which could lead to issues if a safe path is already passed (redundant pathing basically, not a security risk, jut causes a File not Found error).
- Files with spaces in their name would break the
path()
function, this has been fixed. - Timezone was improperly set inside server containers.
- BinaryJS has been removed due to it being abandoned and buggy.
- Dependencies are now hard-coded to prevent potential issues with the panel or version changes breaking features.
- Fixed bug preventing copy, rename, move of arrays of files.
- Fixed chown bug preventing files from being owned by the container running the server.
- Added support for file copying.
- Added support for creating empty folders though the API.
- Servers now report core stats when starting and wait for performing query.
- Query failures no longer spam log, and can be configured to kill servers after a set number of consecutive failures (or just keep on trucking).
- Daemon now defaults to checking for updated docker images unless specifically configured otherwise.
- The following API Endpoints have been modified:
GET /server/file/<file path>
->GET /server/file/f/<file path>
POST /server/file/<file path>
->POST /server/file/save
withpath
:/path/to/saveas.txt
andcontents
:file contents
DELETE /server/file/<file path>
->DELETE /server/file/f/<file path>
GET /server/download/<token>
->GET /server/file/download/<token>
- Configurable DNS servers in core configuration for docker containers.
- Bungeecord containers no longer spam up the console with ping information.
- If an environment variable is set to null don't even send it to the docker container. Fixes unset variable check bug for Spigot building.
- Fixed startup sequence to actually mark status as starting as well as prevent querying server until completely started.
- Root filesystem in containers is now entirely read-only. Container applications can only write to
/home/container
and/tmp
. - Prevent logging server output through docker logging methods. Fixes a potential DoS attack vector (and also saves space).
- Drops the following capabilities from containers:
setpcap
,mknod
,audit_write
,chown
,net_raw
,dac_override
,fowner
,fsetid
,kill
,setgid
,setuid
,net_bind_service
,sys_chroot
,setfcap
in addition to default dropped capabilities. - Containers are now in isolated networks and unable to directly connect to a container's specific IP address. The daemon will automatically create this network interface on boot.
Requires [email protected]
- Server Suspension, immediately stops running processes and blocks SFTP and API access.
- Automatic SFTP Container deployment when process is stated (previously required you manually add a container)
- Updating a server's memory, swap, block io, or cpu quota no longer requires a container rebuild and will take effect immediately.
- Better handling of preflight files. Allows using four different systems for parsing with find and replace capabilities (file, properties, ini, and yaml).
- Fixes bug that would display improper newlines with console data. Allows control characters and ANSI color codes to travel through.
- Updated ESLinter and with that updated code to reflect new standards for ES6
- Code Cleanup and more use of
lodash
module in place oftypeof
checks