From db4fd843f46213b3e1a468dd050ed411e5bf7833 Mon Sep 17 00:00:00 2001 From: Daleth Darko Date: Sun, 14 Jan 2024 16:05:53 -0500 Subject: [PATCH] feat(ptreodactyl): new egg (#515) * Leave exposing ports to the compose/run setup * Add pterodactyl egg and adjust the start script for working in ro overlay2 setups * Update egg-discord-tickets-bot.json --- Dockerfile | 2 - egg-discord-tickets-bot.json | 102 +++++++++++++++++++++++++++++++++++ scripts/start.sh | 6 ++- 3 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 egg-discord-tickets-bot.json diff --git a/Dockerfile b/Dockerfile index f4bad15..3fd32d9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,11 +24,9 @@ ENV USER=container \ HOME=/home/container \ NODE_ENV=production \ HTTP_HOST=0.0.0.0 \ - HTTP_PORT=80 \ DOCKER=true WORKDIR /home/container COPY --from=builder --chown=container:container --chmod=777 /build /app -EXPOSE ${HTTP_PORT}/tcp ENTRYPOINT [ "/app/scripts/start.sh" ] HEALTHCHECK --interval=15s --timeout=5s --start-period=60s \ CMD curl -f http://localhost:${HTTP_PORT}/status || exit 1 diff --git a/egg-discord-tickets-bot.json b/egg-discord-tickets-bot.json new file mode 100644 index 0000000..fa15ba6 --- /dev/null +++ b/egg-discord-tickets-bot.json @@ -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-01-14T14:44:45-05:00", + "name": "Discord Tickets Bot", + "author": "contact@bisecthosting.com", + "description": "An egg for the discord-tickets bot service.", + "features": null, + "docker_images": { + "docker.io\/eartharoid\/discord-tickets:main": "docker.io\/eartharoid\/discord-tickets:main" + }, + "file_denylist": [], + "startup": "\/app\/scripts\/start.sh", + "config": { + "files": "{\r\n \".env\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"HTTP_PORT\": \"{{server.build.default.port}}\",\r\n \"HTTP_HOST\": \"0.0.0.0\",\r\n \"DB_PROVIDER\": \"{{env.DB_PROV}}\",\r\n \"DB_CONNECTION_URL\": \"{{env.DBHOST}}\",\r\n \"DISCORD_SECRET\": \"{{env.DISCORDSECRET}}\",\r\n \"DISCORD_TOKEN\": \"{{env.DISCORDTOKEN}}\",\r\n \"HTTP_EXTERNAL\": \"{{env.EXTERNAL}}\",\r\n \"SUPER\": \"{{env.SUPERIDS}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"SUCCESS\"\r\n}", + "logs": "{}", + "stop": "exit" + }, + "scripts": { + "installation": { + "script": "output_file=\"\/mnt\/server\/.env\"\r\nrandom=$(cat \/dev\/urandom | tr -dc 'a-f0-9' | fold -w 48 | head -n 1)\r\necho \"DB_CONNECTION_URL=\" >> $output_file\r\necho \"DB_PROVIDER=\" >> $output_file\r\necho \"DISCORD_SECRET=\" >> $output_file\r\necho \"DISCORD_TOKEN=\" >> $output_file\r\necho \"ENCRYPTION_KEY=${random}\" >> $output_file\r\necho \"HTTP_EXTERNAL=http:\/\/127.0.0.1:8169\" >> $output_file\r\necho \"HTTP_HOST=0.0.0.0\" >> $output_file\r\necho \"HTTP_PORT=8169\" >> $output_file\r\necho \"HTTP_TRUST_PROXY=false\" >> $output_file\r\necho \"NODE_ENV=production\" >> $output_file\r\necho \"OVERRIDE_ARCHIVE=\" >> $output_file\r\necho \"PUBLIC_BOT=false\" >> $output_file\r\necho \"PUBLISH_COMMANDS=false\" >> $output_file\r\necho \"SUPER=319467558166069248\" >> $output_file\r\n\r\necho \"Environment variables written to $output_file\"", + "container": "node:14-buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Database Provider", + "description": "The database type you want to use, it is not recommended to use SQLite in production. - PostgreSQL \/ MySQL \/ SQLite", + "env_variable": "DB_PROV", + "default_value": "sqlite", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Database URL", + "description": "It is recommended you do not use SQLite in production.\r\nhttps:\/\/discordtickets.app\/self-hosting\/configuration\/#db_connection_url", + "env_variable": "DBHOST", + "default_value": "file:\/\/home\/container\/user\/database.db?socket_timeout=120000&busy_timeout=10000", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:200", + "field_type": "text" + }, + { + "name": "Discord 0Auth Secret", + "description": "", + "env_variable": "DISCORDSECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:75", + "field_type": "text" + }, + { + "name": "Discord Bot Token", + "description": "", + "env_variable": "DISCORDTOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:100", + "field_type": "text" + }, + { + "name": "External URL", + "description": "The externally accessible url of the bot, in most cases this will be the server IP and Port assigned to you.", + "env_variable": "EXTERNAL", + "default_value": "http:\/\/ip:port", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:150", + "field_type": "text" + }, + { + "name": "Owner IDs", + "description": "Comma separated list of discord owner IDs, the default is that of the bot developer and is recommended to leave in if you wan them to be able to debug issues for you.", + "env_variable": "SUPERIDS", + "default_value": "319467558166069248", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:200", + "field_type": "text" + }, + { + "name": "PTERODACTYL", + "description": "Internal variable to denote to the bot that it is in a pterodactyl container, required for functionality", + "env_variable": "PTERODACTYL", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} diff --git a/scripts/start.sh b/scripts/start.sh index 5587bf7..0862505 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -1,6 +1,10 @@ #!/usr/bin/env sh -if [ "$DOCKER" = "true" ]; then +if [ "$PTERODACTYL" = "true" ]; then + rm -rf /home/container/app + cp -R /app /home/container/ + base_dir="/home/container/app" +elif [ "$DOCKER" = "true" ]; then base_dir="/app" else source="${BASH_SOURCE}"