From f32cc6b0327982d2dbe744db728feb9450322150 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Tue, 17 Dec 2024 06:03:22 +0800 Subject: [PATCH 01/25] Create websync.yml --- .github/workflows/websync.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/websync.yml diff --git a/.github/workflows/websync.yml b/.github/workflows/websync.yml new file mode 100644 index 0000000..5bf87d9 --- /dev/null +++ b/.github/workflows/websync.yml @@ -0,0 +1,29 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + #push: + # branches: [ "main" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Repository Dispatch + uses: peter-evans/repository-dispatch@v3 + with: + token: ${{ secrets.WEB_PAT }} + repository: ptero-eggs/egg-web-sync + event-type: sync + client-payload: '{"repo": "application"}' From 0099f2296c6dc54f9aa74864f4c6e0f2a39ff453 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Tue, 17 Dec 2024 06:49:46 +0800 Subject: [PATCH 02/25] Update websync.yml --- .github/workflows/websync.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/websync.yml b/.github/workflows/websync.yml index 5bf87d9..f987df1 100644 --- a/.github/workflows/websync.yml +++ b/.github/workflows/websync.yml @@ -1,15 +1,12 @@ # This is a basic workflow to help you get started with Actions -name: CI +name: Web Sync Push # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the "main" branch - #push: - # branches: [ "main" ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: + push: + branches: [ "main" ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From 1bf83a194a18d7af8bced1e78e14c9b89462e699 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 26 Jan 2025 09:18:40 +0800 Subject: [PATCH 03/25] Fix postgres and add 13, 15, and 17 Resolves https://github.com/Ptero-Eggs/application-eggs/issues/7 --- database/sql/postgres/egg-postgres13.json | 52 +++++++++++++++++++++++ database/sql/postgres/egg-postgres14.json | 8 ++-- database/sql/postgres/egg-postgres15.json | 52 +++++++++++++++++++++++ database/sql/postgres/egg-postgres16.json | 8 ++-- database/sql/postgres/egg-postgres17.json | 52 +++++++++++++++++++++++ 5 files changed, 164 insertions(+), 8 deletions(-) create mode 100644 database/sql/postgres/egg-postgres13.json create mode 100644 database/sql/postgres/egg-postgres15.json create mode 100644 database/sql/postgres/egg-postgres17.json diff --git a/database/sql/postgres/egg-postgres13.json b/database/sql/postgres/egg-postgres13.json new file mode 100644 index 0000000..408b2f9 --- /dev/null +++ b/database/sql/postgres/egg-postgres13.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-26T01:12:12+00:00", + "name": "Postgres 13", + "author": "parker@parkervcp.com", + "description": "A default Postgres install that is not really editable.", + "features": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:postgres_13": "ghcr.io\/ptero-eggs\/yolks:postgres_13" + }, + "file_denylist": [], + "startup": "postgres -D \/home\/container\/postgres_db\/ & wait-port; psql -h127.0.0.1 -p{{SERVER_PORT}} --dbname postgres", + "config": { + "files": "{\r\n \"postgres_db\/postgresql.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#port =\": \"port = {{server.build.default.port}}\",\r\n \"#external_pid_file =\": \"external_pid_file = '\/home\/container\/postgres_db\/run\/postgres.pid'\",\r\n \"#unix_socket_directories =\": \"unix_socket_directories = '\/home\/container\/postgres_db\/run\/'\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"database system is ready to accept connections\"\r\n}", + "logs": "{}", + "stop": "\\q" + }, + "scripts": { + "installation": { + "script": "#! \/bin\/ash\r\nadduser -D -h \/home\/container container\r\n\r\nchown -R container: \/mnt\/server\/\r\n\r\nsu container -c 'initdb -D \/mnt\/server\/postgres_db\/ -A md5 -U \"$PGUSER\" --pwfile=<(echo \"$PGPASSWORD\")'\r\n\r\nmkdir -p \/mnt\/server\/postgres_db\/run\/\r\n\r\n## Add default \"allow from all\" auth rule to pg_hba\r\nif ! grep -q \"# Custom rules\" \"\/mnt\/server\/postgres_db\/pg_hba.conf\"; then\r\n echo -e \"# Custom rules\\nhost all all 0.0.0.0\/0 md5\" >> \"\/mnt\/server\/postgres_db\/pg_hba.conf\"\r\nfi\r\n\r\necho -e \"Done\"", + "container": "postgres:13-alpine", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Superuser Name", + "description": "The username for the postgres superuser", + "env_variable": "PGUSER", + "default_value": "pterodactyl", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Superuser Password", + "description": "The postgres super user password with a strong default.\r\nYou should be generating new ones for each server.\r\nIf you don't then users can hit other users DB's", + "env_variable": "PGPASSWORD", + "default_value": "Pl3453Ch4n63M3!", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/database/sql/postgres/egg-postgres14.json b/database/sql/postgres/egg-postgres14.json index 0c3583c..bef5312 100644 --- a/database/sql/postgres/egg-postgres14.json +++ b/database/sql/postgres/egg-postgres14.json @@ -4,21 +4,21 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-12-12T15:32:12+01:00", + "exported_at": "2025-01-26T01:12:12+00:00", "name": "Postgres 14", "author": "parker@parkervcp.com", "description": "A default Postgres install that is not really editable.", - "features": null, + "features": [], "docker_images": { "ghcr.io\/ptero-eggs\/yolks:postgres_14": "ghcr.io\/ptero-eggs\/yolks:postgres_14" }, "file_denylist": [], - "startup": "postgres -D \/home\/container\/postgres_db\/", + "startup": "postgres -D \/home\/container\/postgres_db\/ & wait-port; psql -h127.0.0.1 -p{{SERVER_PORT}} --dbname postgres", "config": { "files": "{\r\n \"postgres_db\/postgresql.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#port =\": \"port = {{server.build.default.port}}\",\r\n \"#external_pid_file =\": \"external_pid_file = '\/home\/container\/postgres_db\/run\/postgres.pid'\",\r\n \"#unix_socket_directories =\": \"unix_socket_directories = '\/home\/container\/postgres_db\/run\/'\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"database system is ready to accept connections\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "\\q" }, "scripts": { "installation": { diff --git a/database/sql/postgres/egg-postgres15.json b/database/sql/postgres/egg-postgres15.json new file mode 100644 index 0000000..fb1154d --- /dev/null +++ b/database/sql/postgres/egg-postgres15.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-26T01:12:12+00:00", + "name": "Postgres 15", + "author": "parker@parkervcp.com", + "description": "A default Postgres install that is not really editable.", + "features": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:postgres_15": "ghcr.io\/ptero-eggs\/yolks:postgres_15" + }, + "file_denylist": [], + "startup": "postgres -D \/home\/container\/postgres_db\/ & wait-port; psql -h127.0.0.1 -p{{SERVER_PORT}} --dbname postgres", + "config": { + "files": "{\r\n \"postgres_db\/postgresql.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#port =\": \"port = {{server.build.default.port}}\",\r\n \"#external_pid_file =\": \"external_pid_file = '\/home\/container\/postgres_db\/run\/postgres.pid'\",\r\n \"#unix_socket_directories =\": \"unix_socket_directories = '\/home\/container\/postgres_db\/run\/'\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"database system is ready to accept connections\"\r\n}", + "logs": "{}", + "stop": "\\q" + }, + "scripts": { + "installation": { + "script": "#! \/bin\/ash\r\nadduser -D -h \/home\/container container\r\n\r\nchown -R container: \/mnt\/server\/\r\n\r\nsu container -c 'initdb -D \/mnt\/server\/postgres_db\/ -A md5 -U \"$PGUSER\" --pwfile=<(echo \"$PGPASSWORD\")'\r\n\r\nmkdir -p \/mnt\/server\/postgres_db\/run\/\r\n\r\n## Add default \"allow from all\" auth rule to pg_hba\r\nif ! grep -q \"# Custom rules\" \"\/mnt\/server\/postgres_db\/pg_hba.conf\"; then\r\n echo -e \"# Custom rules\\nhost all all 0.0.0.0\/0 md5\" >> \"\/mnt\/server\/postgres_db\/pg_hba.conf\"\r\nfi\r\n\r\necho -e \"Done\"", + "container": "postgres:15-alpine", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Superuser Name", + "description": "The username for the postgres superuser", + "env_variable": "PGUSER", + "default_value": "pterodactyl", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Superuser Password", + "description": "The postgres super user password with a strong default.\r\nYou should be generating new ones for each server.\r\nIf you don't then users can hit other users DB's", + "env_variable": "PGPASSWORD", + "default_value": "Pl3453Ch4n63M3!", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/database/sql/postgres/egg-postgres16.json b/database/sql/postgres/egg-postgres16.json index 6058dd9..3c03185 100644 --- a/database/sql/postgres/egg-postgres16.json +++ b/database/sql/postgres/egg-postgres16.json @@ -4,21 +4,21 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-12-12T15:33:25+01:00", + "exported_at": "2025-01-26T01:12:12+00:00", "name": "Postgres 16", "author": "parker@parkervcp.com", "description": "A default Postgres install that is not really editable.", - "features": null, + "features": [], "docker_images": { "ghcr.io\/ptero-eggs\/yolks:postgres_16": "ghcr.io\/ptero-eggs\/yolks:postgres_16" }, "file_denylist": [], - "startup": "postgres -D \/home\/container\/postgres_db\/", + "startup": "postgres -D \/home\/container\/postgres_db\/ & wait-port; psql -h127.0.0.1 -p{{SERVER_PORT}} --dbname postgres", "config": { "files": "{\r\n \"postgres_db\/postgresql.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#port =\": \"port = {{server.build.default.port}}\",\r\n \"#external_pid_file =\": \"external_pid_file = '\/home\/container\/postgres_db\/run\/postgres.pid'\",\r\n \"#unix_socket_directories =\": \"unix_socket_directories = '\/home\/container\/postgres_db\/run\/'\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"database system is ready to accept connections\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "\\q" }, "scripts": { "installation": { diff --git a/database/sql/postgres/egg-postgres17.json b/database/sql/postgres/egg-postgres17.json new file mode 100644 index 0000000..0f7936d --- /dev/null +++ b/database/sql/postgres/egg-postgres17.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-01-26T01:12:12+00:00", + "name": "Postgres 17", + "author": "parker@parkervcp.com", + "description": "A default Postgres install that is not really editable.", + "features": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:postgres_17": "ghcr.io\/ptero-eggs\/yolks:postgres_17" + }, + "file_denylist": [], + "startup": "postgres -D \/home\/container\/postgres_db\/ & wait-port; psql -h127.0.0.1 -p{{SERVER_PORT}} --dbname postgres", + "config": { + "files": "{\r\n \"postgres_db\/postgresql.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#port =\": \"port = {{server.build.default.port}}\",\r\n \"#external_pid_file =\": \"external_pid_file = '\/home\/container\/postgres_db\/run\/postgres.pid'\",\r\n \"#unix_socket_directories =\": \"unix_socket_directories = '\/home\/container\/postgres_db\/run\/'\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"database system is ready to accept connections\"\r\n}", + "logs": "{}", + "stop": "\\q" + }, + "scripts": { + "installation": { + "script": "#! \/bin\/ash\r\nadduser -D -h \/home\/container container\r\n\r\nchown -R container: \/mnt\/server\/\r\n\r\nsu container -c 'initdb -D \/mnt\/server\/postgres_db\/ -A md5 -U \"$PGUSER\" --pwfile=<(echo \"$PGPASSWORD\")'\r\n\r\nmkdir -p \/mnt\/server\/postgres_db\/run\/\r\n\r\n## Add default \"allow from all\" auth rule to pg_hba\r\nif ! grep -q \"# Custom rules\" \"\/mnt\/server\/postgres_db\/pg_hba.conf\"; then\r\n echo -e \"# Custom rules\\nhost all all 0.0.0.0\/0 md5\" >> \"\/mnt\/server\/postgres_db\/pg_hba.conf\"\r\nfi\r\n\r\necho -e \"Done\"", + "container": "postgres:17-alpine", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Superuser Name", + "description": "The username for the postgres superuser", + "env_variable": "PGUSER", + "default_value": "pterodactyl", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Superuser Password", + "description": "The postgres super user password with a strong default.\r\nYou should be generating new ones for each server.\r\nIf you don't then users can hit other users DB's", + "env_variable": "PGPASSWORD", + "default_value": "Pl3453Ch4n63M3!", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 44f7ac33e1ca45e5ec0a3a4068a5a83467e50ebd Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Mon, 10 Feb 2025 19:12:27 +0800 Subject: [PATCH 04/25] Remove obsolete mariadb egg and configs --- database/sql/mariadb/egg-maria-d-b10-3.json | 31 ---- database/sql/mariadb/install.my.cnf | 189 ------------------- database/sql/mariadb/my.cnf | 190 -------------------- 3 files changed, 410 deletions(-) delete mode 100644 database/sql/mariadb/egg-maria-d-b10-3.json delete mode 100644 database/sql/mariadb/install.my.cnf delete mode 100644 database/sql/mariadb/my.cnf diff --git a/database/sql/mariadb/egg-maria-d-b10-3.json b/database/sql/mariadb/egg-maria-d-b10-3.json deleted file mode 100644 index 1b5b2f3..0000000 --- a/database/sql/mariadb/egg-maria-d-b10-3.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2023-12-19T09:54:17+01:00", - "name": "MariaDB 10.3", - "author": "parker@parkervcp.com", - "description": "One of the most popular database servers. Made by the original developers of MySQL. Guaranteed to stay open source.", - "features": null, - "docker_images": { - "MariaDB 10.3": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.3" - }, - "file_denylist": [], - "startup": "{ \/usr\/sbin\/mysqld & } && sleep 5 && mysql -u root", - "config": { - "files": "{\r\n \".my.cnf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port = {{server.build.default.port}}\",\r\n \"bind-address\": \"bind-address=0.0.0.0\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"mysqld: ready for connections\"\r\n}", - "logs": "{}", - "stop": "shutdown; exit;" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n# MariaDB Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nset -x\r\n\r\necho -e \"installing dependencies\"\r\napt-get -y update\r\napt-get -y install curl\r\n\r\n## add user\r\necho -e \"adding container user\"\r\nuseradd -d \/home\/container -m container -s \/bin\/bash\r\n\r\n## own server to container user\r\nchown container: \/mnt\/server\/\r\n\r\n## run install script as user\r\necho -e \"getting my.conf\"\r\nif [ -f \/mnt\/server\/.my.cnf ]; then\r\n echo -e \"moving current config for install\"\r\n mv \/mnt\/server\/.my.cnf \/mnt\/server\/custom.my.cnf\r\n runuser -l container -c 'curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/sql\/mariadb\/install.my.cnf > \/mnt\/server\/.my.cnf'\r\nelse\r\n runuser -l container -c 'curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/sql\/mariadb\/install.my.cnf > \/mnt\/server\/.my.cnf'\r\nfi\r\n\r\n## mkdir and install db\r\necho -e \"installing mysql database\"\r\nrunuser -l container -c 'mkdir -p \/mnt\/server\/run\/mysqld'\r\nrunuser -l container -c 'mkdir -p \/mnt\/server\/log\/mysql'\r\nrunuser -l container -c 'mkdir \/mnt\/server\/mysql'\r\n\r\nrunuser -l container -c 'mysql_install_db --defaults-file=\/mnt\/server\/.my.cnf'\r\n\r\nif [ -f \/mnt\/server\/custom.my.cnf ]; then\r\n echo -e \"moving current config back in place\"\r\n mv \/mnt\/server\/custom.my.cnf \/mnt\/server\/.my.cnf\r\nelse\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/sql\/mariadb\/my.cnf > \/mnt\/server\/.my.cnf\r\nfi\r\n\r\necho -e \"install complete\"\r\n\r\nexit", - "container": "mariadb:10.3", - "entrypoint": "bash" - } - }, - "variables": [] -} \ No newline at end of file diff --git a/database/sql/mariadb/install.my.cnf b/database/sql/mariadb/install.my.cnf deleted file mode 100644 index d921db1..0000000 --- a/database/sql/mariadb/install.my.cnf +++ /dev/null @@ -1,189 +0,0 @@ -# MariaDB database server configuration file. -# -# You can copy this file to one of: -# - "/etc/mysql/my.cnf" to set global options, -# - "~/.my.cnf" to set user-specific options. -# -# One can use all long options that the program supports. -# Run program with --help to get a list of available options and with -# --print-defaults to see which it would actually understand and use. -# -# For explanations see -# http://dev.mysql.com/doc/mysql/en/server-system-variables.html - -# This will be passed to all mysql clients -# It has been reported that passwords should be enclosed with ticks/quotes -# escpecially if they contain "#" chars... -# Remember to edit /etc/mysql/debian.cnf when changing the socket location. -[client] -port = 3306 -socket = /mnt/server/run/mysqld/mysqld.sock - -# Here is entries for some specific programs -# The following values assume you have at least 32M ram - -# This was formally known as [safe_mysqld]. Both versions are currently parsed. -[mysqld_safe] -socket = /mnt/server/run/mysqld/mysqld.sock -nice = 0 - -[mysqld] -# -# * Basic Settings -# -#user = mysql -pid-file = /mnt/server/run/mysqld/mysqld.pid -socket = /mnt/server/run/mysqld/mysqld.sock -port = 3306 -basedir = /usr -datadir = /mnt/server/mysql -tmpdir = /tmp -lc_messages_dir = /usr/share/mysql -lc_messages = en_US -skip-external-locking -# -# Instead of skip-networking the default is now to listen only on -# localhost which is more compatible and is not less secure. -# -# * Fine Tuning -# -max_connections = 100 -connect_timeout = 5 -wait_timeout = 600 -max_allowed_packet = 16M -thread_cache_size = 128 -sort_buffer_size = 4M -bulk_insert_buffer_size = 16M -tmp_table_size = 32M -max_heap_table_size = 32M -# -# * MyISAM -# -# This replaces the startup script and checks MyISAM tables if needed -# the first time they are touched. On error, make copy and try a repair. -myisam_recover_options = BACKUP -key_buffer_size = 128M -#open-files-limit = 2000 -table_open_cache = 400 -myisam_sort_buffer_size = 512M -concurrent_insert = 2 -read_buffer_size = 2M -read_rnd_buffer_size = 1M -# -# * Query Cache Configuration -# -# Cache only tiny result sets, so we can fit more in the query cache. -query_cache_limit = 128K -query_cache_size = 64M -# for more write intensive setups, set to DEMAND or OFF -#query_cache_type = DEMAND -# -# * Logging and Replication -# -# Both location gets rotated by the cronjob. -# Be aware that this log type is a performance killer. -# As of 5.1 you can enable the log at runtime! -general_log_file = /mnt/server/log/mysql/mysql.log -#general_log = 1 -# -# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf. -# -# we do want to know about network errors and such -#log_warnings = 2 -# -# Enable the slow query log to see queries with especially long duration -#slow_query_log[={0|1}] -slow_query_log_file = /mnt/server/log/mysql/mariadb-slow.log -long_query_time = 10 -#log_slow_rate_limit = 1000 -#log_slow_verbosity = query_plan - -#log-queries-not-using-indexes -#log_slow_admin_statements -# -# The following can be used as easy to replay backup logs or for replication. -# note: if you are setting up a replication slave, see README.Debian about -# other settings you may need to change. -#server-id = 1 -#report_host = master1 -#auto_increment_increment = 2 -#auto_increment_offset = 1 -#log_bin = /var/log/mysql/mariadb-bin -#log_bin_index = /var/log/mysql/mariadb-bin.index -# not fab for performance, but safer -#sync_binlog = 1 -expire_logs_days = 10 -max_binlog_size = 100M -# slaves -#relay_log = /var/log/mysql/relay-bin -#relay_log_index = /var/log/mysql/relay-bin.index -#relay_log_info_file = /var/log/mysql/relay-bin.info -#log_slave_updates -#read_only -# -# If applications support it, this stricter sql_mode prevents some -# mistakes like inserting invalid dates etc. -#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL -# -# * InnoDB -# -# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. -# Read the manual for more InnoDB related options. There are many! -default_storage_engine = InnoDB -# you can't just change log file size, requires special procedure -#innodb_log_file_size = 50M -innodb_buffer_pool_size = 256M -innodb_log_buffer_size = 8M -innodb_file_per_table = 1 -innodb_open_files = 400 -innodb_io_capacity = 400 -innodb_flush_method = O_DIRECT -# -# * Security Features -# -# Read the manual, too, if you want chroot! -# chroot = /var/lib/mysql/ -# -# For generating SSL certificates I recommend the OpenSSL GUI "tinyca". -# -# ssl-ca=/etc/mysql/cacert.pem -# ssl-cert=/etc/mysql/server-cert.pem -# ssl-key=/etc/mysql/server-key.pem - -# -# * Galera-related settings -# -[galera] -# Mandatory settings -#wsrep_on=ON -#wsrep_provider= -#wsrep_cluster_address= -#binlog_format=row -#default_storage_engine=InnoDB -#innodb_autoinc_lock_mode=2 -# -# Allow server to accept connections on all interfaces. -# -bind-address=0.0.0.0 -# -# Optional setting -#wsrep_slave_threads=1 -#innodb_flush_log_at_trx_commit=0 - -[mysqldump] -quick -quote-names -max_allowed_packet = 16M - -[mysql] -#no-auto-rehash # faster start of mysql but no tab completion - -[isamchk] -key_buffer = 16M - -# -# * IMPORTANT: Additional settings that can override those from this file! -# The files must end with '.cnf', otherwise they'll be ignored. -# -!include /etc/mysql/mariadb.cnf -!includedir /etc/mysql/conf.d/ diff --git a/database/sql/mariadb/my.cnf b/database/sql/mariadb/my.cnf deleted file mode 100644 index 37ff316..0000000 --- a/database/sql/mariadb/my.cnf +++ /dev/null @@ -1,190 +0,0 @@ -# MariaDB database server configuration file. -# -# You can copy this file to one of: -# - "/etc/mysql/my.cnf" to set global options, -# - "~/.my.cnf" to set user-specific options. -# -# One can use all long options that the program supports. -# Run program with --help to get a list of available options and with -# --print-defaults to see which it would actually understand and use. -# -# For explanations see -# http://dev.mysql.com/doc/mysql/en/server-system-variables.html - -# This will be passed to all mysql clients -# It has been reported that passwords should be enclosed with ticks/quotes -# escpecially if they contain "#" chars... -# Remember to edit /etc/mysql/debian.cnf when changing the socket location. -[client] -port = 3306 -socket = /home/container/run/mysqld/mysqld.sock - -# Here is entries for some specific programs -# The following values assume you have at least 32M ram - -# This was formally known as [safe_mysqld]. Both versions are currently parsed. -[mysqld_safe] -socket = /home/container/run/mysqld/mysqld.sock -nice = 0 - -[mysqld] -# -# * Basic Settings -# -#user = mysql -pid-file = /home/container/run/mysqld/mysqld.pid -socket = /home/container/run/mysqld/mysqld.sock -port = 3306 -basedir = /usr -datadir = /home/container/mysql -tmpdir = /tmp -lc_messages_dir = /usr/share/mysql -lc_messages = en_US -skip-external-locking -# -# Instead of skip-networking the default is now to listen only on -# localhost which is more compatible and is not less secure. -bind-address=0.0.0.0 -# -# * Fine Tuning -# -max_connections = 100 -connect_timeout = 5 -wait_timeout = 600 -max_allowed_packet = 16M -thread_cache_size = 128 -sort_buffer_size = 4M -bulk_insert_buffer_size = 16M -tmp_table_size = 32M -max_heap_table_size = 32M -# -# * MyISAM -# -# This replaces the startup script and checks MyISAM tables if needed -# the first time they are touched. On error, make copy and try a repair. -myisam_recover_options = BACKUP -key_buffer_size = 128M -#open-files-limit = 2000 -table_open_cache = 400 -myisam_sort_buffer_size = 512M -concurrent_insert = 2 -read_buffer_size = 2M -read_rnd_buffer_size = 1M -# -# * Query Cache Configuration -# -# Cache only tiny result sets, so we can fit more in the query cache. -query_cache_limit = 128K -query_cache_size = 64M -# for more write intensive setups, set to DEMAND or OFF -#query_cache_type = DEMAND -# -# * Logging and Replication -# -# Both location gets rotated by the cronjob. -# Be aware that this log type is a performance killer. -# As of 5.1 you can enable the log at runtime! -general_log_file = /home/container/log/mysql/mysql.log -#general_log = 1 -# -# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf. -# -# we do want to know about network errors and such -#log_warnings = 2 -# -# Enable the slow query log to see queries with especially long duration -#slow_query_log[={0|1}] -slow_query_log_file = /home/container/log/mysql/mariadb-slow.log -long_query_time = 10 -#log_slow_rate_limit = 1000 -#log_slow_verbosity = query_plan - -#log-queries-not-using-indexes -#log_slow_admin_statements -# -# The following can be used as easy to replay backup logs or for replication. -# note: if you are setting up a replication slave, see README.Debian about -# other settings you may need to change. -#server-id = 1 -#report_host = master1 -#auto_increment_increment = 2 -#auto_increment_offset = 1 -#log_bin = /var/log/mysql/mariadb-bin -#log_bin_index = /var/log/mysql/mariadb-bin.index -# not fab for performance, but safer -#sync_binlog = 1 -expire_logs_days = 10 -max_binlog_size = 100M -# slaves -#relay_log = /var/log/mysql/relay-bin -#relay_log_index = /var/log/mysql/relay-bin.index -#relay_log_info_file = /var/log/mysql/relay-bin.info -#log_slave_updates -#read_only -# -# If applications support it, this stricter sql_mode prevents some -# mistakes like inserting invalid dates etc. -#sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL -# -# * InnoDB -# -# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. -# Read the manual for more InnoDB related options. There are many! -default_storage_engine = InnoDB -# you can't just change log file size, requires special procedure -#innodb_log_file_size = 50M -innodb_buffer_pool_size = 256M -innodb_log_buffer_size = 8M -innodb_file_per_table = 1 -innodb_open_files = 400 -innodb_io_capacity = 400 -innodb_flush_method = O_DIRECT -# -# * Security Features -# -# Read the manual, too, if you want chroot! -# chroot = /var/lib/mysql/ -# -# For generating SSL certificates I recommend the OpenSSL GUI "tinyca". -# -# ssl-ca=/etc/mysql/cacert.pem -# ssl-cert=/etc/mysql/server-cert.pem -# ssl-key=/etc/mysql/server-key.pem - -# -# * Galera-related settings -# -[galera] -# Mandatory settings -#wsrep_on=ON -#wsrep_provider= -#wsrep_cluster_address= -#binlog_format=row -#default_storage_engine=InnoDB -#innodb_autoinc_lock_mode=2 -# -# Allow server to accept connections on all interfaces. -# -bind-address=0.0.0.0 -# -# Optional setting -#wsrep_slave_threads=1 -#innodb_flush_log_at_trx_commit=0 - -[mysqldump] -quick -quote-names -max_allowed_packet = 16M - -[mysql] -#no-auto-rehash # faster start of mysql but no tab completion - -[isamchk] -key_buffer = 16M - -# -# * IMPORTANT: Additional settings that can override those from this file! -# The files must end with '.cnf', otherwise they'll be ignored. -# -!include /etc/mysql/mariadb.cnf -!includedir /etc/mysql/conf.d/ From 465f576b6706078ca5301b232e03ee3e82683721 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Mon, 10 Feb 2025 19:14:18 +0800 Subject: [PATCH 05/25] Add new MariaDB egg --- database/sql/mariadb/egg-maria-d-b.json | 35 +++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 database/sql/mariadb/egg-maria-d-b.json diff --git a/database/sql/mariadb/egg-maria-d-b.json b/database/sql/mariadb/egg-maria-d-b.json new file mode 100644 index 0000000..2f71a24 --- /dev/null +++ b/database/sql/mariadb/egg-maria-d-b.json @@ -0,0 +1,35 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-02-10T11:12:53+00:00", + "name": "MariaDB", + "author": "danielb@purpleflaghosting.com", + "description": "MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source software under the GNU General Public.", + "features": null, + "docker_images": { + "MariaDB 11.6": "ghcr.io\/ptero-eggs\/yolks:mariadb_11.6", + "MariaDB 11.4 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_11.4", + "MariaDB 10.11 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.11", + "MariaDB 10.6 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.6", + "MariaDB 10.5 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.5" + }, + "file_denylist": [], + "startup": "${MARIADB_EXECUTABLE}", + "config": { + "files": "{\r\n \".my.cnf\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"mysqld.port\": \"{{server.build.default.port}}\",\r\n \"client.port\": \"{{server.build.default.port}}\",\r\n \"mysqld.bind-address\": \"0.0.0.0\",\r\n \"mysqld.pid-file\": \"\/home\/container\/run\/mysqld\/mysqld.pid\",\r\n \"mysqld.socket\": \"\/home\/container\/run\/mysqld\/mysqld.sock\",\r\n \"client.socket\": \"\/home\/container\/run\/mysqld\/mysqld.sock\",\r\n \"mysqld.general_log_file\": \"\/home\/container\/log\/mysql\/mysql.log\",\r\n \"client.user\": \"container\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"ready for connections.\"\r\n}", + "logs": "{}", + "stop": "shutdown; exit;" + }, + "scripts": { + "installation": { + "script": "# Nothing here - All the magic is in the entrypoint.sh\r\necho \"Installation complete\"", + "container": "alpine", + "entrypoint": "ash" + } + }, + "variables": [] +} \ No newline at end of file From e2734caf8659fbb58b3ca262a2228ec9b3305f6e Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 23 Mar 2025 18:33:29 +0800 Subject: [PATCH 06/25] Muse: Update install source repo Resolves https://github.com/Ptero-Eggs/application-eggs/issues/24 --- bots/discord/muse/egg-muse.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index de96f44..12f4904 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -1,30 +1,30 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "update_url": null, - "version": "PTDL_v2" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "2024-06-01T19:44:16+00:00", + "exported_at": "2025-03-23T10:31:57+00:00", "name": "Muse", "author": "hello@apollo.moe", - "description": "🎧 a self-hosted midwestern Discord music bot that doesn't suck", + "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", "features": null, "docker_images": { - "ghcr.io/ptero-eggs/yolks:nodejs_20": "ghcr.io/ptero-eggs/yolks:nodejs_20" + "ghcr.io\/ptero-eggs\/yolks:nodejs_20": "ghcr.io\/ptero-eggs\/yolks:nodejs_20" }, "file_denylist": [], "startup": "npm start", "config": { "files": "{\r\n \".env\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISCORD_TOKEN\": \"DISCORD_TOKEN={{env.discord_token}}\",\r\n \"DATA_DIR\": \"DATA_DIR={{env.data_dir}}\",\r\n \"YOUTUBE_API_KEY\": \"YOUTUBE_API_KEY={{env.api_key}}\",\r\n \"SPOTIFY_CLIENT_ID\": \"SPOTIFY_CLIENT_ID={{env.client_id}}\",\r\n \"SPOTIFY_CLIENT_SECRET\": \"SPOTIFY_CLIENT_SECRET={{env.client_secret}}\"\r\n }\r\n }\r\n}", - "logs": "{}", "startup": "{\r\n \"done\": \"Running version \"\r\n}", + "logs": "{}", "stop": "^C" }, "scripts": { "installation": { + "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install git curl jq -y python3 python3-pip make build-essential -qq\r\n\r\nGITHUB_PACKAGE=\"museofficial\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", "container": "node:lts-bookworm-slim", - "entrypoint": "bash", - "script": "## Credits: Red-Thirten (https://github.com/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install git curl jq -y python3 python3-pip make build-essential -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub \u0026 Extract\r\ncd /mnt/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's/of filterWrapper[)]/of filterWrapper|| [])/g' /mnt/server/node_modules/ytsr/lib/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"" + "entrypoint": "bash" } }, "variables": [ @@ -40,9 +40,9 @@ }, { "name": "Data directory", - "description": "Default: ./data", + "description": "Default: .\/data", "env_variable": "data_dir", - "default_value": "./data", + "default_value": ".\/data", "user_viewable": true, "user_editable": true, "rules": "required|string|max:20", @@ -50,7 +50,7 @@ }, { "name": "YouTube API Key", - "description": "You can get it here: https://console.developers.google.com/", + "description": "You can get it here: https:\/\/console.developers.google.com\/", "env_variable": "api_key", "default_value": "", "user_viewable": true, @@ -60,7 +60,7 @@ }, { "name": "Spotify Client ID", - "description": "You can get it here: https://developer.spotify.com/dashboard/applications", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", "env_variable": "client_id", "default_value": "", "user_viewable": true, @@ -70,7 +70,7 @@ }, { "name": "Spotify Client Secret", - "description": "You can get it here: https://developer.spotify.com/dashboard/applications", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", "env_variable": "client_secret", "default_value": "", "user_viewable": true, From 10b0d6c885fcac68357a4a5433afee79fb941774 Mon Sep 17 00:00:00 2001 From: lavecat <153299718+lavecat@users.noreply.github.com> Date: Fri, 23 May 2025 21:07:50 +0200 Subject: [PATCH 07/25] Update lavalink github link (#29) --- lavalink/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lavalink/README.md b/lavalink/README.md index 6830823..42fed78 100644 --- a/lavalink/README.md +++ b/lavalink/README.md @@ -1,6 +1,6 @@ # Lavalink Server -## From their [Github](https://github.com/freyacodes/Lavalink) +## From their [Github](https://github.com/lavalink-devs/Lavalink) Standalone audio sending node based on Lavaplayer and JDA-Audio. Allows for sending audio without it ever reaching any of your shards. From 41b80eb55267f9658b26e546bf89de9c340baac8 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 4 Jul 2025 17:07:35 +0800 Subject: [PATCH 08/25] MariaDB: Add 11.8 and remove 10.5 (EOL) --- database/sql/mariadb/egg-maria-d-b.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/database/sql/mariadb/egg-maria-d-b.json b/database/sql/mariadb/egg-maria-d-b.json index 2f71a24..5b03ad6 100644 --- a/database/sql/mariadb/egg-maria-d-b.json +++ b/database/sql/mariadb/egg-maria-d-b.json @@ -4,17 +4,17 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2025-02-10T11:12:53+00:00", + "exported_at": "2025-07-04T08:38:00+00:00", "name": "MariaDB", "author": "danielb@purpleflaghosting.com", "description": "MariaDB is a community-developed, commercially supported fork of the MySQL relational database management system, intended to remain free and open-source software under the GNU General Public.", "features": null, "docker_images": { + "MariaDB 11.8 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_11.8", "MariaDB 11.6": "ghcr.io\/ptero-eggs\/yolks:mariadb_11.6", "MariaDB 11.4 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_11.4", "MariaDB 10.11 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.11", - "MariaDB 10.6 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.6", - "MariaDB 10.5 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.5" + "MariaDB 10.6 LTS": "ghcr.io\/ptero-eggs\/yolks:mariadb_10.6" }, "file_denylist": [], "startup": "${MARIADB_EXECUTABLE}", From 5492c526bf883bd090b1d0aeeba005cd023c8650 Mon Sep 17 00:00:00 2001 From: Red Banana <108609991+Red-Banana-Official@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:29:50 +0100 Subject: [PATCH 09/25] Add TeamSpeak 6 * Adding TS6 as requested here; https://github.com/Ptero-Eggs/application-eggs/issues/33 * Additional changes/improvements to the egg * Update README.md * Update README.md * Update README.md * Adding TS6 ARM egg * Update README.md * Update README.md --- voice/README.md | 1 + voice/teamspeak6_server/README.md | 35 +++ .../egg-arm64-teamspeak6-server.json | 212 ++++++++++++++++++ .../egg-teamspeak6-server.json | 212 ++++++++++++++++++ 4 files changed, 460 insertions(+) create mode 100644 voice/teamspeak6_server/README.md create mode 100644 voice/teamspeak6_server/egg-arm64-teamspeak6-server.json create mode 100644 voice/teamspeak6_server/egg-teamspeak6-server.json diff --git a/voice/README.md b/voice/README.md index 763bf9a..24aeeca 100644 --- a/voice/README.md +++ b/voice/README.md @@ -2,3 +2,4 @@ * Teamspeak_ARM64 * TS3-Manager +* Teamspeak6-server diff --git a/voice/teamspeak6_server/README.md b/voice/teamspeak6_server/README.md new file mode 100644 index 0000000..a435283 --- /dev/null +++ b/voice/teamspeak6_server/README.md @@ -0,0 +1,35 @@ +# TeamSpeak 6 Server + +> [!CAUTION] +> TeamSpeak 6 Server is currently in beta. Expect frequent updates and potential instability + +## [Official Website](https://teamspeak.com) + +TeamSpeak 6 is the next-generation voice communication platform for gaming and communities. + +### Notice +TeamSpeak 6 Server is currently in **beta**. Expect frequent updates and potential instability + +## Server Ports + +You can use any available ports. The most important defaults are shown below: + +| Port | Default | Description | +|------------------------|---------|------------------------ | +| Voice Port | 9987 | Main voice server port | +| File Transfer Port | 30033 | File transfers (Optional/admin) | +| Query SSH | 10022 | Server Query SSH interface (Optional/admin) | +| Query HTTP | 10080 | Server Query HTTP interface (Optional/admin) | +| Query HTTPS | 10443 | Server Query HTTPS interface (Optional/admin) | + +## Notes + +- **Admin Rights**: On first launch, copy the generated key (token) from the console to claim server admin in your TeamSpeak 6 client. +- **Beta Limits**: TeamSpeak 6 server beta is limited to 5 users. +- **Query Interfaces**: Enable/disable additional query interfaces (SSH/HTTP/HTTPS) in the server variables. +- **S3 File Transfer**: Leave S3 variables blank unless you wish use S3-compatible storage. +- **Certificates**: For HTTPS query, upload your cert/key to `/home/container` and enter the filenames in their variables. +- **More Info**: [TeamSpeak 6 Beta Announcements](https://community.teamspeak.com/c/teamspeak-6-server) + +### ARM64 +* The ARM64 egg may not perform as expected due to the AMD64 to ARM64 emulaton. diff --git a/voice/teamspeak6_server/egg-arm64-teamspeak6-server.json b/voice/teamspeak6_server/egg-arm64-teamspeak6-server.json new file mode 100644 index 0000000..70d7a9a --- /dev/null +++ b/voice/teamspeak6_server/egg-arm64-teamspeak6-server.json @@ -0,0 +1,212 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": "null" + }, + "exported_at": "2025-07-05T13:49:22+02:00", + "name": "Teamspeak6 Server ARM64", + "author": "ptero@redbananaofficial.com", + "description": "TeamSpeak offers the ideal voice communication for gaming, education and training, internal business communication, and staying in touch with friends and family.", + "features": null, + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:box64": "ghcr.io\/ptero-eggs\/yolks:box64" + }, + "file_denylist": [], + "startup": "box64 .\/tsserver --default-voice-port={{SERVER_PORT}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"listening on 0.0.0.0:\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "cd \/mnt\/server\r\n\r\napt-get update\r\napt-get install -y jq bzip2\r\n\r\nver=\"$TS_VERSION\"\r\nif [ -z \"$ver\" ] || [ \"$ver\" = \"latest\" ]; then\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/latest)\r\nelse\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/tags\/$ver 2>\/dev\/null)\r\n if echo \"$json\" | grep -q \"Not Found\"; then\r\n altver=$(echo \"$ver\" | sed 's\/-\/\\\/\/')\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/tags\/$altver 2>\/dev\/null)\r\n fi\r\nfi\r\n\r\nif echo \"$json\" | grep -q \"Not Found\"; then\r\n echo \"Not found: $ver\"\r\n exit 1\r\nfi\r\n\r\nurl=$(echo \"$json\" | jq -r '.assets | map(select((.name | contains(\"linux_amd64\")) and (.name | endswith(\".tar.bz2\"))))[0].browser_download_url')\r\n\r\nif [ -z \"$url\" ] || [ \"$url\" = \"null\" ]; then\r\n echo \"Not found: $ver\"\r\n exit 1\r\nfi\r\n\r\ncurl -sSL \"$url\" | tar xj --strip-components=1\r\necho \"Installed\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Query Admin Password", + "description": "The password for the server query admin user.", + "env_variable": "TSSERVER_QUERY_ADMIN_PASSWORD", + "default_value": "ChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Server Version", + "description": "The version of Teamspeak 3 to use when running the server.", + "env_variable": "TS_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Accept TServer License (required)", + "description": "This is for accepting the license", + "env_variable": "TSSERVER_LICENSE_ACCEPTED", + "default_value": "accept", + "user_viewable": true, + "user_editable": false, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "File Transfer Port", + "description": "The Teamspeak file transfer port (can be changed).", + "env_variable": "TSSERVER_FILE_TRANSFER_PORT", + "default_value": "30033", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10", + "field_type": "text" + }, + { + "name": "Enable SSH Query", + "description": "Enable the SSH query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_SSH_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "SSH Query Port", + "description": "The port for the SSH query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_SSH_PORT", + "default_value": "10022", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable HTTP Query", + "description": "Enable the HTTP query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_HTTP_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "HTTP Query Port", + "description": "The port for the HTTP query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_HTTP_PORT", + "default_value": "10080", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable HTTPS Query", + "description": "Enable the HTTPS query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_HTTPS_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "HTTPS Query Port", + "description": "The port for the HTTPS query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_HTTPS_PORT", + "default_value": "10443", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable S3 File Transfer", + "description": "Enable S3 file transfer (set to 1 to enable).", + "env_variable": "TSSERVER_S3FT_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "S3 Access Key", + "description": "S3 Access Key for file transfers.", + "env_variable": "TSSERVER_S3FT_ACCESS_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Secret Key", + "description": "S3 Secret Key for file transfers.", + "env_variable": "TSSERVER_S3FT_SECRET_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Bucket", + "description": "S3 Bucket name for file transfers.", + "env_variable": "TSSERVER_S3FT_BUCKET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Domain", + "description": "S3 Domain\/endpoint for file transfers.", + "env_variable": "TSSERVER_S3FT_DOMAIN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Region", + "description": "S3 region for file transfers.", + "env_variable": "TSSERVER_S3FT_REGION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "HTTPS Certificate Filename", + "description": "Place the certificate file in \/home\/container and enter the filename here, e.g; ts6_https_cert.pem", + "env_variable": "TSSERVER_QUERY_HTTPS_CERT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:255", + "field_type": "text" + }, + { + "name": "HTTPS Private Key Filename", + "description": "Place the private key file in \/home\/container and enter the filename here, e.g: ts6_https_key.pem", + "env_variable": "TSSERVER_QUERY_HTTPS_PRIVATE_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:255", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/voice/teamspeak6_server/egg-teamspeak6-server.json b/voice/teamspeak6_server/egg-teamspeak6-server.json new file mode 100644 index 0000000..cf16c73 --- /dev/null +++ b/voice/teamspeak6_server/egg-teamspeak6-server.json @@ -0,0 +1,212 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": "null" + }, + "exported_at": "2025-07-05T14:56:23+02:00", + "name": "Teamspeak6 Server", + "author": "ptero@redbananaofficial.com", + "description": "TeamSpeak offers the ideal voice communication for gaming, education and training, internal business communication, and staying in touch with friends and family.", + "features": null, + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/tsserver --default-voice-port={{SERVER_PORT}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"listening on 0.0.0.0:\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "cd \/mnt\/server\r\n\r\napt-get update\r\napt-get install -y jq bzip2\r\n\r\nver=\"$TS_VERSION\"\r\nif [ -z \"$ver\" ] || [ \"$ver\" = \"latest\" ]; then\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/latest)\r\nelse\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/tags\/$ver 2>\/dev\/null)\r\n if echo \"$json\" | grep -q \"Not Found\"; then\r\n altver=$(echo \"$ver\" | sed 's\/-\/\\\/\/')\r\n json=$(curl -sSL https:\/\/api.github.com\/repos\/teamspeak\/teamspeak6-server\/releases\/tags\/$altver 2>\/dev\/null)\r\n fi\r\nfi\r\n\r\nif echo \"$json\" | grep -q \"Not Found\"; then\r\n echo \"Not found: $ver\"\r\n exit 1\r\nfi\r\n\r\nurl=$(echo \"$json\" | jq -r '.assets | map(select((.name | contains(\"linux_amd64\")) and (.name | endswith(\".tar.bz2\"))))[0].browser_download_url')\r\n\r\nif [ -z \"$url\" ] || [ \"$url\" = \"null\" ]; then\r\n echo \"Not found: $ver\"\r\n exit 1\r\nfi\r\n\r\ncurl -sSL \"$url\" | tar xj --strip-components=1\r\necho \"Installed\"", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Query Admin Password", + "description": "The password for the server query admin user.", + "env_variable": "TSSERVER_QUERY_ADMIN_PASSWORD", + "default_value": "ChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Server Version", + "description": "The version of Teamspeak 3 to use when running the server.", + "env_variable": "TS_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Accept TServer License (required)", + "description": "This is for accepting the license", + "env_variable": "TSSERVER_LICENSE_ACCEPTED", + "default_value": "accept", + "user_viewable": true, + "user_editable": false, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "File Transfer Port", + "description": "The Teamspeak file transfer port (can be changed).", + "env_variable": "TSSERVER_FILE_TRANSFER_PORT", + "default_value": "30033", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10", + "field_type": "text" + }, + { + "name": "Enable SSH Query", + "description": "Enable the SSH query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_SSH_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "SSH Query Port", + "description": "The port for the SSH query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_SSH_PORT", + "default_value": "10022", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable HTTP Query", + "description": "Enable the HTTP query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_HTTP_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "HTTP Query Port", + "description": "The port for the HTTP query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_HTTP_PORT", + "default_value": "10080", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable HTTPS Query", + "description": "Enable the HTTPS query interface (set to 1 to enable).", + "env_variable": "TSSERVER_QUERY_HTTPS_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "HTTPS Query Port", + "description": "The port for the HTTPS query interface (can be changed).", + "env_variable": "TSSERVER_QUERY_HTTPS_PORT", + "default_value": "10443", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,65535", + "field_type": "text" + }, + { + "name": "Enable S3 File Transfer", + "description": "Enable S3 file transfer (set to 1 to enable).", + "env_variable": "TSSERVER_S3FT_ENABLED", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:0,1", + "field_type": "text" + }, + { + "name": "S3 Access Key", + "description": "S3 Access Key for file transfers.", + "env_variable": "TSSERVER_S3FT_ACCESS_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Secret Key", + "description": "S3 Secret Key for file transfers.", + "env_variable": "TSSERVER_S3FT_SECRET_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Bucket", + "description": "S3 Bucket name for file transfers.", + "env_variable": "TSSERVER_S3FT_BUCKET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Domain", + "description": "S3 Domain\/endpoint for file transfers.", + "env_variable": "TSSERVER_S3FT_DOMAIN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "S3 Region", + "description": "S3 region for file transfers.", + "env_variable": "TSSERVER_S3FT_REGION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "HTTPS Certificate Filename", + "description": "Place the certificate file in \/home\/container and enter the filename here, e.g; ts6_https_cert.pem", + "env_variable": "TSSERVER_QUERY_HTTPS_CERT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:255", + "field_type": "text" + }, + { + "name": "HTTPS Private Key Filename", + "description": "Place the private key file in \/home\/container and enter the filename here, e.g: ts6_https_key.pem", + "env_variable": "TSSERVER_QUERY_HTTPS_PRIVATE_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:255", + "field_type": "text" + } + ] +} \ No newline at end of file From 3ff8fb8173df03b1bbcb0219f3a2131fdec03abb Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 22 Aug 2025 21:47:20 +0800 Subject: [PATCH 10/25] Remove end-of-life MongoDB eggs These versions are end of life and will not longer receive support or important updates --- database/nosql/mongodb/egg-mongo-d-b.json | 53 ---------------------- database/nosql/mongodb/egg-mongo-d-b6.json | 52 --------------------- 2 files changed, 105 deletions(-) delete mode 100644 database/nosql/mongodb/egg-mongo-d-b.json delete mode 100644 database/nosql/mongodb/egg-mongo-d-b6.json diff --git a/database/nosql/mongodb/egg-mongo-d-b.json b/database/nosql/mongodb/egg-mongo-d-b.json deleted file mode 100644 index 1a6b7c5..0000000 --- a/database/nosql/mongodb/egg-mongo-d-b.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2022-08-28T13:33:51+02:00", - "name": "MongoDB", - "author": "parker@parkervcp.com", - "description": "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for my butt era.", - "features": null, - "docker_images": { - "MongoDB_4": "ghcr.io\/ptero-eggs\/yolks:mongodb_4", - "MongoDB_5": "ghcr.io\/ptero-eggs\/yolks:mongodb_5" - }, - "file_denylist": [], - "startup": "mongod --fork --dbpath \/home\/container\/mongodb\/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath \/home\/container\/logs\/mongo.log -f \/home\/container\/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done && mongo --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongo --eval \"db.getSiblingDB('admin').shutdownServer()\" 127.0.0.1:${SERVER_PORT}", - "config": { - "files": "{}", - "startup": "{\r\n \"done\": \"child process started successfully\"\r\n}", - "logs": "{}", - "stop": "exit" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash \r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\ncp \/etc\/mongod.conf.orig \/mnt\/server\/mongod.conf\r\n\r\nmkdir mongodb logs\r\n\r\nmongod --port 27017 --dbpath \/mnt\/server\/mongodb\/ --logpath \/mnt\/server\/logs\/mongo.log --fork\r\n\r\nmongo --eval \"db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})\"\r\n\r\nmongo --eval \"db.getSiblingDB('admin').shutdownServer()\"", - "container": "mongo:4-bionic", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Mongo Admin Username", - "description": "The MongoDB Admin user", - "env_variable": "MONGO_USER", - "default_value": "admin", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Mongo Admin Password", - "description": "", - "env_variable": "MONGO_USER_PASS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - } - ] -} diff --git a/database/nosql/mongodb/egg-mongo-d-b6.json b/database/nosql/mongodb/egg-mongo-d-b6.json deleted file mode 100644 index 2a760ec..0000000 --- a/database/nosql/mongodb/egg-mongo-d-b6.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2022-10-31T17:26:13+00:00", - "name": "MongoDB 6", - "author": "parker@parkervcp.com", - "description": "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for my butt era.", - "features": null, - "docker_images": { - "MongoDB_6": "ghcr.io\/ptero-eggs\/yolks:mongodb_6" - }, - "file_denylist": [], - "startup": "mongod --fork --dbpath \/home\/container\/mongodb\/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath \/home\/container\/logs\/mongo.log -f \/home\/container\/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done; mongosh --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongosh --eval \"db.getSiblingDB('admin').shutdownServer()\" 127.0.0.1:${SERVER_PORT}", - "config": { - "files": "{\r\n \"mongod.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#security:\": \"security: \\r\\n authorization: \\\"enabled\\\"\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"child process started successfully\"\r\n}", - "logs": "{}", - "stop": "exit" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash \r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\ncp \/etc\/mongod.conf.orig \/mnt\/server\/mongod.conf\r\n\r\nmkdir mongodb logs\r\n\r\nmongod --port 27017 --dbpath \/mnt\/server\/mongodb\/ --logpath \/mnt\/server\/logs\/mongo.log --fork\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})\"\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').shutdownServer()\"", - "container": "mongo:6-focal", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Mongo Admin Username", - "description": "The MongoDB Admin user", - "env_variable": "MONGO_USER", - "default_value": "admin", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Mongo Admin Password", - "description": "", - "env_variable": "MONGO_USER_PASS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - } - ] -} \ No newline at end of file From efdf4924bacbc2a00ac149b499ae4a7acca25724 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 22 Aug 2025 21:47:48 +0800 Subject: [PATCH 11/25] Clean up MongoDB readme --- database/nosql/mongodb/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/nosql/mongodb/README.md b/database/nosql/mongodb/README.md index 86ba1d0..eddb841 100644 --- a/database/nosql/mongodb/README.md +++ b/database/nosql/mongodb/README.md @@ -25,9 +25,9 @@ security: > :closed_lock_with_key: To learn more about MongoDB security, you can read the [MongoDB Security Checklist](https://www.mongodb.com/docs/manual/administration/security-checklist/#security-checklist) -### Notes specific to the MongoDB 6 or 7 egg +### Notes specific to the MongoDB 6+ -**The [MongoDB 6 egg](./egg-mongo-d-b6.json) or [MongoDB 7 egg](./egg-mongo-d-b7.json) enables access control by default** in the `mongod.conf` file, meaning that even if people will be able to connect to your database as guests, [they will not be able to perform any operation, apart from nonhazardous commands](https://dba.stackexchange.com/a/292175) +**MongoDB 6+ eggs enable access control by default** in the `mongod.conf` file, meaning that even if people will be able to connect to your database as guests, [they will not be able to perform any operation, apart from nonhazardous commands](https://dba.stackexchange.com/a/292175) ### Disabling authentication From c1aab3f95f4fa9779075ca8b1f6cef492dabcb19 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 22 Aug 2025 21:50:00 +0800 Subject: [PATCH 12/25] Add: MongoDB 8 Resolves #26 --- database/nosql/mongodb/egg-mongo-d-b8.json | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 database/nosql/mongodb/egg-mongo-d-b8.json diff --git a/database/nosql/mongodb/egg-mongo-d-b8.json b/database/nosql/mongodb/egg-mongo-d-b8.json new file mode 100644 index 0000000..aa0caed --- /dev/null +++ b/database/nosql/mongodb/egg-mongo-d-b8.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-08-22T13:41:06+00:00", + "name": "MongoDB 8", + "author": "parker@parkervcp.com", + "description": "MongoDB Server is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.", + "features": [], + "docker_images": { + "MongoDB_8": "ghcr.io\/ptero-eggs\/yolks:mongodb_8" + }, + "file_denylist": [], + "startup": "mongod --fork --dbpath \/home\/container\/mongodb\/ --port ${SERVER_PORT} --bind_ip 0.0.0.0 --logpath \/home\/container\/logs\/mongo.log -f \/home\/container\/mongod.conf; until nc -z -v -w5 127.0.0.1 ${SERVER_PORT}; do echo 'Waiting for mongodb connection...'; sleep 5; done; mongosh --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} && mongosh --username ${MONGO_USER} --password ${MONGO_USER_PASS} --host 127.0.0.1:${SERVER_PORT} --eval \"db.getSiblingDB('admin').shutdownServer()\"", + "config": { + "files": "{\r\n \"mongod.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"#security:\": \"security: \\r\\n authorization: \\\"enabled\\\"\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"child process started successfully\"\r\n}", + "logs": "{}", + "stop": "exit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash \r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\ncp \/etc\/mongod.conf.orig \/mnt\/server\/mongod.conf\r\n\r\nmkdir mongodb logs\r\n\r\nmongod --port 27017 --dbpath \/mnt\/server\/mongodb\/ --logpath \/mnt\/server\/logs\/mongo.log --fork\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').createUser({user: '${MONGO_USER}', pwd: '${MONGO_USER_PASS}', roles: ['root']})\"\r\n\r\nmongosh --eval \"db.getSiblingDB('admin').shutdownServer()\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "mongo:8-noble", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Mongo Admin Username", + "description": "The MongoDB Admin user", + "env_variable": "MONGO_USER", + "default_value": "admin", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Mongo Admin Password", + "description": "", + "env_variable": "MONGO_USER_PASS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file From 9c0a4bb509a57884901eef93e92921a58260554b Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 22 Aug 2025 21:50:41 +0800 Subject: [PATCH 13/25] Replace inappropriate MongoDB description --- database/nosql/mongodb/egg-mongo-d-b7.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/nosql/mongodb/egg-mongo-d-b7.json b/database/nosql/mongodb/egg-mongo-d-b7.json index f4dd13a..a8f2310 100644 --- a/database/nosql/mongodb/egg-mongo-d-b7.json +++ b/database/nosql/mongodb/egg-mongo-d-b7.json @@ -7,7 +7,7 @@ "exported_at": "2024-02-02T10:25:08+01:00", "name": "MongoDB 7", "author": "parker@parkervcp.com", - "description": "MongoDB is a general purpose, document-based, distributed database built for modern application developers and for my butt era.", + "description": "MongoDB Server is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.", "features": null, "docker_images": { "MongoDB_7": "ghcr.io\/ptero-eggs\/yolks:mongodb_7" From a4405154fd9092ef5c6cca9f1735835291b8787b Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 22 Aug 2025 21:56:27 +0800 Subject: [PATCH 14/25] Update prometheus install image Resolves #39 --- monitoring/prometheus/egg-prometheus.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monitoring/prometheus/egg-prometheus.json b/monitoring/prometheus/egg-prometheus.json index 4dd5023..b3c2de5 100644 --- a/monitoring/prometheus/egg-prometheus.json +++ b/monitoring/prometheus/egg-prometheus.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2024-12-11T19:05:00+00:00", + "exported_at": "2025-08-22T13:55:16+00:00", "name": "Prometheus", "author": "p.zarrad@outlook.de", "description": "The Prometheus monitoring system and time series database.", @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/sh\r\nshopt -s extglob\r\n# Switch to mounted directory\r\ncd \/mnt\/server\r\n# Update installation system and install curl\r\napt-get update\r\napt-get install -y curl\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n# Cleanup previous install if available\r\nif [ -f \"prometheus.yml\" ]; then mv prometheus.yml prometheus.yml.bak; fi\r\nif [ -f \"prometheus.web.yml\" ]; then mv prometheus.web.yml prometheus.web.yml.bak; fi\r\nrm -rfv !(data|prometheus.yml.bak|prometheus.web.yml.bak)\r\n# Download and extract Prometheus\r\nversion=${PROMETHEUS_VERSION}\r\nif [ \"$version\" = \"latest\" ]; then version=$(curl --silent \"https:\/\/api.github.com\/repos\/prometheus\/prometheus\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/' | cut -c2-); fi\r\ncurl -L https:\/\/github.com\/prometheus\/prometheus\/releases\/download\/v${version}\/prometheus-${version}.linux-${ARCH}.tar.gz --output prometheus.tar.gz\r\ntar -zxvf prometheus.tar.gz\r\nmv -n prometheus-*\/* .\/\r\nrm -rf prometheus.tar.gz prometheus-*\/\r\n# Restore configuration if necessary\r\nif [ -f \"prometheus.yml.bak\" ]; then rm -rf prometheus.yml && mv prometheus.yml.bak prometheus.yml && rm -rf prometheus.yml.bak; fi\r\nif [ -f \"prometheus.web.yml.bak\" ]; then rm -rf prometheus.web.yml && mv prometheus.web.yml.bak prometheus.web.yml && rm -rf prometheus.web.yml.bak; fi\r\n# Create dummy prometheus.web.yml as a placeholder\r\nif [ ! -f \"prometheus.web.yml\" ]; then touch prometheus.web.yml; fi", - "container": "debian:buster-slim", + "container": "ghcr.io\/ptero-eggs\/installers:debian", "entrypoint": "bash" } }, From 7a4dd04cc524d563d8dccc6a7b5ec88ac4031fb1 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 14 Sep 2025 17:35:19 +0800 Subject: [PATCH 15/25] Red-Bot: Remove incorrect package to fix install --- bots/discord/redbot/egg-red.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bots/discord/redbot/egg-red.json b/bots/discord/redbot/egg-red.json index 31c6c29..da07b93 100644 --- a/bots/discord/redbot/egg-red.json +++ b/bots/discord/redbot/egg-red.json @@ -1,19 +1,19 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { "update_url": null, "version": "PTDL_v2" }, - "exported_at": "2024-06-01T19:44:05+00:00", + "exported_at": "2025-09-14T09:33:41+00:00", "name": "Red", "author": "parker@parkervcp.com", - "description": "A multifunction Discord bot \r\n\r\nhttps://github.com/Cog-Creators/Red-DiscordBot", + "description": "A multifunction Discord bot \r\n\r\nhttps:\/\/github.com\/Cog-Creators\/Red-DiscordBot", "features": null, "docker_images": { - "ghcr.io/ptero-eggs/yolks:bot_red": "ghcr.io/ptero-eggs/yolks:bot_red" + "ghcr.io\/ptero-eggs\/yolks:bot_red": "ghcr.io\/ptero-eggs\/yolks:bot_red" }, "file_denylist": [], - "startup": "PATH=$PATH:/home/container/.local/bin redbot pterodactyl --token {{TOKEN}} --prefix {{PREFIX}}", + "startup": "PATH=$PATH:\/home\/container\/.local\/bin redbot pterodactyl --token {{TOKEN}} --prefix {{PREFIX}}", "config": { "files": "{}", "logs": "{}", @@ -24,13 +24,13 @@ "installation": { "container": "python:3.11-slim", "entrypoint": "bash", - "script": "#!/bin/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p /usr/share/man/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-17-jre-headless\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p /mnt/server/.config/{Red-DiscordBot,share}/ /mnt/server/.local/share/Red-DiscordBot/data/pterodactyl/\r\ncd /mnt/server/\r\nln -s .local/share/Red-DiscordBot/data/pterodactyl/ ./configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s /mnt/server/ /home/container\r\nuseradd -m -d /home/container container\r\nchown -R container /mnt/server/\r\necho -e \"install red locally as user\"\r\npip install --upgrade pip\r\nsu - container -c 'pip install -U pip wheel'\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f /mnt/server/.config/Red-DiscordBot/config.json ]; then\r\n curl https://raw.githubusercontent.com/ptero-eggs/application-eggs/main/bots/discord/redbot/config.json -o /mnt/server/.config/Red-DiscordBot/config.json\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"" + "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\npip install --upgrade pip\r\nsu - container -c 'pip install -U pip wheel --no-warn-script-location'\r\nsu - container -c 'pip install -U Red-DiscordBot --no-warn-script-location'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\n curl https:\/\/raw.githubusercontent.com\/ptero-eggs\/application-eggs\/main\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"" } }, "variables": [ { "name": "Discord Bot Token", - "description": "Get your own token here - https://discordapp.com/developers/applications/", + "description": "Get your own token here - https:\/\/discordapp.com\/developers\/applications\/", "env_variable": "TOKEN", "default_value": "GET_YOUR_OWN", "user_viewable": true, From 32cb9104d50fdf45189899410578e2dd935cd193 Mon Sep 17 00:00:00 2001 From: Red Banana <108609991+Red-Banana-Official@users.noreply.github.com> Date: Fri, 3 Oct 2025 04:25:26 +0100 Subject: [PATCH 16/25] minio-s3 fixes (#52) Changed a incorrect URL in the script & changed the script container to ghcr.io/ptero-eggs/installers:debian --- minio/egg-minio-s3.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/minio/egg-minio-s3.json b/minio/egg-minio-s3.json index 22409bb..dc78a14 100644 --- a/minio/egg-minio-s3.json +++ b/minio/egg-minio-s3.json @@ -1,30 +1,30 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL - PTERODACTYL.io", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "update_url": null, - "version": "PTDL_v2" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "2024-06-02T14:32:00+00:00", + "exported_at": "2025-10-02T23:22:38+02:00", "name": "Minio S3", "author": "accounts@bofanodes.io", "description": "MinIO is a cloud storage server compatible with Amazon S3, released under Apache License v2. As an object store, MinIO can store unstructured data such as photos, videos, log files, backups and container images. The maximum size of an object is 5TB.", "features": null, "docker_images": { - "ghcr.io/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/yolks:debian" + "ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/yolks:debian" }, "file_denylist": [], - "startup": "./minio.sh", + "startup": ".\/minio.sh", "config": { "files": "{}", + "startup": "{\r\n \"done\": \"Docs:\"\r\n}", "logs": "{}", - "startup": "{\r\n \"done\": \"guide\",\r\n \"done\": \"Documentation:\"\r\n}", "stop": "^C" }, "scripts": { "installation": { - "container": "debian:buster-slim", - "entrypoint": "bash", - "script": "#!/bin/bash\r\n#\r\napt update\r\napt install -y wget\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"arm64\")\r\ncd /mnt/server\r\nwget https://dl.min.io/server/minio/release/linux-${ARCH}/minio\r\nchmod +x minio\r\nmkdir data\r\nmkdir keys\r\n\r\nwget https://github.com//ptero-eggs/eggs/raw/master/storage/minio/minio.sh\r\nchmod +x minio.sh\r\nexport MINIO_ACCESS_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)\r\necho $MINIO_ACCESS_KEY \u003e keys/key.txt\r\nexport MINIO_SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)\r\necho $MINIO_SECRET_KEY \u003e keys/secret.txt\r\necho done" + "script": "#!\/bin\/bash\r\n#\r\napt update\r\napt install -y wget\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\ncd \/mnt\/server\r\nwget https:\/\/dl.min.io\/server\/minio\/release\/linux-${ARCH}\/minio\r\nchmod +x minio\r\nmkdir data\r\nmkdir keys\r\n\r\nwget https:\/\/raw.githubusercontent.com\/Ptero-Eggs\/application-eggs\/main\/minio\/minio.sh\r\nchmod +x minio.sh\r\nexport MINIO_ACCESS_KEY=$(cat \/dev\/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)\r\necho $MINIO_ACCESS_KEY > keys\/key.txt\r\nexport MINIO_SECRET_KEY=$(cat \/dev\/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)\r\necho $MINIO_SECRET_KEY > keys\/secret.txt\r\necho done", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" } }, "variables": [ From a166c30621ec5189a9969e87064c618bb4019295 Mon Sep 17 00:00:00 2001 From: Red Banana <108609991+Red-Banana-Official@users.noreply.github.com> Date: Fri, 3 Oct 2025 13:16:52 +0100 Subject: [PATCH 17/25] Redis: Update config URLs * consistancy change * URL update Changing an outdated URL * URL update Changing an outdated URL --- database/redis/redis-5/egg-redis-5.json | 6 +++--- database/redis/redis-6/egg-redis-6.json | 6 +++--- database/redis/redis-7/egg-redis-7.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/database/redis/redis-5/egg-redis-5.json b/database/redis/redis-5/egg-redis-5.json index 764fd61..9e7fb97 100644 --- a/database/redis/redis-5/egg-redis-5.json +++ b/database/redis/redis-5/egg-redis-5.json @@ -4,8 +4,8 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-11T13:17:43+02:00", - "name": "Redis", + "exported_at": "2025-10-03T14:09:22+02:00", + "name": "Redis-5", "author": "parker@parkervcp.com", "description": "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.", "features": null, @@ -39,4 +39,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file diff --git a/database/redis/redis-6/egg-redis-6.json b/database/redis/redis-6/egg-redis-6.json index 9ee1274..7da3776 100644 --- a/database/redis/redis-6/egg-redis-6.json +++ b/database/redis/redis-6/egg-redis-6.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-11T13:18:27+02:00", + "exported_at": "2025-10-03T14:09:26+02:00", "name": "Redis-6", "author": "parker@parkervcp.com", "description": "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/redis\/redis-6\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"", + "script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/Ptero-Eggs\/application-eggs\/main\/database\/redis\/redis-6\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"", "container": "ghcr.io\/ptero-eggs\/installers:alpine", "entrypoint": "ash" } @@ -39,4 +39,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file diff --git a/database/redis/redis-7/egg-redis-7.json b/database/redis/redis-7/egg-redis-7.json index c5050fa..f6fca35 100644 --- a/database/redis/redis-7/egg-redis-7.json +++ b/database/redis/redis-7/egg-redis-7.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-02T16:30:14+01:00", + "exported_at": "2025-10-03T14:09:30+02:00", "name": "Redis-7", "author": "parker@parkervcp.com", "description": "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams.", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/database\/redis\/redis-7\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"", + "script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napk add --no-cache curl\r\n\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nif [ ! -d \/mnt\/server\/redis.conf ]; then\r\n curl https:\/\/raw.githubusercontent.com\/Ptero-Eggs\/application-eggs\/main\/database\/redis\/redis-7\/redis.conf -o redis.conf\r\nfi\r\n\r\nsleep 5\r\necho -e \"Install complete. Made this to not have issues.\"", "container": "ghcr.io\/ptero-eggs\/installers:alpine", "entrypoint": "ash" } From 2103381e3b5f602865f6125d4a2d5b1a92b47ccd Mon Sep 17 00:00:00 2001 From: Red Banana <108609991+Red-Banana-Official@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:47:50 +0100 Subject: [PATCH 18/25] RabbitMQ: Update config URL --- rabbitmq/egg-rabbit-m-q.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rabbitmq/egg-rabbit-m-q.json b/rabbitmq/egg-rabbit-m-q.json index 5b46302..c244a5b 100644 --- a/rabbitmq/egg-rabbit-m-q.json +++ b/rabbitmq/egg-rabbit-m-q.json @@ -1,34 +1,34 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "update_url": null, - "version": "PTDL_v2" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "2024-06-02T14:40:54+00:00", + "exported_at": "2025-10-03T19:05:05+02:00", "name": "RabbitMQ", "author": "p.zarrad@outlook.de", "description": "RabbitMQ is a feature rich, multi-protocol messaging broker.", "features": null, "docker_images": { - "ghcr.io/ptero-eggs/yolks:erlang_22": "ghcr.io/ptero-eggs/yolks:erlang_22", - "ghcr.io/ptero-eggs/yolks:erlang_23": "ghcr.io/ptero-eggs/yolks:erlang_23", - "ghcr.io/ptero-eggs/yolks:erlang_24": "ghcr.io/ptero-eggs/yolks:erlang_24", - "ghcr.io/ptero-eggs/yolks:erlang_25": "ghcr.io/ptero-eggs/yolks:erlang_25", - "ghcr.io/ptero-eggs/yolks:erlang_26": "ghcr.io/ptero-eggs/yolks:erlang_26" + "ghcr.io\/ptero-eggs\/yolks:erlang_22": "ghcr.io\/ptero-eggs\/yolks:erlang_22", + "ghcr.io\/ptero-eggs\/yolks:erlang_23": "ghcr.io\/ptero-eggs\/yolks:erlang_23", + "ghcr.io\/ptero-eggs\/yolks:erlang_24": "ghcr.io\/ptero-eggs\/yolks:erlang_24", + "ghcr.io\/ptero-eggs\/yolks:erlang_25": "ghcr.io\/ptero-eggs\/yolks:erlang_25", + "ghcr.io\/ptero-eggs\/yolks:erlang_26": "ghcr.io\/ptero-eggs\/yolks:erlang_26" }, "file_denylist": [], - "startup": "./sbin/rabbitmq-server", + "startup": ".\/sbin\/rabbitmq-server", "config": { - "files": "{\r\n \"etc/rabbitmq/rabbitmq.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"listeners.tcp.default\": \"listeners.tcp.default = 0.0.0.0:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "logs": "{}", + "files": "{\r\n \"etc\/rabbitmq\/rabbitmq.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"listeners.tcp.default\": \"listeners.tcp.default = 0.0.0.0:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \" completed with\"\r\n}", + "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "container": "ghcr.io/ptero-eggs/installers:alpine", - "entrypoint": "ash", - "script": "#!/bin/sh\r\n# Switch to mounted directory\r\ncd /mnt/server\r\n# Update and install xz\r\napk update\r\napk add xz\r\n# Cleanup previous install if available but leave etc untouched\r\nfind . -maxdepth 1 ! -name \"etc\" ! -name . -exec rm -rf {} \\;\r\n# Download and extract RabbitMQ\r\nversion=${RABBITMQ_VERSION}\r\nif [ \"$version\" = \"latest\" ]; then version=$(curl --silent \"https://api.github.com/repos/rabbitmq/rabbitmq-server/releases/latest\" | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\\1/' | cut -c2-); fi\r\ncurl -L https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/rabbitmq-server-generic-unix-${version}.tar.xz --output rabbitmq.tar.xz\r\nxz -v -d rabbitmq.tar.xz \u0026\u0026 tar -xvf rabbitmq.tar\r\nmv -n rabbitmq_server-*/* ./\r\nrm -rf rabbitmq.tar rabbitmq_server-*/\r\n# If there is no config, download default one\r\nif [ ! -f \"etc/rabbitmq/rabbitmq.conf\" ]; then mkdir -p etc/rabbitmq/ \u0026\u0026 curl -L https://raw.githubusercontent.com/parkervcp/eggs/master/software/rabbitmq/rabbitmq.conf --output etc/rabbitmq/rabbitmq.conf; fi" + "script": "#!\/bin\/sh\r\n# Switch to mounted directory\r\ncd \/mnt\/server\r\n# Update and install xz\r\napk update\r\napk add xz\r\n# Cleanup previous install if available but leave etc untouched\r\nfind . -maxdepth 1 ! -name \"etc\" ! -name . -exec rm -rf {} \\;\r\n# Download and extract RabbitMQ\r\nversion=${RABBITMQ_VERSION}\r\nif [ \"$version\" = \"latest\" ]; then version=$(curl --silent \"https:\/\/api.github.com\/repos\/rabbitmq\/rabbitmq-server\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/' | cut -c2-); fi\r\ncurl -L https:\/\/github.com\/rabbitmq\/rabbitmq-server\/releases\/download\/v${version}\/rabbitmq-server-generic-unix-${version}.tar.xz --output rabbitmq.tar.xz\r\nxz -v -d rabbitmq.tar.xz && tar -xvf rabbitmq.tar\r\nmv -n rabbitmq_server-*\/* .\/\r\nrm -rf rabbitmq.tar rabbitmq_server-*\/\r\n# If there is no config, download default one\r\nif [ ! -f \"etc\/rabbitmq\/rabbitmq.conf\" ]; then mkdir -p etc\/rabbitmq\/ && curl -L https:\/\/raw.githubusercontent.com\/Ptero-Eggs\/application-eggs\/main\/rabbitmq\/rabbitmq.conf --output etc\/rabbitmq\/rabbitmq.conf; fi", + "container": "ghcr.io\/ptero-eggs\/installers:alpine", + "entrypoint": "ash" } }, "variables": [ From de34f1dc7522e7cba3a621c7e3da993afe1f9efa Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Thu, 9 Oct 2025 00:09:26 +0800 Subject: [PATCH 19/25] Add NATS egg (#56) * Create egg-n-a-t-s.json * Create README.md --- nats/README.md | 18 ++++++++++ nats/egg-n-a-t-s.json | 82 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 nats/README.md create mode 100644 nats/egg-n-a-t-s.json diff --git a/nats/README.md b/nats/README.md new file mode 100644 index 0000000..ee75e09 --- /dev/null +++ b/nats/README.md @@ -0,0 +1,18 @@ +# NATS + +## From the [NATS](https://nats.io/) website + +NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging. + +## Configuration + +Set the username/password or auth token configuration under the start variables + + +### Server Ports + +Ports required to run the server in a table format. + +| Port | default | +| --------------- | ------- | +| Client Port | 4222 | diff --git a/nats/egg-n-a-t-s.json b/nats/egg-n-a-t-s.json new file mode 100644 index 0000000..134a469 --- /dev/null +++ b/nats/egg-n-a-t-s.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2025-10-06T11:40:39+00:00", + "name": "NATS", + "author": "eggs@purpleflaghosting.com", + "description": "NATS is a connective technology built for the ever increasingly hyper-connected world. It is a single technology that enables applications to securely communicate across any combination of cloud vendors, on-premise, edge, web and mobile, and devices. NATS consists of a family of open source products that are tightly integrated but can be deployed easily and independently. NATS is being used globally by thousands of companies, spanning use-cases including microservices, edge computing, mobile, IoT and can be used to augment or replace traditional messaging.", + "features": [], + "docker_images": { + "ghcr.io\/ptero-eggs\/yolks:alpine": "ghcr.io\/ptero-eggs\/yolks:alpine" + }, + "file_denylist": [], + "startup": ".\/nats-server --port {{SERVER_PORT}} --store_dir $HOME\/data ${JETSTREAM:+-js} ${USERNAME:+--user \"{{USERNAME}}\"} ${PASSWORD:+--pass \"{{PASSWORD}}\"} ${AUTH_TOKEN:+--auth \"{{AUTH_TOKEN}}\"}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Server is ready\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n# Detect OS architecture to download the correct binary\r\nOS_ARCH=$(uname -m)\r\ncase \"$OS_ARCH\" in\r\n x86_64)\r\n OS_ARCH=\"amd64\"\r\n ;;\r\n aarch64 | arm64)\r\n OS_ARCH=\"arm64\"\r\n ;;\r\n *)\r\n echo \"Unsupported architecture: $OS_ARCH\"\r\n exit 1\r\n ;;\r\nesac\r\necho \"Detected architecture: $OS_ARCH\"\r\n\r\n# Find the version and download URL from GitHub releases\r\nif [ -z \"$VERSION\" ] || [ \"$VERSION\" = \"latest\" ]; then\r\n echo \"Downloading latest version...\"\r\n RELEASE_INFO=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest)\r\n TAG_NAME=$(echo \"$RELEASE_INFO\" | jq -r .tag_name)\r\n DOWNLOAD_URL=$(echo \"$RELEASE_INFO\" | jq -r \".assets[] | select(.name | test(\\\"nats-server-.*-linux-$OS_ARCH.*.tar.gz\\\")) | .browser_download_url\")\r\n echo \"Latest version is $TAG_NAME\"\r\n echo \"Download URL: $DOWNLOAD_URL\"\r\nelse\r\n # Ensure VERSION starts with 'v'\r\n VERSION=$(echo \"$VERSION\" | sed -E 's\/^v*\/\/')\r\n VERSION=\"v$VERSION\"\r\n\r\n echo \"Downloading version $VERSION...\"\r\n RELEASE_INFO=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/tags\/$VERSION)\r\n if [ \"$(echo \"$RELEASE_INFO\" | jq -r .message)\" = \"Not Found\" ]; then\r\n echo \"Version $VERSION not found.\"\r\n exit 1\r\n fi\r\n TAG_NAME=$(echo \"$RELEASE_INFO\" | jq -r .tag_name)\r\n DOWNLOAD_URL=$(echo \"$RELEASE_INFO\" | jq -r \".assets[] | select(.name | test(\\\"nats-server-.*-linux-$OS_ARCH.*.tar.gz\\\")) | .browser_download_url\")\r\n echo \"Version is $TAG_NAME\"\r\n\r\nfi\r\n\r\nif [ -z \"$DOWNLOAD_URL\" ]; then\r\n echo \"No suitable download URL found for version $VERSION and architecture $OS_ARCH.\"\r\n exit 1\r\nfi\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\n# Download release\r\nwget \"$DOWNLOAD_URL\" -O \/tmp\/nats-server.tar.gz\r\n\r\n# Extract files\r\ntar -xzf \/tmp\/nats-server.tar.gz --strip-components=1 -C \/tmp\r\n\r\n# Copy nats-server binary and set permissions\r\ncp -f \/tmp\/nats-server \/mnt\/server\r\nchmod +x \/mnt\/server\/nats-server", + "container": "ghcr.io\/ptero-eggs\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Username", + "description": "User required for connections.", + "env_variable": "USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Password", + "description": "Password required for connections.", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Auth Token", + "description": "Authorization token required for connections. If set, Username\/Password based authentication will be disabled.", + "env_variable": "AUTH_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:255", + "field_type": "text" + }, + { + "name": "Enable JetStream", + "description": "Enable JetStream functionality.", + "env_variable": "JETSTREAM", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean|in:0,1", + "field_type": "text" + }, + { + "name": "VERSION", + "description": "Version to install", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From a67336f6dbae3af43cc3167fad8e5f5cba111b47 Mon Sep 17 00:00:00 2001 From: ArchOrange1 <93661534+ArchOrange1@users.noreply.github.com> Date: Sun, 26 Oct 2025 14:31:18 +0100 Subject: [PATCH 20/25] Add ability to define API Port --- minio/egg-minio-s3.json | 12 +++++++++++- minio/minio.sh | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/minio/egg-minio-s3.json b/minio/egg-minio-s3.json index dc78a14..f1ac276 100644 --- a/minio/egg-minio-s3.json +++ b/minio/egg-minio-s3.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2025-10-02T23:22:38+02:00", + "exported_at": "2025-10-26T13:21:49+00:00", "name": "Minio S3", "author": "accounts@bofanodes.io", "description": "MinIO is a cloud storage server compatible with Amazon S3, released under Apache License v2. As an object store, MinIO can store unstructured data such as photos, videos, log files, backups and container images. The maximum size of an object is 5TB.", @@ -37,6 +37,16 @@ "user_editable": true, "rules": "required|string|in:normal,rotate,update", "field_type": "text" + }, + { + "name": "API Port", + "description": "The port to be used by the API", + "env_variable": "API_PORT", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:5", + "field_type": "text" } ] } \ No newline at end of file diff --git a/minio/minio.sh b/minio/minio.sh index 473cc9f..f91bc2c 100644 --- a/minio/minio.sh +++ b/minio/minio.sh @@ -63,8 +63,8 @@ echo "Your New Secret Key is: $(tput setaf 2)$MINIO_ROOT_PASSWORD" echo "Your Old Access Key is: $(tput setaf 3)$MINIO_ROOT_USER_OLD" echo "Your Old Access Key is: $(tput setaf 3)$MINIO_ROOT_PASSWORD_OLD" echo "$(tput setaf 2)Booting..." -./minio server data --console-address ":$SERVER_PORT" +./minio server data --console-address ":$SERVER_PORT" --address ":$API_PORT" else echo "$(tput setaf 2)Booting..." -./minio server data --console-address ":$SERVER_PORT" +./minio server data --console-address ":$SERVER_PORT" --address ":$API_PORT" fi From 44ae0ef8cd3882ce46bc8eb1ed41e7b3a03f2804 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Tue, 4 Nov 2025 08:37:50 +0800 Subject: [PATCH 21/25] Add GitHub Actions workflow for Cloudflare R2 sync This workflow automates the synchronization of files to Cloudflare R2 upon pushes to the main branch or manually via workflow dispatch. --- .github/workflows/r2-sync.yml | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/r2-sync.yml diff --git a/.github/workflows/r2-sync.yml b/.github/workflows/r2-sync.yml new file mode 100644 index 0000000..be66edc --- /dev/null +++ b/.github/workflows/r2-sync.yml @@ -0,0 +1,39 @@ +name: Sync to Cloudflare R2 + +on: + push: + branches: [ main ] + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + env: + AWS_REGION: auto + AWS_S3_FORCE_PATH_STYLE: "true" + + steps: + - uses: actions/checkout@v4 + + - name: Configure credentials + run: | + echo "AWS_ACCESS_KEY_ID=${{ secrets.MIRROR_R2_ACCESS_KEY_ID }}" >> $GITHUB_ENV + echo "AWS_SECRET_ACCESS_KEY=${{ secrets.MIRROR_R2_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV + + - name: Sync to Cloudflare R2 + run: | + REPO_NAME="${{ github.event.repository.name }}" + ENDPOINT="https://${{ vars.CF_ACCOUNT_ID }}.r2.cloudflarestorage.com" + DEST="s3://${{ vars.MIRROR_R2_BUCKET }}/${REPO_NAME}" + + aws s3 sync . "$DEST" \ + --endpoint-url "$ENDPOINT" \ + --follow-symlinks \ + --delete \ + --exact-timestamps \ + --exclude "*" \ + --include "**/*" \ + --exclude ".*" \ + --exclude "**/README.md" \ + --exclude "**/egg-*.json" \ + --exclude "**/meta-*.json" From 8a4979bc2762ef649616520fbec9178f5c4c01c7 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sat, 15 Nov 2025 19:29:26 +0800 Subject: [PATCH 22/25] Remove no longer supported Atlbot --- bots/discord/README.md | 5 --- bots/discord/atlbot/README.md | 9 ----- bots/discord/atlbot/egg-a-t-l-bot.json | 52 -------------------------- 3 files changed, 66 deletions(-) delete mode 100644 bots/discord/atlbot/README.md delete mode 100644 bots/discord/atlbot/egg-a-t-l-bot.json diff --git a/bots/discord/README.md b/bots/discord/README.md index 4b8a878..f99d48d 100644 --- a/bots/discord/README.md +++ b/bots/discord/README.md @@ -7,11 +7,6 @@ [codetheweb/aoede](https://github.com/codetheweb/aoede) 🎧 a self-hosted Spotify → Discord music bot -### [ATLauncher Discord Bot](atlbot) - -[ATLauncher/discord-bot](https://github.com/ATLauncher/discord-bot) -Their github has all the info you need - ### [Bastion](bastion) [TheBastionBot/Bastion](https://github.com/TheBastionBot/Bastion) diff --git a/bots/discord/atlbot/README.md b/bots/discord/atlbot/README.md deleted file mode 100644 index f20d135..0000000 --- a/bots/discord/atlbot/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# ATLBot - -## Their [Github](https://github.com/ATLauncher/discord-bot) - -This is the code for our Discord bot which runs on the official ATLauncher Discord server - -## Server Ports - -There are no ports required for the atl bot diff --git a/bots/discord/atlbot/egg-a-t-l-bot.json b/bots/discord/atlbot/egg-a-t-l-bot.json deleted file mode 100644 index 4857ab0..0000000 --- a/bots/discord/atlbot/egg-a-t-l-bot.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", - "meta": { - "update_url": null, - "version": "PTDL_v2" - }, - "exported_at": "2024-06-01T19:44:10+00:00", - "name": "ATLBot", - "author": "jfeldt19@gmail.com", - "description": "ATLbot in ptero\r\n\r\nhttps://github.com/ATLauncher/discord-bot/", - "features": null, - "docker_images": { - "Nodejs 16": "ghcr.io/ptero-eggs/yolks:node_16" - }, - "file_denylist": [], - "startup": "npm run start", - "config": { - "files": "{\r\n \"config/local.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"discord.client_token\": \"{{server.build.env.CLIENT_TOKEN}}\",\r\n \"logging.level\": \"debug\"\r\n }\r\n }\r\n}", - "logs": "{}", - "startup": "{\r\n \"done\": \"Bot started\"\r\n}", - "stop": "^C" - }, - "scripts": { - "installation": { - "container": "node:16-bookworm", - "entrypoint": "bash", - "script": "#!/bin/bash\r\n\r\napt update\r\napt -y install git openssl\r\n\r\ncd /mnt/server\r\nif [[ -d .git/ ]]; then\r\n git pull\r\nelse\r\n git clone https://github.com/ATLauncher/discord-bot.git . \r\nfi\r\n\r\necho '{}' \u003e config/local.json\r\n\r\nnpm install --production\r\n\r\nnpm run build\r\n\r\nrm Dockerfile\r\nrm CONTRIBUTING.md\r\nrm README.md\r\nrm /config/.gitignore\r\nrm CODE_OF_CONDUCT.md\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" - } - }, - "variables": [ - { - "name": "client_token", - "description": "Get a discord token at https://discordapp.com/developers/", - "env_variable": "CLIENT_TOKEN", - "default_value": "get_your_own_token_from_discord_", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:75", - "field_type": "text" - }, - { - "name": "Node Environment", - "description": "The node environment variable.\r\n\r\nNeeds to stay at \"development\" to log to console.", - "env_variable": "NODE_ENV", - "default_value": "development", - "user_viewable": true, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - } - ] -} \ No newline at end of file From 6e326ce4ba67fe15e4c67b7fd3356f769bb138e2 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 7 Dec 2025 15:41:11 +0800 Subject: [PATCH 23/25] Add egg request workflows --- .github/workflows/accepted-request.yml | 32 ++++++++++++++++++++++++++ .github/workflows/new-request.yml | 32 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 .github/workflows/accepted-request.yml create mode 100644 .github/workflows/new-request.yml diff --git a/.github/workflows/accepted-request.yml b/.github/workflows/accepted-request.yml new file mode 100644 index 0000000..912f6b9 --- /dev/null +++ b/.github/workflows/accepted-request.yml @@ -0,0 +1,32 @@ +name: Add comment on accepted request +on: + issues: + types: + - labeled + +jobs: + add-comment: + if: > + github.event.label.name == 'Accepted' && + github.event.issue.type.name == 'Egg Request' + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Add comment + run: gh issue comment "$NUMBER" --body "$BODY" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + BODY: | + This request has been marked as **accepted**. + + This means: + - We’ve determined that a suitable egg for this application would be welcomed in the repository once it’s developed and submitted. + - This request will be listed on [pterodactyleggs.com](https://pterodactyleggs.com), allowing users to follow any progress. + + However, please note that this does **not** mean: + - Work has already begun on developing an egg for this application. + - There is any guaranteed timeline for development or publication. + - We guarantee that an egg for this application will be developed. diff --git a/.github/workflows/new-request.yml b/.github/workflows/new-request.yml new file mode 100644 index 0000000..38d332d --- /dev/null +++ b/.github/workflows/new-request.yml @@ -0,0 +1,32 @@ +name: Add comment on new request +on: + issues: + types: + - opened + +jobs: + add-comment: + if: github.event.issue.type.name == 'Egg Request' + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Add comment + run: gh issue comment "$NUMBER" --body "$BODY" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + BODY: | + Thank you for submitting your **egg request**! 🥚 + + Your suggestion helps us identify applications that the community would like to see supported in the repository. + + Please keep in mind: + - Egg requests are fulfilled by **volunteer staff and community members**. + - There is **no guaranteed timeline** for development or publication. + - We **cannot guarantee** that an egg for this application will be created. + + If you’re interested in contributing, you’re always welcome to help develop an egg for this request or collaborate with others who may wish to work on it. + + We appreciate your contribution and enthusiasm for helping grow the Pterodactyl Eggs ecosystem! From 7f022ff9bba5391a9b4c8f5776d93fa1a5fa7ece Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 7 Dec 2025 15:48:59 +0800 Subject: [PATCH 24/25] Add issue templates --- .github/ISSUE_TEMPLATE/bug-report.yml | 89 +++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 5 ++ .github/ISSUE_TEMPLATE/egg-request.yml | 39 ++++++++ .github/ISSUE_TEMPLATE/install-bug-report.yml | 89 +++++++++++++++++++ 4 files changed, 222 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/egg-request.yml create mode 100644 .github/ISSUE_TEMPLATE/install-bug-report.yml diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..ef86b2c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,89 @@ +name: 🐛 Bug Report +description: Report an Egg issue +title: "[Bug]: " +type: "Bug" +labels: ["Not Confirmed"] +body: + - type: markdown + attributes: + value: | + If you see any of the following, go to [Discord](https://discord.gg/pterodactyl) and report your error in a support channel. + * `A fatal error was encountered while starting this server.` + * `No server egg configuration could be located; aborting startup.` + + Make sure there are no existing bug reports by searching the [repository issues](https://github.com/Ptero-Eggs/application-eggs/issues?q=state%3Aopen%20type%3A%22Bug%22). + - type: input + id: panel-version + attributes: + label: Panel Version + description: Version number of your Panel (latest is not a version) + placeholder: 1.x.x + validations: + required: true + - type: input + id: wings-version + attributes: + label: Wings Version + description: Version number of your Wings (latest is not a version) + placeholder: 1.x.x + validations: + required: true + - type: input + id: service + attributes: + label: Service + description: Service you are experiencing issues with + placeholder: minecraft/factorio/etc + validations: + required: true + - type: dropdown + id: modified + attributes: + label: Modified + description: Did you add or change things, this includes startup configs/install scripts/variables + options: + - Yes, I modified the egg (will provide details below) + - No, I did not modify the egg + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: What did you expect to happen + placeholder: Install the server, start it, play + validations: + required: true + - type: textarea + id: actual-behavior + attributes: + label: Actual Behavior + description: What actually happened instead + placeholder: Server crashed with error X + validations: + required: true + - type: textarea + id: reproduce-steps + attributes: + label: Steps To Reproduce + description: Step by step what to do to cause the issue + placeholder: | + Step 1 Set version to latest + Step 2 install + Step 3 Receive error X or Y + validations: + required: true + - type: input + id: install-logs + attributes: + label: Install logs + description: | + Run the command below on the SSH terminal of your Wings machine and provide the link to logs. + + ``` + tail -n 1000 $(ls -Alrt /var/log/pterodactyl/install/*.log | tail -1 | sed 's/ */ /g' | cut -s -d' ' -f9) | nc pteropaste.com 99 + ``` + placeholder: | + https://pteropaste.com/exampleLogs + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..5139228 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: ❓ Discord + url: https://discord.gg/pterodactyl + about: Please visit our Discord for support with configuration issues. diff --git a/.github/ISSUE_TEMPLATE/egg-request.yml b/.github/ISSUE_TEMPLATE/egg-request.yml new file mode 100644 index 0000000..b49e041 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/egg-request.yml @@ -0,0 +1,39 @@ +name: 🥚 Egg Request +description: Suggest a server to build an egg for +title: "[Egg Request]: " +type: "Egg Request" +body: + - type: markdown + attributes: + value: | + Make sure there are no existing egg requests by searching the [repository issues](https://github.com/Ptero-Eggs/application-eggs/issues?q=state%3Aopen%20type%3A%22Egg%20Request%22). Please understand how Pterodactyl works when you are requesting an egg. (ie. docker-compose doesn't work for a pterodactyl server) + - type: dropdown + id: expand + attributes: + label: Does this expand an already existing service + options: + - "Yes" + - "No" + validations: + required: true + - type: input + id: application-link + attributes: + label: Link to software + placeholder: minecraft.net/factorio.com/etc + validations: + required: true + - type: input + id: download-link + attributes: + label: Links for the download + description: This needs to be an official link and not one that is hosted on some forum page or a personal Github page. Docker image is not a viable option. + validations: + required: true + - type: input + id: instruction-link + attributes: + label: Links for the install docs + description: Link to installation instructions or documentation covering required dependencies and configuration for the server creation. Docker image is not installation documentation! + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/install-bug-report.yml b/.github/ISSUE_TEMPLATE/install-bug-report.yml new file mode 100644 index 0000000..6cf51ec --- /dev/null +++ b/.github/ISSUE_TEMPLATE/install-bug-report.yml @@ -0,0 +1,89 @@ +name: 🐛 Install Bug Report +description: Report an Egg install issue +title: "[Install Bug]: " +type: "Bug" +labels: ["Not Confirmed"] +body: + - type: markdown + attributes: + value: | + If you see any of the following, go to [Discord](https://discord.gg/pterodactyl) and report your error in a support channel. + * `A fatal error was encountered while starting this server.` + * `No server egg configuration could be located; aborting startup.` + + Make sure there are no existing bug reports by searching the the issues for [install bugs](https://github.com/Ptero-Eggs/application-eggs/issues?q=state%3Aopen%20type%3A%22Bug%22). + - type: input + id: panel-version + attributes: + label: Panel Version + description: Version number of your Panel (latest is not a version) + placeholder: 1.x.x + validations: + required: true + - type: input + id: wings-version + attributes: + label: Wings Version + description: Version number of your Wings (latest is not a version) + placeholder: 1.x.x + validations: + required: true + - type: input + id: service + attributes: + label: Service + description: Service you are experiencing issues with + placeholder: minecraft/factorio/etc + validations: + required: true + - type: dropdown + id: modified + attributes: + label: Modified + description: Did you add or change things, this includes startup configs/install scripts/variables + options: + - Yes, I modified the egg (will provide details below) + - No, I did not modify the egg + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: What did you expect to happen + placeholder: Install the server, start it, play + validations: + required: true + - type: textarea + id: actual-behavior + attributes: + label: Actual Behavior + description: What actually happened instead + placeholder: Server crashed with error X + validations: + required: true + - type: textarea + id: reproduce-steps + attributes: + label: Steps To Reproduce + description: Step by step what to do to cause the issue + placeholder: | + Step 1 Set version to latest + Step 2 install + Step 3 Receive error X or Y + validations: + required: true + - type: input + id: install-logs + attributes: + label: Install logs + description: | + Run the command below on the SSH terminal of your Wings machine and provide the link to logs. + + ``` + tail -n 1000 $(ls -Alrt /var/log/pterodactyl/install/*.log | tail -1 | sed 's/ */ /g' | cut -s -d' ' -f9) | nc pteropaste.com 99 + ``` + placeholder: | + https://pteropaste.com/exampleLogs + validations: + required: true From 122086603fce7b6582ad8cce7982c4367e2ea572 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 7 Dec 2025 16:48:26 +0800 Subject: [PATCH 25/25] Update MongoDB readme to remove obsolete data --- database/nosql/mongodb/README.md | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/database/nosql/mongodb/README.md b/database/nosql/mongodb/README.md index eddb841..3c734a5 100644 --- a/database/nosql/mongodb/README.md +++ b/database/nosql/mongodb/README.md @@ -10,23 +10,6 @@ To disable the message about free monitoring you can run `db.disableFreeMonitori ## Security -By default, MongoDB **does not enforce access control**, meaning that even if you set an admin username and password in the settings of your Pterodactyl server, **anyone will be able to connect to the database without authentication**, and perform any operation. - -> :warning: This is why we recommend to expose your MongoDB database only to your local network, if possible - -### Enabling authentication - -To enable authentification, you need to edit the following lines to your `mongod.conf` file: - -```yaml -security: - authorization: "enabled" -``` - -> :closed_lock_with_key: To learn more about MongoDB security, you can read the [MongoDB Security Checklist](https://www.mongodb.com/docs/manual/administration/security-checklist/#security-checklist) - -### Notes specific to the MongoDB 6+ - **MongoDB 6+ eggs enable access control by default** in the `mongod.conf` file, meaning that even if people will be able to connect to your database as guests, [they will not be able to perform any operation, apart from nonhazardous commands](https://dba.stackexchange.com/a/292175) ### Disabling authentication @@ -40,7 +23,7 @@ security: ## Minimum RAM warning -MongoDB requires approximately 1GB of RAM per 100.000 assets. If the system has to start swapping memory to disk, this will have a severely negative impact on performance, and should be avoided. +MongoDB requires approximately 1GB of RAM per 100,000 assets. If the system has to start swapping memory to disk, this will have a severely negative impact on performance, and should be avoided. ## Server Ports