Skip to content
Closed
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a1f6a08
Update Running-a-Server.md
ginjo Nov 11, 2022
b6925d6
Update Running-a-Server.md
ginjo Nov 12, 2022
2803f2b
Update Running-a-Server.md
ginjo Nov 12, 2022
5000e5d
Update Running-a-Server.md
ginjo Nov 17, 2022
e11eb91
Add server documentation for DNS SRV records
ginjo Nov 17, 2022
fe772b7
Update wiki/en/Running-a-Server.md DNS SRV description
ginjo Nov 21, 2022
d525b8b
Update wiki/en/Running-a-Server.md DNS SRV description
ginjo Nov 21, 2022
af1ccfd
Update wiki/en/Running-a-Server.md DNS SRV usage
ginjo Nov 21, 2022
fc375c5
Update wiki/en/Running-a-Server.md DNS SRV usage
ginjo Nov 21, 2022
dbd622b
Update wiki/en/Running-a-Server.md DNS SRV example
ginjo Nov 21, 2022
b78b24c
Adds SRV record example use case
ginjo Nov 21, 2022
f237a16
Use example.com
gilgongo Nov 28, 2022
d454d9b
Minor amends to grammar
gilgongo Nov 28, 2022
e912a0b
Update Running-a-Server.md
ginjo Nov 29, 2022
ba2cd6f
Update wiki/en/Running-a-Server.md
ginjo Dec 1, 2022
da56612
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
84e999b
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
48c83fb
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
ef21720
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
8f3a7b2
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
e1b5912
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
8b77028
Update wiki/en/Running-a-Server.md
ginjo Dec 13, 2022
be84c56
Update Running-a-Server.md
ginjo Dec 13, 2022
f4aec35
Correct formatting
gilgongo Jan 2, 2023
1e3d587
Update wiki/en/Running-a-Server.md
ginjo Jan 11, 2023
98298ec
Update wiki/en/Running-a-Server.md
ginjo Jan 11, 2023
fd9ec3d
Better term for 'domstic'
gilgongo Jan 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 44 additions & 2 deletions wiki/en/Running-a-Server.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this section should also describe how hosting multiple Jamulus Servers on a single system would work, giving each its own "simple name".

~~~
_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

Expand Down