OS Config

The operating system is how your server works and interacts with the world. With so many ones to choose, what will you pick? Anything but Windows. Any Linux Distro is better than Windows. Many to pick, but I'd recommend Debian. Make the USB bootable via Rufus or Ventoy (Rufus is easier btw) of your preferred choice and insert the USB into the DIY home server, laptop, actual server, whatever it is. Instead of hitting "graphical install", scroll to where it says "install". Follow the steps, input a root password, create a username and password, then when you get to the network configuration page, select your ethernet. But make sure to hit cancel once everything starts. Then it should say it failed to configure network. Click continue, and select "enter manually". The server's IP should be what you pick, but it has to match your gateway for the first three parts. Example: my gateway is 192.168.150.1 so my IP must contain the 192.168.150 part. But it doesn't need to start with 1 for the final part. My server is 192.168.150.237 for reference. Before deciding on your IP, log into your router to check if anything on your network uses that IP. Unlikely, but still look. Once you continue, it'll ask for a subnet. should default to 255.255.255.0 so no need to change that. Continue, gateway should import from your main IP but if not, put that in. The nameservers can stay the gateway, but I personally change it to 8.8.8.8 8.8.4.4. Continue until you get to the install until you get to the softare selection screen. Uncheck the following using the space bar: graphical interface, GNOME desktop environment. Then select "ssh server" and click continue. Follow the rest of the install steps until it is finished.

Once installed, login via root or your user, and type "ip a". Look for something that says "192.168" followed by the next number of your gateway and a unique number at the end that isn't 255. Example: my server is 192.168.150.237. Now you can unplug the monitor and keyboard and the rest can be done on your computer.

Go to your desktop device and go to the taskbar and search "CMD". Click on it and you'll see a terminal. type ssh [email protected] for whatever the LAN IP is. Remember the root password? Currently your user cannot do much and so you need to go into root. To do that, type su - and input the root password. Once in, you have a few things to install. This command should do it all for you: apt install sudo -y && apt install curl -y && sudo apt update && sudo apt upgrade -y. When we get to other software in this guide, there will be more to install but we'll get there later. You also want to make sure your server will not go into sleep. The command for that is sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target. You can do the same by editing the config, but this is quicker and easier. If your server is also a laptop, you will want to make it that it won't go to sleep when the lid is shut. Run sudo nano /etc/systemd/logind.conf and look for the lines that say #HandleLidSwitch=suspend and #HandleLidSwitchExternalPower=suspend. Change them to HandleLidSwitch=ignore and HandleLidSwitchExternalPower=ignore. ctrl + o to save and ctrl + x to exit. Then run sudo systemctl restart systemd-logind.

One more thing to do is the user you created doesn't have sudo permissions. To do that, when you are in root, type sudo usermod -aG sudo YOUR_USERNAME. To make it easier with root login as well as SFTP transfer, run the command sudo nano /etc/ssh/sshd_config and look for the line that says PermitRootLogin. It'll either say no or have a # in front of it. Remove the # and make sure it now says PermitRootLogin yes instead of #PermitRootLogin yes. Then restart SSH by running sudo systemctl restart ssh. You will disconnect and wait a few seconds before you login again in via ssh [email protected] and enter the root password. It is a little risky to permit root login, but as long as you don't port forward port 22, you should be fine. The main reason is for SFTP. When we get to Jellyfin, we'll get to that. If you login via the username, you will need to use the command chmod 777 /path/to/directory to do anything in SFTP for each directory. It gets annoying.

The main configuration is done, what would you like to do next? Look at the quick navigation and decide.

Quick Navigation

  • Prerequisites
  • Configuring the OS
  • Minecraft Server
  • Jellyfin
  • Nextcloud
  • Tailscale
  • Port Forwarding
  • HTTPS Configuration
  • Recommended Tools
  • Back To Homepage

    Other info

    Any issues with this guide, shoot me an email "[email protected]"

    Date created: August 7th, 2026

    Last modified: August 26th, 2026

    this site is open source