2020-08-15 23:02:35 +02:00
VIAaaS
---
2021-01-27 16:20:43 +01:00
2022-07-20 00:08:11 +02:00
[![ViaVersion Discord ](https://img.shields.io/badge/chat-on%20discord-blue.svg )](https://viaversion.com/discord)
[![Powered by ViaVersion ](https://img.shields.io/badge/Powered%20by-ViaVersion-blue.svg )](https://viaversion.com/)
2021-06-14 21:59:37 +02:00
VIAaaS - ViaVersion as a Service - Standalone ViaVersion proxy
2021-09-27 18:39:52 +02:00
< img alt = "VIAaaS Logo (VIA logo with structural formula of aspirin)" height = "200" src = "https://viaversion.github.io/VIAaaS/src/main/resources/web/img/logo.webp" >
2021-01-27 16:20:43 +01:00
2021-08-19 11:55:46 +02:00
Address generator: https://jo0001.github.io/ViaSetup/aspirin
2021-03-26 02:34:44 +01:00
Public instances: https://github.com/ViaVersion/VIAaaS/wiki/List-of-Public-Instances
2021-06-19 20:39:06 +02:00
## Demo
2021-06-19 22:04:06 +02:00
Online mode: https://youtu.be/9MKKjuoe66k
2021-06-19 20:39:06 +02:00
2021-06-19 22:04:06 +02:00
Using with GeyserConnect: https://youtu.be/_LItAIIFmsI
2021-06-19 20:39:06 +02:00
2021-07-21 14:58:56 +02:00
Using with GeyserConnect on offline mode: https://youtu.be/-hZESD61nSU
2022-07-20 00:08:11 +02:00
Using with OpenAuthMod: https://youtu.be/h3EfNSxxf8k
2021-06-19 22:04:06 +02:00
Offline mode tutorial: https://youtu.be/lPdELnrxmp0
2021-06-19 20:39:06 +02:00
2021-02-18 23:08:42 +01:00
## How does it work?
2021-05-04 22:15:06 +02:00
- [ViaVersion ](https://viaversion.com ), [ViaBackwards ](https://viaversion.com/backwards )
and [ViaRewind ](https://viaversion.com/rewind ) translates the connections to backend server.
2022-06-04 21:58:54 +02:00
- VIAaaS auth page stores account credentials in the player's browser local storage.
- It requires a CORS Proxy for calling Mojang APIs.
2022-07-20 00:08:11 +02:00
- Account credentials aren't sent to VIAaaS instance by default.
2022-06-04 21:58:54 +02:00
- The web page receives and validates the joinGame's session hash from VIAaaS instance.
2021-02-18 23:08:42 +01:00
## Setting up server instance
2021-05-04 22:15:06 +02:00
Download: [GitHub Actions ](https://github.com/ViaVersion/VIAaaS/actions ) (needs to be logged into GitHub)
2021-05-21 01:00:21 +02:00
or [JitPack ](https://jitpack.io/com/github/ViaVersion/VIAaaS/master-SNAPSHOT/VIAaaS-master-SNAPSHOT-all.jar )
2020-11-15 15:44:13 +01:00
2021-06-17 16:29:23 +02:00
### How to download and start VIAaaS server:
2021-05-04 22:15:06 +02:00
2021-02-24 00:03:17 +01:00
```sh
2021-05-21 01:00:21 +02:00
curl -Lf --output VIAaaS-all.jar "https://jitpack.io/com/github/ViaVersion/VIAaaS/master-SNAPSHOT/VIAaaS-master-SNAPSHOT-all.jar"
2021-02-24 00:03:17 +01:00
java -jar VIAaaS-all.jar
```
2021-05-04 22:15:06 +02:00
2021-02-18 23:08:42 +01:00
- Requires Java 11
2021-04-29 20:17:58 +02:00
- Default Minecraft: ```via.localhost``` with port 25565
- Default HTTPS: ```https://localhost:25543/```
2021-02-18 23:08:42 +01:00
- Default WS URL: ```wss://localhost:25543/ws```
2021-01-28 20:32:05 +01:00
2021-04-29 19:54:36 +02:00
### How to create a public server
2021-05-04 22:15:06 +02:00
2022-07-20 00:08:11 +02:00
- You need a DNS wildcard pointing to VIAaaS instance, like ``*.example.com -> 192.168.123.123``.
2021-04-29 20:01:16 +02:00
- Configure the hostname in the config
2021-04-29 19:54:36 +02:00
- Open the Minecraft port (25565)
2022-07-20 00:08:11 +02:00
- The HTTPS page needs a valid SSL certificate, you can use a reverse proxy like [Apache ](https://httpd.apache.org/ ) (with
a [Let's Encrypt ](https://letsencrypt.org/ ) certificate).
2021-04-29 19:54:36 +02:00
2021-02-18 23:08:42 +01:00
## CORS Proxy
2021-05-04 22:15:06 +02:00
2022-07-20 00:08:11 +02:00
- Due to Mojang API not allowing cross-origin requests, we need to use a CORS proxy
2021-02-18 23:21:41 +01:00
- Note the ending slash in cors-anywhere address
2021-02-17 15:12:28 +01:00
2021-02-18 23:08:42 +01:00
## Usage for players
2021-05-04 22:15:06 +02:00
2022-07-20 00:08:11 +02:00
You'll need to specify which server you want to connect through address parameters
added as prefix in ``via.localhost`` or via web page (default https://localhost:25543/).
2022-06-04 21:58:54 +02:00
2021-06-17 16:29:23 +02:00
#### Offline mode:
2021-05-04 22:15:06 +02:00
2021-04-29 20:17:58 +02:00
- Connect to ```mc.example.net.via.localhost```
2020-11-01 20:55:38 +01:00
2021-06-17 16:29:23 +02:00
#### Online mode:
2021-05-04 22:15:06 +02:00
2021-07-31 18:22:04 +02:00
Web login:
2021-04-29 20:17:58 +02:00
- Go to VIAaaS auth webpage (default is https://localhost:25543/)
2021-07-22 02:43:12 +02:00
- Listen to the username A (you'll use it to connect to the VIAaaS instance).
- Add the account B (you'll use it in backend server).
2021-04-29 19:33:38 +02:00
- Keep the page open
2022-06-04 21:58:54 +02:00
- Connect with your account A to ```mc.example.com._u(account B).via.localhost```
2021-04-29 19:33:38 +02:00
- Approve the login in the webpage
2020-11-21 10:51:01 +01:00
2022-06-04 21:58:54 +02:00
Web login via token caching:
- Open the web page and save your account in your browser
2022-07-20 00:08:11 +02:00
- Send your access token to the instance. After that you can close the page.
- Connect to ```mc.example.com.via.localhost``` with the account you sent the token.
2022-06-04 21:58:54 +02:00
2022-02-24 00:16:46 +01:00
Fabric/Forge client:
2021-07-31 18:22:04 +02:00
2022-06-04 21:58:54 +02:00
- Install [OpenAuthMod ](https://github.com/RaphiMC/OpenAuthMod ) in your client.
2021-07-31 18:22:04 +02:00
- Join the server: ```mc.example.net.via.localhost```
- Approve the login
2021-04-29 19:33:38 +02:00
### Address options
2021-05-04 22:15:06 +02:00
2021-06-17 16:29:23 +02:00
#### Example address:
2021-05-04 22:15:06 +02:00
2021-04-29 20:17:58 +02:00
- ```server.example.net._p25565._v1_12_2._of._uBACKUSERNAME.via.example.com```
- ```server.example.net.v_1_8.via.example.com```
2021-04-29 19:33:38 +02:00
- It's inspired by [Tor2web ](https://www.tor2web.org/ ) proxies.
2021-02-18 23:08:42 +01:00
2021-06-17 16:29:23 +02:00
#### Address parts:
2021-05-04 22:15:06 +02:00
2021-04-29 20:17:58 +02:00
- You can use ``(option)_(value)`` too, like ``p_25565``.
2021-04-29 19:33:38 +02:00
- ```server.example.net```: backend server address
2021-02-18 23:08:42 +01:00
- ```_p```: backend port
2021-09-04 14:58:48 +02:00
- ```_v```: backend version ([protocol id](https://wiki.vg/Protocol_version_numbers) or name, replace ``.`` with ``_``)
2022-06-04 21:58:54 +02:00
. ```AUTO``` is default (with 1.8 as fallback).
- ```_o```: ```true``` to force online mode in frontend, ```false``` to force offline mode in frontend. If not set, it
will be based on backend online mode.
- ```_u```: username to use in backend connection (default is front-end username)
2021-04-29 20:17:58 +02:00
- ```via.example.com```: instance address (defined in config)
2021-02-18 23:08:42 +01:00
2020-11-21 10:51:01 +01:00
## WARNING
2021-05-04 22:15:06 +02:00
2021-07-22 02:43:12 +02:00
- VIAaaS may trigger anti-cheats, due to block, item, movement and other differences between versions. USE AT OWN RISK.
2021-03-16 21:22:32 +01:00
- Take care of browser local storage. Check for XSS vulnerabilities on your domain.
2022-06-04 21:58:54 +02:00
- Check the security of CORS proxy, it will be used for calling to Mojang API.
2020-12-24 11:11:29 +01:00
## FAQ
2021-05-04 22:15:06 +02:00
2021-04-29 19:33:38 +02:00
### Accounts
2021-05-04 22:15:06 +02:00
2021-09-25 17:37:10 +02:00
#### Why to use an online webpage for online mode?:
2021-05-04 22:15:06 +02:00
2021-07-22 02:43:12 +02:00
- It's easier to maintain in that way, because providing login via chat requires encoding and decoding more packets,
2021-09-25 17:37:10 +02:00
which reduces maintainability.
2021-04-29 19:33:38 +02:00
- It allows your account password and token to be kept with you.
2021-02-19 15:06:56 +01:00
2021-06-17 16:29:23 +02:00
#### How to use Microsoft Account?:
2021-05-04 22:15:06 +02:00
2022-06-04 21:58:54 +02:00
- If you're an administrator of the instance, edit ```config/web/js/config.js``` (default is in the jar) and
configure your [Azure Client ID ](https://wiki.vg/Microsoft_Authentication_Scheme#Microsoft_OAuth_Flow ) and your domain
whitelist.
2021-04-29 20:17:58 +02:00
2021-04-29 19:33:38 +02:00
### Connection
2021-05-04 22:15:06 +02:00
2021-06-17 16:29:23 +02:00
#### How to use IPv6?:
2021-05-04 22:15:06 +02:00
2021-07-22 02:43:12 +02:00
- The hostname parser currently doesn't support direct IPv6, but you can use a DNS name with https://sslip.io/
2021-04-05 00:07:48 +02:00
2022-06-04 21:58:54 +02:00
#### I'm getting a DNS error/"Unknown host" while connecting to via.localhost
2021-05-04 22:15:06 +02:00
2022-06-04 21:58:54 +02:00
- Try configuring ```via.localho.st``` as hostname suffix instead
2021-02-21 01:18:47 +01:00
2021-06-17 16:29:23 +02:00
#### How to use with Geyser?
2021-05-04 22:15:06 +02:00
2021-07-22 02:43:12 +02:00
- Set the parameters in Geyser's `address` field:
2021-02-21 09:03:12 +01:00
```yml
remote:
# The IP address of the remote (Java Edition) server
2021-04-29 20:17:58 +02:00
address: 2b2t.org._v1_12_2.via.localhost
2021-02-21 09:03:12 +01:00
```
2021-05-04 22:15:06 +02:00
- If you are using a public GeyserConnect instance: connect to a publicly available VIAaaS instance,
2021-07-22 02:43:12 +02:00
like ```mc.example.com._v1_8.via.example.net``` as a Java Edition server.
2021-03-18 15:05:07 +01:00
2021-06-17 16:29:23 +02:00
#### Can I use it to connect to .onion Minecraft hidden servers?
2021-05-04 22:15:06 +02:00
- You can use .onion addresses if the instance is proxying the backend connections to TOR. Note that VIAaaS may log your
2022-07-20 00:08:11 +02:00
requests, and that your DNS queries may be sent unencrypted.
2021-04-29 19:33:38 +02:00
2021-06-17 16:29:23 +02:00
#### Can you support more versions / Is there some alternative?
2021-05-04 22:15:06 +02:00
2023-07-25 19:29:20 +02:00
- See [DirtMultiVersion ](https://github.com/DirtPowered/DirtMultiversion ) and [ViaProxy ](https://github.com/ViaVersion/ViaProxy )
2021-09-25 17:37:10 +02:00
#### Can I customize the files of HTTP server?
2022-07-20 00:08:11 +02:00
- Add files to ``config/web/`` directory