haveachin / Infrared
Licence: gpl-3.0
An ultra lightweight minecraft reverse proxy and idle placeholder
Stars: ✭ 59
Programming Languages
go
31211 projects - #10 most used programming language
Projects that are alternatives of or similar to Infrared
Infini Gateway
INFINI-GATEWAY(极限网关), a high performance and lightweight gateway written in golang, for elasticsearch and his friends.
Stars: ✭ 272 (+361.02%)
Mutual labels: lightweight, proxy, reverse-proxy
Gate
A high performant & paralleled Minecraft proxy server with scalability, flexibility & excellent server version support - ready for the cloud!
Stars: ✭ 102 (+72.88%)
Mutual labels: minecraft, minecraft-server, proxy
Obsidian
[WIP] A C# implementation of the Minecraft server protocol. (.NET 5)
Stars: ✭ 89 (+50.85%)
Mutual labels: minecraft, minecraft-server, lightweight
Gdlauncher
GDLauncher is a simple, yet powerful Minecraft custom launcher with a strong focus on the user experience
Stars: ✭ 386 (+554.24%)
Mutual labels: minecraft, minecraft-server, vanilla
Mcsmanager
轻量级,开箱即用,多实例和支持 Docker 的 Minecraft 服务端管理面板
Stars: ✭ 829 (+1305.08%)
Mutual labels: minecraft, minecraft-server
Nukkit
Cloudburst Nukkit - Nuclear-Powered Minecraft: Bedrock Edition Server Software
Stars: ✭ 776 (+1215.25%)
Mutual labels: minecraft, minecraft-server
Feather
A Minecraft server implementation in Rust
Stars: ✭ 896 (+1418.64%)
Mutual labels: minecraft, minecraft-server
Essentials
The essential plugin suite for Minecraft servers.
Stars: ✭ 957 (+1522.03%)
Mutual labels: minecraft, minecraft-server
Spike
📣 A fast reverse proxy written in PHP that helps to expose local services to the internet
Stars: ✭ 582 (+886.44%)
Mutual labels: proxy, reverse-proxy
Drivebackupv2
Uploads Minecraft backups to Google Drive/OneDrive or by (S)FTP
Stars: ✭ 26 (-55.93%)
Mutual labels: minecraft, minecraft-server
Shopchest
ShopChest - Spigot/Bukkit Plugin
Stars: ✭ 38 (-35.59%)
Mutual labels: minecraft, minecraft-server
Minet
A (not so) basic Minecraft Pocket Edition server written in C#
Stars: ✭ 706 (+1096.61%)
Mutual labels: minecraft, minecraft-server
Node Minecraft Protocol
Parse and serialize minecraft packets, plus authentication and encryption.
Stars: ✭ 697 (+1081.36%)
Mutual labels: minecraft, proxy
Nodemc
Meta repository for information on the project as a whole
Stars: ✭ 16 (-72.88%)
Mutual labels: minecraft, minecraft-server
Hiproxy
🛠 hiproxy is a lightweight proxy tool for Front-End developers based on Node.js that supports an NGINX-like configuration. 🔥
Stars: ✭ 629 (+966.1%)
Mutual labels: proxy, reverse-proxy
Simple Traefik Proxy And Services
Get your own services running - within just a few minutes and with automatic SSL.
Stars: ✭ 21 (-64.41%)
Mutual labels: proxy, reverse-proxy
Minecraft Server Status
Minecraft server status and -info script for PHP
Stars: ✭ 39 (-33.9%)
Mutual labels: minecraft, minecraft-server
Katwebx
An extremely fast static web server and reverse proxy for the modern web.
Stars: ✭ 39 (-33.9%)
Mutual labels: lightweight, reverse-proxy
Proxykit
A toolkit to create code-first HTTP reverse proxies on ASP.NET Core
Stars: ✭ 1,063 (+1701.69%)
Mutual labels: proxy, reverse-proxy
Infrared
An ultra lightweight Minecraft reverse proxy and idle placeholder: Ever wanted to have only one exposed port on your server for multiple Minecraft servers? Then Infrared is the tool you need! Infrared works as a reverse proxy using a subdomain to connect clients to a specific Minecraft server. It works similar to Nginx for those of you who are familiar.
Features
- [x] Reverse Proxy
- [x] Display Placeholder Server
- [x] Autostart Server when pinged
- [x] Logger Callback URLs
- [ ] REST API
Deploy
$ docker build --no-cache -t haveachin/infrared:latest https://github.com/haveachin/infrared.git &&
docker image prune -f --filter label=stage=intermediate &&
docker run -d --name infrared --restart=unless-stopped -it -v /usr/local/infrared/configs/:/configs -p 25565:25565/tcp --expose 25565 haveachin/infrared:latest
Update
$ docker build --no-cache -t haveachin/infrared:latest https://github.com/haveachin/infrared.git &&
docker image prune -f --filter label=stage=intermediate &&
docker stop infrared &&
docker rm infrared &&
docker run -d --name infrared --restart=unless-stopped -it -v /usr/local/infrared/configs/:/configs -p 25565:25565/tcp --expose 25565 haveachin/infrared:latest
Environment Variables
Info: Command-line flags override environment variables.
INFRARED_CONFIG_PATH
is the path to all your server configs [default: "./configs/"
]
Command-Line Flags
-config-path
specifies the path to all your server configs [default: "./configs/"
]
Example Usage
./infrared -config-path="."
Proxy Config
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
domainName | String | true | localhost | Should be fully qualified domain name. Note: Every string is accepted. So localhost is also valid. |
listenTo | String | true | :25565 | The address (usually just the port; so short term :port ) that the proxy should listen to for incoming connections.Accepts basically every address format you throw at it. Valid examples: :25565 , localhost:25565 , 0.0.0.0:25565 , 127.0.0.1:25565 , example.de:25565
|
proxyTo | String | true | The address that the proxy should send incoming connections to. Accepts Same formats as the listenTo field. |
|
disconnectMessage | String | false | Sorry {{username}}, but the server is offline. | The message a client sees when he gets disconnected from Infrared due to the server on proxyTo won't respond. Currently available placeholders:- username the username of player that tries to connect- now the current server time- remoteAddress the address of the client that tries to connect- localAddress the local address of the server- domain the domain of the proxy (same as domainName )- proxyTo the address that the proxy proxies to (same as proxyTo )- listenTo the address that Infrared listens on (same as listenTo ) |
timeout | Integer | true | 1000 | The time in milliseconds for the proxy to wait for a ping response before the host (the address you proxyTo) will be declared as offline. This "online check" will be resend for every new connection. |
proxyProtocol | Boolean | false | false | If Infrared should use HAProxy's Proxy Protocol for IP forwarding. Warning: You should only ever set this to true if you now that the server you proxyTo is compatible. |
docker | Object | false | See Docker | Optional Docker configuration to automatically start a container and stop it again if unused. Note: Infrared will not take direct connections into account. Be sure to route all traffic that connects to the container through Infrared. |
onlineStatus | Object | false | This is the response that Infrared will give when a client asks for the server status and the server is online. | |
offlineStatus | Object | false | See [Response Status](#Response Status) | This is the response that Infrared will give when a client asks for the server status and the server is offline. |
callbackServer | Object | false | See [Callback Server](#Callback Server) | Optional callback server configuration to send events as a POST request to a specified URL. |
Docker
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
dnsServer | String | false | 127.0.0.11 | The address of the DNS that resolves the container names. |
containerName | String | true | The name of the container that should be automatically started/stopped. | |
portainer | Object | false | Optional Portainer configuration for authorization management. |
Portainer
More info on Portainer.
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
address | String | true | URL of the Portainer instance. | |
endpointId | String | true | The ID typically an integer of the docker endpoint in the portainer instance. | |
username | String | true | Username for the Portainer user. | |
password | String | true | Password for the Portainer user. |
Response Status
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
versionName | String | false | Infrared 1.16.5 | The version name of the Minecraft Server. |
protocolNumber | Integer | true | 754 | The protocol version number. |
maxPlayers | Integer | false | 20 | The maximum number of players that can join the server. Note: Infrared will not limit more players from joining. This number is just for display. |
playersOnline | Integer | false | 0 | The number of online players. Note: Infrared will not that this number is also just for display. |
playerSamples | Array | false | An array of player samples. See [Player Sample](#Player Sample). | |
iconPath | String | false | The path to the server icon. | |
motd | String | false | The motto of the day, short MOTD. |
Player Sample
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
Name | String | true | Username of the player. | |
uuid | String | false | UUID of the player. |
Callback Server
Field Name | Type | Required | Default | Description |
---|---|---|---|---|
url | String | true | URL of the callback server URL. | |
events | Array | true | A string array of event names. Currently available event names are: - Error will send error logs- PlayerJoin will send player joins- PlayerLeave will send player leaves- ContainerStart will send container starts- ContainerStop will send container stops |
Examples
Minimal Config
min.example.com
{
"proxyTo": ":8080"
}
Full Config
full.example.com
{
"domainName": "mc.example.com",
"listenTo": ":25565",
"proxyTo": ":8080",
"timeout": 1000,
"disconnectMessage": "Username: {{username}}\nNow: {{now}}\nRemoteAddress: {{remoteAddress}}\nLocalAddress: {{localAddress}}\nDomain: {{domain}}\nProxyTo: {{proxyTo}}\nListenTo: {{listenTo}}",
"docker": {
"dnsServer": "127.0.0.11",
"containerName": "mc",
"timeout": 30000,
"portainer": {
"address": "localhost:9000",
"endpointId": "1",
"username": "admin",
"password": "foobar"
}
},
"onlineStatus": {
"versionName": "1.16.5",
"protocolNumber": 754,
"maxPlayers": 20,
"playersOnline": 2,
"playerSamples": [
{
"name": "Steve",
"uuid": "8667ba71-b85a-4004-af54-457a9734eed7"
},
{
"name": "Alex",
"uuid": "ec561538-f3fd-461d-aff5-086b22154bce"
}
],
"motd": "Join us!"
},
"offlineStatus": {
"versionName": "1.16.5",
"protocolNumber": 754,
"maxPlayers": 20,
"playersOnline": 0,
"motd": "Server is currently offline"
},
"callbackServer": {
"url": "https://mc.example.com/callback",
"events": [
"Error",
"PlayerJoin",
"PlayerLeave",
"ContainerStart",
"ContainerStop"
]
}
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].