How does hypixel have their website and minecraft server on their root domain? (I would like to do something similar)
from Blisterexe@lemmy.zip to selfhosted@lemmy.world on 11 Nov 2024 19:35
https://lemmy.zip/post/26125925

Hypixel.net is both their website and mc server adress.

Is it just that https is on port 443 and minecraft is on port 25565?

And if that is the case, can i do something similar by making a reverse proxy have two seperate server blocks for the one domain, with different ports?

#selfhosted

threaded - newest

just_another_person@lemmy.world on 11 Nov 2024 19:38 next collapse

DNS A record points to an IP destination. Ports are then handled by the requests for a specific port thing.

Example: A record for www.dududu.com points to IP 1.2.3.4, but different service ports are listening there to pick up different traffic.

Blisterexe@lemmy.zip on 11 Nov 2024 19:41 next collapse

Thanks, that’s what i figured.

I got confused by so many game servers using seperate domains for the site and server, i assumed there was a good reason for that

just_another_person@lemmy.world on 11 Nov 2024 19:45 next collapse

Nope. Just ports and an A Record.

catloaf@lemm.ee on 11 Nov 2024 19:48 next collapse

Flexibility. Maybe they get a hosting package that includes domain registration and hosting, but they can’t put anything else under that name.

30p87@feddit.org on 11 Nov 2024 19:55 collapse

Maybe most smaller ones have hosted both things separately, e.g… with a dedicated minecraft server hoster and a common website-building+hosting service, and don’t want to run an extra server for a proxy just for this.

With bigger servers (eg. Hypixel, 2b2t) or selfhosted servers (eg. mine), everything is on the same physical (or virtual) machine anyway and therefore everything has the same address, so you wouldn’t even need a proxy.

waspentalive@lemmy.one on 11 Nov 2024 20:07 collapse

Does that mean, to play minecraft on their server I would put “www.dududu.com” in my Minecraft client?

just_another_person@lemmy.world on 11 Nov 2024 20:39 collapse

Host:Port

foggy@lemmy.world on 11 Nov 2024 19:57 next collapse

That suggested, it could be done with ports, or it could be done with separate servers.

Domain.com resolves to 1.2.3.4

www.domain.com resolves to 1.2.3.4:443

app.domain.com resolves to 1.2.3.4:5555

Games.domain.com resolves to 1.2.5.6

Mail.domaim.com resolves to 1.2.7.8

Portal.domain.com resolves to 1.2.9.10

Etc, etc.

bulwark@lemmy.world on 11 Nov 2024 20:02 next collapse

This is how I set up my reverse proxy and it works really well with wildcard SSL certs. Only need one certificate for as many sites as I want!

Oisteink@lemmy.world on 11 Nov 2024 20:40 collapse

Or you can use something like caddy that will set up certs automatically using tls-alpn-01 challenge, so no need for dns challenge .

bulwark@lemmy.world on 11 Nov 2024 21:06 collapse

I haven’t tried caddy but I’ve heard good things. I’ve used nginx in the past. I’m currently using Traefik and have been for a few years now. Once it’s set up its pretty great.

iggy@lemmy.world on 12 Nov 2024 13:19 collapse

Caddy can do both. If you’re using a wildcard already, stick with it. In fact, I’d say it’s more prudent to use wildcards (with DNS challenges) than http challenges.Then you aren’t listing all of your domains in letsencrypt’s public database for everyone to see. Nobody needs to know you’ve got a site called bulwarksdirtyunderpants.bulwark.ninja

4am@lemm.ee on 11 Nov 2024 23:34 collapse

You cannot specify ports in a DNS A or AAAA record. www.example.com cannot resolve to 1.2.3.4:443 and app.domain.com cannot resolve to 1.2.3.4:5555

If the application (be it a game or whatnot) supports it, SRV records can identify a port for a hostname. So, you could have minecraft1.domain.com and an SRV record to specify port 25565, and minecraft2.domain.com SRV 25566.

This means you can have multiple Minecraft servers with the same IP address, but you won’t need to give people the port numbers to remember; the hostname allows the game to look up the port via the SRV record.

This is great for selfhosters because we generally only get one IP (until they rollout IPv6; probably half the reason they don’t)

foggy@lemmy.world on 11 Nov 2024 23:42 collapse

I didn’t say to specify a port in the DNS. I just said that it is a way that we can resolve a resource.

In the case of ports we’d configure it through whatever webserver (Apache, nginx, traefik, whatever) configs necessary on that machine. The DNS in this scenario would only be for the machines IP where our webserver then routes traffic to different ports.

I was accounting for both valid setups.

LodeMike@lemmy.today on 11 Nov 2024 19:58 next collapse

Is it just that https is on port 443 and minecraft is on port 25565?

Yes

Dust0741@lemmy.world on 11 Nov 2024 20:07 next collapse

Yes, and Minecraft is TCP not http

LodeMike@lemmy.today on 11 Nov 2024 20:08 next collapse

HTTP is TCP. And I’m pretty sure Minecraft uses UDP?

Dust0741@lemmy.world on 11 Nov 2024 20:11 next collapse

Oops you are right.

A quick search said mc uses tcp

zzx@lemmy.world on 11 Nov 2024 20:36 collapse

Most games use UDP as the latency induced by TCP is unacceptable for games

Oha@lemmy.ohaa.xyz on 11 Nov 2024 20:49 collapse

Minecraft java, for some reason, doesnt

mypasswordis1234@lemmy.world on 12 Nov 2024 01:10 collapse

Minecraft is a building game where latency does not matter as much as in shooter games. For example, if your latency is 200 ms, you can play Minecraft smoothly, while in FPS games it is unacceptable 😉

Edit: In addition, the Minecraft server can use UDP protocol to serve the server status (but only for this purpose and it is not, nor has it ever been used by the game client). In the past, it was used to display the number of players on websites with server listings, but this can be considered deprecated now – today they use the same protocol as the game client.

pressanykeynow@lemmy.world on 12 Nov 2024 06:12 collapse

HTTP/3 is UDP though.

LodeMike@lemmy.today on 12 Nov 2024 06:26 collapse

QUIC? Yeah I know. Interesting system.

owsei@programming.dev on 11 Nov 2024 22:56 next collapse

TCP is the way that you send information, HTTP is what it means.

The difference, in your case, is the port. You can’t CAN have TCP and UDP on the same port, but you can’t have the same protocol on the same port.

edit: I didn’t knew you could have different transfer protocols on the same port, ty!

undefined@lemmy.hogru.ch on 12 Nov 2024 01:50 next collapse

You can’t have UDP and TCP on the same port? I don’t think that makes sense, I have DNS listening on UDP and TCP both on port 53.

pinkystew@reddthat.com on 12 Nov 2024 02:11 collapse

For what

undefined@lemmy.hogru.ch on 12 Nov 2024 02:20 collapse

DNS

pinkystew@reddthat.com on 12 Nov 2024 02:33 collapse

You have DNS listening on UDP and TCP… for DNS?

Iol, lol.

peregus@lemmy.world on 12 Nov 2024 05:38 next collapse

What’s there to laugh about? DNS protocol uses both ports: TCP for zone transfer and UDP for queries.

undefined@lemmy.hogru.ch on 12 Nov 2024 05:45 collapse

Yes I have a DNS service listening on both UDP and TCP to respond to DNS queries from clients using the standard DNS port; crazy me. 🤪

peregus@lemmy.world on 12 Nov 2024 05:33 collapse

You can’t have TCP and UDP on the same port.

Why not? They are 2 completely separated set of ports. You can have a service listening on port 88 TCP while having another listening on port 88 UDP and they never know about each other.

possiblylinux127@lemmy.zip on 12 Nov 2024 02:40 collapse

You are sort of right

TCP is on layer 4 of the OSI model. Http is layer 7 which runs on top of layer 4 (TCP)

In sort Minecraft and http are both tcp

Blisterexe@lemmy.zip on 11 Nov 2024 20:32 collapse

Good to know i was right, i will now carry this newfound confidence into every subject

droolio@feddit.uk on 11 Nov 2024 20:04 next collapse

Don’t forget, you can also use SRV records to point a domain to another target, where you can also omit the port number. So connecting to server.org say, can point to mc.server.org:25565 under the hood.

This prolly isn’t what hypixel are doing as everything’s likely on the same network and their router/firewall is just forwarding traffic onto different machines, but SRV is one way to redirect a minecraft connection (and you could combine the technique with subdomains).

8osm3rka@lemmy.world on 11 Nov 2024 20:09 next collapse

Minecraft can read a special DNS record type called SRV records. You can create a record like that to point Minecraft to a port that the server is running on. It doesn’t even have to have the same ip as the webserver.

This is for Namecheap, but the general principle applies everywhere: namecheap.com/…/how-can-i-link-my-domain-name-to-…

Bottabottabotta@lemmy.world on 11 Nov 2024 22:32 collapse

Does Bedrock support SRV records yet? I honestly haven’t checked in a year or two, but I tried to use SRV records to host a survival game and creative game on different ports but found out it didn’t quite support them yet where as Java edition did.

Flax_vert@feddit.uk on 11 Nov 2024 23:33 next collapse

Minecraft allows for SRV records. It’s pretty nifty.

FrostyCaveman@lemm.ee on 12 Nov 2024 06:41 collapse

TIL what SRV records are. Thank you.

[deleted] on 12 Nov 2024 02:22 next collapse

.

chiisana@lemmy.chiisana.net on 12 Nov 2024 02:42 next collapse

The amount of confidently incorrect responses is exactly what one could expect from Lemmy.

First: TCP and UDP can listen on the same port, DNS is a great example of such. You’d generally need it to be part of the same process as ports are generally bound to the same process, but more on this later.

Second: Minecraft and website are both using TCP. TCP is part of layer 4, transport; whereas HTTP(S) / Minecraft are part of layer 7, application. If you really want to, you could cram HTTP(S) over UDP (technically, QUIC/HTTP3 does this), and if you absolutely want to, with updates to the protocol itself, and some server client edits you can cram Minecraft over UDP, too. People need to brush up on their OSI layers before making bold claims.

Third: The web server and the Minecraft server are not running on the same machine. For something that scale, both services are served from a cluster focused only on what they’re serving.

Finally: Hypixel use reverse proxy to sit between the user and their actual server. Specifically, they are most likely using Cloudflare Spectrum to proxy their traffic. User request reaches a point of presence, a reverse proxy service is listening on the applicable ports (443/25565) + protocol (HTTPS/Minecraft), and then depending on traffic type, and rules, the request gets routed to the actual server behind the scenes. There are speculations of them no longer using Cloudflare, but I don’t believe this is the case. If you dig their mc.hypixel.net domain, you get a bunch of direct assigned IP addresses, but if you tried to trace it from multiple locations, you’d all end up going through Cloudflare infrastructure. It is highly likely that they’re still leaning on Cloudflare for this service, with a BYOIP arrangement to reduce risk of DDOS addressed towards them overflow to other customers.

In no uncertain terms:

  1. Hypixel.net has Cloudflare DNS for their domain.
  2. For their website, it has orange cloud enabled to proxy traffic through CF’s global CDN and DDOS protection service.
  3. For their Minecraft server, they advertise mc.hypixel.net, but also have a SRV record for _minecraft._tcp.hypixel.net set for 25565 on mc.hypixel.net
  4. The mc.hypixel.net domain has CNAME record for mt.mc.production.hypixel.io. which is flattened to a bunch of their own direct assigned IP addresses.
  5. Traceroute towards those direct assigned IP addresses goes through Cloudflare infrastructure but final destination is obscured, just like their website, to protect them from DDOS attacks.
purrtastic@lemmy.nz on 12 Nov 2024 07:01 next collapse

This person networks

undefined@lemmy.hogru.ch on 14 Nov 2024 02:19 collapse

looks at community I hope so?

SteveTech@programming.dev on 12 Nov 2024 07:40 next collapse

TCP and UDP can listen on the same port, DNS is a great example of such. You’d generally need it to be part of the same process as ports are generally bound to the same process

They don’t even need to be the same process. I’m pretty sure that’s just a common practice if something needs both protocols, but there’s nothing stopping you from having a web server on TCP 443 and a VPN server on UDP 443. Ports are an abstraction brought by each protocol, they aren’t in anyway related.

catloaf@lemm.ee on 14 Nov 2024 02:24 collapse

Some protocols, like ICMP, don’t have the concept of ports at all!

interdimensionalmeme@lemmy.ml on 12 Nov 2024 11:18 collapse

Commercial IT’s overreliance on cloudflare will be the undoing of the internet.

Chais@sh.itjust.works on 14 Nov 2024 18:50 collapse

Of the internet? Probably not. Of the independent internet? Maybe.

interdimensionalmeme@lemmy.ml on 14 Nov 2024 19:20 collapse

If all that is left is a shopping mall and propaganda, then as far as I am concerned, it would be dead.

Presi300@lemmy.world on 14 Nov 2024 23:39 collapse

Redirects.

If you try to connect to hypixel.net via port 443, it redirects you to the html page.

If you try to connect to play.hypixel.net via port 25565, it redirects you to the minecraft server.