Skip to content
This repository has been archived by the owner on May 14, 2024. It is now read-only.

[Infrared] Addition of Infrared to Minecraft Proxy #2729

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions game_eggs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions game_eggs/minecraft/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
1 change: 1 addition & 0 deletions game_eggs/minecraft/proxy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 5 additions & 1 deletion game_eggs/minecraft/proxy/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
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.
17 changes: 17 additions & 0 deletions game_eggs/minecraft/proxy/java/infrared/README.md
Original file line number Diff line number Diff line change
@@ -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 |
112 changes: 112 additions & 0 deletions game_eggs/minecraft/proxy/java/infrared/egg-infrared-three-server.json
Original file line number Diff line number Diff line change
@@ -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": "[email protected]",
"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"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer if you PR an image to my repo. Why can't this be downloaded in the install script and ran from the home dir?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to the yolks repo ?
I will do it but no tonight sadly, it's in the Todo.md

I use my action on my repo to always fetch the latest infrared release, but I will look more into doing this step in the installation scripts, I had just no clue about how the installation script worked before finding this repo

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it uses github for releases you can use the git script - https://github.com/parkervcp/eggs/blob/master/scripts/github_release_grabber.sh

},
"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"
}
]
}
112 changes: 112 additions & 0 deletions game_eggs/minecraft/proxy/java/infrared/egg-infrared-two-server.json
Original file line number Diff line number Diff line change
@@ -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": "[email protected]",
"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"
}
]
}
62 changes: 62 additions & 0 deletions game_eggs/minecraft/proxy/java/infrared/egg-manual.json
Original file line number Diff line number Diff line change
@@ -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": "[email protected]",
"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"
}
]
}
2 changes: 2 additions & 0 deletions game_eggs/minecraft/proxy/java/infrared/todo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# TODO
- Put the dockerfile in the 'yolks' repo