From 51e0b63c59fc25b9367af17d2dbae844dac77882 Mon Sep 17 00:00:00 2001 From: Lucas OULIEU Date: Tue, 6 Feb 2024 01:00:04 +0100 Subject: [PATCH] Infrared Commit --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/proxy/README.md | 1 + game_eggs/minecraft/proxy/java/README.md | 6 +- .../minecraft/proxy/java/infrared/README.md | 17 +++ .../infrared/egg-infrared-three-server.json | 112 ++++++++++++++++++ .../infrared/egg-infrared-two-server.json | 112 ++++++++++++++++++ .../proxy/java/infrared/egg-manual.json | 62 ++++++++++ .../minecraft/proxy/java/infrared/todo.md | 2 + 10 files changed, 314 insertions(+), 1 deletion(-) create mode 100644 game_eggs/minecraft/proxy/java/infrared/README.md create mode 100644 game_eggs/minecraft/proxy/java/infrared/egg-infrared-three-server.json create mode 100644 game_eggs/minecraft/proxy/java/infrared/egg-infrared-two-server.json create mode 100644 game_eggs/minecraft/proxy/java/infrared/egg-manual.json create mode 100644 game_eggs/minecraft/proxy/java/infrared/todo.md diff --git a/README.md b/README.md index 62273c673..5ed3402f3 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Travertine](game_eggs/minecraft/proxy/java/travertine) * [Velocity](game_eggs/minecraft/proxy/java/velocity) * [Waterfall](game_eggs/minecraft/proxy/java/waterfall) + * [Infrared](game_eggs/minecraft/proxy/java/infrared) * [Bedrock](game_eggs/minecraft/proxy/bedrock) * [Waterdog PE](game_eggs/minecraft/proxy/bedrock/waterdog_pe) * [Cross Platform](game_eggs/minecraft/proxy/cross_platform) diff --git a/game_eggs/README.md b/game_eggs/README.md index c450b2472..5aad8425e 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -101,6 +101,7 @@ * [Travertine](minecraft/proxy/java/travertine) * [Velocity](minecraft/proxy/java/velocity) * [Waterfall](minecraft/proxy/java/waterfall) + * [Infrared](minecraft/proxy/java/infrared) * [Bedrock](minecraft/proxy/bedrock) * [Waterdog PE](minecraft/proxy/bedrock/waterdog_pe) * [Cross Platform](minecraft/proxy/cross_platform) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index 9e374b05f..333c31f65 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -50,3 +50,4 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [Velocity](proxy/java/velocity) * [VIAaas](proxy/java/viaaas) * [Waterfall](proxy/java/waterfall) + * [Infrared](proxy/java/infrared) diff --git a/game_eggs/minecraft/proxy/README.md b/game_eggs/minecraft/proxy/README.md index a1c5b84fa..e196e234a 100644 --- a/game_eggs/minecraft/proxy/README.md +++ b/game_eggs/minecraft/proxy/README.md @@ -5,6 +5,7 @@ * [Velocity](/game_eggs/minecraft/proxy/java/velocity) * [VIAaaS](/game_eggs/minecraft/proxy/java/viaaas) * [Waterfall](/game_eggs/minecraft/proxy/java/waterfall) + * [Infrared](/game_eggs/minecraft/proxy/java/infrared) * [Bedrock](/game_eggs/minecraft/proxy/bedrock) * [Waterdog PE](/game_eggs/minecraft/proxy/bedrock/waterdogpe) * [Cross Platform](/game_eggs/minecraft/proxy/cross_platform) diff --git a/game_eggs/minecraft/proxy/java/README.md b/game_eggs/minecraft/proxy/java/README.md index 6cb3bc02e..afcbd15fb 100644 --- a/game_eggs/minecraft/proxy/java/README.md +++ b/game_eggs/minecraft/proxy/java/README.md @@ -14,4 +14,8 @@ Velocity is a Minecraft server proxy with unparalleled server support, scalabili #### Waterfall [Waterfall](https://papermc.io/downloads#Waterfall) -Paper fork of the BungeeCord software, with improved Forge support and more features. \ No newline at end of file +Paper fork of the BungeeCord software, with improved Forge support and more features. + +#### Infrared +[Infrared](https://https://infrared.dev/) +Infrared is a reverse proxy for Minecraft servers, that allow you to map server by domain name. \ No newline at end of file diff --git a/game_eggs/minecraft/proxy/java/infrared/README.md b/game_eggs/minecraft/proxy/java/infrared/README.md new file mode 100644 index 000000000..16e617d87 --- /dev/null +++ b/game_eggs/minecraft/proxy/java/infrared/README.md @@ -0,0 +1,17 @@ +# Infrared server +Reverse Proxy for Minecraft servers. + +## Reverse Proxy Configuration +Multiple egg are available to configure the reverse proxy. + + * The infrared-manual egg : Please refer to [Infrared Doc](https://infrared.dev/config/proxies) + * The infrared-x-server egg : You need to setup the variable defined in the egg (X_DOMAINS / X_ADDRESSES). + +>If you want to extend the number of Proxy just duplicate the "Proxy #1 Domains / Addresses" variable and change their respective variable name / Environment variable name to an increment. And increment the PROXY_COUNT variable. + +>For now it's the only way to extend the number of Proxy, like a custom egg. + + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/game_eggs/minecraft/proxy/java/infrared/egg-infrared-three-server.json b/game_eggs/minecraft/proxy/java/infrared/egg-infrared-three-server.json new file mode 100644 index 000000000..98ca95cf8 --- /dev/null +++ b/game_eggs/minecraft/proxy/java/infrared/egg-infrared-three-server.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-02-05T22:54:33+01:00", + "name": "Basic - Two server", + "author": "oulieu.lucas@gmail.com", + "description": "The basic installation on infrared with two server configurable via environment variables.", + "features": null, + "docker_images": { + "shadowner\/infrared-egg:latest": "shadowner\/infrared-egg:latest" + }, + "file_denylist": [], + "startup": "infrared", + "config": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bind\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"keepAliveTimeout\": \"{{env.keepAliveTimeout}}s\",\r\n \"filters.rateLimiter.requestLimit\": \"{{env.rateLimiterMaxRequests}}\",\r\n \"filters.rateLimiter.windowLength\": \"{{env.rateLimiterTimeWindow}}s\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"System is online\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": null, + "container": "alpine:3.4", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Keep Alive Timeout", + "description": "Maximum duration between packets before the client gets timed out.", + "env_variable": "keepAliveTimeout", + "default_value": "30", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Request Limit", + "description": "Request Limit is the amount of times an IP address can create a new connection before it gets blocked.", + "env_variable": "rateLimiterMaxRequests", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Window Length", + "description": "Windows Length is the time frame for the Request Limit.", + "env_variable": "rateLimiterTimeWindow", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Proxy - #1 Domains", + "description": "A list of domains for the addresses listed, separated by a coma.", + "env_variable": "DOMAINS_1", + "default_value": "localhost", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10000", + "field_type": "text" + }, + { + "name": "Proxy - #1 Addresses", + "description": "A list of addresses including ports separated by a coma.", + "env_variable": "ADDRESSES_1", + "default_value": "127.0.0.1:25565", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200000", + "field_type": "text" + }, + { + "name": "Proxy - #2 Domains", + "description": "A list of domains for the addresses listed, separated by a coma.", + "env_variable": "DOMAINS_2", + "default_value": "localhost", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10000", + "field_type": "text" + }, + { + "name": "Proxy - #2 Addresses", + "description": "A list of addresses including ports separated by a coma.", + "env_variable": "ADDRESSES_2", + "default_value": "127.0.0.1:25565", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200000", + "field_type": "text" + }, + { + "name": "Proxy Count", + "description": "Used to keep track of the number of proxies to create.", + "env_variable": "PROXY_COUNT", + "default_value": "2", + "user_viewable": false, + "user_editable": false, + "rules": "required|int", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/game_eggs/minecraft/proxy/java/infrared/egg-infrared-two-server.json b/game_eggs/minecraft/proxy/java/infrared/egg-infrared-two-server.json new file mode 100644 index 000000000..98ca95cf8 --- /dev/null +++ b/game_eggs/minecraft/proxy/java/infrared/egg-infrared-two-server.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2024-02-05T22:54:33+01:00", + "name": "Basic - Two server", + "author": "oulieu.lucas@gmail.com", + "description": "The basic installation on infrared with two server configurable via environment variables.", + "features": null, + "docker_images": { + "shadowner\/infrared-egg:latest": "shadowner\/infrared-egg:latest" + }, + "file_denylist": [], + "startup": "infrared", + "config": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bind\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"keepAliveTimeout\": \"{{env.keepAliveTimeout}}s\",\r\n \"filters.rateLimiter.requestLimit\": \"{{env.rateLimiterMaxRequests}}\",\r\n \"filters.rateLimiter.windowLength\": \"{{env.rateLimiterTimeWindow}}s\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"System is online\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": null, + "container": "alpine:3.4", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Keep Alive Timeout", + "description": "Maximum duration between packets before the client gets timed out.", + "env_variable": "keepAliveTimeout", + "default_value": "30", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Request Limit", + "description": "Request Limit is the amount of times an IP address can create a new connection before it gets blocked.", + "env_variable": "rateLimiterMaxRequests", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Window Length", + "description": "Windows Length is the time frame for the Request Limit.", + "env_variable": "rateLimiterTimeWindow", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Proxy - #1 Domains", + "description": "A list of domains for the addresses listed, separated by a coma.", + "env_variable": "DOMAINS_1", + "default_value": "localhost", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10000", + "field_type": "text" + }, + { + "name": "Proxy - #1 Addresses", + "description": "A list of addresses including ports separated by a coma.", + "env_variable": "ADDRESSES_1", + "default_value": "127.0.0.1:25565", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200000", + "field_type": "text" + }, + { + "name": "Proxy - #2 Domains", + "description": "A list of domains for the addresses listed, separated by a coma.", + "env_variable": "DOMAINS_2", + "default_value": "localhost", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10000", + "field_type": "text" + }, + { + "name": "Proxy - #2 Addresses", + "description": "A list of addresses including ports separated by a coma.", + "env_variable": "ADDRESSES_2", + "default_value": "127.0.0.1:25565", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200000", + "field_type": "text" + }, + { + "name": "Proxy Count", + "description": "Used to keep track of the number of proxies to create.", + "env_variable": "PROXY_COUNT", + "default_value": "2", + "user_viewable": false, + "user_editable": false, + "rules": "required|int", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/game_eggs/minecraft/proxy/java/infrared/egg-manual.json b/game_eggs/minecraft/proxy/java/infrared/egg-manual.json new file mode 100644 index 000000000..4cc702bae --- /dev/null +++ b/game_eggs/minecraft/proxy/java/infrared/egg-manual.json @@ -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-02-05T22:39:14+01:00", + "name": "Basic - Manual Configuation", + "author": "oulieu.lucas@gmail.com", + "description": "The base to run Infrared, however you will need to manually set the proxies in the `proxies` directory. cf : https://infrared.dev/config/proxies", + "features": null, + "docker_images": { + "shadowner\/infrared-egg:latest": "shadowner\/infrared-egg:latest" + }, + "file_denylist": [], + "startup": "infrared", + "config": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bind\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"keepAliveTimeout\": \"{{env.keepAliveTimeout}}s\",\r\n \"filters.rateLimiter.requestLimit\": \"{{env.rateLimiterMaxRequests}}\",\r\n \"filters.rateLimiter.windowLength\": \"{{env.rateLimiterTimeWindow}}s\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"System is online\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": null, + "container": "alpine:3.4", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Keep Alive Timeout", + "description": "Maximum duration between packets before the client gets timed out.", + "env_variable": "keepAliveTimeout", + "default_value": "30", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Request Limit", + "description": "Request Limit is the amount of times an IP address can create a new connection before it gets blocked.", + "env_variable": "rateLimiterMaxRequests", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Rate Limiter - Window Length", + "description": "Windows Length is the time frame for the Request Limit.", + "env_variable": "rateLimiterTimeWindow", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/game_eggs/minecraft/proxy/java/infrared/todo.md b/game_eggs/minecraft/proxy/java/infrared/todo.md new file mode 100644 index 000000000..10b2cdbf4 --- /dev/null +++ b/game_eggs/minecraft/proxy/java/infrared/todo.md @@ -0,0 +1,2 @@ +# TODO +- Put the dockerfile in the 'yolks' repo \ No newline at end of file