2 Running a self hosted server
Anthony Wang edited this page 9 months ago

Inspired by exozyme and want to host a public Linux server? You have two main options: rent a VPS (virtual private server) on a cloud provider like AWS or host the server on a PC at your house. Since we choose the latter for exozyme, this guide will exclusively focus on that. If you are interested in using a VPS instead, there are plenty of guides available on the internet.

Domain name

You'll need to register a domain name first, which costs between $1 and $20 a year. We recommend hosting different services on different subdomains, which you can do with a wildcard CNAME record in your domain's DNS settings. exozyme uses Porkbun.

You can get a TLS certificate using Let's Encrypt. If you are using a wildcard CNAME record, you have to generate a wildcard TLS certificate using a DNS challenge. For Porkbun, you can automate this with the Certbot Porkbun plugin.

Operating system

For the server's operating system, you again have some choices: a more stable Linux distro like Debian, Ubuntu, or Rocky Linux, or something bleeding edge like Arch. We decided to go with Arch, mainly because of the Arch Build System and the ArchWiki. You have to be careful with updates, especially with community-maintained AUR packages, so we recommend updating once every week.

You can also try NixOS or Guix, which both take a unique approach to package management and centralize configuration in a single location, which is highly beneficial for servers.

Running services

Now that you have a server, what about running services like Nextcloud? Once again, you have two choices: run the services directly and control them using systemd's systemctl utility, or run them in Docker. For this, we chose running them directly on the server, because Arch packages most of the packages for these services pretty well and Docker solves a problem that we don't really have.