# Step 0: Prerequisites

For this guide, I will use Navidrome (since it is what I use currently). I will guide you through how to set it up as a server rather than an app, as this is also how I use it, but also because, installing it as an app, especially on Windows, shouldn't be hard.   
  
You'll need a server. This can be anything that can run Linux on it. Old PC, laptop, SBC, anything really.  
Navidrome is available for: amd64, armv6, armv7 and arm64. If you don't understand what these mean, you probably have an amd64 device. If it is a very old device, like 10-15+ years old, it might be i686, and Navidrome probably won't work. The device doesn't need to be very powerful, it can even run on a [Pi Zero](https://www.raspberrypi.com/products/raspberry-pi-zero/).  
Your server will also have to have remote access set up. A guide on how to setup and secure SSH is coming!

You will have to install Docker on your server. Since I don't know which Linux distribution you are running, I can't help with specific commands to run, but [here](https://docs.docker.com/engine/install/) is the Docker documentation on how to install it. (<s>explain what docker is?</s>)  
You will also need to install [Docker Compose](https://docs.docker.com/compose/install/linux/#install-using-the-repository), which is a way to define and run multiple containers using a single configuration file.

Optionally, if you want remote access (i.e. access outside of your network), you will also need:

- a domain name
- nginx, as reverse proxy
- certbot, to handle ssl certificates

You will also need patience and/or motivation if you aren't familiar with selfhosting. Selfhosting isn't easy but very much worth it!