diff --git a/wiki/en/Running-a-Server.md b/wiki/en/Running-a-Server.md index b022821de..82ac0f082 100644 --- a/wiki/en/Running-a-Server.md +++ b/wiki/en/Running-a-Server.md @@ -271,7 +271,6 @@ For macOS, start a Terminal window and run Jamulus with the desired options like {% include_relative Include-Shared-Commands.md %} - ## Running an Unregistered Server It is highly recommended to test your Server by registering it on one of the built-in Directories **first** so as to narrow down any subsequent problems in unregistered mode. @@ -296,7 +295,50 @@ You yourself should connect using the local network (LAN) address of the machine #### Dynamic DNS and why you will probably need it -Most domestic internet connections change their external IP address after a short period. To avoid problems with this, you might want to set up "dynamic DNS" to get a static (sub-)domain you can share with others. Please research how to do that for your specic set up. Your router might support some "dynamic DNS" providers out of the box. If this is not the case, set up a dynamic DNS client as described by the dynamic DNS provider you chose. +Most residential internet connections change their external IP address after a short period. To avoid problems with this, you might want to set up "dynamic DNS" to get a static (sub-)domain you can share with others. Please research how to do that for your specic set up. Your router might support some "dynamic DNS" providers out of the box. If this is not the case, set up a dynamic DNS client as described by the dynamic DNS provider you chose. + +## DNS SRV record support + +Jamulus Clients support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record). If a Client finds an SRV record associated with the domain name given in the Connect window, it will try to connect to the endpoint host and port listed in the SRV record. This process is similar to HTTP redirection in a web browser, only it's between Jamulus Clients and the DNS server. The Jamulus Server is not involved in this interaction. Jamulus Servers just listen for connections on the same port listed in the SRV record. + +#### Why is this helpful? + +A Jamulus Client can connect to a Server on a non-default port by specifying the port as part of the server address. A server administrator may want to give users a simple address without the port details, while still serving Jamulus on a non-default port. For this case, the port information can be acquired from an SRV record. + +An address entered in the Connect window could look like ```jamulus.example.com```. If an SRV record is found for this DNS domain, Jamulus Client will try to connect to the Server on the host:port listed in the SRV record, such as ```jamulus.example.com:12345```. + +If no SRV records are found on the DNS server, a Client will attempt to connect to the Server as specified in the connection window. + +#### Creating SRV records + +SRV records are created by the administrator of the domain being used to host the Jamulus server. The SRV records are added through the administration portal (or API if available) of the domain's DNS hosting service. The format of the SRV record entry can vary by DNS hosting service but will generally look something like this. + +~~~ + _service._proto.name. ttl IN SRV priority weight port target + + # or, more specifically + + _jamulus._udp.example.com. 60 IN SRV 0 5 12345 jamulus.example.com +~~~ + +**Note:** You can host many Jamulus Servers at different ports on one host by giving each its own SRV record. + +See the documentation of your DNS provider for instructions on creating an SRV record. + +#### Example use case with SRV records + +This example assumes the DNS contains an A or CNAME record that resolves to ```server1.example.com```, where three Jamulus Server instances are running, each listening on one of the three ports listed below. + +Alternatively, `server1.example.com` can be a router, NAT-gateway, or load-balancer that forwards each of the ports to a backend Jamulus server (or servers). + + +| JAMULUS CLIENT | DNS SRV RECORD | JAMULUS SERVER | +| ------------------ | --------------------------------------------------------------------------- | -------------------------- | +| rock.example.com | _jamulus._udp.rock.example.com 300 IN SRV 0 5 22124 server1.example.com | server1.example.com:22124 | +| jazz.example.com | _jamulus._udp.jazz.example.com 300 IN SRV 0 5 22125 server1.example.com | server1.example.com:22125 | +| blues.example.com | _jamulus._udp.blues.example.com 300 IN SRV 0 5 22126 server1.example.com | server1.example.com:22126 | + +*It's important to remember that DNS is not forwarding connections. It's simply telling Jamulus Client what public host:port to connect to.* ## Backing up the Server