From 8a27c5fd4c730f1882533687b7eba727c7ffd5b0 Mon Sep 17 00:00:00 2001 From: QuintenQVD0 Date: Sun, 2 Jun 2024 20:51:33 +0200 Subject: [PATCH] ptero eggs compatibility --- 5e-tools/egg-pterodactyl-5e-tools.json | 42 +++++++ code-server/egg-pterodactyl-code--server.json | 56 +++++++++ .../egg-pterodactyl-elasticsearch.json | 52 ++++++++ .../egg-pterodactyl-folding--home.json | 102 ++++++++++++++++ forgejo/egg-pterodactyl-forgejo.json | 64 ++++++++++ gitea/egg-pterodactyl-gitea.json | 62 ++++++++++ grafana/egg-pterodactyl-grafana.json | 52 ++++++++ .../egg-pterodactyl-haste-server.json | 31 +++++ .../egg-pterodactyl-language-tool.json | 42 +++++++ meilisearch/egg-pterodactyl-meilisearch.json | 112 ++++++++++++++++++ owncast/egg-pterodactyl-owncast-online.json | 102 ++++++++++++++++ rabbitmq/egg-pterodactyl-rabbit-m-q.json | 46 +++++++ rathole/egg-pterodactyl-rathole.json | 52 ++++++++ reposilite/egg-pterodactyl-reposilite.json | 46 +++++++ uptime-kuma/egg-pterodactyl-uptime-kuma.json | 62 ++++++++++ yarr/egg-pterodactyl-yarr.json | 52 ++++++++ 16 files changed, 975 insertions(+) create mode 100644 5e-tools/egg-pterodactyl-5e-tools.json create mode 100644 code-server/egg-pterodactyl-code--server.json create mode 100644 elasticsearch/egg-pterodactyl-elasticsearch.json create mode 100644 foldingathome/egg-pterodactyl-folding--home.json create mode 100644 forgejo/egg-pterodactyl-forgejo.json create mode 100644 gitea/egg-pterodactyl-gitea.json create mode 100644 grafana/egg-pterodactyl-grafana.json create mode 100644 haste-server/egg-pterodactyl-haste-server.json create mode 100644 languagetool/egg-pterodactyl-language-tool.json create mode 100644 meilisearch/egg-pterodactyl-meilisearch.json create mode 100644 owncast/egg-pterodactyl-owncast-online.json create mode 100644 rabbitmq/egg-pterodactyl-rabbit-m-q.json create mode 100644 rathole/egg-pterodactyl-rathole.json create mode 100644 reposilite/egg-pterodactyl-reposilite.json create mode 100644 uptime-kuma/egg-pterodactyl-uptime-kuma.json create mode 100644 yarr/egg-pterodactyl-yarr.json diff --git a/5e-tools/egg-pterodactyl-5e-tools.json b/5e-tools/egg-pterodactyl-5e-tools.json new file mode 100644 index 00000000..6fea1af4 --- /dev/null +++ b/5e-tools/egg-pterodactyl-5e-tools.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:56+00:00", + "name": "5e Tools", + "author": "pterodactyl@demi.cloud", + "description": "A suite of tools for 5th Edition Dungeons \u0026 Dragons players and Dungeon Masters.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "cd ~/5e-tools \u0026\u0026 git pull \u0026\u0026 cd \u0026\u0026 ./caddy run --config ~/caddy.json", + "config": { + "files": "{\r\n \"caddy.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"apps.http.servers.srv0.listen.0\": \":{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"serving initial configuration\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# 5e Tools install script\r\n#\r\n# Server Files: /mnt/server\r\ndeclare -r DIR=\"/mnt/server\"\r\ndeclare -r CADDY_INSTALL_URL=\"https://caddyserver.com/api/download?os=linux\u0026arch=amd64\u0026idempotency=41554620449867\"\r\ndeclare -r LOCAL_REPO=\"${DIR}/5e-tools\"\r\n\r\ndie() {\r\n local message=\"$1\"\r\n printf \"\\n%s\\n\" \"${message}\"\r\n exit 2\r\n}\r\ncd_error() {\r\n die \"ERROR: installation encountered an error while trying to change directory\"\r\n}\r\n\r\nmain() {\r\n local git_origin\r\n apt update\r\n apt install -y wget\r\n cd \"${DIR}\" || cd_error\r\n printf \"\\nInstalling Caddy...\\n\"\r\n wget \"${CADDY_INSTALL_URL}\" -O ./caddy\r\n chmod +x ./caddy\r\n printf \"\\nGenerating Caddy configuration...\\n\"\r\n # this is a default config\r\n # key variables, such as the port, will get overwritten with the pterodactyl\r\n # configuration parser\r\n cat \u003c\u003cEOF \u003e\"${DIR}/caddy.json\"\r\n{\r\n \"apps\": {\r\n \"http\": {\r\n \"servers\": {\r\n \"srv0\": {\r\n \"listen\": [\r\n \":8080\"\r\n ],\r\n \"routes\": [\r\n {\r\n \"handle\": [\r\n {\r\n \"handler\": \"vars\",\r\n \"root\": \"/home/container/5e-tools\"\r\n },\r\n {\r\n \"encodings\": {\r\n \"gzip\": {},\r\n \"zstd\": {}\r\n },\r\n \"handler\": \"encode\",\r\n \"prefer\": [\r\n \"zstd\",\r\n \"gzip\"\r\n ]\r\n },\r\n {\r\n \"handler\": \"file_server\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n }\r\n}\r\nEOF\r\n git config --global pull.ff only\r\n if [[ ! -d \"${LOCAL_REPO}\" ]]; then\r\n printf \"\\nCloning latest version (this may take a while)...\\n\"\r\n # $REPOSITORY is passed via environment variable from pterodactyl\r\n git clone \"${REPOSITORY}\" \"${LOCAL_REPO}\"\r\n else\r\n cd \"${LOCAL_REPO}\" || cd_error\r\n git_origin=\"$(git config --get remote.origin.url)\"\r\n cd \"${DIR}\" || cd_error\r\n printf \"\\n\\ngit origin is %s\\n\\n\" \"${git_origin}\"\r\n # if the user hasn't change the repository variable\r\n if [[ \"${git_origin}\" == \"${REPOSITORY}\" ]]; then\r\n cd \"${LOCAL_REPO}\" || cd_error\r\n printf \"\\nRepository already installed - updating...\\n\"\r\n git fetch --all\r\n git reset --hard origin/master\r\n git pull\r\n cd \"${DIR}\" || cd_error\r\n else\r\n printf \"\\nRepository variable changed since last update\\n...\\n\"\r\n rm -rf \"${LOCAL_REPO}\"\r\n git clone \"${REPOSITORY}\" \"${LOCAL_REPO}\"\r\n fi\r\n fi\r\n printf \"\\nInstallation Complete\\n\"\r\n}\r\nmain \"@\"" + } + }, + "variables": [ + { + "name": "5e Tools Repository", + "description": "Git Repository to use for cloning 5e Tools", + "env_variable": "REPOSITORY", + "default_value": "https://github.com/5etools-mirror-1/5etools-mirror-1.github.io", + "user_viewable": false, + "user_editable": false, + "rules": "required|url", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/code-server/egg-pterodactyl-code--server.json b/code-server/egg-pterodactyl-code--server.json new file mode 100644 index 00000000..21613c2c --- /dev/null +++ b/code-server/egg-pterodactyl-code--server.json @@ -0,0 +1,56 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:57+00:00", + "name": "Code-Server", + "author": "mario.franze@gmail.com", + "description": "Run VS Code on any machine anywhere and access it in the browser.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_12": "ghcr.io/parkervcp/yolks:nodejs_12", + "ghcr.io/parkervcp/yolks:nodejs_14": "ghcr.io/parkervcp/yolks:nodejs_14", + "ghcr.io/parkervcp/yolks:nodejs_16": "ghcr.io/parkervcp/yolks:nodejs_16", + "ghcr.io/parkervcp/yolks:nodejs_17": "ghcr.io/parkervcp/yolks:nodejs_17", + "ghcr.io/parkervcp/yolks:nodejs_18": "ghcr.io/parkervcp/yolks:nodejs_18" + }, + "file_denylist": [], + "startup": "sh .local/lib/code-server-{{VERSION}}/bin/code-server", + "config": { + "files": "{\r\n \".config/code-server/config.yaml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"password\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"bind-addr\": \"bind-addr: 0.0.0.0:{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"HTTP server listening on\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "apt update\r\napt install -y curl jq\r\n\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"arm64\")\r\nMATCH=linux-${ARCH}\r\n# Create initial directories\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\necho ${ARCH}\r\necho ${MATCH}\r\n# Create needed directories\r\nmkdir -p /mnt/server/.local/lib /mnt/server/.local/bin /mnt/server/.config/code-server /mnt/server/projects\r\n\r\n# Change permission of projects directory so it can be accessed by code-server\r\nchmod 777 /mnt/server/projects\r\ntouch \"/mnt/server/projects/PLACE YOUR PROJECTS HERE\"\r\n\r\n# Check for available versions. Defaults to latest if no valid version is found.\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/coder/code-server/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/coder/code-server/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"v${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"v${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n# Download the given Version and extract it\r\necho \"Downloading $DOWNLOAD_URL\"\r\ncurl -fL $DOWNLOAD_URL | tar -C /mnt/server/.local/lib -xz\r\nmv /mnt/server/.local/lib/code-server-*linux-${ARCH} /mnt/server/.local/lib/code-server-${VERSION}\r\n\r\n\r\nPATH=\"/mnt/server/.local/bin:$PATH\"\r\necho \"password: changeme\r\nbind-addr: 0.0.0.0\r\nauth: password\r\ncert: false\" \u003e /mnt/server/.config/code-server/config.yaml\r\n\r\necho \"Install complete\"" + } + }, + "variables": [ + { + "name": "Password", + "description": "Password to login to your Code-Server instance", + "env_variable": "PASSWORD", + "default_value": "changeme", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Version", + "description": "Version for (re)installation such as 3.9.3. Defaults to latest version if no valid version is provided", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/elasticsearch/egg-pterodactyl-elasticsearch.json b/elasticsearch/egg-pterodactyl-elasticsearch.json new file mode 100644 index 00000000..cc6a9e4e --- /dev/null +++ b/elasticsearch/egg-pterodactyl-elasticsearch.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:58+00:00", + "name": "Elasticsearch", + "author": "dominic@stilma.net", + "description": "Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin/elasticsearch -E network.host=0.0.0.0 -E http.port={{SERVER_PORT}} -E discovery.type={{DISCOVERY_SEED_HOSTS}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"started\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Elasticsearch Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\n## Install Requirements\r\n\r\ncd /mnt/server\r\n\r\n## Install Elasticsearch\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"x86_64\" || echo \"aarch64\")\r\ncurl -sSL -o elasticsearch.tar.gz https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$VERSION-linux-${ARCH}.tar.gz\r\n\r\ntar -zxf elasticsearch.tar.gz --directory /mnt/server\r\nmv elasticsearch*/* /mnt/server\r\nrm elasticsearch.tar.gz\r\nrm -R elasticsearch-*\r\n\r\n## Finish command\r\necho \"All done! Just start it up :)\"" + } + }, + "variables": [ + { + "name": "Discovery Seed Hosts", + "description": "Please keep default if you are unsure.", + "env_variable": "DISCOVERY_SEED_HOSTS", + "default_value": "single-node", + "user_viewable": true, + "user_editable": true, + "rules": "required", + "field_type": "text" + }, + { + "name": "Elasticsearch Version", + "description": "Go to https://www.elastic.co/downloads/elasticsearch and look at the version at the top.", + "env_variable": "VERSION", + "default_value": "8.13.0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/foldingathome/egg-pterodactyl-folding--home.json b/foldingathome/egg-pterodactyl-folding--home.json new file mode 100644 index 00000000..b251b0fa --- /dev/null +++ b/foldingathome/egg-pterodactyl-folding--home.json @@ -0,0 +1,102 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:59+00:00", + "name": "Folding@Home", + "author": "fuggschen@krk-gaming.de", + "description": "Folding@home is a distributed computing project aimed to help scientists develop new therapeutics for a variety of diseases by the means of simulating protein dynamics. This includes the process of protein folding and the movements of proteins, and is reliant on simulations run on volunteers' personal computers", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./FAHClient --user={{FAH_USERNAME}} --team={{FAH_TEAM}} --passkey={{FAH_PASSKEY}} $(if {{FAH_ANON}}; then echo \"--fold-anon=true\"; fi) --command-port={{SERVER_PORT}} --password={{FAH_PASSWORD}} --power={{FAH_POWER}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Started FahCore\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n#\r\n# Folding@Home install script\r\n#\r\n# Created by Fuggschen\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"64bit\" || echo \"arm64\")\r\ncd /tmp\r\n\r\necho \"Removing previous Version\"\r\nmv /mnt/server/config.xml /tmp/config.xml\r\nrm -rf /mnt/server/*\r\n\r\necho \"Installing dependencies\"\r\napt update \u0026\u0026 apt upgrade -y \u0026\u0026 apt install curl bzip2 -y\r\n\r\necho \"Downloading FAHClient\"\r\ncurl -sSL -o fahclient.tar.bz2 https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-${ARCH}/${FAH_VERSION}/latest.tar.bz2\r\n\r\necho \"Installing FAHClient\"\r\ntar -xjf fahclient.tar.bz2 -C /mnt/server --strip-components=1\r\n\r\necho \"Cleaning up..\"\r\nrm -f fahclient.tar.bz2\r\nrm -f /mnt/server/sample-config.xml\r\nmv /tmp/config.xml /mnt/server/config.xml\r\n\r\nFILE=/mnt/server/config.xml\r\nif [[ ! -f $FILE ]]\r\nthen\r\necho \"Setting up config.xml\"\r\ncat \u003e $FILE \u003c\u003c EOF\r\n\u003cconfig\u003e\r\n \u003c!-- Folding Slots --\u003e\r\n \u003cslot id='0' type='CPU'/\u003e\r\n \u003c!-- Maximum CPU Cores to use. Can't be more than 64 --\u003e\r\n \u003ccpus v='64'/\u003e\r\n\u003c/config\u003e\r\nEOF\r\nfi\r\n\r\necho \"Done!\"" + } + }, + "variables": [ + { + "name": "FaH Username", + "description": "Your Folding@Home Username", + "env_variable": "FAH_USERNAME", + "default_value": "Anonymous", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "FaH Team", + "description": "Your Folding@Home Team that you are folding for. For reference look here: https://stats.foldingathome.org/team", + "env_variable": "FAH_TEAM", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "FaH Passkey", + "description": "Your Folding@Home Passkey for your Username, if not Anonymous. Get your Passkey here: https://apps.foldingathome.org/getpasskey", + "env_variable": "FAH_PASSKEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "FaH Anonymous Mode", + "description": "Set to true if you are folding Anonymously", + "env_variable": "FAH_ANON", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "FaH Version", + "description": "Set to wanted major Folding@Home Version. Check here: https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/", + "env_variable": "FAH_VERSION", + "default_value": "v7.6", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "FaHControl Password", + "description": "Set a WebUI Password", + "env_variable": "FAH_PASSWORD", + "default_value": "SetPasswordHere", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "FaH Power", + "description": "The Powerlevel it should use:\r\n- light (only half the cpu power is used)\r\n- medium (full cpu power)\r\n- full (full cpu and gpu power but gpu is not supported)", + "env_variable": "FAH_POWER", + "default_value": "medium", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:light,medium,full", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/forgejo/egg-pterodactyl-forgejo.json b/forgejo/egg-pterodactyl-forgejo.json new file mode 100644 index 00000000..4cd19f77 --- /dev/null +++ b/forgejo/egg-pterodactyl-forgejo.json @@ -0,0 +1,64 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:58+00:00", + "name": "Forgejo", + "author": "seaswimmerthefsh@gmail.com", + "description": "Forgejo is a community managed lightweight code hosting solution written in Go. It is published under the MIT license, and is a fork of Gitea.", + "features": null, + "docker_images": { + "Debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [ + "forgejo" + ], + "startup": "./forgejo web -p {{SERVER_PORT}} -c ./app.ini", + "config": { + "files": "{\r\n \"custom/app.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISABLE_SSH\": \"DISABLE_SSH: {{server.build.env.DISABLE_SSH}}\",\r\n \"SSH_PORT\": \"SSH_PORT: {{server.build.env.SSH_PORT}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listen: \"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/yolks:debian", + "entrypoint": "bash", + "script": "## Forgejo Installscript\r\n## Modified version of the Gitea installscript, see https://github.com/parkervcp/eggs/blob/master/software/gitea/egg-gitea.json\r\n\r\n## update system\r\napt update\r\napt -y install --no-install-recommends jq curl ca-certificates dnsutils\r\n\r\n## Variables\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"arm64\")\r\nLATEST=$(dig +short release.forgejo.org TXT | grep -oE '([0-9]+\\.){2}[0-9]+(-[a-zA-Z0-9]+)*')\r\n\r\n\r\ncd /mnt/server\r\n\r\n## install forgejo\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Downloading Forgejo $LATEST (latest)\"\r\n URL=https://codeberg.org/forgejo/forgejo/releases/download/v${LATEST}/forgejo-${LATEST}-linux-${ARCH}\r\nelse\r\n echo -e \"Downloading Forgejo $VERSION\"\r\n URL=https://codeberg.org/forgejo/forgejo/releases/download/v${VERSION}/forgejo-${VERSION}-linux-${ARCH}\r\nfi\r\n\r\necho -e \"Download URL: $URL\"\r\n\r\ncurl -sSL -o forgejo $URL\r\n\r\nchmod +x forgejo\r\n\r\nmkdir -p custom\r\n\r\nif [ -f \"/mnt/server/custom/app.ini\" ]; then\r\n echo \"Config file exists\"\r\nelse\r\n echo \"[server]\r\n LOCAL_ROOT_URL = http://${SERVER_IP}:${SERVER_PORT}/\r\n DOMAIN = ${SERVER_IP}\r\n HTTP_PORT = ${SERVER_PORT}\r\n ROOT_URL = http://${SERVER_IP}:${SERVER_PORT}/\r\n DISABLE_SSH = ${DISABLE_SSH}\r\n SSH_PORT = ${SSH_PORT}\" \u003e /mnt/server/custom/app.ini\r\nfi\r\n\r\necho -e \"-------------------------------------------------\"\r\necho -e \"Installation completed\"\r\necho -e \"-------------------------------------------------\"" + } + }, + "variables": [ + { + "name": "Disable SSH", + "description": "Disable the SSH feature when it’s not available.", + "env_variable": "DISABLE_SSH", + "default_value": "false", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "SSH Port", + "description": "SSH port displayed in clone URL.", + "env_variable": "SSH_PORT", + "default_value": "2020", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65535", + "field_type": "text" + }, + { + "name": "Version", + "description": "Use either `latest` or a specific version, such as `1.21.7-0`.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:15", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/gitea/egg-pterodactyl-gitea.json b/gitea/egg-pterodactyl-gitea.json new file mode 100644 index 00000000..80160c02 --- /dev/null +++ b/gitea/egg-pterodactyl-gitea.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:59+00:00", + "name": "Gitea", + "author": "mario.franze@gmail.com", + "description": "Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./gitea web -p {{SERVER_PORT}} -c ./app.ini", + "config": { + "files": "{\r\n \"custom/app.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISABLE_SSH\": \"DISABLE_SSH: {{server.build.env.DISABLE_SSH}}\",\r\n \"SSH_PORT\": \"SSH_PORT: {{server.build.env.SSH_PORT}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listen: \"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "## Gitea Installscript\r\n\r\n## update system\r\napt update\r\napt -y install --no-install-recommends jq curl ca-certificates\r\n\r\n## Variables\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"arm64\")\r\nLATEST=$(curl -sSL https://dl.gitea.io/gitea/version.json | jq -r .latest.version)\r\n\r\n\r\ncd /mnt/server\r\n\r\n## install gitea\r\necho -e \"Download url: https://dl.gitea.io/gitea/${LATEST}/gitea-${LATEST}-linux-${ARCH}\"\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"downloading Gitea $LATEST\"\r\n curl -sSL -o gitea https://dl.gitea.io/gitea/${LATEST}/gitea-${LATEST}-linux-${ARCH}\r\nelif [ \"${VERSION}\" == \"nightly\" ]; then\r\n echo -e \"downloading Gitea nightly\"\r\n curl -sSL -o gitea https://dl.gitea.io/gitea/main/gitea-main-linux-${ARCH}\r\nelse\r\n curl -sSL -o gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-${ARCH}\r\n echo -e \"downloading Gitea $VERSION\"\r\nfi\r\n\r\nchmod +x gitea\r\n\r\nmkdir -p custom\r\n\r\nif [ -f \"/mnt/server/custom/app.ini\" ]; then\r\n echo \"config file exists\"\r\nelse\r\n echo \"[server]\r\n LOCAL_ROOT_URL = http://${SERVER_IP}:${SERVER_PORT}/\r\n DOMAIN = ${SERVER_IP}\r\n HTTP_PORT = ${SERVER_PORT}\r\n ROOT_URL = http://${SERVER_IP}:${SERVER_PORT}/\r\n DISABLE_SSH = ${DISABLE_SSH}\r\n SSH_PORT = ${SSH_PORT}\" \u003e /mnt/server/custom/app.ini\r\nfi\r\n\r\necho -e \"-------------------------------------------------\"\r\necho -e \"Installation completed\"\r\necho -e \"-------------------------------------------------\"" + } + }, + "variables": [ + { + "name": "Disable SSH", + "description": "Disable SSH feature when it’s not available", + "env_variable": "DISABLE_SSH", + "default_value": "false", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "SSH Port", + "description": "SSH port displayed in clone URL.", + "env_variable": "SSH_PORT", + "default_value": "2020", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65535", + "field_type": "text" + }, + { + "name": "Version", + "description": "you can use latest, nightly or version (e.g. 1.18.1)", + "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 diff --git a/grafana/egg-pterodactyl-grafana.json b/grafana/egg-pterodactyl-grafana.json new file mode 100644 index 00000000..db9879f4 --- /dev/null +++ b/grafana/egg-pterodactyl-grafana.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:41:00+00:00", + "name": "Grafana", + "author": "p.zarrad@outlook.de", + "description": "The open and composable observability and data visualization platform.\r\nVisualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin/grafana server web", + "config": { + "files": "{\r\n \"conf/defaults.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"server.http_port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"HTTP Server Listen\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\nshopt -s extglob\r\n\r\n# Switch to mounted directory\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n# Update installation system and install curl\r\napt-get update\r\napt-get install -y curl\r\n\r\n# Cleanup previous install if available\r\nif [ -d \"conf\" ]; then mv conf conf.bak; fi\r\nrm -rfv !(conf.bak|data)\r\n\r\n# Download and extract Grafana\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"arm64\")\r\n\r\nversion=${GRAFANA_VERSION}\r\nif [ \"$version\" = \"latest\" ]; then version=$(curl --silent \"https://api.github.com/repos/grafana/grafana/releases/latest\" | grep '\"tag_name\":' | sed -E 's/.*\"([^\"]+)\".*/\\1/' | cut -c2-); fi\r\ncurl https://dl.grafana.com/oss/release/grafana-${version}.linux-${ARCH}.tar.gz --output grafana.tar.gz\r\ntar -zxvf grafana.tar.gz\r\nmv -n grafana-*/* ./\r\nrm -rf grafana.tar.gz grafana-*/\r\n\r\n# Restore configuration if necessary\r\nif [ -d \"conf.bak\" ]; then rm -rf conf \u0026\u0026 mv conf.bak conf \u0026\u0026 rm -rf conf.bak; fi\r\n\r\n# Update existing plugins and install Grafana plugins\r\nif [ ! -z \"${GRAFANA_PLUGINS}\" ]; then\r\nfor v in $(tr ',' '\\n' \u003c\u003c\u003c \"${GRAFANA_PLUGINS}\") ; do ./bin/grafana-cli --pluginsDir=\"/mnt/server/data/plugins\" plugins install \"$v\" ; done\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------" + } + }, + "variables": [ + { + "name": "Grafana Version", + "description": "The version of Grafana to install. By default the latest version is being installed.", + "env_variable": "GRAFANA_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Grafana Plugins", + "description": "A list of Grafana plugins that should be installed. Enter the plugins comma separated (e. g. a,b,c).", + "env_variable": "grafana_plugins", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/haste-server/egg-pterodactyl-haste-server.json b/haste-server/egg-pterodactyl-haste-server.json new file mode 100644 index 00000000..c70feb5a --- /dev/null +++ b/haste-server/egg-pterodactyl-haste-server.json @@ -0,0 +1,31 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:41:01+00:00", + "name": "haste-server", + "author": "eggs@harryw.link", + "description": "Haste is an open-source pastebin software written in node.js, which is easily installable in any network. It can be backed by either redis or filesystem, and has a very easy adapter interface for other stores. A publicly available version can be found at hastebin.com", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:nodejs_18": "ghcr.io/parkervcp/yolks:nodejs_18" + }, + "file_denylist": [], + "startup": "npm start", + "config": { + "files": "{\r\n \"config.js\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"listening on\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "node:18-bookworm-slim", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt update\r\napt install -y git curl\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\ngit clone https://github.com/toptal/haste-server\r\ncd haste-server\r\nmv * /mnt/server\r\ncd ..\r\nrm -rf haste-server\r\nnpm install\r\n\r\nexit 0" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/languagetool/egg-pterodactyl-language-tool.json b/languagetool/egg-pterodactyl-language-tool.json new file mode 100644 index 00000000..fc98f283 --- /dev/null +++ b/languagetool/egg-pterodactyl-language-tool.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:41:01+00:00", + "name": "LanguageTool", + "author": "thomasruhl@live.de", + "description": "This egg installs a LanguageTool server\r\n\r\nLanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. It finds many errors that a simple spell checker cannot find.\r\n\r\nView https://languagetool.org for more information.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin --public --config config.properties", + "config": { + "files": "{\r\n \"config.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"languageModel\": \"models/\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\napk add --no-cache unzip # to make shure the unzipper is working properly\r\nmkdir -p /mnt/server\r\nmkdir -p /mnt/server/models\r\ntouch config.properties\r\n\r\n# if TRAIN_MODELS has content install them\r\nif [ -n TRAIN_MODELS ]; then\r\n\r\n content=$(curl -L https://languagetool.org/download/ngram-data/)\r\n\r\n links=$(echo \"$content\" | grep -o '\u003ca href=\"[^\"]*\\.zip\"\u003e' | sed 's/\u003ca href=\"//' | sed 's/\"\u003e//')\r\n echo $links\r\n\r\n cd /mnt/server/models\r\n for model in $TRAIN_MODELS; do\r\n echo \"$model\"\r\n for link in $links; do\r\n # echo \" $link\"\r\n if [[ $link == *\"-$model-\"* ]]; then\r\n fullLink=\"https://languagetool.org/download/ngram-data/$link\"\r\n echo \"Downloading $fullLink\"\r\n echo \"this could take some while\"\r\n curl $fullLink --output $model.zip\r\n echo \"unziping $model.zip\"\r\n unzip $model.zip\r\n rm $model.zip\r\n fi\r\n done\r\n done\r\nfi\r\n\r\n# main languagetool install\r\ncd /mnt/server\r\n\r\necho \"downloading languagetool\"\r\ncurl https://languagetool.org/download/LanguageTool-stable.zip --output download.zip\r\necho unziping\r\nunzip download.zip\r\necho moving files\r\n\r\ncp -r LanguageTool-*/* .\r\n\r\nrm -rf LanguageTool-*\r\nrm download.zip -rf\r\n\r\necho Finished install" + } + }, + "variables": [ + { + "name": "Include traindata", + "description": "This uses many gigabytes of disk space. \r\n\r\nSeparate each value with spaces. For example, \"de en\". \r\n\r\nView all available models at https://languagetool.org/download/ngram-data/", + "env_variable": "TRAIN_MODELS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/meilisearch/egg-pterodactyl-meilisearch.json b/meilisearch/egg-pterodactyl-meilisearch.json new file mode 100644 index 00000000..ff1fdb14 --- /dev/null +++ b/meilisearch/egg-pterodactyl-meilisearch.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:52+00:00", + "name": "Meilisearch", + "author": "josdekurk@gmail.com", + "description": "A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./meilisearch --http-addr \"0.0.0.0:{{SERVER_PORT}}\" --max-indexing-memory=\"{{SERVER_MEMORY}}mb\" $([ \"$NO_ANALYTICS\" -eq 1 ] \u0026\u0026 echo \"--no-analytics\")", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Actix runtime found; starting in Actix runtime\"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/meilisearch/meilisearch/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/meilisearch/meilisearch/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"linux-amd64\" || echo \"linux-aarch64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\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) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n## Config file\r\nFILE=/mnt/server/config.toml\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file exits\"\r\nelse \r\n echo \"Config does not exist. Making one\"\r\n curl -sSL -o config.toml https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml\r\nfi\r\n\r\ncurl -sSL -o meilisearch ${DOWNLOAD_URL}\r\nchmod +x meilisearch\r\n\r\n# Make the needed directory's \r\nmkdir -p /mnt/server/dumps\r\nmkdir -p /mnt/server/data.ms\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Master key", + "description": "In production, a Master key of at least 16 bytes is mandatory\r\nSets the instance's master key, automatically protecting all routes except GET /health. This means you will need a valid API key to access all other endpoints.", + "env_variable": "MEILI_MASTER_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Environment", + "description": "Configures the instance's environment. Value must be either production or development.", + "env_variable": "MEILI_ENV", + "default_value": "development", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:development,production", + "field_type": "text" + }, + { + "name": "Disable analytics", + "description": "Deactivates Meilisearch's built-in telemetry when provided.", + "env_variable": "NO_ANALYTICS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Dumps dir", + "description": "Sets the directory where Meilisearch will create dump files.", + "env_variable": "MEILI_DUMP_DIR", + "default_value": "/home/container/dumps", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "DB PATH", + "description": "Designates the location where database files will be created and retrieved.", + "env_variable": "MEILI_DB_PATH", + "default_value": "/home/container/data.ms", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Log level", + "description": "Defines how much detail should be present in Meilisearch's logs.", + "env_variable": "MEILI_LOG_LEVEL", + "default_value": "INFO", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:INFO,WARN,ERROR,TRACE", + "field_type": "text" + }, + { + "name": "Config Path", + "description": "Designates the location of the configuration file to load at launch.", + "env_variable": "MEILI_CONFIG_FILE_PATH", + "default_value": "/home/container/config.toml", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Max threads", + "description": "Sets the maximum number of threads Meilisearch can use during indexing", + "env_variable": "MEILI_MAX_INDEXING_THREADS", + "default_value": "2", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/owncast/egg-pterodactyl-owncast-online.json b/owncast/egg-pterodactyl-owncast-online.json new file mode 100644 index 00000000..c7cd400c --- /dev/null +++ b/owncast/egg-pterodactyl-owncast-online.json @@ -0,0 +1,102 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:52+00:00", + "name": "owncast.online", + "author": "psychoalex@thevcbc.com", + "description": "Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.", + "features": null, + "docker_images": { + "ghcr.io/pterodactyl/yolks:debian": "ghcr.io/pterodactyl/yolks:debian" + }, + "file_denylist": [], + "startup": "./owncast -webserverport {{SERVER_PORT}} -rtmpport {{RTMP_PORT}} -streamkey {{STREAM_KEY}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"The web admin interface is available at /admin.\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n#Make Server Dir\r\nif [ ! -d /mnt/server/ ]; then\r\n mkdir /mnt/server/\r\nfi\r\ncd /mnt/server/\r\n\r\n#Get Dependencies\r\napt-get -y update\r\napt-get -y install curl unzip tar jq\r\n\r\n#Get Owncast Install Files\r\n\r\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\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 .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\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) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho Download URL is: ${DOWNLOAD_URL}\r\n\r\ncurl -L ${DOWNLOAD_URL} --output ./owncast_installer.zip\r\n\r\n#curl -L https://github.com/owncast/owncast/releases/download/v${OWNCAST_VERSION}/owncast-${OWNCAST_VERSION}-linux-64bit.zip --output ./owncast_installer.zip\r\n\r\n#Unzip Install Files\r\nunzip -o -q ./owncast_installer.zip\r\nrm ./owncast_installer.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "RTMP Port", + "description": "The port that is used to receive the stream data.", + "env_variable": "RTMP_PORT", + "default_value": "8091", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "Stream/Admin Key", + "description": "This is used to authenticate to the web admin interface, as well as to authenticate your stream.", + "env_variable": "STREAM_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:32|max:128", + "field_type": "text" + }, + { + "name": "Owncast Version", + "description": "The version of Owncast that you would like to install, from https://github.com/owncast/owncast/releases\r\nAs an Example - \"v0.0.11\" for a specific version or \"latest\" for the most up to date version.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Github Repository", + "description": "Used to identify the github repository to pull the release from.", + "env_variable": "GITHUB_PACKAGE", + "default_value": "owncast/owncast", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:120", + "field_type": "text" + }, + { + "name": "Github File Match", + "description": "Used to identify the specific asset under a release for download.", + "env_variable": "MATCH", + "default_value": "linux-64bit", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Github User", + "description": "Required if you are doing more calls than the github anonymous API user allows.", + "env_variable": "GITHUB_USER", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Github Oauth Token", + "description": "Required if you are doing more calls than the github anonymous API user allows.", + "env_variable": "GITHUB_OAUTH_TOKEN", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:128", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/rabbitmq/egg-pterodactyl-rabbit-m-q.json b/rabbitmq/egg-pterodactyl-rabbit-m-q.json new file mode 100644 index 00000000..c888b03b --- /dev/null +++ b/rabbitmq/egg-pterodactyl-rabbit-m-q.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:54+00:00", + "name": "RabbitMQ", + "author": "p.zarrad@outlook.de", + "description": "RabbitMQ is a feature rich, multi-protocol messaging broker.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:erlang_22": "ghcr.io/parkervcp/yolks:erlang_22", + "ghcr.io/parkervcp/yolks:erlang_23": "ghcr.io/parkervcp/yolks:erlang_23", + "ghcr.io/parkervcp/yolks:erlang_24": "ghcr.io/parkervcp/yolks:erlang_24", + "ghcr.io/parkervcp/yolks:erlang_25": "ghcr.io/parkervcp/yolks:erlang_25", + "ghcr.io/parkervcp/yolks:erlang_26": "ghcr.io/parkervcp/yolks:erlang_26" + }, + "file_denylist": [], + "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": "{}", + "startup": "{\r\n \"done\": \" completed with\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/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" + } + }, + "variables": [ + { + "name": "RabbitMQ Version", + "description": "The version of RabbitMQ to install. By default the latest version is being installed.", + "env_variable": "RABBITMQ_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/rathole/egg-pterodactyl-rathole.json b/rathole/egg-pterodactyl-rathole.json new file mode 100644 index 00000000..244bce7b --- /dev/null +++ b/rathole/egg-pterodactyl-rathole.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:53+00:00", + "name": "Rathole", + "author": "tunayada@gmail.com", + "description": "A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:rust_latest": "ghcr.io/parkervcp/yolks:rust_latest" + }, + "file_denylist": [], + "startup": "./rathole server.toml", + "config": { + "files": "{\r\n \"server.toml\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"server.bind_addr\": \"\\\"0.0.0.0:{{server.build.default.port}}\\\"\",\r\n \"server.services.test.token\": \"\\\"{{server.build.env.TOKEN}}\\\"\",\r\n \"server.services.test.bind_addr\": \"\\\"0.0.0.0:{{server.build.default.port}}\\\"\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": [\r\n \"Listening at \"\r\n ]\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\n## get release info and download links\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/rapiz1/rathole/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/rapiz1/rathole/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"amd64\" || echo \"aarch64\")\r\n\r\nif [\"${ARCH}\" == \"aarch64\"]; then\r\n MATCH=rathole-aarch64-unknown-linux-musl.zip\r\nelse\r\n MATCH=rathole-x86_64-unknown-linux-gnu.zip\r\nfi\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\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) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho \"Download url: ${DOWNLOAD_URL}\"\r\ncurl -ssL -o rathole.zip ${DOWNLOAD_URL}\r\nunzip rathole.zip\r\nrm rathole.zip\r\ntouch server.toml\r\n\r\nprintf \"[server]\\nbind_addr=\\\"0.0.0.0:${SERVER_PORT}\\\"\\n\\n[server.services.test]\\ntoken=\\\"${TOKEN}\\\"\\nbind_addr=\\\"0.0.0.0:${SERVER_PORT}\\\"\" \u003e server.toml\r\nchmod +x rathole\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Secret", + "description": "Your random token", + "env_variable": "TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:5|max:60", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/reposilite/egg-pterodactyl-reposilite.json b/reposilite/egg-pterodactyl-reposilite.json new file mode 100644 index 00000000..df2082f3 --- /dev/null +++ b/reposilite/egg-pterodactyl-reposilite.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:54+00:00", + "name": "Reposilite", + "author": "mk@kcra.me", + "description": "Lightweight and easy-to-use repository management software dedicated for Maven based artifacts in the JVM ecosystem.", + "features": null, + "docker_images": { + "ghcr.io/pterodactyl/yolks:java_11": "ghcr.io/pterodactyl/yolks:java_11", + "ghcr.io/pterodactyl/yolks:java_16": "ghcr.io/pterodactyl/yolks:java_16", + "ghcr.io/pterodactyl/yolks:java_17": "ghcr.io/pterodactyl/yolks:java_17", + "ghcr.io/pterodactyl/yolks:java_21": "ghcr.io/pterodactyl/yolks:java_21", + "ghcr.io/pterodactyl/yolks:java_8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xmx{{SERVER_MEMORY}}M -Dreposilite.port={{SERVER_PORT}} -jar reposilite.jar --port {{SERVER_PORT}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Done (\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/sh\r\n# Switch to mounted directory\r\ncd /mnt/server\r\n# Find latest Reposilite version, if needed\r\nif [ \"$REPOSILITE_VERSION\" == \"latest\" ]; then\r\n REPOSILITE_VERSION=$(grep -oPm1 \"(?\u003c=\u003clatest\u003e)[^\u003c]+\" \u003c\u003c\u003c \"$(curl -s https://maven.reposilite.com/releases/com/reposilite/reposilite/maven-metadata.xml)\")\r\nfi\r\n# Check if -all suffixed jar is available\r\nstatus_code=$(curl --write-out '%{http_code}' -X HEAD -s -o /dev/null https://maven.reposilite.com/releases/com/reposilite/reposilite/${REPOSILITE_VERSION}/reposilite-${REPOSILITE_VERSION}-all.jar)\r\n# Download new Reposilite\r\nif [ \"$status_code\" == 200 ]; then\r\n curl -o reposilite.jar https://maven.reposilite.com/releases/com/reposilite/reposilite/${REPOSILITE_VERSION}/reposilite-${REPOSILITE_VERSION}-all.jar\r\nelse\r\n curl -o reposilite.jar https://maven.reposilite.com/releases/com/reposilite/reposilite/${REPOSILITE_VERSION}/reposilite-${REPOSILITE_VERSION}.jar\r\nfi" + } + }, + "variables": [ + { + "name": "Reposilite version", + "description": "The version of Reposilite.", + "env_variable": "REPOSILITE_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/uptime-kuma/egg-pterodactyl-uptime-kuma.json b/uptime-kuma/egg-pterodactyl-uptime-kuma.json new file mode 100644 index 00000000..c5356958 --- /dev/null +++ b/uptime-kuma/egg-pterodactyl-uptime-kuma.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:55+00:00", + "name": "Uptime Kuma", + "author": "eggs@goover.dev", + "description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/apps:uptimekuma": "ghcr.io/parkervcp/apps:uptimekuma" + }, + "file_denylist": [], + "startup": "if [[ -d .git ]] \u0026\u0026 [[ {{AUTO_UPDATE}} == \"1\" ]]; then npm run setup; fi; /usr/local/bin/node /home/container/server/server.js --port={{SERVER_PORT}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"[SERVER] INFO: Listening on \"\r\n}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "container": "node:18-alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\napk add --no-cache git-lfs --repository=https://dl-cdn.alpinelinux.org/alpine/latest-stable/community\r\n\r\n## npm update to latest\r\necho -e \"Updating npm to latest....\\n\"\r\nif [ -d \"/mnt/server/node_modules\" ]; then\r\n rm -fR /mnt/server/node_modules\r\n npm cache verify\r\nfi\r\nnpm install -g npm@latest\r\n\r\n## Uptime Kuma install \u0026 update\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\ngit config --global --add safe.directory /mnt/server\r\n\r\nif [ -d .git ]; then\r\n echo -e \"Updating Uptime Kuma....\\n \"\r\n npm run setup\r\nelse\r\n echo -e \"Download and installing Uptime Kuma...\\n\" \r\n git clone https://github.com/louislam/uptime-kuma.git .\r\n npm run setup\r\nfi\r\n\r\n## only create dir, when .git is present to prevent errors\r\nif [ -d .git ]; then\r\n mkdir -p /mnt/server/data\r\nfi\r\n\r\nif [ ! -f \"/mnt/server/data/kuma.db\" ]; then\r\n cp /mnt/server/db/kuma.db /mnt/server/data/kuma.db\r\nfi\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0" + } + }, + "variables": [ + { + "name": "Git Repo Address", + "description": "GitHub Repo to clone\r\n\r\nI.E. https://github.com/parkervcp/repo_name", + "env_variable": "GIT_ADDRESS", + "default_value": "https://github.com/louislam/uptime-kuma", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "JS file", + "description": "The file that starts the app", + "env_variable": "JS_FILE", + "default_value": "server/server.js", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/yarr/egg-pterodactyl-yarr.json b/yarr/egg-pterodactyl-yarr.json new file mode 100644 index 00000000..1e79b70f --- /dev/null +++ b/yarr/egg-pterodactyl-yarr.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-02T14:40:56+00:00", + "name": "Yarr", + "author": "sotoluis90@gmail.com", + "description": "Yarr is a selfhosted feed aggregator", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./yarr -addr 0.0.0.0:{{SERVER_PORT}} -auth=\"{{USERNAME}}:{{PASSWORD}}\" -db=./feed.sql", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"starting server\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "golang:1.19.13-bookworm", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\ncd /mnt/server\r\n\r\nmkdir yarr_source\r\ngit clone https://github.com/nkanaev/yarr yarr_source\r\n\r\ncd yarr_source\r\n\r\nmake build_default # -\u003e _output/yarr\r\n\r\ncp _output/yarr ../yarr\r\ncd ../\r\n\r\nrm -rf yarr_source\r\n\r\nchmod +x yarr\r\n\r\necho \"Install complete\"" + } + }, + "variables": [ + { + "name": "Username", + "description": "The username used to log in to yarr", + "env_variable": "USERNAME", + "default_value": "username", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|alpha_dash", + "field_type": "text" + }, + { + "name": "Password", + "description": "The password needed to log in to yarr", + "env_variable": "PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|alpha_dash", + "field_type": "text" + } + ] +} \ No newline at end of file