self-hosting applications

  1. install a web server like nginx or Apache on your server
  2. find an application to self-host
  3. look up the requirements of the application
    • software dependencies
    • hardware requirements
  4. install the required dependencies
  5. install the application
  6. configure the application
  7. profit

Many people use Docker containers or Docker-Compose setups to self-host services as it's a quick and simple way to get the most up-to-date versions of their favourite self-hosted software. Many times the software in the repositories of popular Linux distributions are a bit out of date.

Popular solutions include, but are not limited to:

The most important difference between server hardware is their CPU architecture and Kernel support. You can run everything on x86 because it's the most popular hardware platform, but ARM is steadily catching up.

A lot of software runs on these small computers with low power usage. Their CPU architecture is ARM so there are limits to this.

You can throw a distribution like DietPi on your Raspberry Pi and use it like regular Debian. Some features like virtual machines, containers etc. may be hard to use.

which Raspberry Pi should I buy?

Currently (10/2020) the most recent iteration of the popular SoC is the Raspberry Pi 4. The 4GB version of the Raspberry Pi 4B is pretty good.

The 8GB version might be good if you want to host lots of services, but keep in mind the CPU of the Raspberry Pi is not the fastest, you'd probably run into a CPU bottleneck instead of a RAM bottleneck in that case.

Your Pi will get hot hosting lots of services, so consider getting a case with a fan and/or a heatsink.

  1. install it from your Linux distribution's repository
  2. configure the service
  3. configure the firewall
  4. monitor the service
  5. run it as a different user than root (usually default for most pre-packaged services)
  • opsec – don't leak your own data (passwords, sensitive configuration files)
  • hardening – don't let hackers take your servers
  • open ports – only expose stuff to the internet which is configured securely
  • in-transit encryption – use TLS or similar everywhere you can
  • Last modified: 2020-09-27 11:22