Home My ultimate homeserver setup
Post
Cancel

My ultimate homeserver setup

My homeserver supports a huge and growing collection of your favorite open source services. In order to use it you have to be familiar with using the terminal. If you prefer a graphical user interface take a look at umbrel.

To setup your own homeserver you should have an own domain. You can get one for free at Freenom. To get automated certificates point the domain`s NS-records to a provider that supports the acme protocol and wildcard A records. I use Digitalocean it is free. You have to create an account and add your domain. Then go back to Freenom and change the nameservers of your domain to

1
2
3
ns1.digitalocean.com.
ns2.digitalocean.com.
ns3.digitalocean.com.

and add a new A-record with an asterix (*) as subdomain (wildcard) with the IP address of your server.

Further requirenments are to have docker and git installed.

1
2
3
4
5
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
dockerd-rootless-setuptool.sh install
sudo usermod -aG docker $USER
sudo apt install git

Now you can clone the homeserver repository and create a docker network

1
2
3
git clone https://github.com/SimonHaas/homeserver.git
cd homeserver
docker network create zone1

Copy and modify the main .env file. Set your timezone, domain and the services you want to have started. You can leave the default services until you have verified that everything is setup correctly and then add more.

1
2
cp .env.example .env
nano .env

Then go to traefik and edit the .env file there as well. Here you have to enter your email. If you use Digitalocean as your DNS provider you only have to add an auth-key. You can get one in the settings of digitalocean. If you use another provider take a look at available acme providers.

1
2
3
cd services/traefik
cp .env.example .env
nano .env

Now we are basically ready to go. But first let`s test if your DNS setup is correct. To get a test-certificate edit the docker-compose.yml file of traefik and remove the ‘#’ sign of the line which specifies the certificate resolver to use the letsencrypt staging servers. Start traefik with

1
docker compose up

After traefik has started you can visit traefik at https://traefik./dashboard/#/ The browser should warn you that the connection is not secure because of an unknown certificate authority but this is indented since we use the letsencrypt staging server. Use Crtl-C to stop traefik again, remove traefik`s data-folder and add the '#' sign in the docker-compose file again by running

1
git reset --hard

Now go two levels up again and run the homeserver-script. Go to each service`s folder you have specified in the main .env file and modify the corresponding .env file accordingly.

1
2
cd ../..
./script.sh up -d

Now your specified services should be up and running.

This post is licensed under CC BY 4.0 by the author.