#+TITLE:
#+AUTHOR: Bob Mottram
#+EMAIL: bob@freedombone.net
#+KEYWORDS: freedombone, domains, dynamic dns
#+DESCRIPTION: How to obtain a domain name
#+OPTIONS: ^:nil toc:nil
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />

#+BEGIN_CENTER
[[file:images/logo.png]]
#+END_CENTER

#+begin_export html
<center><h1>How to get a domain name</h1></center>
#+end_export

* The domain name itself

If you want your sites or chat systems to be available via an ordinary web browser (i.e. not a Tor browser) then you'll need to obtain a domain name. The domain name system is ultimately controlled by ICANN and to obtain a domain name for which you can also get a TLS certificate you'll need to buy one. There are various sites which sell domain names, and fortunately they can often be quite cheap - especially if you can think of an obscure name for your site. Prefer sites where the domain name subscription can be automatically renewed, because otherwise trolls can quickly buy your domain when it expires and then hold it for ransom. If you're planning to self-host for more than an ephemeral purpose, such as a conference or festival, then choose the longest subscription period you can afford (typically a few years).

You probably only need one ICANN domain name and then the various Freedombone apps you might want can be set up on subdomains, such as /blog.mydomainname.net/.

* Dynamic DNS

You will also need a dynamic DNS account, and again this might be something you have to pay a subscription for. Your Freedombone system will have a local network address (typically 192.168.x.y or 10.x.y.z) and also a public IP address assigned by your ISP. Your ISP will change your public IP address every so often (that's why it's called "dynamic") and so there needs to be some way to link the domain name which you've obtained to your changing public IP address. That's what the dynamic DNS service does.

/Starting to think that this sounds like a rather shaky system which would would be not too difficult for an adversary to disrupt - especially if they get cosy with ICANN or the dynamic DNS provider? You'd be right. But moving swiftly past that man behind a curtain.../

In simple terms what happens is that on a regular basis the Freedombone system will ping the dynamic DNS service and say "/this is my current public IP address/", so that the mapping between domain name and IP address can be maintained.

The dynamic DNS service will have their own DNS servers maintaining the IP address mappings and so on the web site where you registered your domain name you will need to specify the servers of the your dynamic DNS account. Look for an option such as "/change nameservers/" or "/custom nameservers/", remove any names which might already be there and then add the servers used by the dynamic DNS service. For example, if you're using FreeDNS then these servers would be:

#+begin_src text
NS1.AFRAID.ORG
NS2.AFRAID.ORG
NS3.AFRAID.ORG
NS4.AFRAID.ORG
#+end_src

It might take a few minutes for the changes to take effect, so don't be too hasty to conclude that it doesn't work.

** Configuring with FreeDNS

If you are using FreeDNS as a dynamic DNS provider then on their site select "/Domains/" and add your domain name (this might only be available to paid subscribers). Make sure that they're marked as "/private/" so that subdomains of your domain name are not used by other users of the site.

Select "Subdomains" from the menu on the left then select the MX entry for your domain and change the destination to *10:mydomainname* rather than *10:mail.mydomainname*.

* Setting up with Freedombone

When you start the base installation of the system it will ask you to choose a dynamic DNS provider and then enter the login details for the dynamic DNS service.

* A note about Tor

If you only want your sites to be available via Tor then none of the above is needed and you can access your sites and systems via their onion addresses. Tor has its own naming system which is independent from ICANN, and you also won't need TLS/SSL certificates since it also manages transport encryption itself. When building disk images use the *--onion yes* option, or choose one of the ready made onion disk images [[./downloads][from downloads]].
