Compare commits
3 Commits
1bf16d5f9f
...
fe8c569a91
| Author | SHA1 | Date | |
|---|---|---|---|
| fe8c569a91 | |||
| 5a10c7a026 | |||
| aaa2286866 |
4
ptero_eggs/application/5e-tools/README.md
Normal file
4
ptero_eggs/application/5e-tools/README.md
Normal 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.
|
||||||
42
ptero_eggs/application/5e-tools/egg-5e-tools.json
Normal file
42
ptero_eggs/application/5e-tools/egg-5e-tools.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
64
ptero_eggs/application/bots/discord/README.md
Normal file
64
ptero_eggs/application/bots/discord/README.md
Normal 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.
|
||||||
28
ptero_eggs/application/bots/discord/aoede/README.md
Normal file
28
ptero_eggs/application/bots/discord/aoede/README.md
Normal 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
|
||||||
92
ptero_eggs/application/bots/discord/aoede/egg-aoede.json
Normal file
92
ptero_eggs/application/bots/discord/aoede/egg-aoede.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
26
ptero_eggs/application/bots/discord/bastion/README.md
Normal file
26
ptero_eggs/application/bots/discord/bastion/README.md
Normal 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.
|
||||||
122
ptero_eggs/application/bots/discord/bastion/egg-bastion.json
Normal file
122
ptero_eggs/application/bots/discord/bastion/egg-bastion.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
ptero_eggs/application/bots/discord/corpbot/README.md
Normal file
11
ptero_eggs/application/bots/discord/corpbot/README.md
Normal 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
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"token": "your_token_here",
|
||||||
|
"prefix": "your_custom_prefix_here"
|
||||||
|
}
|
||||||
8
ptero_eggs/application/bots/discord/dynamica/README.md
Normal file
8
ptero_eggs/application/bots/discord/dynamica/README.md
Normal 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.
|
||||||
102
ptero_eggs/application/bots/discord/dynamica/egg-dynamica.json
Normal file
102
ptero_eggs/application/bots/discord/dynamica/egg-dynamica.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
ptero_eggs/application/bots/discord/fragbot/README.md
Normal file
11
ptero_eggs/application/bots/discord/fragbot/README.md
Normal 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
|
||||||
42
ptero_eggs/application/bots/discord/fragbot/egg-fragbot.json
Normal file
42
ptero_eggs/application/bots/discord/fragbot/egg-fragbot.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
94
ptero_eggs/application/bots/discord/jmusicbot/README.md
Normal file
94
ptero_eggs/application/bots/discord/jmusicbot/README.md
Normal 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.
|
||||||
183
ptero_eggs/application/bots/discord/jmusicbot/config.txt
Normal file
183
ptero_eggs/application/bots/discord/jmusicbot/config.txt
Normal 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
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
43
ptero_eggs/application/bots/discord/muse/README.md
Normal file
43
ptero_eggs/application/bots/discord/muse/README.md
Normal 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
|
||||||
92
ptero_eggs/application/bots/discord/muse/egg-muse.json
Normal file
92
ptero_eggs/application/bots/discord/muse/egg-muse.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
ptero_eggs/application/bots/discord/parkertron/README.md
Normal file
11
ptero_eggs/application/bots/discord/parkertron/README.md
Normal 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
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
13
ptero_eggs/application/bots/discord/pixelbot/README.md
Normal file
13
ptero_eggs/application/bots/discord/pixelbot/README.md
Normal 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.
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
20
ptero_eggs/application/bots/discord/redbot/README.md
Normal file
20
ptero_eggs/application/bots/discord/redbot/README.md
Normal 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
|
||||||
9
ptero_eggs/application/bots/discord/redbot/config.json
Normal file
9
ptero_eggs/application/bots/discord/redbot/config.json
Normal 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": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
62
ptero_eggs/application/bots/discord/redbot/egg-red.json
Normal file
62
ptero_eggs/application/bots/discord/redbot/egg-red.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
73
ptero_eggs/application/bots/discord/ree6/README.md
Normal file
73
ptero_eggs/application/bots/discord/ree6/README.md
Normal 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.
|
||||||
128
ptero_eggs/application/bots/discord/ree6/config.yml
Normal file
128
ptero_eggs/application/bots/discord/ree6/config.yml
Normal 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
|
||||||
422
ptero_eggs/application/bots/discord/ree6/egg-ree6.json
Normal file
422
ptero_eggs/application/bots/discord/ree6/egg-ree6.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
24
ptero_eggs/application/bots/discord/sinusbot/README.md
Normal file
24
ptero_eggs/application/bots/discord/sinusbot/README.md
Normal 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.
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
11
ptero_eggs/application/bots/other/bigbrotherbot/README.md
Normal file
11
ptero_eggs/application/bots/other/bigbrotherbot/README.md
Normal 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
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
8
ptero_eggs/application/bots/teamspeak3/README.md
Normal file
8
ptero_eggs/application/bots/teamspeak3/README.md
Normal 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.
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
ptero_eggs/application/bots/twitch/README.md
Normal file
15
ptero_eggs/application/bots/twitch/README.md
Normal 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
|
||||||
13
ptero_eggs/application/bots/twitch/phantombot/README.md
Normal file
13
ptero_eggs/application/bots/twitch/phantombot/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
17
ptero_eggs/application/bots/twitch/sogebot/README.md
Normal file
17
ptero_eggs/application/bots/twitch/sogebot/README.md
Normal 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 !!!
|
||||||
42
ptero_eggs/application/bots/twitch/sogebot/egg-soge-bot.json
Normal file
42
ptero_eggs/application/bots/twitch/sogebot/egg-soge-bot.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
13
ptero_eggs/application/code-server/README.md
Normal file
13
ptero_eggs/application/code-server/README.md
Normal 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 |
|
||||||
56
ptero_eggs/application/code-server/egg-code--server.json
Normal file
56
ptero_eggs/application/code-server/egg-code--server.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
34
ptero_eggs/application/database/nosql/mongodb/README.md
Normal file
34
ptero_eggs/application/database/nosql/mongodb/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
21
ptero_eggs/application/database/nosql/rethinkdb/README.md
Normal file
21
ptero_eggs/application/database/nosql/rethinkdb/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
19
ptero_eggs/application/database/redis/redis-5/README.md
Normal file
19
ptero_eggs/application/database/redis/redis-5/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
23
ptero_eggs/application/database/redis/redis-6/README.md
Normal file
23
ptero_eggs/application/database/redis/redis-6/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1835
ptero_eggs/application/database/redis/redis-6/redis.conf
Normal file
1835
ptero_eggs/application/database/redis/redis-6/redis.conf
Normal file
File diff suppressed because it is too large
Load Diff
23
ptero_eggs/application/database/redis/redis-7/README.md
Normal file
23
ptero_eggs/application/database/redis/redis-7/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
2276
ptero_eggs/application/database/redis/redis-7/redis.conf
Normal file
2276
ptero_eggs/application/database/redis/redis-7/redis.conf
Normal file
File diff suppressed because it is too large
Load Diff
20
ptero_eggs/application/database/sql/mariadb/README.md
Normal file
20
ptero_eggs/application/database/sql/mariadb/README.md
Normal 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 |
|
||||||
@@ -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": []
|
||||||
|
}
|
||||||
19
ptero_eggs/application/database/sql/postgres/README.md
Normal file
19
ptero_eggs/application/database/sql/postgres/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
17
ptero_eggs/application/elasticsearch/README.md
Normal file
17
ptero_eggs/application/elasticsearch/README.md
Normal 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 |
|
||||||
52
ptero_eggs/application/elasticsearch/egg-elasticsearch.json
Normal file
52
ptero_eggs/application/elasticsearch/egg-elasticsearch.json
Normal 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, fine‑tuned 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
35
ptero_eggs/application/foldingathome/README.md
Normal file
35
ptero_eggs/application/foldingathome/README.md
Normal 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 |
|
||||||
102
ptero_eggs/application/foldingathome/egg-folding--home.json
Normal file
102
ptero_eggs/application/foldingathome/egg-folding--home.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18
ptero_eggs/application/forgejo/README.md
Normal file
18
ptero_eggs/application/forgejo/README.md
Normal 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 |
|
||||||
64
ptero_eggs/application/forgejo/egg-forgejo.json
Normal file
64
ptero_eggs/application/forgejo/egg-forgejo.json
Normal 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 it’s not available.",
|
||||||
|
"env_variable": "DISABLE_SSH",
|
||||||
|
"default_value": "false",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": false,
|
||||||
|
"rules": "required|string|in:true,false",
|
||||||
|
"field_type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SSH Port",
|
||||||
|
"description": "SSH port displayed in clone URL.",
|
||||||
|
"env_variable": "SSH_PORT",
|
||||||
|
"default_value": "2020",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": false,
|
||||||
|
"rules": "required|integer|between:1024,65535",
|
||||||
|
"field_type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Version",
|
||||||
|
"description": "Use either `latest` or a specific version, such as `1.21.7-0`.",
|
||||||
|
"env_variable": "VERSION",
|
||||||
|
"default_value": "latest",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": true,
|
||||||
|
"rules": "required|string|max:15",
|
||||||
|
"field_type": "text"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
19
ptero_eggs/application/gitea/README.md
Normal file
19
ptero_eggs/application/gitea/README.md
Normal 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 |
|
||||||
62
ptero_eggs/application/gitea/egg-gitea.json
Normal file
62
ptero_eggs/application/gitea/egg-gitea.json
Normal 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 it’s not available",
|
||||||
|
"env_variable": "DISABLE_SSH",
|
||||||
|
"default_value": "false",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": false,
|
||||||
|
"rules": "required|string|in:true,false",
|
||||||
|
"field_type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SSH Port",
|
||||||
|
"description": "SSH port displayed in clone URL.",
|
||||||
|
"env_variable": "SSH_PORT",
|
||||||
|
"default_value": "2020",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": false,
|
||||||
|
"rules": "required|integer|between:1024,65535",
|
||||||
|
"field_type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Version",
|
||||||
|
"description": "you can use latest, nightly or version (e.g. 1.18.1)",
|
||||||
|
"env_variable": "VERSION",
|
||||||
|
"default_value": "latest",
|
||||||
|
"user_viewable": true,
|
||||||
|
"user_editable": true,
|
||||||
|
"rules": "required|string|max:20",
|
||||||
|
"field_type": "text"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
27
ptero_eggs/application/grafana/README.md
Normal file
27
ptero_eggs/application/grafana/README.md
Normal 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 |
|
||||||
52
ptero_eggs/application/grafana/egg-grafana.json
Normal file
52
ptero_eggs/application/grafana/egg-grafana.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
13
ptero_eggs/application/haste-server/README.md
Normal file
13
ptero_eggs/application/haste-server/README.md
Normal 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 |
|
||||||
31
ptero_eggs/application/haste-server/egg-haste-server.json
Normal file
31
ptero_eggs/application/haste-server/egg-haste-server.json
Normal 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": []
|
||||||
|
}
|
||||||
9
ptero_eggs/application/languagetool/README.md
Normal file
9
ptero_eggs/application/languagetool/README.md
Normal 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
|
||||||
42
ptero_eggs/application/languagetool/egg-language-tool.json
Normal file
42
ptero_eggs/application/languagetool/egg-language-tool.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
ptero_eggs/application/lavalink/README.md
Normal file
15
ptero_eggs/application/lavalink/README.md
Normal 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
|
||||||
62
ptero_eggs/application/lavalink/egg-lavalink.json
Normal file
62
ptero_eggs/application/lavalink/egg-lavalink.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
7
ptero_eggs/application/meilisearch/README.md
Normal file
7
ptero_eggs/application/meilisearch/README.md
Normal 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.
|
||||||
112
ptero_eggs/application/meilisearch/egg-meilisearch.json
Normal file
112
ptero_eggs/application/meilisearch/egg-meilisearch.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
25
ptero_eggs/application/minio/README.md
Normal file
25
ptero_eggs/application/minio/README.md
Normal 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
|
||||||
42
ptero_eggs/application/minio/egg-minio-s3.json
Normal file
42
ptero_eggs/application/minio/egg-minio-s3.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
70
ptero_eggs/application/minio/minio.sh
Normal file
70
ptero_eggs/application/minio/minio.sh
Normal 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
|
||||||
7
ptero_eggs/application/monitoring/README.md
Normal file
7
ptero_eggs/application/monitoring/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Monitoring
|
||||||
|
|
||||||
|
## Loki
|
||||||
|
|
||||||
|
|
||||||
|
## Prometheus
|
||||||
|
|
||||||
25
ptero_eggs/application/monitoring/loki/README.md
Normal file
25
ptero_eggs/application/monitoring/loki/README.md
Normal 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 |
|
||||||
42
ptero_eggs/application/monitoring/loki/egg-loki.json
Normal file
42
ptero_eggs/application/monitoring/loki/egg-loki.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
19
ptero_eggs/application/monitoring/prometheus/README.md
Normal file
19
ptero_eggs/application/monitoring/prometheus/README.md
Normal 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 |
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18
ptero_eggs/application/nats/README.md
Normal file
18
ptero_eggs/application/nats/README.md
Normal 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 |
|
||||||
82
ptero_eggs/application/nats/egg-n-a-t-s.json
Normal file
82
ptero_eggs/application/nats/egg-n-a-t-s.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
51
ptero_eggs/application/owncast/README.md
Normal file
51
ptero_eggs/application/owncast/README.md
Normal 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 |
|
||||||
102
ptero_eggs/application/owncast/egg-owncast-online.json
Normal file
102
ptero_eggs/application/owncast/egg-owncast-online.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
46
ptero_eggs/application/rabbitmq/README.md
Normal file
46
ptero_eggs/application/rabbitmq/README.md
Normal 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 |
|
||||||
46
ptero_eggs/application/rabbitmq/egg-rabbit-m-q.json
Normal file
46
ptero_eggs/application/rabbitmq/egg-rabbit-m-q.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1060
ptero_eggs/application/rabbitmq/rabbitmq.conf
Normal file
1060
ptero_eggs/application/rabbitmq/rabbitmq.conf
Normal file
File diff suppressed because it is too large
Load Diff
7
ptero_eggs/application/rathole/README.md
Normal file
7
ptero_eggs/application/rathole/README.md
Normal 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
Reference in New Issue
Block a user