Compare commits

...

3 Commits

Author SHA1 Message Date
fe8c569a91 uploaded genric 2026-04-03 00:01:54 -05:00
5a10c7a026 uploaded app 2026-04-03 00:00:40 -05:00
aaa2286866 installed mc/hytale eggs 2026-04-02 23:58:42 -05:00
257 changed files with 17461 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
# 5e Tools
> A suite of tools for 5th Edition Dungeons & Dragons players and Dungeon Masters.
This is a self-hosted mirror of https://5e.tools. It will clone a github repository mirror on install and update on container reboot.

View File

@@ -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/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,64 @@
# Discord Bots
## Some of these bots support other services but are primarily Discord bots
### [Aoede](aoede)
[codetheweb/aoede](https://github.com/codetheweb/aoede)
🎧 a self-hosted Spotify → Discord music bot
### [Bastion](bastion)
[TheBastionBot/Bastion](https://github.com/TheBastionBot/Bastion)
Give awesome perks to your Discord server!
### [Corpbot](corpbot)
[corpnewt/CorpBot.py](https://github.com/corpnewt/CorpBot.py)
A very clumsy python bot for discord
### [FragBot](fragbot)
[fragforce/fragbot](https://github.com/fragforce/fragbot)
The bot that runs as the fragforce `@Fragbot` offering looking-for-group services for now
### [Game Server Watcher](game-server-watcher)
[a-sync/game-server-watcher](https://github.com/a-sync/game-server-watcher)
A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎
### [JMusicBot](jmusicbot)
[jagrosh/MusicBot](https://github.com/jagrosh/MusicBot)
A Discord music bot that's easy to set up and run yourself!
### [Muse](muse)
[codetheweb/muse](https://github.com/codetheweb/muse)
🎧 a self-hosted midwestern Discord music bot that doesn't suck
### [parkertron](parkertron)
[parkervcp/parkertron](https://github.com/parkervcp/parkertron)
The bot that runs as the pterodactyl `@Support Bot`
### [PixelBot](pixelbot)
[possatti/pixelbot](https://github.com/possatti/pixelbot)
No longer actively developed.
Was used to test python services.
### [RedBot](redbot)
[Cog-Creators/Red-DiscordBot](https://github.com/Cog-Creators/Red-DiscordBot)
A multifunction Discord bot
### [Ree6](ree6)
[Ree6-Applications](https://github.com/Ree6-Applications/Ree6)
All-in-one, open source and 100% free Discord Bot!
### [SinusBot](sinusbot)
[SinusBot](https://www.sinusbot.com/)
Please Check their site for an in depth on the bot.

View File

@@ -0,0 +1,28 @@
# Aoede
### Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/cleme29">
<img src="https://avatars.githubusercontent.com/u/8092733" width="50px;" alt=""/><br /><sub><b>cleme29</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=cleme29" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=cleme29" title="Maintains">🔨</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
Special thanks to Red-Thirten for providing most of the installation script and to TubaApollo & QuintenQVD0 for the Muse egg that helped build most of this one !
## Their [Github](https://github.com/codetheweb/aoede)
Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself.
## Server Ports
There are no ports required for the Aoede bot

View File

@@ -0,0 +1,92 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:07+00:00",
"name": "Aoede",
"author": "contact@bldy.ovh",
"description": "Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself.",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:ubuntu": "ghcr.io/ptero-eggs/yolks:ubuntu"
},
"file_denylist": [],
"startup": "./aoede",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Invite me with\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "rust:1.74-slim",
"entrypoint": "bash",
"script": "## Credits: Red-Thirten (https://github.com/lilkingjr1) for providing most of the installation script\r\n## Credits to TubaApollo \u0026 QuintenQVD0 for the Muse egg that helped build most of this one\r\napt-get update\r\napt-get install git curl jq cmake -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb/aoede\"\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 Aoede from GitHub \u0026 Extract\r\ncd /mnt/server\r\necho -e \"Downloading Aoede from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o aoede.tar.gz\r\necho -e \"Extracting Aoede from tarball...\"\r\ntar -xvzf aoede.tar.gz --strip-components=1\r\nrm aoede.tar.gz\r\n\r\n# Verify and clean up Aoede installation\r\nif [ ! -f Cargo.toml ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\nrm -rf .dockerignore Dockerfile .gitignore .github/\r\ncargo build --release\r\nmv target/release/aoede .\r\ncargo clean\r\n\r\n\r\necho -e \"\\nAoede Successfully Installed!\""
}
},
"variables": [
{
"name": "Token",
"description": "Discord Bot Token",
"env_variable": "DISCORD_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Username",
"description": "Spotify Username",
"env_variable": "SPOTIFY_USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Password",
"description": "Spotify Password",
"env_variable": "SPOTIFY_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Discord User ID",
"description": "Discord user ID of the user you want Aoede to follow",
"env_variable": "DISCORD_USER_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Autoplay",
"description": "Autoplay similar songs when your music ends \r\nValue : true/false",
"env_variable": "SPOTIFY_BOT_AUTOPLAY",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Version",
"description": "Specify a version, for example: \"v0.7.0\"\r\nFor the latest version, type \"latest\"",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,26 @@
# Bastion
## From their [Github](https://github.com/TheBastionBot/Bastion)
Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities.
## Running the bot
You need to enable both `Privileged Gateway Intents` for the bot to run.
Invite link: `https://discord.com/oauth2/authorize?client_id=INSERT_APP_ID_HERE&scope=bot&permissions=8`
## Server Ports
| Port | default |
|-----------------------|---------|
| Bastion API Port | 8377 |
## Mongodb
Mongodb is automaticly running in the background. Leave Mongo URL to the default to use it. If you want to use a external mongodb server a connection string should look like: `mongodb+srv://<username>:<password>@<ip>/?retryWrites=true&w=majority`
## Startup cmd
By default this should be `npm start` but if you want to register your slash commands set it to `npm run commands` it will activate the slash commands on discord's side. Then the server will crash, change it back to `npm run` to start the bot back up and have slash commands enabled.

View File

@@ -0,0 +1,122 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:09+00:00",
"name": "Bastion",
"author": "parker@parkervcp.com",
"description": "Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities",
"features": null,
"docker_images": {
"Bastion": "ghcr.io/ptero-eggs/yolks:bot_bastion"
},
"file_denylist": [],
"startup": "{{STARTUP_CMD}}",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Ready\"\r\n}",
"stop": "^^C"
},
"scripts": {
"installation": {
"container": "node:20-bookworm",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python3 git tar\r\n\r\n\r\nmkdir -p /mnt/server/\r\ncd /mnt/server/\r\n\r\nif [ -d \"/mnt/server/mongodb\" ]\r\nthen\r\n cd /mnt/server/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb/\r\n mv mongodb_backup.tar.gz /tmp\r\nfi\r\n\r\ncd /mnt/server\r\nrm -rf * .git/ .github/ .env.example .eslintrc.yml .gitattributes .gitignore .npm/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https://github.com/TheBastionBot/Bastion.git ./\r\n\r\necho \"updating npm\"\r\nnpm install -g npm@latest\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm -rf bastion.cmd .env.example bastion.sh scrips/\r\n\r\n\r\nmkdir -p mongodb/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd /mnt/server\r\n echo \"reinstall\"\r\n mv /tmp/mongodb_backup.tar.gz /mnt/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "Bot Token",
"description": "The Bot Token you get from https://discordapp.com/developers/applications/",
"env_variable": "BOT_TOKEN",
"default_value": "GETABOTTOKEN",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:80",
"field_type": "text"
},
{
"name": "Bot Client ID",
"description": "The Bot ID you get from https://discordapp.com/developers/applications/",
"env_variable": "BOT_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32",
"field_type": "text"
},
{
"name": "Mongo URL",
"description": "use `mongodb://127.0.0.1:27017/bastion` for using the build in mongodb server",
"env_variable": "MONGO_URI",
"default_value": "mongodb://127.0.0.1:27017/bastion",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:128",
"field_type": "text"
},
{
"name": "Music Activity",
"description": "When enabled, Bastion updates the activity to the currently playing track",
"env_variable": "BASTION_MUSIC_ACTIVITY",
"default_value": "true",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Relay Direct Messages",
"description": "When enabled, Bastion will relay any direct messages it receives to the owner of the bot application / team.",
"env_variable": "BASTION_RELAY_DMS",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Safe Mode",
"description": "When enabled, this disables usage of unsafe commands like `exec` and `eval`.",
"env_variable": "UNSAFE_MODE",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Bastion API Port",
"description": "Port used for Bastion API Server",
"env_variable": "BASTION_API_PORT",
"default_value": "8377",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:10",
"field_type": "text"
},
{
"name": "Bastion API Auth",
"description": "Auth for accessing the Bastion API Server.",
"env_variable": "BASTION_API_AUTH",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Startup cmd",
"description": "set to `npm start` if you just want to start the bot.\r\nset to `npm run commands` to activate the slash commands",
"env_variable": "STARTUP_CMD",
"default_value": "npm start",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:npm start,npm run commands",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,11 @@
# CorpBot.py
## From their [Github](https://github.com/corpnewt/CorpBot.py)
A very clumsy python bot for discord
## Server Ports
No ports are required to run CorpBot. You can assign a random port to the bot.
### Mods/Plugins may require ports to be added to the server

View File

@@ -0,0 +1,52 @@
{
"_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": "CorpBot",
"author": "parker@parkervcp.com",
"description": "A very clumsy python bot for discord \r\n\r\nhttps://github.com/corpnewt/CorpBot.py",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:python_3.8": "ghcr.io/ptero-eggs/yolks:python_3.8"
},
"file_denylist": [],
"startup": "/usr/local/bin/python Main.py",
"config": {
"files": "{\r\n \"settings_dict.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"token\": \"{{server.build.env.TOKEN}}\",\r\n \"prefix\": \"{{server.build.env.PREFIX}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Logged in as\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "python:3.8-slim-bookworm",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# CoprBot Install Script\r\n#\r\n## create dir is it doesn't exist\r\nif [ ! -d /mnt/server/ ]; then\r\n mkdir /mnt/server/\r\nfi\r\n\r\n## move to directory\r\ncd /mnt/server/\r\n\r\n## install deps\r\napt update\r\napt install -y git gcc curl\r\n\r\n## git clone \r\ngit clone https://github.com/corpnewt/CorpBot.py.git .\r\n\r\n## Modify Install.py to work properly in egg format\r\nmv Install.py Install.py.orig\r\nsed -n '/press enter to exit/q;p' Install.py.orig \u003e Install.py\r\nsed -i 's/\"-U\"/\"-U\", \"--target\", \"\\/mnt\\/server\\/\"/g' Install.py\r\n\r\n## run Install.py script\r\npython Install.py\r\n\r\n## get config during install\r\nif [ ! -f /mnt/server/settings_dict.json ]; then\r\n curl https://raw.githubusercontent.com/ptero-eggs/application-eggs/main/bots/discord/corpbot/settings_dict.json -o settings_dict.json\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "Discord Bot Token",
"description": "Get your own token here - https://discordapp.com/developers/applications/",
"env_variable": "TOKEN",
"default_value": "GET_YOUR_OWN",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Command Prefix",
"description": "The prefix for commands from the bot.",
"env_variable": "PREFIX",
"default_value": ".",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,4 @@
{
"token": "your_token_here",
"prefix": "your_custom_prefix_here"
}

View File

@@ -0,0 +1,8 @@
# Dynamica
## Their [Github](https://github.com/dynamicabot/dynamica-v2)
An easy-to-use dynamic voice channel bot.
## Port
You will manual have to change the web port in the src/main.ts on line 24.

View File

@@ -0,0 +1,102 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:12+00:00",
"name": "Dynamica",
"author": "sebastian.pietschner@gmail.com",
"description": "An easy-to-use dynamic voice channel bot.",
"features": null,
"docker_images": {
"Nodejs 18": "ghcr.io/ptero-eggs/yolks:nodejs_18"
},
"file_denylist": [],
"startup": "npx prisma migrate deploy \u0026\u0026 yarn start",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Bot logged in as \"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "node:18-bookworm-slim",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n\r\napt update\r\napt -y install tar curl jq git\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nGITHUB_PACKAGE=\"DynamicaBot/Dynamica-V2\"\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\ncurl -sSL -o dynamica.tar.gz ${DOWNLOAD_URL}\r\ntar xvf dynamica.tar.gz --strip-components=1\r\nrm dynamica.tar.gz\r\n\r\n#curl -sSL -o tsconfig.json https://pteropaste.com/xqhjja443pbm\r\n\r\nyarn add tsup --dev\r\nyarn install --frozen-lockfile\r\n\r\nyarn generate\r\nyarn build\r\n\r\nrm -rf .github/ .vscode/ Dockerfile partial.Dockerfile entrypoint.sh dynamica-egg.json\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "Database Path",
"description": "The path in which to create the sqlite database.",
"env_variable": "DATABASE_URL",
"default_value": "file:/home/container/dynamica/db.sqlite",
"user_viewable": true,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Token",
"description": "The token for the discord bot.",
"env_variable": "TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Guild ID",
"description": "Add only if using the bot in a single guild.",
"env_variable": "GUILD_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "Sentry DSN",
"description": "The DSN for Sentry.",
"env_variable": "SENTRY_DSN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "MQTT URL",
"description": "The URL for the MQTT broker.",
"env_variable": "MQTT_URL",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "MQTT Username",
"description": "The username for the MQTT broker.",
"env_variable": "MQTT_USER",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
},
{
"name": "MQTT Password",
"description": "The password for the MQTT broker.",
"env_variable": "MQTT_PASS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,11 @@
# fragbot
## Their [Github](https://github.com/fragforce/fragbot)
The golang based discord bot for fragforce.
Runs the fragforce `@fragbot`
## Server Ports
There are no ports required for fragbot

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:14+00:00",
"name": "fragbot",
"author": "parker@parkervcp.com",
"description": "The fragforce discord bot.\r\n\r\nlocated at https://github.com/fragforce/fragbot",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:alpine": "ghcr.io/ptero-eggs/yolks:alpine"
},
"file_denylist": [],
"startup": "./fragbot",
"config": {
"files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"token\": \"{{server.build.env.DISCORD_TOKEN}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Bot is now running\"\r\n}",
"stop": "shutdown"
},
"scripts": {
"installation": {
"container": "golang:1.12-alpine",
"entrypoint": "ash",
"script": "#!/bin/ash\r\n# fragbot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nexport GOPATH=$HOME/go\r\nexport PATH=$GOROOT/bin:$GOPATH/bin:$PATH\r\n\r\ncd\r\n\r\napk add --no-cache --update git\r\n\r\necho \"pulling the fragbot repo\"\r\n\r\ngit clone https://github.com/fragforce/fragbot.git\r\n\r\ncd fragbot/\r\n\r\ngo mod download\r\n\r\necho \"building fragbot\"\r\n\r\ngo build \r\n\r\necho \"build complete copying parkertron and example configs over\"\r\n\r\ncp fragbot /mnt/server/\r\n\r\nif [ -f /mnt/server/config.json ]; then\r\n echo \"config file exists already\"\r\nelse\r\n cp -r /root/fragbot/config.example.json /mnt/server/config.json\r\nfi\r\n\r\necho \"Install complete. If you watched this. Congrats.\""
}
},
"variables": [
{
"name": "Discord Bot Token",
"description": "The token that is to be used for the bot.",
"env_variable": "DISCORD_TOKEN",
"default_value": "ThisNeedsToBeChanged",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:128",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,22 @@
# Game Server Watcher
## From [Github](https://github.com/a-sync/game-server-watcher#readme)
A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎
## Screenshots
<img src="https://user-images.githubusercontent.com/14183614/162092529-e1645b44-2650-4893-8123-7ba187b1f51c.png" height="280"> <img src="https://user-images.githubusercontent.com/14183614/162092488-f28bd60c-88bf-4b1e-a31e-d7dca51d8c28.png" height="280"> <img src="https://github.com/a-sync/game-server-watcher/assets/14183614/0461ad76-bb13-468c-a7b3-437d6a3cea63" height="280"> <img src="https://github.com/a-sync/game-server-watcher/assets/14183614/ee0ef0de-83bc-42ae-8f64-62f481f6ba8f" height="280">
## Running the bot
Refer to the wiki on how to acquire tokens for:
* [steam](https://github.com/a-sync/game-server-watcher/wiki/Steam-Web-API-key)
* [discord](https://github.com/a-sync/game-server-watcher/wiki/Discord-bot-token)
* [telegram](https://github.com/a-sync/game-server-watcher/wiki/Telegram-bot-token)
* [slack](https://github.com/a-sync/game-server-watcher/wiki/Slack-bot-token)
## Server Ports
GSW Control Panel requires one port for http traffic.
(It can be any port.)
| Port | default |
|---------|---------|
| Web | 8081 |

View File

@@ -0,0 +1,122 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:15+00:00",
"name": "Game Server Watcher",
"author": "a-sync@devs.space",
"description": "A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎",
"features": null,
"docker_images": {
"Node.js 20": "ghcr.io/ptero-eggs/yolks:nodejs_20"
},
"file_denylist": [],
"startup": "env PORT={{SERVER_PORT}} /usr/local/bin/node /home/container/dist/server.js",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"starting loop...\"\r\n}",
"stop": "^^C"
},
"scripts": {
"installation": {
"container": "node:20-bookworm-slim",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n\r\napt-get update \u0026\u0026 apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\n\r\n\r\ncd /mnt/server\r\n\r\ngit config --global --add safe.directory /mnt/server\r\ngit clone https://github.com/a-sync/game-server-watcher.git . || git pull\r\n\r\n\r\nnpm install --no-save \u0026\u0026 npm update gamedig \u0026\u0026 npm run build\r\nnpm prune --omit=dev\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "SECRET",
"description": "Admin secret",
"env_variable": "SECRET",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:8|max:255",
"field_type": "text"
},
{
"name": "DATA_PATH",
"description": "Writable folder for data storage",
"env_variable": "DATA_PATH",
"default_value": "./data/",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|min:1|max:255",
"field_type": "text"
},
{
"name": "REFRESH_TIME_MINUTES",
"description": "Game server info refresh interval in minutes",
"env_variable": "REFRESH_TIME_MINUTES",
"default_value": "2",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|min:1",
"field_type": "text"
},
{
"name": "DISCORD_BOT_TOKEN",
"description": "Discord bot token",
"env_variable": "DISCORD_BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "TELEGRAM_BOT_TOKEN",
"description": "Telegram bot token",
"env_variable": "TELEGRAM_BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "STEAM_WEB_API_KEY",
"description": "Steam web API key",
"env_variable": "STEAM_WEB_API_KEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Debug Mode",
"description": "Enable or disable debug mode.",
"env_variable": "DBG",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|in:0,1",
"field_type": "text"
},
{
"name": "SLACK_BOT_TOKEN",
"description": "Slack bot token",
"env_variable": "SLACK_BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "SLACK_APP_TOKEN",
"description": "Slack app token",
"env_variable": "SLACK_APP_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,94 @@
# JMusicBot
___
## Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/jagrosh">
<img src="https://avatars.githubusercontent.com/u/12754382" width="50px;" alt=""/><br /><sub><b>John Grosh</b></sub>
</a>
<br />
<a href="https://github.com/jagrosh/MusicBot/commits?author=jagrosh" title="Codes">💻</a>
<a href="https://github.com/jagrosh/MusicBot/commits?author=jagrosh" title="Original Bot Creator">🤖</a>
</td>
<td align="center">
<a href="https://github.com/parkervcp">
<img src="https://avatars.githubusercontent.com/u/1207679" width="50px;" alt=""/><br /><sub><b>parkervcp</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Original Egg Creator">🥚</a>
</td>
<td align="center">
<a href="https://github.com/Software-Noob">
<img src="https://avatars.githubusercontent.com/u/10975908" width="50px;" alt=""/><br /><sub><b>Software-Noob</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=Software-Noob" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=Software-Noob" title="Contributor">💡</a>
</td>
<td align="center">
<a href="https://github.com/Proxymiity">
<img src="https://avatars.githubusercontent.com/u/25194496" width="50px;" alt=""/><br /><sub><b>Proxymiity</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=Proxymiity" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=Proxymiity" title="Contributor">💡</a>
</td>
<td align="center">
<a href="https://github.com/lilkingjr1">
<img src="https://avatars.githubusercontent.com/u/4533989" width="50px;" alt=""/><br /><sub><b>Red-Thirten</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=iamkubi" title="Contributor">💡</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
___
## Bot Description & Features
From the developer's [Github](https://github.com/jagrosh/MusicBot):
> A Discord music bot that's easy to set up and run yourself!
- Easy to run
- Fast loading of songs
- No external keys needed (besides a Discord Bot token)
- Smooth playback
- Server-specific setup for the "DJ" role that can moderate the music
- Clean and beautiful menus
- Supports many sites, including YouTube, Soundcloud, and more
- Supports many online radio/streams
- Supports local files
- Playlist support (both web/youtube, and local)
___
## Configuration
- If you can, edit the Startup Variables before starting the bot, because otherwise it will fail to start.
- Most settings found in `config.txt` can be edited via the Startup Variables. Advanced settings not listed can still be edited manually via the File Manager. Available Startup Variables will take precedent over manual edits.
___
## Server Ports
There are no ports required for JMusicBot.
___
## Updating
Re-Installing the server via the panel will do the following:
1. Update the bot to the latest version.
2. Update the `config.txt` file to the latest version, and place the old one at `config.txt-old`.
3. Any local songs will remain and not be touched.

View File

@@ -0,0 +1,183 @@
/////////////////////////////////////////////////////////
// Config for the JMusicBot //
/////////////////////////////////////////////////////////
// Any line starting with // is ignored //
// You MUST set the token and owner //
// All other items have defaults if you don't set them //
// Open in Notepad++ for best results //
/////////////////////////////////////////////////////////
// This sets the token for the bot to log in with
// This MUST be a bot token (user tokens will not work)
// If you don't know how to get a bot token, please see the guide here:
// https://github.com/jagrosh/MusicBot/wiki/Getting-a-Bot-Token
token = BOT_TOKEN_HERE
// This sets the owner of the bot
// This needs to be the owner's ID (a 17-18 digit number)
// https://github.com/jagrosh/MusicBot/wiki/Finding-Your-User-ID
owner = 0
// This sets the prefix for the bot
// The prefix is used to control the commands
// If you use !!, the play command will be !!play
// If you do not set this, the prefix will be a mention of the bot (@Botname play)
prefix = "@mention"
// If you set this, it modifies the default game of the bot
// Set this to NONE to have no game
// Set this to DEFAULT to use the default game
// You can make the game "Playing X", "Listening to X", or "Watching X"
// where X is the title. If you don't include an action, it will use the
// default of "Playing"
game = "DEFAULT"
// If you set this, it will modify the default status of bot
// Valid values: ONLINE IDLE DND INVISIBLE
status = ONLINE
// If you set this to true, the bot will list the title of the song it is currently playing in its
// "Playing" status. Note that this will ONLY work if the bot is playing music on ONE guild;
// if the bot is playing on multiple guilds, this will not work.
songinstatus = false
// If you set this, the bot will also use this prefix in addition to
// the one provided above
altprefix = "NONE"
// If you set these, it will change the various emojis
success = "🎶"
warning = "💡"
error = "🚫"
loading = "⌚"
searching = "🔎"
// If you set this, you change the word used to view the help.
// For example, if you set the prefix to !! and the help to cmds, you would type
// !!cmds to see the help text
help = help
// If you set this, the "nowplaying" command will show youtube thumbnails
// Note: If you set this to true, the nowplaying boxes will NOT refresh
// This is because refreshing the boxes causes the image to be reloaded
// every time it refreshes.
npimages = false
// If you set this, the bot will not leave a voice channel after it finishes a queue.
// Keep in mind that being connected to a voice channel uses additional bandwith,
// so this option is not recommended if bandwidth is a concern.
stayinchannel = false
// This sets the maximum amount of seconds any track loaded can be. If not set or set
// to any number less than or equal to zero, there is no maximum time length. This time
// restriction applies to songs loaded from any source.
maxtime = 0
// This sets the amount of seconds the bot will stay alone on a voice channel until it
// automatically leaves the voice channel and clears the queue. If not set or set
// to any number less than or equal to zero, the bot won't leave when alone.
alonetimeuntilstop = 0
// This sets an alternative folder to be used as the Playlists folder
// This can be a relative or absolute path
playlistsfolder = "Playlists"
// By default, the bot will DM the owner if the bot is running and a new version of the bot
// becomes available. Set this to false to disable this feature.
updatealerts = true
// Changing this changes the lyrics provider
// Currently available providers: "A-Z Lyrics", "Genius", "MusicMatch", "LyricsFreak"
// At the time of writing, I would recommend sticking with A-Z Lyrics or MusicMatch,
// as Genius tends to have a lot of non-song results and you might get something
// completely unrelated to what you want.
// If you are interested in contributing a provider, please see
// https://github.com/jagrosh/JLyrics
lyrics.default = "A-Z Lyrics"
// These settings allow you to configure custom aliases for all commands.
// Multiple aliases may be given, separated by commas.
//
// Example 1: Giving command "play" the alias "p":
// play = [ p ]
//
// Example 2: Giving command "search" the aliases "yts" and "find":
// search = [ yts, find ]
aliases {
// General commands
settings = [ status ]
// Music commands
lyrics = []
nowplaying = [ np, current ]
play = []
playlists = [ pls ]
queue = [ list ]
remove = [ delete ]
scsearch = []
search = [ ytsearch ]
shuffle = []
skip = [ voteskip ]
// Admin commands
prefix = [ setprefix ]
setdj = []
settc = []
setvc = []
// DJ Commands
forceremove = [ forcedelete, modremove, moddelete ]
forceskip = [ modskip ]
movetrack = [ move ]
pause = []
playnext = []
repeat = []
skipto = [ jumpto ]
stop = []
volume = [ vol ]
}
// If you set this to true, it will enable the eval command for the bot owner. This command
// allows the bot owner to run arbitrary code from the bot's account.
//
// WARNING:
// This command can be extremely dangerous. If you don't know what you're doing, you could
// cause horrific problems on your Discord server or on whatever computer this bot is running
// on. Never run this command unless you are completely positive what you are running.
//
// DO NOT ENABLE THIS IF YOU DON'T KNOW WHAT THIS DOES OR HOW TO USE IT
// IF SOMEONE ASKS YOU TO ENABLE THIS, THERE IS AN 11/10 CHANCE THEY ARE TRYING TO SCAM YOU
eval=false

View File

@@ -0,0 +1,142 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:14+00:00",
"name": "JMusicBot",
"author": "parker@parkervcp.com",
"description": "A Discord music bot that's easy to set up and run yourself!",
"features": null,
"docker_images": {
"ghcr.io/pterodactyl/yolks:java_17": "ghcr.io/pterodactyl/yolks:java_17"
},
"file_denylist": [],
"startup": "java -Dnogui=true -jar JMusicBot.jar",
"config": {
"files": "{\r\n \"config.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"token =\": \"token = \\\"{{server.build.env.BOT_TOKEN}}\\\"\",\r\n \"owner =\": \"owner = {{server.build.env.BOT_OWNER}}\",\r\n \"prefix =\": \"prefix = \\\"{{server.build.env.BOT_PREFIX}}\\\"\",\r\n \"game =\": \"game = \\\"{{server.build.env.BOT_GAME}}\\\"\",\r\n \"status =\": \"status = {{server.build.env.BOT_STATUS}}\",\r\n \"songinstatus =\": \"songinstatus = {{server.build.env.BOT_SONG_STATUS}}\",\r\n \"altprefix =\": \"altprefix = \\\"{{server.build.env.BOT_ALT_PREFIX}}\\\"\",\r\n \"npimages =\": \"npimages = {{server.build.env.BOT_NPIMAGES}}\",\r\n \"stayinchannel =\": \"stayinchannel = {{server.build.env.BOT_STAY_IN_CHANNEL}}\",\r\n \"maxtime =\": \"maxtime = {{server.build.env.BOT_MAXTIME}}\",\r\n \"alonetimeuntilstop =\": \"alonetimeuntilstop = {{server.build.env.BOT_ALONE_TIME}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Finished Loading\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "ghcr.io/ptero-eggs/installers:debian",
"entrypoint": "/bin/bash",
"script": "#!/bin/bash\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nCONFIG_LINK=\"https://raw.githubusercontent.com/ptero-eggs/application-eggs/main/bots/discord/jmusicbot/config.txt\"\r\nPLAYLIST_LINK=\"https://raw.githubusercontent.com/ptero-eggs/application-eggs/main/bots/discord/jmusicbot/example_playlist.txt\"\r\n\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/jagrosh/MusicBot/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/jagrosh/MusicBot/releases\")\r\nMATCH=JMusicBot\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\n## JMusicBot Setup\r\n[ ! -d /mnt/server ] \u0026\u0026 mkdir /mnt/server\r\ncd /mnt/server\r\necho -e \"\\nInstalling/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] \u0026\u0026 mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\""
}
},
"variables": [
{
"name": "[REQUIRED] Discord Bot Token",
"description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https://jmusicbot.com/getting-a-bot-token/",
"env_variable": "BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "[REQUIRED] Bot Owner ID",
"description": "This is the Discord User ID of the bot owner. Learn how to obtain this ID here: https://jmusicbot.com/finding-your-user-id/",
"env_variable": "BOT_OWNER",
"default_value": "Change This To Your Discord User ID",
"user_viewable": true,
"user_editable": true,
"rules": "required|digits_between:17,18",
"field_type": "text"
},
{
"name": "Bot Prefix",
"description": "This sets the prefix for the bot. The prefix is used to control the commands. If you use !, the play command will be !play. If you do not set this, the prefix will be a mention of the bot (@Botname play).",
"env_variable": "BOT_PREFIX",
"default_value": "@mention",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Bot Alternate Prefix",
"description": "If you set this, the bot will also use this prefix in addition to \"Bot Prefix\". Set to NONE to not have an alternate prefix.",
"env_variable": "BOT_ALT_PREFIX",
"default_value": "NONE",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Bot Default Game",
"description": "If you change this, it modifies the default game of the bot. Set this to NONE to have no game. Set this to DEFAULT to use the default game. You can make the game \"Playing X\", \"Listening to X\", or \"Watching X\" where X is the title. If you don't include an action, it will use the default of \"Playing\".",
"env_variable": "BOT_GAME",
"default_value": "DEFAULT",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Bot Default Status",
"description": "[ Accepted Values: ONLINE IDLE DND INVISIBLE ] Will modify the default status of bot.",
"env_variable": "BOT_STATUS",
"default_value": "ONLINE",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:ONLINE,IDLE,DND,INVISIBLE",
"field_type": "text"
},
{
"name": "Bot Show Song in Status",
"description": "If you set this to true, the bot will list the title of the song it is currently playing in its \"Playing\" status. NOTE: This will ONLY work if the bot is playing music on ONE Discord server; if the bot is playing in multiple servers, this will not work!",
"env_variable": "BOT_SONG_STATUS",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Bot Show Images for \"Now Playing\"",
"description": "If set to true, the \"nowplaying\" command will show YouTube thumbnails. NOTE: If you set this to true, the nowplaying boxes will NOT refresh. This is because refreshing the boxes causes the image to be reloaded every time it refreshes.",
"env_variable": "BOT_NPIMAGES",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Bot Stay In Channel",
"description": "If set to true, the bot will not leave a voice channel after it finishes a queue. Keep in mind that being connected to a voice channel uses additional bandwidth, so this option is not recommended if bandwidth is a concern.",
"env_variable": "BOT_STAY_IN_CHANNEL",
"default_value": "false",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:true,false",
"field_type": "text"
},
{
"name": "Bot Alone Time Until Disconnect",
"description": "This sets the amount of seconds the bot will stay alone on a voice channel until it automatically leaves the voice channel and clears the queue. If not set or set to any number less than or equal to zero, the bot won't leave when alone.",
"env_variable": "BOT_ALONE_TIME",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
},
{
"name": "Bot Max Song Length",
"description": "This sets the maximum amount of seconds any track loaded can be. If not set or set to any number less than or equal to zero, there is no maximum time length. This time restriction applies to songs loaded from any source.",
"env_variable": "BOT_MAXTIME",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,21 @@
# This is an example playlist
# More information about playlists can be found here: https://jmusicbot.com/playlists/
# Command to play this playlist: @Botname play playlist example_playlist
# A new playlist can be made by making a new file in this directory called: my_playlist_name.txt
# The following line currently makes the playlist shuffle
# Remove this line entirely if you don't want shuffling
#shuffle
# Search Examples:
ytsearch:gorillaz dare audio
scsearch:lights metrognome
# Direct Link Example:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
# YouTube Playlist ID Example:
PLUib4KwT0DMJaPgg_nr1ia8FY5JcXksvb
# Local File Example:
# /home/container/music/mysong.mp3

View File

@@ -0,0 +1,43 @@
# Muse
### Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/TubaApollo">
<img src="https://avatars.githubusercontent.com/u/86665265" width="50px;" alt=""/><br /><sub><b>TubaApollo</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=TubaApollo" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=TubaApollo" title="Maintains">🔨</a>
</td>
<td align="center">
<a href="https://github.com/lilkingjr1">
<img src="https://avatars.githubusercontent.com/u/4533989" width="50px;" alt=""/><br /><sub><b>Red-Thirten</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=lilkingjr1" title="Contributor">💡</a>
</td>
<td align="center">
<a href="https://github.com/QuintenQVD0">
<img src="https://avatars.githubusercontent.com/u/67589015" width="50px;" alt=""/><br /><sub><b>QuintenQVD0</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=QuintenQVD0" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=QuintenQVD0" title="Contributor">💡</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
## Their [Github](https://github.com/codetheweb/muse)
Muse is a highly-opinionated midwestern self-hosted Discord music bot that doesn't suck.
## Server Ports
There are no ports required for the Muse bot

View File

@@ -0,0 +1,92 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-03-23T10:31:57+00:00",
"name": "Muse",
"author": "hello@apollo.moe",
"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"
},
"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}",
"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"
}
},
"variables": [
{
"name": "TOKEN",
"description": "Discord Bot Token",
"env_variable": "discord_token",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Data directory",
"description": "Default: .\/data",
"env_variable": "data_dir",
"default_value": ".\/data",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "YouTube API Key",
"description": "You can get it here: https:\/\/console.developers.google.com\/",
"env_variable": "api_key",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Spotify Client ID",
"description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications",
"env_variable": "client_id",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Spotify Client Secret",
"description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications",
"env_variable": "client_secret",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Version",
"description": "Specify a version, for example: \"v2.4.1\"\r\nFor the latest version, type \"latest\"",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,11 @@
# parkertron
## Their [Github](https://github.com/parkervcp/parkertron)
Purely a chatbot. Not even a smart one.
Runs the Pterodactyl `@support bot`
## Server Ports
There are no ports required for parkertron

View File

@@ -0,0 +1,31 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:04+00:00",
"name": "parkertron",
"author": "parker@parkervcp.com",
"description": "The stupid chatbot parkertron by Parkervcp.\r\n\r\nhttps://github.com/parkervcp/parkertron",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:bot_parkertron": "ghcr.io/ptero-eggs/yolks:bot_parkertron"
},
"file_denylist": [],
"startup": "./parkertron",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Bot is now running\"\r\n}",
"stop": "shutdown"
},
"scripts": {
"installation": {
"container": "golang:1.19-bookworm",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# parkertron Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nexport GOPATH=$HOME/go\r\nexport PATH=$GOROOT/bin:$GOPATH/bin:$PATH\r\n\r\ncd\r\n\r\napt update\r\n\r\napt install -y tesseract-ocr tesseract-ocr-eng libtesseract-dev\r\n\r\necho \"pulling the parkertron git repo\"\r\n\r\ngit clone https://github.com/parkervcp/parkertron.git\r\n\r\ncd parkertron/\r\n\r\necho \"building parkertron\"\r\n\r\ngo build \r\n\r\necho \"build complete copying parkertron and example configs over\"\r\n\r\ncp parkertron /mnt/server/\r\n\r\nif [ -d /mnt/server/configs ]; then\r\n echo \"Files exist already\"\r\nelse\r\n cp -r /root/parkertron/configs/ /mnt/server/\r\nfi\r\n\r\necho \"Install complete. If you watched this. Congrats.\""
}
},
"variables": []
}

View File

@@ -0,0 +1,13 @@
# pixelbot
## Their [Github](https://github.com/possatti/pixelbot)
Bot for pixelcanvas.io
## Server Ports
There are no ports required for pixelbot
## Side notes
This was to make sure the parkervcp/images:python 3 image worked.

View File

@@ -0,0 +1,82 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:06+00:00",
"name": "pixel-bot",
"author": "parker@parkervcp.com",
"description": "A Discord bot written in Python using discord.py\r\n\r\nhttps://github.com/Ispira/pixel-bot",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:python_3.7": "ghcr.io/ptero-eggs/yolks:python_3.7"
},
"file_denylist": [],
"startup": "/usr/local/bin/python bot.py",
"config": {
"files": "{\r\n \"config/config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"owner\": \"{{server.build.env.OWNER_UID}}\",\r\n \"token\": \"{{server.build.env.BOT_TOKEN}}\",\r\n \"bot_name\": \"{{server.build.env.BOT_NAME}}\",\r\n \"log_file\": \"latest.log\"\r\n }\r\n },\r\n \"plugins/settings/imgur.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"client_id\": \"{{server.build.env.IMGUR_KEY}}\",\r\n \"client_secret\": \"{{server.build.env.IMGUR_SECRET}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Logged in as\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "python:3.7-alpine",
"entrypoint": "ash",
"script": "#!/bin/ash\r\n# Pixel Bot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napk add --no-cache git gcc g++ libffi-dev make\r\n\r\ncd /mnt/server\r\n\r\necho \"Cloning pixel-bot repo\"\r\ngit clone https://github.com/Ispira/pixel-bot.git .\r\n\r\necho \"Installing python requirements into folder\"\r\npip install -U --target $(pwd) discord imgurpython xkcd pynacl\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "Owner Discord UID",
"description": "The Discord UID of the bot owner.",
"env_variable": "OWNER_UID",
"default_value": "copy from discord",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32",
"field_type": "text"
},
{
"name": "Discord Bot Token",
"description": "Get the app token from https://discordapp.com/developers/applications/me",
"env_variable": "BOT_TOKEN",
"default_value": "get from discord developers",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:128",
"field_type": "text"
},
{
"name": "Bot Name",
"description": "The name that you want set for the bot",
"env_variable": "BOT_NAME",
"default_value": "Ispyra",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Imgur API ID",
"description": "Add your Imgur API client_id if you want. \r\n\r\nhttps://api.imgur.com/oauth2/addclient",
"env_variable": "IMGUR_KEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:64",
"field_type": "text"
},
{
"name": "Imgur Secret",
"description": "Add your Imgur API client_secret if you want. \r\n\r\nhttps://api.imgur.com/oauth2/addclient",
"env_variable": "IMGUR_SECRET",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:20",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,20 @@
# Red-DiscordBot
## From their [Github](https://github.com/Cog-Creators/Red-DiscordBot)
A multifunction Discord bot
## Server Ports
No port are required to run Red.
if you want to use the internal Lavalink Server, you need to allocate port 2333 as primary
## Additional Requirements
When using the Audio Cog the bot will attempt to save files to /tmp resulting in a disk space error. You may also see this same error when attempting to install a cog, due to pip using /tmp to build the requirements. To resolve this error you must increase the size of `tmpfs` using custom container policy.
For additional details see:
<https://pterodactyl.io/wings/1.0/configuration.html#other-values>
### Mods/Plugins may require ports to be added to the server

View File

@@ -0,0 +1,9 @@
{
"pterodactyl": {
"DATA_PATH": "/home/container/.local/share/Red-DiscordBot/data/pterodactyl",
"COG_PATH_APPEND": "cogs",
"CORE_PATH_APPEND": "core",
"STORAGE_TYPE": "JSON",
"STORAGE_DETAILS": {}
}
}

View File

@@ -0,0 +1,62 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"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",
"features": null,
"docker_images": {
"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}}",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Invite URL:\"\r\n}",
"stop": "^C"
},
"scripts": {
"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\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\/",
"env_variable": "TOKEN",
"default_value": "GET_YOUR_OWN",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Command Prefix",
"description": "The prefix for commands from the bot.",
"env_variable": "PREFIX",
"default_value": ".",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Owner",
"description": "Owner of the Bot to use special commands",
"env_variable": "OWNER",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:30",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,73 @@
# Ree6
___
## Authors / Contributors
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center">
<a href="https://github.com/dxssucuk">
<img src="https://avatars.githubusercontent.com/u/53257574" width="50px;" alt=""/><br /><sub><b>Presti</b></sub>
</a>
<br />
<a href="https://github.com/Ree6-Applications/Ree6/commits?author=dxssucuk" title="Codes">💻</a>
<a href="https://github.com/Ree6-Applications/Ree6/commits?author=dxssucuk" title="Original Bot Creator">🤖</a>
</td>
<td align="center">
<a href="https://github.com/parkervcp">
<img src="https://avatars.githubusercontent.com/u/1207679" width="50px;" alt=""/><br /><sub><b>parkervcp</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Codes">💻</a>
<a href="https://github.com/parkervcp/eggs/commits?author=parkervcp" title="Original Egg Creator">🥚</a>
</td>
<td align="center">
<a href="https://github.com/QuintenQVD0">
<img src="https://avatars.githubusercontent.com/u/67589015" width="50px;" alt=""/><br /><sub><b>QuintenQVD0</b></sub>
</a>
<br />
<a href="https://github.com/parkervcp/eggs/commits?author=QuintenQVD0" title="Codes">💻</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
___
## Bot Description & Features
From the developer's [Github](https://github.com/Ree6-Applications/Ree6):
> Ree6 is an all-in-one Discord Bot maintained by Presti, which started as an alternative of Mee6 to provide a lot of features that are hidden behind a paywall or subscription.
- Contains almost every feature Mee6 has.
- Has a open Source Webinterface.
- Provides advanced Audit-Logging.
- Has built in post notifications (Twitter, Instagram, YouTube, Reddit and Twitch).
- Built-in simple Ticket System.
- And more!
___
## Configuration
- You will need to modify the config.yml to even start the bot.
___
## Server Ports
There are no ports required for Ree6.
___
## Updating
Re-Installing the server via the panel will do the following:
1. Update the bot to the latest version.
## API keys
This bot uses a lot of api keys. It will print some errors to the console if you don't have some filled in but the bot should still function as normal with the api keys you entered.

View File

@@ -0,0 +1,128 @@
# ################################
# # #
# # Ree6 Config File #
# # by Presti #
# # #
# ################################
#
# Do not change this!
config:
version: 3.0.0
creation: 1686731674683
# HikariCP Configuration
hikari:
# SQL Configuration
sql:
user: root
db: root
pw: yourpw
host: localhost
port: 3306
# Misc Configuration
misc:
storage: sqlite # Possible entries: sqlite, mariadb, postgresql, h2, h2-server
storageFile: storage/Ree6.db
createEmbeddedServer: false # Should an instance of an embedded Server be created? Only used for H2-Server.
poolSize: 10
# Discord Application and overall Bot Configuration, used for OAuth, Bot Authentication and customization.
bot:
tokens:
release: ReleaseTokenhere # Token used when set to release build.
beta: BetaTokenhere # Token used when set to beta build.
dev: DevTokenhere # Token used when set to dev build.
# Configuration for the Bot itself.
misc:
status: ree6.de | %guilds% Servers. (%shard%) # The Status of the Bot.
feedbackChannelId: 0 # The Channel used for Feedback.
ownerId: <YOUR DISCORD ID> # The ID of the Bot Owner. Change this to yours!
predefineInformation: | # Predefined Information for the AI.
You are Ree6 a Discord bot.
invite: https://invite.ree6.de # The Invite Link of the Bot.
support: https://support.ree6.de # The Support Server Link of the Bot.
github: https://github.ree6.de # The GitHub Link of the Bot.
website: https://ree6.de # The Website Link of the Bot.
webinterface: https://cp.ree6.de # The Webinterface Link of the Bot.
recording: https://cp.ree6.de/external/recording # The Recording Link of the Bot.
twitchAuth: https://cp.ree6.de/external/twitch # The Twitch Authentication Link of the Bot.
advertisement: powered by Tube-hosting # The Advertisement in Embed Footers and the rest.
name: Ree6 # The Name of the Bot.
shards: 1 # The shard amount of the Bot. Check out https://anidiots.guide/understanding/sharding/#sharding for more information.
# Customize the active modules in Ree6.
modules:
moderation: true # Enable the moderation module.
music: true # Enable the music module.
fun: true # Enable the fun commands.
community: true # Enable the community commands.
economy: true # Enable the economy commands.
level: true # Enable the level module.
nsfw: true # Enable the nsfw module.
info: true # Enable the info commands.
hidden: true # Enable the hidden commands.
logging: true # Enable the logging module.
notifier: true # Enable the notifier module.
streamtools: true # Enable the Stream-tools module.
temporalvoice: true # Enable the Temporal-voice module.
tickets: true # Enable the Tickets module.
suggestions: true # Enable the suggestions module.
customcommands: true # Enable the custom Commands module.
customevents: true # Enable the custom Events module.
ai: true # Enable the AI module.
addons: false # Enable the Addons module.
news: true # Enable the news command/module.
games: true # Enable the Games module.
reactionroles: true # Enable the reaction-roles module.
slashcommands: true # Enable the slash-commands support.
messagecommands: true # Enable the message-commands support.
# Heartbeat Configuration, for status reporting
heartbeat:
url: none # The URL to the Heartbeat-Server
interval: 60
dagpi:
apitoken: DAGPI.xyz API-Token # Your Dagpi.xyz API-Token, for tweet image generation!
amari:
apitoken: Amari API-Token # Your Amari API-Token, for Amari Level imports!
openai:
apiToken: OpenAI API-Token # Your OpenAI API-Token, for ChatGPT!
apiUrl: https://api.openai.com/v1/chat/completions # The URL to the OpenAI API.
model: gpt-3.5-turbo-0301 # The Model used for the OpenAI API.
sentry:
dsn: yourSentryDSNHere # Your Sentry DSN, for error reporting!
# Spotify Application Configuration, used to parse Spotify Tracks/Playlists to YouTube search queries.
spotify:
client:
id: yourspotifyclientid
secret: yourspotifyclientsecret
# Twitch Application Configuration, used for the StreamTools and Twitch Notifications.
twitch:
client:
id: yourtwitchclientidhere
secret: yourtwitchclientsecrethere
# Twitter Application Configuration, used for the Twitter Notifications.
twitter:
bearer: yourTwitterBearerToken
# Reddit Application Configuration, used for the Reddit Notification.
reddit:
client:
id: yourredditclientid
secret: yourredditclientsecret
# Instagram Application Configuration, used for the Instagram Notification.
instagram:
username: yourInstagramUsername
password: yourInstagramPassword

View File

@@ -0,0 +1,422 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:06+00:00",
"name": "Ree6",
"author": "presti@presti.me",
"description": "All-in-one, open source and 100% free Discord Bot!",
"features": null,
"docker_images": {
"Java_17": "ghcr.io/pterodactyl/yolks:java_17"
},
"file_denylist": [],
"startup": "java -Dnogui=true -jar Ree6.jar",
"config": {
"files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"hikari.sql.user\": \"{{server.build.env.DATABASE_USER}}\",\r\n \"hikari.sql.db\": \"{{server.build.env.DATABASE_DB}}\",\r\n \"hikari.sql.pw\": \"{{server.build.env.DATABASE_PW}}\",\r\n \"hikari.sql.host\": \"{{server.build.env.DATABASE_HOST}}\",\r\n \"hikari.sql.port\": \"{{server.build.env.DATABASE_PORT}}\",\r\n \"hikari.misc.storage\": \"{{server.build.env.DATABASE_TYP}}\",\r\n \"hikari.misc.storageFile\": \"{{server.build.env.DATABASE_FILE}}\",\r\n \"hikari.misc.poolSize\": \"{{server.build.env.DATABASE_POOL}}\",\r\n \"hikari.misc.createEmbeddedServer\": \"{{server.build.env.DATABASE_EMBEDDED}}\",\r\n \"heartbeat.url\": \"{{server.build.env.HEARTBEAT_URL}}\",\r\n \"heartbeat.interval\": \"{{server.build.env.HEARTBEAT_INTERVAL}}\",\r\n \"dagpi.apitoken\": \"{{server.build.env.DAGPI_TOKEN}}\",\r\n \"amari.apitoken\": \"{{server.build.env.AMARI_TOKEN}}\",\r\n \"sentry.dsn\": \"{{server.build.env.SENTRY_DSN}}\",\r\n \"spotify.client.id\": \"{{server.build.env.SPOTIFY_CLIENT_ID}}\",\r\n \"spotify.client.secret\": \"{{server.build.env.SPOTIFY_CLIENT_SECRET}}\",\r\n \"twitch.client.id\": \"{{server.build.env.TWITCH_CLIENT_ID}}\",\r\n \"twitch.client.secret\": \"{{server.build.env.TWITCH_CLIENT_SECRET}}\",\r\n \"twitter.consumer.key\": \"{{server.build.env.TWITTER_CONSUMER_ID}}\",\r\n \"twitter.consumer.secret\": \"{{server.build.env.TWITTER_CONSUMER_SECRET}}\",\r\n \"twitter.access.key\": \"{{server.build.env.TWITTER_ACCESS_ID}}\",\r\n \"twitter.access.secret\": \"{{server.build.env.TWITTER_ACCESS_SECRET}}\",\r\n \"reddit.client.id\": \"{{server.build.env.REDDIT_CLIENT_ID}}\",\r\n \"reddit.client.secret\": \"{{server.build.env.REDDIT_CLIENT_SECRET}}\",\r\n \"instagram.username\": \"{{server.build.env.INSTAGRAM_USERNAME}}\",\r\n \"instagram.password\": \"{{server.build.env.INSTAGRAM_PASSWORD}}\",\r\n \"bot.tokens.release\": \"{{server.build.env.BOT_TOKEN}}\",\r\n \"openai.apiToken\": \"{{server.build.env.AI_TOKEN}}\",\r\n \"openai.apiUrl\": \"{{server.build.env.AI_URL}}\",\r\n \"openai.model\": \"{{server.build.env.AI_MODEL}}\",\r\n \"bot.misc.status\": \"{{server.build.env.MISC_STATUS}}\",\r\n \"bot.misc.feedbackChannelId\": \"{{server.build.env.MISC_FEEDBACK}}\",\r\n \"bot.misc.ownerId\": \"{{server.build.env.MISC_OWNER}}\",\r\n \"bot.misc.predefineInformation\": \"{{server.build.env.MISC_PREDEF}}\",\r\n \"bot.misc.invite\": \"{{server.build.env.MISC_INVITE}}\",\r\n \"bot.misc.support\": \"{{server.build.env.MISC_SUPPORT}}\",\r\n \"bot.misc.website\": \"{{server.build.env.MISC_WEB}}\",\r\n \"bot.misc.webinterface\": \"{{server.build.env.MISC_INTERFACE}}\",\r\n \"bot.misc.recording\": \"{{server.build.env.MISC_RECORD}}\",\r\n \"bot.misc.twitchAuth\": \"{{server.build.env.MISC_TWITCH}}\",\r\n \"bot.misc.advertisement\": \"{{server.build.env.MISC_ADV}}\",\r\n \"bot.misc.name\": \"{{server.build.env.MISC_NAME}}\",\r\n \"bot.misc.shards\": \"{{server.build.env.MISC_SHARD}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Finished Loading\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "ghcr.io/ptero-eggs/installers:debian",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE and VERSION\r\n## this supports using oauth/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\napt update\r\napt install -y jq curl\r\n\r\n\r\nCONFIG_LINK=\"https://raw.githubusercontent.com/ptero-eggs/application-eggs/main/bots/discord/ree6/config.yml\"\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/Ree6-Applications/Ree6/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/Ree6-Applications/Ree6/releases\")\r\nMATCH=jar-with-dependencies.jar\r\n\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}\" | head -1 )\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}\" | head -1)\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 | grep -i *.jar)\r\n fi\r\nfi\r\n\r\n## Ree6 Setup\r\n[ ! -d /mnt/server ] \u0026\u0026 mkdir -p /mnt/server\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncd /mnt/server\r\necho -e \"\\nInstalling/Updating Ree6...\\n\"\r\n\r\nif [ -f Ree6.jar ]; then\r\n echo -e \"Updating Ree6.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"Ree6.jar-old\")'\r\n mv -f Ree6.jar Ree6.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\\n\"\r\ncurl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.yml ]; then\r\n echo -e \"Updating config.yml to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.yml-old\")'\r\n mv -f config.yml config.yml-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o config.yml ${CONFIG_LINK}\\n\"\r\ncurl -sSL -o config.yml ${CONFIG_LINK}\r\n \r\n\r\necho -e \"\\nRee6 Successfully Installed!\""
}
},
"variables": [
{
"name": "[REQUIRED] Discord Bot Token",
"description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https://jmusicbot.com/getting-a-bot-token/",
"env_variable": "BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Dagpi token",
"description": "Your Dagpi.xyz API-Token, for tweet image generation!",
"env_variable": "DAGPI_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Sentry DSN",
"description": "Your Sentry DSN, for error reporting!",
"env_variable": "SENTRY_DSN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Spotify Client Id",
"description": "Spotify Application Configuration, used to parse Spotify Tracks/Playlists to YouTube search queries.",
"env_variable": "SPOTIFY_CLIENT_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Spotify Client Secret",
"description": "Spotify Application Configuration, used to parse Spotify Tracks/Playlists to YouTube search queries.",
"env_variable": "SPOTIFY_CLIENT_SECRET",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Heartbeat Url",
"description": "The URL to the Heartbeat-Server",
"env_variable": "HEARTBEAT_URL",
"default_value": "none",
"user_viewable": true,
"user_editable": true,
"rules": "string",
"field_type": "text"
},
{
"name": "Heartbeat Interval",
"description": "The interval between the heartbeats.",
"env_variable": "HEARTBEAT_INTERVAL",
"default_value": "60",
"user_viewable": true,
"user_editable": true,
"rules": "integer",
"field_type": "text"
},
{
"name": "Amari Token",
"description": "Your Amari API-Token, for Amari Level imports!",
"env_variable": "AMARI_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Twitch Client Id",
"description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.",
"env_variable": "TWITCH_CLIENT_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Twitch Client Secret",
"description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.",
"env_variable": "TWITCH_CLIENT_SECRET",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Twitter Bearer Key",
"description": "Twitter Application Configuration, used for the Twitter Notifications.",
"env_variable": "TWITTER_BEARER",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Reddit Client Id",
"description": "Reddit Application Configuration, used for the Reddit Notification.",
"env_variable": "REDDIT_CLIENT_ID",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Reddit Client Secret",
"description": "Reddit Application Configuration, used for the Reddit Notification.",
"env_variable": "REDDIT_CLIENT_SECRET",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Instagram Username",
"description": "Instagram Application Configuration, used for the Instagram Notification.",
"env_variable": "INSTAGRAM_USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Instagram Password",
"description": "Instagram Application Configuration, used for the Instagram Notification.",
"env_variable": "INSTAGRAM_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "SQL Username",
"description": "Username for the SQL connection.",
"env_variable": "DATABASE_USER",
"default_value": "root",
"user_viewable": true,
"user_editable": true,
"rules": "string|max:32",
"field_type": "text"
},
{
"name": "SQL Database",
"description": "Database for the SQL Connection",
"env_variable": "DATABASE_DB",
"default_value": "root",
"user_viewable": true,
"user_editable": true,
"rules": "string|max:64",
"field_type": "text"
},
{
"name": "SQL Password",
"description": "Password for the SQL connection.",
"env_variable": "DATABASE_PW",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "SQL Port",
"description": "Port for the SQL connection.",
"env_variable": "DATABASE_PORT",
"default_value": "3306",
"user_viewable": true,
"user_editable": true,
"rules": "integer",
"field_type": "text"
},
{
"name": "Database Typ",
"description": "The Typ of the Database Ree6 should use!\r\nPossible typs:\r\n- mariadb\r\n- sqlite\r\n- h2\r\n- postgres",
"env_variable": "DATABASE_TYP",
"default_value": "sqlite",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:mariadb,sqlite,postgres,postregsql,h2",
"field_type": "text"
},
{
"name": "Database Storagefile",
"description": "The location of the storagefile if sqlite is being used.",
"env_variable": "DATABASE_FILE",
"default_value": "storage/Ree6.db",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:32",
"field_type": "text"
},
{
"name": "[DEVELOPER-STUFF] Database Poolsize",
"description": "The Database connection pool size!",
"env_variable": "DATABASE_POOL",
"default_value": "10",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
},
{
"name": "Database host",
"description": "The Host address of the Database connection.",
"env_variable": "DATABASE_HOST",
"default_value": "localhost",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "OpenAI Token",
"description": "Your Authentication token that should be used in the AI API calls.",
"env_variable": "AI_TOKEN",
"default_value": "OpenAI API-Token",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "OpenAI Url",
"description": "The URL that should receive the API calls.",
"env_variable": "AI_URL",
"default_value": "https://api.openai.com/v1/chat/completions",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "OpenAI Model",
"description": "The AI model that should be used in the API calls.",
"env_variable": "AI_MODEL",
"default_value": "gpt-3.5-turbo-0301",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:32",
"field_type": "text"
},
{
"name": "Activity Status",
"description": "The Activity status of the Bot that will be shown.",
"env_variable": "MISC_STATUS",
"default_value": "ree6.de | %guilds% Servers. (%shard%)",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Feedback Channel",
"description": "The Channel Id of the Feedback channel.",
"env_variable": "MISC_FEEDBACK",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "integer",
"field_type": "text"
},
{
"name": "[DEVELOPER-STUFF] Bot Owner Id",
"description": "The ID of the Bot Owner, this will be used internally on some checks.",
"env_variable": "MISC_OWNER",
"default_value": "321580743488831490",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
},
{
"name": "Invite Link",
"description": "The Invite link to invite the Bot.",
"env_variable": "MISC_INVITE",
"default_value": "https://invite.ree6.de",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Predefined Information for AI",
"description": "The Information for the AI.",
"env_variable": "MISC_PREDEF",
"default_value": "You are Ree6 a Discord bot.",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Support Link",
"description": "The Url link for users to receive support.",
"env_variable": "MISC_SUPPORT",
"default_value": "https://support.ree6.de",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Website",
"description": "The Url to the Website of the Bot.",
"env_variable": "MISC_WEB",
"default_value": "https://ree6.de",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Webinterface",
"description": "The Url to the Webinterface.",
"env_variable": "MISC_INTERFACE",
"default_value": "https://cp.ree6.de",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Record Url",
"description": "The Url that uses can access to get their recording.",
"env_variable": "MISC_RECORD",
"default_value": "https://cp.ree6.de/external/recording",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Twitch Url",
"description": "The Url used to connect a Twitch Account with the Ree6 System.",
"env_variable": "MISC_TWITCH",
"default_value": "https://cp.ree6.de/external/twitch",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Advertisment",
"description": "The Advertisement in Embed Footers and the rest.",
"env_variable": "MISC_ADV",
"default_value": "powered by Tube-hosting",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|max:128",
"field_type": "text"
},
{
"name": "Name",
"description": "The Name of the Bot.",
"env_variable": "MISC_NAME",
"default_value": "Ree6",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Shards",
"description": "The amount of shards that should be created.",
"env_variable": "MISC_SHARD",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,24 @@
# SinusBot
## Their [Site](https://www.sinusbot.com/)
Listen to your favorite music together with all of your friends
Welcome the Simple, Elegant & great sounding TS3- and Discord-Bot!
## First startup
On first startup wait until this message in the console appears: `TSClient quit.` Then press restart.
Now the SinusBot will fully startup and you can login to the WebUI.
## Server Ports
1 port is required to run SinusBot.
| Port | default |
|---------|---------|
| Game | 8087 |
## Side notes
This uses a custom image.

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:07+00:00",
"name": "Sinusbot",
"author": "support@pterodactyl.io",
"description": "Musicbot for Discord and Teamspeak.",
"features": null,
"docker_images": {
"sinusbot": "ghcr.io/ptero-eggs/yolks:bot_sinusbot"
},
"file_denylist": [],
"startup": "./sinusbot --override-password=\"${OVERRIDE_PASSWORD}\"",
"config": {
"files": "{\r\n \"config.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ListenPort\": \"ListenPort = {{server.build.default.port}}\",\r\n \"ListenHost\": \"ListenHost = \\\"0.0.0.0\\\"\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Initialization complete\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "ghcr.io/ptero-eggs/installers:debian",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p /mnt/server/TeamSpeak3-Client-linux_amd64/plugins\r\nmkdir /mnt/server/youtube-dlp\r\n\r\ncd /mnt/server\r\n\r\n#Download Sinusbot\r\nwget -qO - https://www.sinusbot.com/dl/sinusbot.current.tar.bz2 | tar xj\r\n\r\n\r\n#Download Latest TeamSpeak Client\r\n#TS_VERSION=$(curl https://teamspeak.com/versions/client.json | jq -r '.linux.x86_64.version')\r\n#TS_DL_LINK=$(curl https://teamspeak.com/versions/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\n# Sinusbot is not yet updated...\r\nTS_VERSION=3.5.6\r\nTS_DL_LINK=https://files.teamspeak-services.com/releases/client/3.5.6/TeamSpeak3-Client-linux_amd64-3.5.6.run\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n./TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64/xcbglintegrations/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"/home/container/TeamSpeak3-Client-linux_amd64/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"/home/container/youtube-dlp/youtube-dlp\"' \u003e\u003e config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64/plugins\r\n\r\n#Download youtube-dlp\r\ncd /mnt/server/youtube-dlp\r\nwget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": [
{
"name": "Password",
"description": "Password for admin account.",
"env_variable": "OVERRIDE_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,11 @@
# Big Brother Bot
## From their [Github](https://github.com/BigBrotherBot/big-brother-bot)
Big Brother Bot B3 is a complete and total server administration package for online games. B3 is designed primarily to keep your server free from the derelicts of online gaming, but offers more, much more
## Server Ports
No ports are required to run Big Brother Bot. You can assign a random port to the bot.
### Mods/Plugins may require ports to be added to the server

View File

@@ -0,0 +1,31 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:11+00:00",
"name": "Big Brother Bot",
"author": "parker@parkervcp.com",
"description": "Big Brother Bot B3 is a complete and total server administration package for online games. B3 is designed primarily to keep your server free from the derelicts of online gaming, but offers more, much more.\r\n\r\nhttps://github.com/BigBrotherBot/big-brother-bot",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:python_2.7": "ghcr.io/ptero-eggs/yolks:python_2.7"
},
"file_denylist": [],
"startup": "python b3_run.py",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"No idea what to put here\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "python:2.7-slim",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# Pixel Bot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt -y install git\r\n\r\ncd /mnt/server\r\n\r\necho \"Cloning pixel-bot repo\"\r\ngit clone https://github.com/BigBrotherBot/big-brother-bot.git .\r\n\r\necho \"Installing python requirements into folder\"\r\npip install -U --target /mnt/server -r requirements.txt\r\npip install -U --target /mnt/server paramiko\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\""
}
},
"variables": []
}

View File

@@ -0,0 +1,8 @@
# TeamSpeak3 Bots
## Some of these bots support other services but are primarily TeamSpeak3 bots
### [JTS3ServerMod](jts3servermod)
[JTS3ServerMod](https://www.stefan1200.de/forum/index.php?topic=2.0)
Please Check their site for an in depth on the bot.

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:16+00:00",
"name": "JTS3ServerMod",
"author": "teamwuffy@gmail.com",
"description": "Setup:\r\n- Install the latest version\r\n- Go into config/server1 and edit JTS3ServerMod_server.cfg\r\n- Save and start the server\r\n\r\nAuthor: https://www.stefan1200.de/forum/index.php?topic=2.0",
"features": null,
"docker_images": {
"ghcr.io/pterodactyl/yolks:java_8": "ghcr.io/pterodactyl/yolks:java_8"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar JTS3ServerMod.jar",
"config": {
"files": "{}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Successful connected to \"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "ghcr.io/ptero-eggs/installers:debian",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# JTS3ServerMod\r\n#\r\n# Server Files: /mnt/server\r\n# All required packages are installed in the used install image ghcr.io/ptero-eggs/installers:debian\r\n\r\nexport HOME=/mnt/server\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nif [ -z \"$SERVER_VERSION\" ] || [ \"$SERVER_VERSION\" == \"latest\" ]; then\r\n echo -e \"Downloading latest version with curl -L \"https://www.stefan1200.de/dlrequest.php?file=jts3servermod \u0026\r\n type=.zip\" -o JTS3ServerMod.zip\"\r\n curl -L \"https://www.stefan1200.de/dlrequest.php?file=jts3servermod\u0026type=.zip\" -o JTS3ServerMod.zip\r\nelse\r\n echo -e \"running curl -L \"https://www.stefan1200.de/downloads/JTS3ServerMod_$SERVER_VERSION.zip\" -o JTS3ServerMod.zip\"\r\n curl -L \"https://www.stefan1200.de/downloads/JTS3ServerMod_$SERVER_VERSION.zip\" -o JTS3ServerMod.zip\r\nfi\r\n\r\n# no need to continue if we don't have an archive\r\nif [ ! -f JTS3ServerMod.zip ]; then\r\n echo \"JTS3ServerMod.zip not found. Something went wrong. Exiting\"\r\n exit 2\r\nfi\r\n\r\nunzip JTS3ServerMod.zip\r\nrm JTS3ServerMod.zip JTS3ServerMod-Windows.exe JTS3ServerMod-Windows_NoWindow.exe jts3servermod_startscript.sh\r\necho -e \"Installation completed.\\nConfiguration of the server must be done in the config folder to proceed.\""
}
},
"variables": [
{
"name": "Version",
"description": "Version to download. Use latest to install latest version",
"env_variable": "SERVER_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,15 @@
# Twitch Bots
## Some of these bots support other services but are primarily Twitch bots
### [PhantomBot](phantombot)
[Website](https://phantombot.github.io/PhantomBot/)
[GitHub](https://github.com/phantombot/PhantomBot)
PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.
### [SogeBot](sogebot)
[Website](https://sogebot.xyz)
[GitHub](https://github.com/sogebot/sogeBot)
Free Twitch Bot built on Node.js

View File

@@ -0,0 +1,13 @@
# PhantomBot
[Website](https://phantombot.dev/)
[GitHub](https://github.com/phantombot/PhantomBot)
PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.
## Server Ports
1 port is required to run PhantomBot.
| Port | default |
|---------------------|---------|
| Web UI (HTTP Server)| 25000 |

View File

@@ -0,0 +1,113 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:04+00:00",
"name": "PhantomBot",
"author": "mail@wuffy.eu",
"description": "PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.",
"features": null,
"docker_images": {
"Java 16 [DEPRECATED]": "ghcr.io/ptero-eggs/yolks:java_16",
"Java 19": "ghcr.io/ptero-eggs/yolks:java_19"
},
"file_denylist": [],
"startup": "java --add-opens java.base/java.lang=ALL-UNNAMED -Djava.security.policy=config/security -Dinteractive -Xms1m -Dfile.encoding=UTF-8 -jar PhantomBot.jar",
"config": {
"files": "{\r\n \"config/botlogin.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"baseport\": \"{{server.build.default.port}}\",\r\n \"channel\": \"{{server.build.env.CHANNEL_NAME}}\",\r\n \"owner\": \"{{server.build.env.CHANNEL_OWNER}}\",\r\n \"paneluser\": \"{{server.build.env.WEBPANEL_USERNAME}}\",\r\n \"panelpassword\": \"{{server.build.env.WEBPANEL_PASSWORD}}\",\r\n \"user\": \"{{server.build.env.BOT_TWITCH_USERNAME}}\",\r\n \"youtubekey\": \"{{server.build.env.YOUTUBE_API_KEY}}\",\r\n \"discord_token\": \"{{server.build.env.DISCORD_BOT_TOKEN}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"Joined \"\r\n}",
"stop": "exit"
},
"scripts": {
"installation": {
"container": "ghcr.io/ptero-eggs/installers:debian",
"entrypoint": "bash",
"script": "#!/bin/bash\r\n# PhantomBot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt -y --no-install-recommends install curl wget ca-certificates unzip\r\n\r\ncd /tmp\r\n\r\n# Fetching latest github release\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"master\" ]; then\r\n echo -e \"Using latest Github Master version\"\r\n DOWNLOAD_URL=https://raw.githubusercontent.com/PhantomBot/nightly-build/master/PhantomBot-nightly-lin.zip\r\nelse\r\n if [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest release version\"\r\n RELEASE_VERSION=$(curl -s \"https://api.github.com/repos/PhantomBot/PhantomBot/releases/latest\" | grep -e '\"tag_name\"' | sed -E 's/.*\"([^\"]+)\".*/\\1/' | sed 's/^.//')\r\n fi\r\n DOWNLOAD_URL=https://github.com/PhantomBot/PhantomBot/releases/download/v${RELEASE_VERSION}/PhantomBot-${RELEASE_VERSION}-lin.zip\r\n echo -e \"${DOWNLOAD_URL}\"\r\nfi\r\n\r\n# Download files\r\ncd /mnt/server\r\nwget ${DOWNLOAD_URL} -O PhantomBot.zip\r\n\r\n# Unzip files and delete the archive\r\nunzip -o PhantomBot.zip\r\nrm PhantomBot.zip\r\n\r\n# Move unzipped files into the server folder and delete the folder \r\ncp -f -r ./PhantomBot-*/* /mnt/server/\r\nrm -rf PhantomBot-*/\r\n\r\n# Creating default config\r\nif [ ! -f /mnt/server/config/botlogin.txt ]; then\r\n echo -e \"Creating config/botlogin.txt\"\r\n cat \u003c\u003c EOF \u003e /mnt/server/config/botlogin.txt\r\n #PhantomBot Configuration File\r\n #\r\n # Here is a list wiht all config values:\r\n # https://community.phantom.bot/t/settings-for-botlogin-txt/78\r\n #\r\n apioauth=\r\n baseport=\r\n channel=\r\n oauth=\r\n owner=\r\n panelpassword=\r\n paneluser=\r\n user=\r\n youtubekey=\r\n discord_token=\r\nEOF\r\nfi\r\necho \"install finished\""
}
},
"variables": [
{
"name": "Version",
"description": "latest = Latest Stable\r\nmaster = latest Github\r\n3.9.0.7 = Latest known working with Java 16",
"env_variable": "RELEASE_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:9",
"field_type": "text"
},
{
"name": "Twitch Channel Name",
"description": "Enter the Twitch channel name where the bot will connect to",
"env_variable": "CHANNEL_NAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Channel Owner",
"description": "",
"env_variable": "CHANNEL_OWNER",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Bot Twitch Username",
"description": "Please enter the bot's Twitch username",
"env_variable": "BOT_TWITCH_USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:26",
"field_type": "text"
},
{
"name": "Webpanel Username",
"description": "Please enter a custom username for the web panel",
"env_variable": "WEBPANEL_USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:64",
"field_type": "text"
},
{
"name": "Webpanel Password",
"description": "Please enter a custom password for the web panel",
"env_variable": "WEBPANEL_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:2000",
"field_type": "text"
},
{
"name": "Youtube API Key",
"description": "https://phantombot.dev/guides/#guide=content/integrations/youtubesetup",
"env_variable": "YOUTUBE_API_KEY",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:128",
"field_type": "text"
},
{
"name": "Discord Bot Token",
"description": "https://phantombot.dev/guides/#guide=content/integrations/discordintegrationsetup",
"env_variable": "DISCORD_BOT_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "max:128",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,17 @@
# SogeBot
[Website](https://sogebot.xyz)
[GitHub](https://github.com/sogebot/sogeBot)
Free Twitch Bot built on Node.js
## Server Ports
1 port is required to run sogeBot.
| Port | default |
|---------------------|---------|
| Game (HTTP Server) | 20000 |
## NOTES
The installation take a long time, because a lot of things must be compiled. It can take 5 or more minutes !!!

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL",
"meta": {
"update_url": null,
"version": "PTDL_v2"
},
"exported_at": "2024-06-01T19:44:08+00:00",
"name": "SogeBot",
"author": "eggs@goover.dev",
"description": "sogeBot - Free Twitch Bot built on Node.js https://sogebot.xyz/",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:nodejs_18": "ghcr.io/ptero-eggs/yolks:nodejs_18"
},
"file_denylist": [],
"startup": "npm start",
"config": {
"files": "{\r\n \".env\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"PORT\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"logs": "{}",
"startup": "{\r\n \"done\": \"WebPanel is available at\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"container": "node:18-bookworm-slim",
"entrypoint": "bash",
"script": "#/bin/bash\r\n# Installscript for sogeBot | Author: eggs@goover.dev\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip jq python3 build-essential ca-certificates\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root /mnt\r\n\r\n#Backup database \u0026 config\r\nmkdir -p .backup\r\ncp -f .env /mnt/server/.backup\r\ncp -f sogebot.db /mnt/server/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/sogebot/sogeBot/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/sogebot/sogeBot/releases\")\r\nMATCH=sogeBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(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_LINK=$(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_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\ncurl -sSL -o sogeBot.zip ${DOWNLOAD_LINK}\r\n\r\nunzip -o sogeBot.zip\r\nrm -rf sogeBot.zip\r\n\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm install -g npm@8\r\n\r\nnpm install --verbose --force\r\n\r\necho -e \"install completed\"\r\nexit 0"
}
},
"variables": [
{
"name": "Version",
"description": "Version to install. Latest will install the latest available version.",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,13 @@
# Code-Server
## From the [Code-Server](https://github.com/cdr/code-server) GitHub
Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and access it in the browser.
### Server Ports
Ports required to run the server in a table format.
| Port | default |
| ---- | ------- |
| Game | 8080 |

View File

@@ -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/ptero-eggs/yolks:nodejs_12": "ghcr.io/ptero-eggs/yolks:nodejs_12",
"ghcr.io/ptero-eggs/yolks:nodejs_14": "ghcr.io/ptero-eggs/yolks:nodejs_14",
"ghcr.io/ptero-eggs/yolks:nodejs_16": "ghcr.io/ptero-eggs/yolks:nodejs_16",
"ghcr.io/ptero-eggs/yolks:nodejs_17": "ghcr.io/ptero-eggs/yolks:nodejs_17",
"ghcr.io/ptero-eggs/yolks:nodejs_18": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,34 @@
# MongoDB
## From their [Website](https://www.mongodb.com/)
MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era.
### MongoDB free monitoring.
To disable the message about free monitoring you can run `db.disableFreeMonitoring()`.
## Security
**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
**If you know what you are doing** and want to explicitly disable access control, you can edit the following lines to your `mongod.conf` file:
```yaml
security:
authorization: "disabled"
```
## 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.
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 27017 |

View File

@@ -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": "2024-02-02T10:25:08+01:00",
"name": "MongoDB 7",
"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": null,
"docker_images": {
"MongoDB_7": "ghcr.io\/ptero-eggs\/yolks:mongodb_7"
},
"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 -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:7-jammy",
"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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -0,0 +1,21 @@
# Rethinkdb
## [Website](https://rethinkdb.com/)
The open-source database for the realtime web
## Notes
- The web dashboard by default is disabled (remove the ` --no-http-admin` flag from startup to enable).
- It defaults bind to 0.0.0.0 what is all interfaces so it is public availble.
- On first start a admin pasword is randomly generated.
### Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| cluster | 25567 |
| driver | 25568 |
| http | 25569 |

View File

@@ -0,0 +1,62 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2024-04-02T14:35:12+02:00",
"name": "rethinkdb",
"author": "josdekurk@gmail.com",
"description": "The open-source database for the realtime web",
"features": null,
"docker_images": {
"Debian": "ghcr.io\/ptero-eggs\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/rethinkdb --bind 0.0.0.0 --cluster-port {{SERVER_PORT}} --driver-port {{DRIVER_PORT}} --http-port {{HTTP_PORT}} --initial-password auto --no-http-admin",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Server ready\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y wget tar binutils xz-utils\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/tmp\r\nwget https:\/\/download.rethinkdb.com\/repository\/debian-bookworm\/pool\/r\/rethinkdb\/rethinkdb_${VERSION}~0bookworm_${ARCH}.deb -O rethinkdb.deb\r\n\r\nar xv rethinkdb.deb\r\n\r\ntar xvf data.tar.xz\r\n\r\nmv \/tmp\/usr\/bin\/rethinkdb \/mnt\/server\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"",
"container": "ghcr.io\/ptero-eggs\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Version",
"description": "",
"env_variable": "VERSION",
"default_value": "2.4.4",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Driver port",
"description": "",
"env_variable": "DRIVER_PORT",
"default_value": "25568",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:10",
"field_type": "text"
},
{
"name": "Http port",
"description": "",
"env_variable": "HTTP_PORT",
"default_value": "25569",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:10",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,19 @@
# Redis
## From their [Website](https://redis.io/)
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
## Minimum RAM warning
It's recommended to have 4gb of RAM for redis
See here <https://docs.redislabs.com/latest/rs/administering/designing-production/hardware-requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 6379 |

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"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,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:redis_5": "ghcr.io\/ptero-eggs\/yolks:redis_5"
},
"file_denylist": [],
"startup": "redis-server --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} && redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Configuration loaded\"\r\n}",
"logs": "{}",
"stop": "exit"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# Redis Installation Script\r\n#\r\n# Server Files: \/mnt\/server\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"
}
},
"variables": [
{
"name": "Redis Password",
"description": "The password redis should use to secure the server.",
"env_variable": "SERVER_PASSWORD",
"default_value": "P@55w0rd",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,23 @@
# Redis
## From their [Website](https://redis.io/)
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
## Server Startup
You must first authenticate before trying to execute commands, to do this run `AUTH <YOUR_PASSWORD_HERE>` (without the `<>`). This should be the same as the password set in the `SERVER_PASSWORD` variable.
## Minimum RAM warning
It's recommended to have 4gb of RAM for redis
See here <https://docs.redislabs.com/latest/rs/administering/designing-production/hardware-requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 6379 |

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"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.",
"features": null,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:redis_6": "ghcr.io\/ptero-eggs\/yolks:redis_6"
},
"file_denylist": [],
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Configuration loaded\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"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\/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"
}
},
"variables": [
{
"name": "Redis Password",
"description": "The password redis should use to secure the server.",
"env_variable": "SERVER_PASSWORD",
"default_value": "P@55w0rd",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
# Redis
## From their [Website](https://redis.io/)
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
## Server Startup
You must first authenticate before trying to execute commands, to do this run `AUTH <YOUR_PASSWORD_HERE>` (without the `<>`). This should be the same as the password set in the `SERVER_PASSWORD` variable.
## Minimum RAM warning
It's recommended to have 4gb of RAM for redis
See here <https://docs.redislabs.com/latest/rs/administering/designing-production/hardware-requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 6379 |

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"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.",
"features": null,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:redis_7": "ghcr.io\/ptero-eggs\/yolks:redis_7"
},
"file_denylist": [],
"startup": "\/usr\/local\/bin\/redis-server \/home\/container\/redis.conf --save 60 1 --dir \/home\/container\/ --bind 0.0.0.0 --port {{SERVER_PORT}} --requirepass {{SERVER_PASSWORD}} --maxmemory {{SERVER_MEMORY}}mb --daemonize yes && redis-cli -p {{SERVER_PORT}}; redis-cli -p {{SERVER_PORT}} -a {{SERVER_PASSWORD}} shutdown save",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Configuration loaded\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"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\/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"
}
},
"variables": [
{
"name": "Redis Password",
"description": "The password redis should use to secure the server.",
"env_variable": "SERVER_PASSWORD",
"default_value": "P@55w0rd",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
# MariaDB
## From their [Website](https://mariadb.org/)
One of the most popular database servers. Made by the original developers of MySQL.
Guaranteed to stay open source.
## Minimum RAM warning
There is no actual minimum suggested for MariaDB.
See here <https://mariadb.com/kb/en/library/mariadb-hardware-requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 3306 |

View File

@@ -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-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"
},
"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": []
}

View File

@@ -0,0 +1,19 @@
# PostgreSQL
## From their [Website](https://www.postgresql.org/)
The World's Most Advanced Open Source Relational Database
## Minimum RAM warning
2 Gigabytes minimum recommended
See here <https://www.commandprompt.com/blog/postgresql_mininum_requirements/>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|---------|---------|
| Server | 5432 |

View File

@@ -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"
}
]
}

View File

@@ -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 14",
"author": "parker@parkervcp.com",
"description": "A default Postgres install that is not really editable.",
"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\/ & 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:14-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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -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 16",
"author": "parker@parkervcp.com",
"description": "A default Postgres install that is not really editable.",
"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\/ & 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:16-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"
}
]
}

View File

@@ -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"
}
]
}

View File

@@ -0,0 +1,17 @@
# Elasticsearch
## From the [Elasticsearch](https://github.com/elastic/elasticsearch) GitHub
Run [Elasticsearch](https://github.com/elastic/elasticsearch) on any machine anywhere and access it in the browser.
## vm.max_map_count requirement
Please follow this for the vm.max_map_count requirement: <https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_set_vm_max_map_count_to_at_least_262144>
## Server Ports
Ports required to run the server in a table format.
| Port | default |
| ---- | ------- |
| Game | 9200 |

View File

@@ -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, finetuned relevancy, and powerful analytics that scale with ease.",
"features": null,
"docker_images": {
"ghcr.io/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,35 @@
# Folding@Home
[Folding@Home](https://foldingathome.org/) is a distributed computing project aimed at simulating protein folding and other molecular dynamics.
## User Account
You can setup an User Account to track your PPD (Points per Day) and done WUs (Work Units). To get a Passkey visit the [Folding@home Passkey Site](https://apps.foldingathome.org/getpasskey)
## Teams
You can add your earned Points to a Team that you support. This is not nessesary as the points are just to track how much work was done (with some exeptions). Here is the [full List of the Teams](https://stats.foldingathome.org/team)
## Remote Control
You can connect via FAHControl to your instance. WebUI is not supported because it wouldn't be password protected.
## CPU Usage Control
There are three power modes:
- light
- medium
- full
Only light and medium are useful because full enables gpu which is not supported in this egg.
Light uses half of the available **cpu cores of your system**. Full uses **all of your cpu cores.** You can still limit the cpu usage via the panel.
## Supported Versions
Versions < v8 are supported. v8 is still beta and wont work with this egg. Get the latest v7 version number here: [Folding@Home Downloadserver](https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/)
## Server Ports
| Port | default |
| ---- | ------- |
| FAHControl | 36330 |

View File

@@ -0,0 +1,102 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2024-09-08T19:48:06+02: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": [],
"docker_images": {
"Debian": "ghcr.io\/ptero-eggs\/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": "{}",
"startup": "{\r\n \"done\": \"Started FahCore\"\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
"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\" ]] && 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 && apt upgrade -y && apt install curl bzip2 -y\r\n\r\necho \"Downloading FAHClient\"\r\ncurl -sSL -o fahclient.tar.bz2 https:\/\/download.foldingathome.org\/releases\/v7\/public\/fahclient\/debian-stable-${ARCH}\/release\/fahclient_${FAH_VERSION}-64bit-release.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 > $FILE << EOF\r\n<config>\r\n <!-- Folding Slots -->\r\n <slot id='0' type='CPU'\/>\r\n <!-- Maximum CPU Cores to use. Can't be more than 64 -->\r\n <cpus v='64'\/>\r\n<\/config>\r\nEOF\r\nfi\r\n\r\necho \"Done!\"",
"container": "ghcr.io\/ptero-eggs\/installers:debian",
"entrypoint": "bash"
}
},
"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\/v7\/public\/fahclient\/debian-stable-64bit\/release\/",
"env_variable": "FAH_VERSION",
"default_value": "7.6.21",
"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"
}
]
}

View File

@@ -0,0 +1,18 @@
# Forgejo
[Forgejo](https://forgejo.org/) is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.
## Supported Versions
You can set the version in Version variable. You can use following values:
latest - latest stable release
version - set the version according to this page: https://forgejo.org/releases/
## Server Ports
Ports required to run the server in a table format.
| Port | default |
| ---- | ------- |
| App | 3000 |
| SSH | 2020 |

View File

@@ -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/ptero-eggs/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/ptero-eggs/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 its 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"
}
]
}

View File

@@ -0,0 +1,19 @@
# Gitea
[Gitea](https://gitea.io/en-us/) is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.
## Supported Versions
You can set the version in Version variable. You can use following values:
latest - latest stable release
nightly - latest Github master branch
version - set the version according this page: https://dl.gitea.io/gitea
## Server Ports
Ports required to run the server in a table format.
| Port | default |
| ---- | ------- |
| App | 3000 |
| SSH | 2020 |

View File

@@ -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/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/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/ptero-eggs/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 its 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"
}
]
}

View File

@@ -0,0 +1,27 @@
# Grafana
## From the [Grafana](https://github.com/grafana/grafana) GitHub
The open and composable observability and data visualization platform.
Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
## Initial credentials
After the first start of Grafana, you can login using the following credentials:
- Username: admin
- Password: admin
## Update support
The egg _should_ keep the data and conf folder when reinstalling. Therefore a reinstallation with "latest" as the selected version can be used to update Grafana.
If you want to reset the server completly, remove the `conf` and `data` directories manually before reinstalling.
## Server Ports
Ports required to run the server in a table format.
| Port | default |
| ------------ | ------- |
| Webinterface | 3000 |

View File

@@ -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/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,13 @@
# haste-server
## Their [Github](https://github.com/seejohnrun/haste-server)
Host your own [Hastebin](https://hastebin.com).
## Server Ports
Ports required to run the server in a table format.
| Port | default |
| ---- | ------- |
| Game | 7777 |

View File

@@ -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/ptero-eggs/yolks:nodejs_18": "ghcr.io/ptero-eggs/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": []
}

View File

@@ -0,0 +1,9 @@
# LanguageTool
LanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, [and more than 20 other languages](https://languagetool.org/languages/). It finds many errors that a simple spell checker cannot find.
View https://languagetool.org for more information.
Requires one port for comunication.
Try `addr:port/v2/check?language=en-US&text=this+is+a+test` to test

View File

@@ -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/ptero-eggs/yolks:java_17": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,15 @@
# Lavalink Server
## 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.
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|----------|----------|
| Lavalink | 2333 |
### Mods/Plugins may require ports to be added to the server

View File

@@ -0,0 +1,62 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2024-12-11T19:05:06+00:00",
"name": "Lavalink",
"author": "damuffin36@gmail.com",
"description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/lavalink-devs\/Lavalink",
"features": null,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:java_21": "ghcr.io\/ptero-eggs\/yolks:java_21"
},
"file_denylist": [],
"startup": "java -jar Lavalink.jar",
"config": {
"files": "{\r\n \"application.yml\": {\r\n \"parser\": \"yml\",\r\n \"find\": {\r\n \"server.address\": \"0.0.0.0\",\r\n \"server.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Started Launcher in \"\r\n}",
"logs": "{}",
"stop": "^^C"
},
"scripts": {
"installation": {
"script": "## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (match is to match the filename in some way)\r\n## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\napt update\r\napt install -y curl jq git\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -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\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -L -o Lavalink.jar ${DOWNLOAD_URL}\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"",
"container": "debian:bookworm-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Version",
"description": "",
"env_variable": "VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "GITHUB_PACKAGE",
"description": "",
"env_variable": "GITHUB_PACKAGE",
"default_value": "lavalink-devs\/Lavalink",
"user_viewable": false,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Match",
"description": "",
"env_variable": "MATCH",
"default_value": "Lavalink.jar",
"user_viewable": false,
"user_editable": false,
"rules": "required|string",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,7 @@
# [Meilisearch](https://www.meilisearch.com/)
An open-source, lightning-fast, and hyper-relevant search engine that fits effortlessly into your workflow.
## Server Ports
One port needs to be allocated to run Meilisearch.

View File

@@ -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/ptero-eggs/yolks:debian": "ghcr.io/ptero-eggs/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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,25 @@
# minio s3
## Features
Auto generate keys on server creation bypassing default minio keys
## Update
Auto update minio to latest version using "update" startup feature
Automatic Key rotation using "rotate" startup feature
## Auto Rotate
It's possible to rotate your keys by changing the startup option to "rotate"
Once this is changed restart your server and it will automatically move your current keys to old and create your new keys
Be sure to change your startup back to "normal" once you have started your server using "rotate". This will ensure that you don't accidentally rotate your keys twice
## Known Issues
Double encryption may occur if you manually manipulate files in the keys directory
### Key rotation is handled automatically, DO NOT manually delete files in keys directory

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"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"
},
"file_denylist": [],
"startup": ".\/minio.sh",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Docs:\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"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": [
{
"name": "Startup Type",
"description": "normal,rotate,update",
"env_variable": "STARTUP_TYPE",
"default_value": "normal",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|in:normal,rotate,update",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,70 @@
#!/bin/bash
##################################
echo "$(tput setaf 2)Starting up...."
echo "Startup Type: $(tput setaf 2)$STARTUP_TYPE"
if [ -f "keys/key.txt" ]; then
echo "$(tput setaf 2)Key file detected..."
export MINIO_ROOT_USER=`cat keys/key.txt`
else
echo minioadmin > keys/key.txt
echo "$(tput setaf 3)No key file detected...Preparing First Time Boot"
fi
if [ -f "keys/secret.txt" ]; then
echo "$(tput setaf 2)Secret file detected..."
export MINIO_ROOT_PASSWORD=`cat keys/secret.txt`
else
echo minioadmin > keys/secret.txt
echo "No secret file detected...Preparing First Time Boot"
fi
if [ -f "keys/oldsecret.txt" ]; then
echo "$(tput setaf 1)Old secret file detected..."
export MINIO_ROOT_PASSWORD_OLD=`cat keys/oldsecret.txt`
fi
if [ -f "keys/oldkey.txt" ]; then
echo "$(tput setaf 1)Old key file detected..."
export MINIO_ROOT_USER_OLD=`cat keys/oldkey.txt`
fi
if [ -f "keys/justrotated.txt" ]; then
echo "$(tput setaf 3)Previous key rotation detected...."
echo "$(tput setaf 3)Clearing the Lanes...."
unset MINIO_ROOT_USER_OLD
unset MINIO_ROOT_PASSWORD_OLD
echo "$(tput setaf 2)Lanes Cleared!"
STARTUP_TYPE=normal
rm keys/justrotated.txt
rm keys/oldsecret.txt
rm keys/oldkey.txt
fi
##########################################
if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "update" ]; then
echo "$(tput setaf 3)Performing update...."
echo "$(tput setaf 1)Removing old minio version"
rm minio
echo "$(tput setaf 3)Downloading new minio version"
export ARCH=$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")
wget https://dl.min.io/server/minio/release/linux-$ARCH/minio
chmod +x minio
echo "$(tput setaf 2)Update Complete"
fi
##########################################
if [ -z "$STARTUP_TYPE" ] || [ "$STARTUP_TYPE" == "rotate" ]; then
touch keys/justrotated.txt
export MINIO_ROOT_USER_OLD=$MINIO_ROOT_USER
echo $MINIO_ROOT_USER_OLD > keys/oldkey.txt
export MINIO_ROOT_PASSWORD_OLD=$MINIO_ROOT_PASSWORD
echo $MINIO_ROOT_PASSWORD_OLD > keys/oldsecret.txt
export MINIO_ROOT_USER=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
echo $MINIO_ROOT_USER > keys/key.txt
export MINIO_ROOT_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
echo $MINIO_ROOT_PASSWORD > keys/secret.txt
echo "Your New Access Key is: $(tput setaf 2)$MINIO_ROOT_USER"
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"
else
echo "$(tput setaf 2)Booting..."
./minio server data --console-address ":$SERVER_PORT"
fi

View File

@@ -0,0 +1,7 @@
# Monitoring
## Loki
## Prometheus

View File

@@ -0,0 +1,25 @@
# Loki
## From the [Loki](https://github.com/grafana/loki) GitHub repository
Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate.
## Working with Loki
To get logs "into" Loki you need a scrape agent, such as official [Promtail](https://grafana.com/docs/loki/latest/clients/promtail/installation/) or a library for your app that can push logs through HTTP endpoint (gRPC endpoint is disabled in Docker enviroment by default)
## Resource consumption
As this egg sets up Loki in single node mode, it can consume a lot of disk space really fast. It is possible to setup different kind of storages for different parts of Loki files. For further information refer to official [Loki documentation](https://grafana.com/docs/loki/latest/operations/storage/).
To get started, you can go with a minimum of 3GB RAM and >=2.5GB disk space.
Keep in mind that those numbers can grow pretty quick!
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|-------------|---------|
| Loki server | 3100 |

View File

@@ -0,0 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2024-12-11T19:05:03+00:00",
"name": "Loki",
"author": "unknown@unknown.com",
"description": "Prometheus but for logs. This egg is for Loki instance only! You usually need pushing agents like Promtail to put logs in this",
"features": null,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/loki-linux -config.file=loki-docker-config.yaml",
"config": {
"files": "{\r\n \"loki-docker-config.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"server.http_listen_port\": \"{{server.build.default.port}}\",\r\n \"common.ring.instance_addr\": \"0.0.0.0\",\r\n \"common.path_prefix\": \"\/home\/container\/loki\",\r\n \"common.storage.filesystem.chunks_directory\": \"\/home\/container\/loki\/chunks\",\r\n \"common.storage.filesystem.rules_directory\": \"\/home\/container\/loki\/rules\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Loki started\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Switch to mounted working install directory\r\ncd \/mnt\/server\r\n\r\napt update\r\napt install -y zip unzip wget curl git file\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n# Download and extract Loki\r\n\r\nif [ \"$LOKI_VERSION\" = \"latest\" ]; then LOKI_VERSION=$(curl --silent \"https:\/\/api.github.com\/repos\/grafana\/loki\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/' | cut -c2-); fi\r\necho -e \"running curl -L https:\/\/github.com\/grafana\/loki\/releases\/download\/v${LOKI_VERSION}\/loki-linux-${ARCH}.zip --output loki-linux-amd64.zip\"\r\ncurl -L https:\/\/github.com\/grafana\/loki\/releases\/download\/v${LOKI_VERSION}\/loki-linux-${ARCH}.zip --output loki-linux-${ARCH}.zip\r\nunzip loki-linux-${ARCH}.zip\r\nrm -rf loki-linux-${ARCH}.zip\r\ncurl -L https:\/\/raw.githubusercontent.com\/grafana\/loki\/v${LOKI_VERSION}\/cmd\/loki\/loki-docker-config.yaml --output loki-docker-config.yaml\r\nmv loki-linux-* loki-linux\r\necho -e \"installation completed\"",
"container": "ghcr.io\/pterodactyl\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Loki Version",
"description": "The version of Loki to use.\r\n\r\nFind all versions from https:\/\/github.com\/grafana\/loki",
"env_variable": "LOKI_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
}
]
}

View File

@@ -0,0 +1,19 @@
# Prometheus
## From the [Prometheus](https://github.com/prometheus/prometheus) GitHub repository
The Prometheus monitoring system and time series database.
## Resource consumption
As Prometheus is a monitoring software that saves data in a timeseries database, it can take up massive amounts of disk space. Due to Prometheus design, a huge memory consumption is also possible.
To get started, a minimum of 3GB RAM and >=2.5GB disk space is recommended.
Keep in mind that those numbers can grow pretty quick for large monitored environments!
## Server Ports
Ports required to run the server in a table format.
| Port | default |
|-------------------|---------|
| Prometheus server | 9090 |

View File

@@ -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:55:16+00:00",
"name": "Prometheus",
"author": "p.zarrad@outlook.de",
"description": "The Prometheus monitoring system and time series database.",
"features": null,
"docker_images": {
"ghcr.io\/ptero-eggs\/yolks:debian": "ghcr.io\/ptero-eggs\/yolks:debian"
},
"file_denylist": [],
"startup": ".\/prometheus --web.listen-address=0.0.0.0:{{SERVER_PORT}} --config.file=\/home\/container\/prometheus.yml --storage.tsdb.path=\/home\/container\/data --web.console.templates=\/home\/container\/consoles --web.console.libraries=\/home\/container\/console_libraries --web.config.file=\/home\/container\/prometheus.web.yml --storage.tsdb.retention.time={{DATA_SAVE_TIME}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Server is ready to receive web requests.\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"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": "ghcr.io\/ptero-eggs\/installers:debian",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Prometheus Version",
"description": "The version of Prometheus to install. By default the latest version is being installed.",
"env_variable": "PROMETHEUS_VERSION",
"default_value": "latest",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20",
"field_type": "text"
},
{
"name": "Data Save time in Days",
"description": "How long the data is being saved",
"env_variable": "DATA_SAVE_TIME",
"default_value": "15d",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:10",
"field_type": "text"
}
]
}

View File

@@ -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 |

View File

@@ -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"
}
]
}

View File

@@ -0,0 +1,51 @@
# Owncast
## From the [Owncast](https://owncast.online) website
Owncast is a self-hosted live video and web chat server for use with existing popular broadcasting software.
## Installation
Follow the common egg installation guide to install the egg on your Pterodactyl instance.
When setting up a server, the version set in the varaible will be used, default is 0.0.11.
## Configuration
Configuring Owncast in Pterodactyl can be done by using the command line switches:
* -backupdir string
* Directory where backups will be written to
* -database string
* Path to the database file.
* -enableDebugFeatures
* Enable additional debugging options.
* -enableVerboseLogging
* Enable additional logging.
* -logdir string
* Directory where logs will be written to
* -restoreDatabase string
* Restore an Owncast database backup
* -rtmpport int
* Set listen port for the RTMP server
* -streamkey string
* Set your stream key/admin password
* -webserverip string
* Force web server to listen on this IP address
* -webserverport string
* Force the web server to listen on a specific port
## Update support
The egg _should_ keep the `data` folder when reinstalling, to prevent destroying the configuration by accident.
If you want to reset the server completly, remove the `data` directory manually before reinstalling.
### Server Ports
Ports required to run the server in a table format.
| Port | default |
| --------------- | ------- |
| Webserver | 8090 |
| RTMP | 8091 |

View File

@@ -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/ptero-eggs/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"
}
]
}

View File

@@ -0,0 +1,46 @@
# RabbitMQ
## From the [RabbitMQ](https://www.rabbitmq.com/) website
RabbitMQ is the most widely deployed open source message broker.
## Installation
Follow the common egg installation guide to install the egg on your Pterodactyl instance.
When setting up a server, the latest RabbitMQ version will be used by default.
With pretty new and old versions of RabbitMQ, you might have to adjust the used Erlang version.
This can be archived by adjusting the version number of the used image (e. g. `ghcr.io/pterodactyl/yolks:erlang_22` instead of `ghcr.io/ptero-eggs/yolks:erlang_24`).
The latest version as of now requires you to use atleast ghcr.io/pterodactyl/yolks:erlang_25
## Configuration
Configuring RabbitMQ in Pterodactyl is only possible using the config files.
This means:
- Configure the server itself as normal using `/home/container/etc/rabbitmq/rabbitmq.conf`
- Enable plugins using the plugin file located at `/home/container/etc/rabbitmq/enabled_plugins`
- Configure users and vhosts through a [definitions.json](https://www.rabbitmq.com/definitions.html)
You can set the path to the used `definitions.json` using the `load_definitions` option in your config.
Note that RabbitMQ versions prior to 3.8.6 will require a properly configured management plugin to do so!
The easiest way to get a working `definitions.json` is to setup a local instance with the management plugin. You can configure your instance there and load the definitions as stated by uploading them.
By default, only `listeners.tcp.default` is configured to match your primary allocation.
If you want to expose some other port (e. g. the web management interface) you have to manually configure the
port in your `rabbitmq.conf`.
## Update support
The egg _should_ keep the `etc` folder when reinstalling, to prevent destroying the configuration by accident. Therefore a reinstallation with "latest" as the selected version can be used to update RabbitMQ.
If you want to reset the server completly, remove the `etc` directory manually before reinstalling.
### Server Ports
Ports required to run the server in a table format.
| Port | default |
| --------------- | ------- |
| RabbitMQ Broker | 5672 |

View File

@@ -0,0 +1,46 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"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"
},
"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}",
"startup": "{\r\n \"done\": \" completed with\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"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": [
{
"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"
}
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
# Rathole
A secure, stable and high-performance reverse proxy for NAT traversal, written in Rust
rathole, like frp and ngrok, can help to expose the service on the device behind the NAT to the Internet, via a server with a public IP.
## This egg only includes server side of rathole
Please refer to https://github.com/rapiz1/rathole for more information about rathole

Some files were not shown because too many files have changed in this diff Show More