2020-08-15 23:02:35 +02:00
VIAaaS
---
2021-01-27 16:20:43 +01:00
2021-01-27 16:21:28 +01:00
VIAaaS - ViaVersion ~~acetylsalicylic acid~~ as a Service - Standalone ViaVersion proxy
2021-01-27 16:20:43 +01:00
2021-03-26 02:34:44 +01:00
Public instances: https://github.com/ViaVersion/VIAaaS/wiki/List-of-Public-Instances
2021-03-26 14:12:40 +01:00
Discord: https://viaversion.com/discord
2021-04-29 19:33:38 +02:00
Supported versions: https://viaversion.com/
2021-03-30 23:42:22 +02:00
2021-02-18 23:08:42 +01:00
## How does it work?
2021-03-30 23:42:22 +02:00
- [ViaVersion ](https://viaversion.com ), [ViaBackwards ](https://viaversion.com/backwards ) and [ViaRewind ](https://viaversion.com/rewind ) translates the connections to backend server.
2021-03-16 21:19:03 +01:00
- VIAaaS auth page stores account credentials in the player's browser local storage. Check for XSS vulnerabilities on your domain.
2021-02-18 23:08:42 +01:00
- Due to technical/security reasons, it requires a CORS Proxy for calling Mojang APIs, which may make Mojang see that
as suspicious and reset/block your account password if the IP address seems suspect.
2021-02-18 23:21:41 +01:00
- Account credentials aren't sent to VIAaaS instance, though it's intermediated by CORS Proxy.
2021-04-29 19:33:38 +02:00
- VIAaaS receives a the session hash from instance and then the browser validates it to Mojang.
2021-02-18 23:08:42 +01:00
## Setting up server instance
2021-02-19 12:48:25 +01:00
Download: [GitHub Actions ](https://github.com/ViaVersion/VIAaaS/actions ) (needs to be logged into GitHub) 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-01-28 20:32:05 +01:00
How to start VIAaaS server:
2021-02-24 00:03:17 +01:00
```sh
java -jar VIAaaS-all.jar
```
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-04-29 20:01:16 +02:00
- You need a domain wildcarding to VIAaaS instance, like ``*.example.com -> 192.168.123.123``. You can use [DuckDNS ](https://duckdns.org/ ) DDNS service.
- Configure the hostname in the config
2021-04-29 19:54:36 +02:00
- Open the Minecraft port (25565)
2021-04-29 20:01:16 +02:00
- The HTTPS page needs a certificate, you can use [Apache ](https://httpd.apache.org/ ) (with a [Let's Encrypt ](https://letsencrypt.org/ ) certificate) as a proxy. See apache_copypasta.txt file.
2021-04-29 19:54:36 +02:00
2021-02-18 23:08:42 +01:00
## CORS Proxy
2021-02-18 23:21:41 +01:00
- For less chance of Mojang seeing the login as suspect, you (the player) should set up a CORS proxy on your machine.
- Note the ending slash in cors-anywhere address
2021-04-08 12:01:09 +02:00
- You can use my public instance at https://crp123-cors.herokuapp.com/ ([source](https://github.com/creeper123123321/cors-anywhere/)) too,
but proxies have a bit more chance of being seen as suspect.
2021-02-18 23:21:41 +01:00
Setting up [cors-anywhere ](https://www.npmjs.com/package/cors-anywhere ) on local machine:
2021-02-24 00:03:17 +01:00
```sh
git clone https://github.com/Rob--W/cors-anywhere
cd cors-anywhere
npm install
node server.js
```
2021-02-18 23:21:41 +01:00
- It will be available at ```http://localhost:8080/```
2021-02-17 15:12:28 +01:00
2021-02-18 23:08:42 +01:00
## Usage for players
2020-11-01 20:55:38 +01:00
Usage for offline mode:
2021-04-29 20:17:58 +02:00
- Connect to ```mc.example.net.via.localhost```
2020-11-01 20:55:38 +01:00
2021-01-27 15:33:31 +01:00
Usage for online mode:
2021-04-01 11:23:53 +02:00
- You can use two accounts (avoids Bad Login error), the same account for front-end and back-end connections, or use ```_of```
2021-04-29 19:33:38 +02:00
(offline mode in frontend. May be useful if you have a client which is incompatible with online mode).
2021-04-29 20:17:58 +02:00
- Go to VIAaaS auth webpage (default is https://localhost:25543/)
2021-02-18 23:21:41 +01:00
- Configure CORS proxy, see above in "CORS Proxy" section
- Listen to the username A you'll use to connect to the proxy.
2021-04-29 20:17:58 +02:00
- Add the account B to VIAaaS page which you'll use in ```_u``` parameter below.
2021-04-29 19:33:38 +02:00
- Keep the page open
2021-04-29 20:17:58 +02:00
- Connect to ```mc.example.com._u(B).via.localhost``` (```_u``` can be removed if you are using the same username)
2021-04-29 19:33:38 +02:00
- Approve the login in the webpage
2021-02-26 00:04:02 +01:00
- If you use the same online mode account, your client may show Bad Login. You can use a mod like
2021-04-29 19:33:38 +02:00
[Auth Me ](https://www.curseforge.com/minecraft/mc-mods/auth-me ) or [ReAuth ](https://www.curseforge.com/minecraft/mc-mods/reauth ).
2020-11-21 10:51:01 +01:00
2021-04-29 19:33:38 +02:00
### Address options
Example address:
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
Address parts:
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-04-18 14:06:09 +02:00
- ```_v```: backend version ([protocol id](https://wiki.vg/Protocol_version_numbers) or name with underline instead of dots). ```AUTO``` is default and ``-1`` is fallback if it fails.
2021-02-18 23:08:42 +01:00
- ```_o```: ```t``` to force online mode in frontend, ```f``` to disable online mode in frontend. If not set, it will be based on backend online mode.
- ```_u```: username to use in backend connection
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-02-18 23:08:42 +01: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.
2021-02-18 23:08:42 +01:00
- Check the security of CORS proxy, it will intermediate Mojang API calls.
- Mojang may lock your account when API is called from a suspect IP address
2020-12-24 11:11:29 +01:00
## FAQ
2021-04-29 19:33:38 +02:00
### Accounts
2021-02-09 17:38:47 +01:00
My Microsoft account < 18 years old is not able to log in , it ' s giving XSTS error:
- Add your account to a family (see https://wiki.vg/Microsoft_Authentication_Scheme#Authenticate_with_XSTS)
2021-02-10 23:58:03 +01:00
Why a online webpage for online mode?:
2021-04-29 19:33:38 +02:00
- It's easier to maintain in that way, because providing login via chat requires encoding and decoding more packets which change through versions.
- It allows your account password and token to be kept with you.
2021-02-19 15:06:56 +01:00
2021-04-29 20:17:58 +02:00
How to use Microsoft Account?:
- If you are using a public VIAaaS instance, use this page https://viaversion.github.io/VIAaaS/ and configure the WebSocket address.
2021-04-29 19:33:38 +02:00
### Connection
2021-02-19 15:06:56 +01:00
How to use IPv6?:
- When listening to 0.0.0.0, it should listen on IPv6 too.
2021-04-05 00:07:48 +02:00
- To use IPv6 in backend address, you need to use a instance with IPv6 connectivity. The hostname parser currently doesn't support
direct IPv6, but you can use a DNS name with https://sslip.io/
I'm getting a DNS error/"Unknown host" while connecting to (...).localhost
- Try configuring via-127-0-0-1.nip.io as hostname suffix
2021-02-21 01:18:47 +01:00
How to use with Geyser?
2021-02-21 09:03:12 +01:00
- Currently you need to set the parameters (at least the hostname) in Geyser's `address` field:
```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-04-29 20:17:58 +02:00
- If you are using a public GeyserConnect instance: connect to a publicly available VIAaaS instance, like ```mc.example.com.via.example.net``` as a Java Edition server.
2021-03-18 15:05:07 +01:00
2021-04-18 18:01:04 +02:00
Can I use it to connect to .onion Minecraft hidden servers?
- You can use .onion addresses if the instance is proxying the backend connections to TOR.
2021-04-29 19:33:38 +02:00
Note that VIAaaS may log your requests.
Can you support more versions?
- See [DirtMultiVersion ](https://github.com/DirtPowered/DirtMultiversion )