• Stars
    star
    160
  • Rank 234,703 (Top 5 %)
  • Language
    Kotlin
  • License
    GNU Affero Genera...
  • Created about 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ViaVersion as a Service - standalone ViaVersion proxy

VIAaaS

ViaVersion Discord Powered by ViaVersion

VIAaaS - ViaVersion as a Service - Standalone ViaVersion proxy

VIAaaS Logo (VIA logo with structural formula of aspirin)

Address generator: https://jo0001.github.io/ViaSetup/aspirin

Public instances: https://github.com/ViaVersion/VIAaaS/wiki/List-of-Public-Instances

Demo

Online mode: https://youtu.be/9MKKjuoe66k

Using with GeyserConnect: https://youtu.be/_LItAIIFmsI

Using with GeyserConnect on offline mode: https://youtu.be/-hZESD61nSU

Using with OpenAuthMod: https://youtu.be/h3EfNSxxf8k

Offline mode tutorial: https://youtu.be/lPdELnrxmp0

How does it work?

  • ViaVersion, ViaBackwards and ViaRewind translates the connections to backend server.
  • VIAaaS auth page stores account credentials in the player's browser local storage.
  • It requires a CORS Proxy for calling Mojang APIs.
  • Account credentials aren't sent to VIAaaS instance by default.
  • The web page receives and validates the joinGame's session hash from VIAaaS instance.

Setting up server instance

Download: GitHub Actions (needs to be logged into GitHub) or JitPack

How to download and start VIAaaS server:

curl -Lf --output VIAaaS-all.jar "https://jitpack.io/com/github/ViaVersion/VIAaaS/master-SNAPSHOT/VIAaaS-master-SNAPSHOT-all.jar"
java -jar VIAaaS-all.jar
  • Requires Java 11
  • Default Minecraft: via.localhost with port 25565
  • Default HTTPS: https://localhost:25543/
  • Default WS URL: wss://localhost:25543/ws

How to create a public server

  • You need a DNS wildcard pointing to VIAaaS instance, like *.example.com -> 192.168.123.123.
  • Configure the hostname in the config
  • Open the Minecraft port (25565)
  • The HTTPS page needs a valid SSL certificate, you can use a reverse proxy like Apache (with a Let's Encrypt certificate).

CORS Proxy

  • Due to Mojang API not allowing cross-origin requests, we need to use a CORS proxy
  • Note the ending slash in cors-anywhere address

Usage for players

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/).

Offline mode:

  • Connect to mc.example.net.via.localhost

Online mode:

Web login:

  • Go to VIAaaS auth webpage (default is https://localhost:25543/)
  • 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).
  • Keep the page open
  • Connect with your account A to mc.example.com._u(account B).via.localhost
  • Approve the login in the webpage

Web login via token caching:

  • Open the web page and save your account in your browser
  • 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.

Fabric/Forge client:

  • Install OpenAuthMod in your client.
  • Join the server: mc.example.net.via.localhost
  • Approve the login

Address options

Example address:

  • server.example.net._p25565._v1_12_2._of._uBACKUSERNAME.via.example.com
  • server.example.net.v_1_8.via.example.com
  • It's inspired by Tor2web proxies.

Address parts:

  • You can use (option)_(value) too, like p_25565.
  • server.example.net: backend server address
  • _p: backend port
  • _v: backend version (protocol id or name, replace . with _) . 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)
  • via.example.com: instance address (defined in config)

WARNING

  • VIAaaS may trigger anti-cheats, due to block, item, movement and other differences between versions. USE AT OWN RISK.
  • Take care of browser local storage. Check for XSS vulnerabilities on your domain.
  • Check the security of CORS proxy, it will be used for calling to Mojang API.

FAQ

Accounts

Why to use an online webpage for online mode?:

  • It's easier to maintain in that way, because providing login via chat requires encoding and decoding more packets, which reduces maintainability.
  • It allows your account password and token to be kept with you.

How to use Microsoft Account?:

  • 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 and your domain whitelist.

Connection

How to use IPv6?:

  • 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 via.localhost

  • Try configuring via.localho.st as hostname suffix instead

How to use with Geyser?

  • Set the parameters in Geyser's address field:
    remote:
      # The IP address of the remote (Java Edition) server
      address: 2b2t.org._v1_12_2.via.localhost
  • If you are using a public GeyserConnect instance: connect to a publicly available VIAaaS instance, like mc.example.com._v1_8.via.example.net as a Java Edition server.

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. Note that VIAaaS may log your requests, and that your DNS queries may be sent unencrypted.

Can you support more versions / Is there some alternative?

Can I customize the files of HTTP server?

  • Add files to config/web/ directory

More Repositories

1

ViaVersion

Allows the connection of newer clients to older server versions for Minecraft servers.
Java
1,222
star
2

ViaBackwards

Allows the connection of older clients to newer server versions for Minecraft servers.
Java
459
star
3

ViaFabricPlus

Fabric mod to connect to EVERY Minecraft server version (Release, Beta, Alpha, Classic, Snapshots, Bedrock) with QoL fixes to the gameplay
Java
407
star
4

ViaFabric

Client-side and server-side ViaVersion implementation for Fabric
Java
323
star
5

ViaProxy

Standalone proxy which allows players to join EVERY Minecraft server version (Classic, Alpha, Beta, Release, Bedrock)
Java
289
star
6

ViaRewind

ViaBackwards addon to allow 1.8.x and 1.7.x clients on newer server versions.
Java
246
star
7

ViaForge

Client-side Implementation of the Via* projects for Minecraft Forge
Java
122
star
8

ViaLegacy

ViaVersion addon to add support for EVERY Minecraft server version (Classic, Alpha, Beta, Release)
Java
66
star
9

ViaRewind-Legacy-Support

Provides additional features for ViaRewind for Paper servers.
Java
23
star
10

ViaLoader

Implementation of a ViaVersion based protocol translator platform
Java
15
star
11

ViaAprilFools

ViaVersion addon to add support for some notable Minecraft snapshots
Java
13
star
12

ViaNBT

A library for dealing with Minecraft NBT.
Java
12
star
13

Mappings

Mapping generator and mapping files for the Via projects.
Java
5
star
14

ViaBungee

INCOMPLETE! ViaVersion loader for BungeeCord/Waterfall
Java
2
star
15

ViaSponge

ViaVersion loader for Sponge
Java
2
star
16

viaversion.com

The ViaVersion website
HTML
1
star