From 88c9b0570055023ef8068d3ca3a809a9fd276292 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Fri, 23 Jan 2026 17:44:49 +0000 Subject: [PATCH 1/5] Move DNS SRV description to its own page And add description of new places where SRV resolution is used in 3.12.0 --- wiki/en/DNS-SRV-Support.md | 67 +++++++++++++++++++++++++++++++++ wiki/en/Unregistered-Servers.md | 42 +-------------------- 2 files changed, 68 insertions(+), 41 deletions(-) create mode 100644 wiki/en/DNS-SRV-Support.md diff --git a/wiki/en/DNS-SRV-Support.md b/wiki/en/DNS-SRV-Support.md new file mode 100644 index 000000000..7311232d8 --- /dev/null +++ b/wiki/en/DNS-SRV-Support.md @@ -0,0 +1,67 @@ +--- +layout: wiki +title: "DNS SRV Record Support" +lang: "en" +permalink: "/wiki/DNS-SRV-Support" +--- + +{% include breadcrumb.html root="More" branch1="Server Administration" branch1-url="Running-a-Server" %} + +# DNS SRV Record Support + +Jamulus Clients and Servers support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record). Depending on the version of Jamulus, if it finds a DNS SRV record associated with the domain name given, 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 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. + +#### 3.10.0 + +Clients with version 3.10.0 or later support SRV records for a hostname given in the following contexts: + +* In the Connect dialog as "Server Address". +* On the command line with `-c`, to specify immediate direct connection to a server. + +#### 3.12.0 + +In addition to the above, both Clients and Servers with version 3.12.0 or later also support SRV records for a hostname given to specify a Directory, in the following contexts: + +* Server: `-e` or `--directoryaddress` option on the command line. +* Server: (GUI) in the "Custom Directory address" setting under "Options". +* Client: (GUI) in the list of custom directories under "Advanced Setup" in "Settings". + +#### Why is this helpful? + +Jamulus can connect to a Server or Directory 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, or for a Custom Directory, could look like `jamulus.example.com`. If no explicit port number is specified, and an SRV record is found for this DNS domain, Jamulus will try to connect to the Directory or 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, Jamulus will attempt to connect to the Directory or Server address on the default port number 22124. + +#### 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. This avoids having to give your users the port number, which may be less memorable than a name. + +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.* + diff --git a/wiki/en/Unregistered-Servers.md b/wiki/en/Unregistered-Servers.md index df7a5f27e..351e49a2c 100644 --- a/wiki/en/Unregistered-Servers.md +++ b/wiki/en/Unregistered-Servers.md @@ -33,44 +33,4 @@ Unless your ISP provides you with a fixed IP address, you may find that your add ## 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.* - +Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for finding the port number to use to connect to a Directory or Server. See [this page](DNS-SRV-Support) for details. From 8753084cf96526836bc4fa7048db5b63ba6570d8 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Sun, 25 Jan 2026 21:59:21 +0000 Subject: [PATCH 2/5] Rewrite and expansion of DNS SRV page --- wiki/en/DNS-SRV-Support.md | 79 +++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/wiki/en/DNS-SRV-Support.md b/wiki/en/DNS-SRV-Support.md index 7311232d8..eee1ccee2 100644 --- a/wiki/en/DNS-SRV-Support.md +++ b/wiki/en/DNS-SRV-Support.md @@ -9,52 +9,64 @@ permalink: "/wiki/DNS-SRV-Support" # DNS SRV Record Support -Jamulus Clients and Servers support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record). Depending on the version of Jamulus, if it finds a DNS SRV record associated with the domain name given, 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 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. +#### Connecting to a Server or Directory -#### 3.10.0 +The default UDP port on which a Jamulus Server or Directory listens is **22124**. Normally, when a Client or a Server is given a plain hostname or an IP address to connect to, such as `198.51.100.46` or `jamulus.example.com`, it will use `22124` as the destination port number. -Clients with version 3.10.0 or later support SRV records for a hostname given in the following contexts: +Since a single Jamulus Server only provides a single "room", and a single Jamulus Directory only provides a single "list", it is often useful to run multiple Jamulus Server or Directory instances on a single host, sharing one IP address. In order to do this, the instances must each be made to listen on a different UDP port. This is done by specifying the port number on the command line, using `-p NNNNN` or `--port NNNNN`. -* In the Connect dialog as "Server Address". -* On the command line with `-c`, to specify immediate direct connection to a server. - -#### 3.12.0 - -In addition to the above, both Clients and Servers with version 3.12.0 or later also support SRV records for a hostname given to specify a Directory, in the following contexts: +If such a Server is registered with a Directory, such as the standard Jamulus Directories, e.g. **Any Genre 1**, the port number in use is automatically detected by the Directory at registration time, and stored in the list which is sent to a Client. The user's Jamulus Client can then connect to the Server in the normal way from the list in the Connect Dialog. -* Server: `-e` or `--directoryaddress` option on the command line. -* Server: (GUI) in the "Custom Directory address" setting under "Options". -* Client: (GUI) in the list of custom directories under "Advanced Setup" in "Settings". +However, a Jamulus instance wanting to connect _directly_ to a Server or Directory by IP or hostname must know the port number to use. This can be specified after the IP address or hostname, such as `198.51.100.46:22123` or `jamulus.example.com:22120`. -#### Why is this helpful? +#### Using DNS SRV to publish port numbers -Jamulus can connect to a Server or Directory 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. +A [DNS SRV record ("service" record)](https://en.wikipedia.org/wiki/SRV_record) is a special DNS record that can be used to publish the port number and hostname that should be used to connect to a particular service. -An address entered in the Connect window, or for a Custom Directory, could look like `jamulus.example.com`. If no explicit port number is specified, and an SRV record is found for this DNS domain, Jamulus will try to connect to the Directory or Server on the host:port listed in the SRV record, such as `jamulus.example.com:12345`. +Later versions of Jamulus Clients and Servers support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record). Depending on the version of Jamulus, if it finds a DNS SRV record associated with the domain name given, 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 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. -If no SRV records are found on the DNS server, Jamulus will attempt to connect to the Directory or Server address on the default port number 22124. +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: -#### Creating SRV records +~~~ + _service._proto.name. ttl IN SRV priority weight port target. +~~~ -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. +In the case of Jamulus, the `service` must be `jamulus` and the `proto` must be `udp`, so the record will look 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 + _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. This avoids having to give your users the port number, which may be less memorable than a name. +This allows to host many Jamulus Servers at different ports on a single host with different hostnames by giving each its own SRV record. This avoids having to give your users the port number, which may be less memorable than a name. See the documentation of your DNS provider for instructions on creating an SRV record. +#### Jamulus versions supporting SRV + +Clients with version **3.10.0** or later support SRV records for a hostname given in the following contexts: + +* In the Connect dialog as "Server Address". +* On the command line with `-c`, to specify immediate direct connection to a Server. + +In addition to the above, both Clients and Servers with version **3.12.0** or later also support SRV records for a hostname given to specify a Directory, in the following contexts: + +* Server: `-e` or `--directoryaddress` option on the command line. +* Server: (GUI) in the "Custom Directory address" setting under "Options". +* Client: (GUI) in the list of custom Directories under "Advanced Setup" in "Settings". + +#### Why is this helpful? + +Jamulus can connect to a Server or Directory 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, as described above. + +In this case, an address entered in the Connect window, or for a custom Directory, could look like `jamulus.example.com`. If no explicit port number is specified, and an SRV record is found for this DNS domain, Jamulus will try to connect to the Directory or 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, Jamulus will attempt to connect to the Directory or Server address on the default port number `22124`. + #### 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). +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 | @@ -63,5 +75,20 @@ Alternatively, `server1.example.com` can be a router, NAT-gateway, or load-balan | `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.* +*It's important to remember that DNS is not forwarding connections. It's simply telling Jamulus what public host:port to connect to.* + +#### SRV for the main Jamulus public Directories + +In the `jamulus.io` domain, SRV records have been created to specify the correct port for each of the standard public Directories: + +| DIRECTORY | DNS SRV RECORD | JAMULUS SERVER | +| ---------------------- | --------------------------------------------------------------------------------- | ---------------------------- | +| `anygenre1.jamulus.io` | `_jamulus._udp.anygenre1.jamulus.io. 60 IN SRV 0 0 22124 anygenre1.jamulus.io.` | `anygenre1.jamulus.io:22124` | +| `anygenre2.jamulus.io` | `_jamulus._udp.anygenre2.jamulus.io. 60 IN SRV 0 0 22224 anygenre2.jamulus.io.` | `anygenre2.jamulus.io:22224` | +| `anygenre3.jamulus.io` | `_jamulus._udp.anygenre3.jamulus.io. 60 IN SRV 0 0 22624 anygenre3.jamulus.io.` | `anygenre3.jamulus.io:22624` | +| `rock.jamulus.io` | `_jamulus._udp.rock.jamulus.io. 60 IN SRV 0 0 22424 rock.jamulus.io.` | `rock.jamulus.io:22424` | +| `jazz.jamulus.io` | `_jamulus._udp.jazz.jamulus.io. 60 IN SRV 0 0 22324 jazz.jamulus.io.` | `jazz.jamulus.io:22324` | +| `classical.jamulus.io` | `_jamulus._udp.classical.jamulus.io. 60 IN SRV 0 0 22524 classical.jamulus.io.` | `classical.jamulus.io:22524` | +| `choral.jamulus.io` | `_jamulus._udp.choral.jamulus.io. 60 IN SRV 0 0 22724 choral.jamulus.io.` | `choraljamulus.io.:22724` | +This means that a Jamulus Server of version **3.12.0** or later can just give the hostname of the Directory to the `-e` or `--directoryaddress` option, without needing to find and specify the port number. From cdcdf99e226c2d8296cb8889c4f20dddf200251b Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Sun, 25 Jan 2026 22:14:39 +0000 Subject: [PATCH 3/5] Add mention of DNS SRV for registering with a directory --- wiki/en/Running-a-Server.md | 1 + wiki/en/Unregistered-Servers.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/wiki/en/Running-a-Server.md b/wiki/en/Running-a-Server.md index 8d766e4b1..5b5479280 100644 --- a/wiki/en/Running-a-Server.md +++ b/wiki/en/Running-a-Server.md @@ -183,6 +183,7 @@ To register with one of the Directories built into the Jamulus Client, replace ` |**Genre Classical/Folk** |`classical.jamulus.io:22524`| |**Genre Choral/Barbershop** |`choral.jamulus.io:22724`| +Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details. ##### `-o or --serverinfo` diff --git a/wiki/en/Unregistered-Servers.md b/wiki/en/Unregistered-Servers.md index 351e49a2c..f22d3e581 100644 --- a/wiki/en/Unregistered-Servers.md +++ b/wiki/en/Unregistered-Servers.md @@ -33,4 +33,4 @@ Unless your ISP provides you with a fixed IP address, you may find that your add ## DNS SRV record support -Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for finding the port number to use to connect to a Directory or Server. See [this page](DNS-SRV-Support) for details. +Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details. From 4e0105d9f5a527ad1080ef14af3de25fc845f220 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Tue, 27 Jan 2026 22:25:24 +0000 Subject: [PATCH 4/5] Improve organisation of DNS SRV page --- wiki/en/DNS-SRV-Support.md | 71 +++++++++++++-------------------- wiki/en/Running-a-Server.md | 2 +- wiki/en/Unregistered-Servers.md | 2 +- 3 files changed, 29 insertions(+), 46 deletions(-) diff --git a/wiki/en/DNS-SRV-Support.md b/wiki/en/DNS-SRV-Support.md index eee1ccee2..aaaf6d42b 100644 --- a/wiki/en/DNS-SRV-Support.md +++ b/wiki/en/DNS-SRV-Support.md @@ -9,7 +9,7 @@ permalink: "/wiki/DNS-SRV-Support" # DNS SRV Record Support -#### Connecting to a Server or Directory +#### Background - connecting to a Server or Directory The default UDP port on which a Jamulus Server or Directory listens is **22124**. Normally, when a Client or a Server is given a plain hostname or an IP address to connect to, such as `198.51.100.46` or `jamulus.example.com`, it will use `22124` as the destination port number. @@ -17,29 +17,15 @@ Since a single Jamulus Server only provides a single "room", and a single Jamulu If such a Server is registered with a Directory, such as the standard Jamulus Directories, e.g. **Any Genre 1**, the port number in use is automatically detected by the Directory at registration time, and stored in the list which is sent to a Client. The user's Jamulus Client can then connect to the Server in the normal way from the list in the Connect Dialog. -However, a Jamulus instance wanting to connect _directly_ to a Server or Directory by IP or hostname must know the port number to use. This can be specified after the IP address or hostname, such as `198.51.100.46:22123` or `jamulus.example.com:22120`. +However, a Jamulus instance wanting to connect _directly_ to a Server or Directory by IP or hostname must know the port number to use. This can be specified after the IP address or hostname, such as `198.51.100.46:22123` or `jamulus.example.com:22120`. Such port numbers are not very memorable, so it's often necessary to look them up! The solution is for the server operator to publish the port number using an SRV record in DNS. #### Using DNS SRV to publish port numbers A [DNS SRV record ("service" record)](https://en.wikipedia.org/wiki/SRV_record) is a special DNS record that can be used to publish the port number and hostname that should be used to connect to a particular service. -Later versions of Jamulus Clients and Servers support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record). Depending on the version of Jamulus, if it finds a DNS SRV record associated with the domain name given, 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 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. +Recent versions of Jamulus Clients and Servers are able to make use of such records. Depending on the version of Jamulus (see below), if it finds a DNS SRV record associated with the domain name given, it will try to connect to the endpoint host and port listed in the SRV record. The user does not have to specify the port number explicitly. -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. -~~~ - -In the case of Jamulus, the `service` must be `jamulus` and the `proto` must be `udp`, so the record will look like this: - -~~~ - _jamulus._udp.example.com. 60 IN SRV 0 5 12345 jamulus.example.com. -~~~ - -This allows to host many Jamulus Servers at different ports on a single host with different hostnames by giving each its own SRV record. This avoids having to give your users the port number, which may be less memorable than a name. - -See the documentation of your DNS provider for instructions on creating an SRV record. +If no SRV records are found on the DNS server for the hostname given, Jamulus will attempt to connect to the Directory or Server address on the default port number `22124`. #### Jamulus versions supporting SRV @@ -54,41 +40,38 @@ In addition to the above, both Clients and Servers with version **3.12.0** or la * Server: (GUI) in the "Custom Directory address" setting under "Options". * Client: (GUI) in the list of custom Directories under "Advanced Setup" in "Settings". -#### Why is this helpful? +#### Creating DNS SRV records -Jamulus can connect to a Server or Directory 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, as described above. +SRV records are created by the administrator of the DNS 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: -In this case, an address entered in the Connect window, or for a custom Directory, could look like `jamulus.example.com`. If no explicit port number is specified, and an SRV record is found for this DNS domain, Jamulus will try to connect to the Directory or 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, Jamulus will attempt to connect to the Directory or Server address on the default port number `22124`. - -#### 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. +~~~ + _service._proto.name. ttl IN SRV priority weight port target. +~~~ -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). +In the case of Jamulus, the `service` must be `jamulus` and the `proto` must be `udp`, so the record will look like this: +~~~ + _jamulus._udp.example.com. 60 IN SRV 0 5 12345 jamulus.example.com. +~~~ -| 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` | +This allows to host many Jamulus Servers or Directories at different ports on a single host with different hostnames by giving each its own SRV record. This avoids having to give your users the port number, which may be less memorable than a name. -*It's important to remember that DNS is not forwarding connections. It's simply telling Jamulus what public host:port to connect to.* +See the documentation of your DNS provider for instructions on creating an SRV record. -#### SRV for the main Jamulus public Directories +#### Example - SRV records for the main Jamulus public Directories In the `jamulus.io` domain, SRV records have been created to specify the correct port for each of the standard public Directories: -| DIRECTORY | DNS SRV RECORD | JAMULUS SERVER | -| ---------------------- | --------------------------------------------------------------------------------- | ---------------------------- | -| `anygenre1.jamulus.io` | `_jamulus._udp.anygenre1.jamulus.io. 60 IN SRV 0 0 22124 anygenre1.jamulus.io.` | `anygenre1.jamulus.io:22124` | -| `anygenre2.jamulus.io` | `_jamulus._udp.anygenre2.jamulus.io. 60 IN SRV 0 0 22224 anygenre2.jamulus.io.` | `anygenre2.jamulus.io:22224` | -| `anygenre3.jamulus.io` | `_jamulus._udp.anygenre3.jamulus.io. 60 IN SRV 0 0 22624 anygenre3.jamulus.io.` | `anygenre3.jamulus.io:22624` | -| `rock.jamulus.io` | `_jamulus._udp.rock.jamulus.io. 60 IN SRV 0 0 22424 rock.jamulus.io.` | `rock.jamulus.io:22424` | -| `jazz.jamulus.io` | `_jamulus._udp.jazz.jamulus.io. 60 IN SRV 0 0 22324 jazz.jamulus.io.` | `jazz.jamulus.io:22324` | -| `classical.jamulus.io` | `_jamulus._udp.classical.jamulus.io. 60 IN SRV 0 0 22524 classical.jamulus.io.` | `classical.jamulus.io:22524` | -| `choral.jamulus.io` | `_jamulus._udp.choral.jamulus.io. 60 IN SRV 0 0 22724 choral.jamulus.io.` | `choraljamulus.io.:22724` | +| DIRECTORY | DNS SRV RECORD | JAMULUS SERVER | +| ---------------------- | ------------------------------------------------------------------------------- | ---------------------------- | +| `anygenre1.jamulus.io` | `_jamulus._udp.anygenre1.jamulus.io. 60 IN SRV 0 0 22124 anygenre1.jamulus.io.` | `anygenre1.jamulus.io:22124` | +| `anygenre2.jamulus.io` | `_jamulus._udp.anygenre2.jamulus.io. 60 IN SRV 0 0 22224 anygenre2.jamulus.io.` | `anygenre2.jamulus.io:22224` | +| `anygenre3.jamulus.io` | `_jamulus._udp.anygenre3.jamulus.io. 60 IN SRV 0 0 22624 anygenre3.jamulus.io.` | `anygenre3.jamulus.io:22624` | +| `rock.jamulus.io` | `_jamulus._udp.rock.jamulus.io. 60 IN SRV 0 0 22424 rock.jamulus.io.` | `rock.jamulus.io:22424` | +| `jazz.jamulus.io` | `_jamulus._udp.jazz.jamulus.io. 60 IN SRV 0 0 22324 jazz.jamulus.io.` | `jazz.jamulus.io:22324` | +| `classical.jamulus.io` | `_jamulus._udp.classical.jamulus.io. 60 IN SRV 0 0 22524 classical.jamulus.io.` | `classical.jamulus.io:22524` | +| `choral.jamulus.io` | `_jamulus._udp.choral.jamulus.io. 60 IN SRV 0 0 22724 choral.jamulus.io.` | `choral.jamulus.io:22724` | This means that a Jamulus Server of version **3.12.0** or later can just give the hostname of the Directory to the `-e` or `--directoryaddress` option, without needing to find and specify the port number. + +A server administrator can use the same technique to publish an SRV record for his own Server or Directory. diff --git a/wiki/en/Running-a-Server.md b/wiki/en/Running-a-Server.md index 5b5479280..b13978ebe 100644 --- a/wiki/en/Running-a-Server.md +++ b/wiki/en/Running-a-Server.md @@ -183,7 +183,7 @@ To register with one of the Directories built into the Jamulus Client, replace ` |**Genre Classical/Folk** |`classical.jamulus.io:22524`| |**Genre Choral/Barbershop** |`choral.jamulus.io:22724`| -Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details. +Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details and applicable version numbers. ##### `-o or --serverinfo` diff --git a/wiki/en/Unregistered-Servers.md b/wiki/en/Unregistered-Servers.md index f22d3e581..c680e9774 100644 --- a/wiki/en/Unregistered-Servers.md +++ b/wiki/en/Unregistered-Servers.md @@ -33,4 +33,4 @@ Unless your ISP provides you with a fixed IP address, you may find that your add ## DNS SRV record support -Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details. +Recent versions of Jamulus support [DNS SRV records ("service" records)](https://en.wikipedia.org/wiki/SRV_record) for automatically finding the port number to use to connect to a Directory or Server. This allows just the hostname to be specified, without the port number. See [this page](DNS-SRV-Support) for details and applicable version numbers. From aea43a031a3ba2a2bf7b51a39fcf9629329933c8 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Sat, 31 Jan 2026 15:37:54 +0000 Subject: [PATCH 5/5] Clarify hostnames in SRV records --- wiki/en/DNS-SRV-Support.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wiki/en/DNS-SRV-Support.md b/wiki/en/DNS-SRV-Support.md index aaaf6d42b..b967e9b96 100644 --- a/wiki/en/DNS-SRV-Support.md +++ b/wiki/en/DNS-SRV-Support.md @@ -48,13 +48,15 @@ SRV records are created by the administrator of the DNS domain being used to hos _service._proto.name. ttl IN SRV priority weight port target. ~~~ -In the case of Jamulus, the `service` must be `jamulus` and the `proto` must be `udp`, so the record will look like this: +Note that the `name` and `target` hostnames may either be the same or different. `name` is the hostname the user will use without a port number for SRV lookup, and `target` is the hostname the Jamulus will use together with the discovered port number in order to connect to the Jamulus Server or Directory. + +In the case of Jamulus, the `service` must be `jamulus` and the `proto` must be `udp`, so the record will look like this (for a port number of `12345`): ~~~ - _jamulus._udp.example.com. 60 IN SRV 0 5 12345 jamulus.example.com. + _jamulus._udp.myserver.example.com. 60 IN SRV 0 5 12345 myhost.example.com. ~~~ -This allows to host many Jamulus Servers or Directories at different ports on a single host with different hostnames by giving each its own SRV record. This avoids having to give your users the port number, which may be less memorable than a name. +This technique allows you to host many Jamulus Servers or Directories at different ports on a single host with different hostnames by giving each its own SRV record. This avoids having to give your users the port number, which may be less memorable than a name. In the above example, the user will specify `myserver.example.com` and Jamulus will then connect to `myhost.example.com:12345`. See the documentation of your DNS provider for instructions on creating an SRV record.