From 5b05999ba6cfd0f27a3b325b513afeb3a799ba9e Mon Sep 17 00:00:00 2001 From: Geosk <32211101+geosskk@users.noreply.github.com> Date: Fri, 29 Dec 2023 14:05:21 -0800 Subject: [PATCH 1/3] Add NATS egg file and readme. --- software/nats-server/README.md | 26 ++++++++++++++ software/nats-server/egg-n-a-t-s.json | 52 +++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 software/nats-server/README.md create mode 100644 software/nats-server/egg-n-a-t-s.json diff --git a/software/nats-server/README.md b/software/nats-server/README.md new file mode 100644 index 00000000..337a69dd --- /dev/null +++ b/software/nats-server/README.md @@ -0,0 +1,26 @@ +# nats-server + +## From their [Github](https://github.com/nats-io/nats-server) + +NATS is a simple, secure and performant communications system for digital systems, services and devices. NATS is part of the Cloud Native Computing Foundation (CNCF). NATS has over 40 client language implementations, and its server can run on-premise, in the cloud, at the edge, and even on a Raspberry Pi. NATS can secure and simplify design and operation of modern distributed systems. + + + +## Installation/System Requirements + +The system requirements of a NATS server can vary a lot depending on its configuration. + +View their [documentation](https://docs.nats.io/running-a-nats-service/introduction/installation#hardware-requirements) to learn more. + +## Server Ports + +| Port | default | +|---------------|---------| +| nats-server | 4222 | + +### Notes + + +4222 is the default port, but any port can be used. + +### Additional ports may be required depending on your NATS server configuration. diff --git a/software/nats-server/egg-n-a-t-s.json b/software/nats-server/egg-n-a-t-s.json new file mode 100644 index 00000000..2de08a78 --- /dev/null +++ b/software/nats-server/egg-n-a-t-s.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-12-29T13:41:08-08:00", + "name": "NATS", + "author": "pterodactyl@geosk.xyz", + "description": "NATS is a simple, secure and performant communications system for digital systems, services and devices. NATS is part of the Cloud Native Computing Foundation (CNCF). NATS has over 40 client language implementations, and its server can run on-premise, in the cloud, at the edge, and even on a Raspberry Pi. NATS can secure and simplify design and operation of modern distributed systems.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/nats-server -p {{SERVER_PORT}} `if [ ! -z $CONFIG_FILE ]; then echo \"-c $CONFIG_FILE\"; fi`;", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Server is ready\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "# NATS Server installer.\r\n# Authored by Geosskk\r\n#! \/bin\/bash\r\n\r\napt update\r\napt install -y curl unzip\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n\r\ncd \/mnt\/server\r\n\r\nVERSION_RESPONSE=$(curl -sLI -o \/dev\/null -w '%{http_code}' https:\/\/github.com\/nats-io\/nats-server\/releases\/tag\/v${NATS_VERSION})\r\n\r\nif [[ \"$VERSION_RESPONSE\" -ne 200 ]]; then\r\n echo \"Specified version not found, using latest.\"\r\n\r\n LATEST_TAG=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest | grep \"tag_name\" | cut -d : -f 2,3 | tr -d \"v[:blank:]\\\",\")\r\n # FILE_URL=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest | grep \"browser_download_url\" | cut -d : -f 2,3 | tr -d \"[:blank:]\\\",\" | grep \"linux-${ARCH}.zip\")\r\n\r\n if [ -z \"$LATEST_TAG\" ]; then\r\n echo \"Unable to get the latest release's info.\"\r\n exit 1\r\n fi\r\n\r\n echo \"Found latest tag v$LATEST_TAG\"\r\n\r\n NATS_VERSION=$LATEST_TAG\r\n\r\n FILE_URL=\"https:\/\/github.com\/nats-io\/nats-server\/releases\/download\/v${NATS_VERSION}\/nats-server-v${NATS_VERSION}-linux-${ARCH}.zip\"\r\nelse\r\n echo \"Version $NATS_VERSION found.\"\r\n\r\n FILE_URL=\"https:\/\/github.com\/nats-io\/nats-server\/releases\/download\/v${NATS_VERSION}\/nats-server-v${NATS_VERSION}-linux-${ARCH}.zip\"\r\nfi\r\n\r\necho \"The file URL is $FILE_URL\"\r\n\r\nFILE_URL_RESPONSE=$(curl -sLI -o \/dev\/null -w '%{http_code}' $FILE_URL)\r\n\r\nif [[ \"$FILE_URL_RESPONSE\" -ne 200 ]]; then\r\n echo \"The file URL failed to respond with status code 200, responded with $FILE_URL_RESPONSE.\"\r\n exit 1\r\nfi\r\n\r\ncurl -L ${FILE_URL} -o nats-server.zip\r\nunzip nats-server.zip\r\nrm nats-server.zip\r\ncp nats-server-v${NATS_VERSION}-linux-${ARCH}\/* .\/\r\nrm -R nats-server-v${NATS_VERSION}-linux-${ARCH}\/\r\n\r\nchmod +x nats-server", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Version", + "description": "The version of NATS to install, if not found will try to get the latest release.", + "env_variable": "NATS_VERSION", + "default_value": "2.10.7", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Configuration", + "description": "The file to use for NATS configuration.", + "env_variable": "CONFIG_FILE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 0d253593156a62aa208d20ac23a0e54830659726 Mon Sep 17 00:00:00 2001 From: Geosk <32211101+geosskk@users.noreply.github.com> Date: Fri, 29 Dec 2023 14:16:31 -0800 Subject: [PATCH 2/3] Add nats-server to main readme. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 83964ad9..9fdd8738 100644 --- a/README.md +++ b/README.md @@ -415,6 +415,10 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Meilisearch](/software/meilisearch) +### nats-server + +* [nats-server](/software/nats-server) + ### Owncast * [owncast](/software/owncast) From c1dc43224c9258eeb224aedd334133bd29a290d6 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 30 Dec 2023 11:52:04 +0100 Subject: [PATCH 3/3] cleanup --- software/nats-server/egg-n-a-t-s.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/software/nats-server/egg-n-a-t-s.json b/software/nats-server/egg-n-a-t-s.json index 2de08a78..b3f6b213 100644 --- a/software/nats-server/egg-n-a-t-s.json +++ b/software/nats-server/egg-n-a-t-s.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-12-29T13:41:08-08:00", + "exported_at": "2023-12-30T11:50:55+01:00", "name": "NATS", "author": "pterodactyl@geosk.xyz", "description": "NATS is a simple, secure and performant communications system for digital systems, services and devices. NATS is part of the Cloud Native Computing Foundation (CNCF). NATS has over 40 client language implementations, and its server can run on-premise, in the cloud, at the edge, and even on a Raspberry Pi. NATS can secure and simplify design and operation of modern distributed systems.", @@ -22,20 +22,20 @@ }, "scripts": { "installation": { - "script": "# NATS Server installer.\r\n# Authored by Geosskk\r\n#! \/bin\/bash\r\n\r\napt update\r\napt install -y curl unzip\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"amd64\" || echo \"arm64\")\r\n\r\ncd \/mnt\/server\r\n\r\nVERSION_RESPONSE=$(curl -sLI -o \/dev\/null -w '%{http_code}' https:\/\/github.com\/nats-io\/nats-server\/releases\/tag\/v${NATS_VERSION})\r\n\r\nif [[ \"$VERSION_RESPONSE\" -ne 200 ]]; then\r\n echo \"Specified version not found, using latest.\"\r\n\r\n LATEST_TAG=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest | grep \"tag_name\" | cut -d : -f 2,3 | tr -d \"v[:blank:]\\\",\")\r\n # FILE_URL=$(curl -s https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest | grep \"browser_download_url\" | cut -d : -f 2,3 | tr -d \"[:blank:]\\\",\" | grep \"linux-${ARCH}.zip\")\r\n\r\n if [ -z \"$LATEST_TAG\" ]; then\r\n echo \"Unable to get the latest release's info.\"\r\n exit 1\r\n fi\r\n\r\n echo \"Found latest tag v$LATEST_TAG\"\r\n\r\n NATS_VERSION=$LATEST_TAG\r\n\r\n FILE_URL=\"https:\/\/github.com\/nats-io\/nats-server\/releases\/download\/v${NATS_VERSION}\/nats-server-v${NATS_VERSION}-linux-${ARCH}.zip\"\r\nelse\r\n echo \"Version $NATS_VERSION found.\"\r\n\r\n FILE_URL=\"https:\/\/github.com\/nats-io\/nats-server\/releases\/download\/v${NATS_VERSION}\/nats-server-v${NATS_VERSION}-linux-${ARCH}.zip\"\r\nfi\r\n\r\necho \"The file URL is $FILE_URL\"\r\n\r\nFILE_URL_RESPONSE=$(curl -sLI -o \/dev\/null -w '%{http_code}' $FILE_URL)\r\n\r\nif [[ \"$FILE_URL_RESPONSE\" -ne 200 ]]; then\r\n echo \"The file URL failed to respond with status code 200, responded with $FILE_URL_RESPONSE.\"\r\n exit 1\r\nfi\r\n\r\ncurl -L ${FILE_URL} -o nats-server.zip\r\nunzip nats-server.zip\r\nrm nats-server.zip\r\ncp nats-server-v${NATS_VERSION}-linux-${ARCH}\/* .\/\r\nrm -R nats-server-v${NATS_VERSION}-linux-${ARCH}\/\r\n\r\nchmod +x nats-server", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n\r\n# NATS Server installer.\r\n# Authored by Geosskk\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/nats-io\/nats-server\/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-amd64.tar.gz\" || echo \"linux-arm64.tar.gz\")\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\ncurl -sSL -o nats-server.tar.gz ${DOWNLOAD_URL}\r\ntar xvf nats-server.tar.gz --strip-components=1\r\nrm nats-server.tar.gz\r\n\r\nchmod +x nats-server\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, "variables": [ { "name": "Version", - "description": "The version of NATS to install, if not found will try to get the latest release.", - "env_variable": "NATS_VERSION", - "default_value": "2.10.7", + "description": "The version of NATS to install.\r\nFor a specific version, example: v2.10.7", + "env_variable": "VERSION", + "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20", + "rules": "required|string|max:20", "field_type": "text" }, {