Skip to content

Initial Server Setup 🖥️

Welcome to the dark side of home servers… 🕶️

Section titled “Welcome to the dark side of home servers… 🕶️”

They say curiosity killed the cat.
But in our case, it only killed some USB sticks, broke a few OS installs, and maybe destroyed your sanity.
Welcome aboard! 😈

This guide will walk you through setting up your home server with the required packages, updating all the existing packages, and additional configurations like setting up a static IP.

I’ll be using my Raspberry Pi 5. If you’re using a PC or laptop, feel free to skip the Raspberry Pi Setup section and jump right into the fun parts. Just make sure your PC is running Linux — preferably not Windows (unless you love pain). You can try it in a VM, go dual boot, or go full chaos mode and wipe everything for a fresh Linux install.

Go big or go home, right? 💣🐧

But why a Raspberry Pi ? Why Linux ? ⤴️


  • Raspberry Pi 5 with power supply (or a PC/laptop if you’re feeling rebellious)
  • MicroSD card (32GB or larger)
  • External storage (HDD/SSD) if you want to hoard files like a dragon
  • Keyboard, monitor, and Ethernet/Wi-Fi for initial setup

  1. Download Raspberry Pi Imager

    Get it from here. Trust me, using random ISO torrents is a great way to get new “friends” (a.k.a. malware).

  2. Flash the OS

    Use the imager to flash Raspberry Pi OS (64-bit) onto your microSD card. While flashing, enable SSH in advanced settings.

  3. First Boot

    • Insert the microSD card, connect to a monitor and keyboard, and power it up.
    • Follow on-screen setup. Pro tip: use Ethernet — Wi-Fi is like that friend who promises to help but always flakes.
  4. Update your system

    Terminal window
    sudo apt update
    sudo apt upgrade -y

    Watch those packages update. It’s like watching paint dry but slightly more satisfying.

  5. Install basic tools

    Terminal window
    sudo apt install nala -y # APT’s glow-up
    sudo nala install openssh-server -y # SSH server
    sudo systemctl start ssh
    sudo systemctl enable ssh
    sudo systemctl status ssh

    If SSH fails, take a deep breath. And maybe a shot. Then check logs.

If you want to save time (and avoid copy-pasting commands like a caveman), you can use the provided setup.sh script.

Terminal window
curl -O https://raw.githubusercontent.com/deepesh611/Home-Server/main/setup.sh
chmod +x setup.sh
./setup.sh

What it does

  1. Updates your system
  2. Installs nala if missing
  3. Installs btop and openssh-server
  4. Starts and enables SSH
  5. Logs everything to /var/log/script_install.log

Your server deserves a stable life. Floating IPs are for ghosts.

  1. Find your gateway and MAC address

    ifconfig

    Note your default gateway IP and your server’s MAC address.

  2. Router time

    1. Log into your router (usually via 192.168.x.1).

    2. Navigate to DHCP or Static IP settings.

    3. Reserve an IP for your server’s MAC address.

  3. Reboot

    sudo reboot

    Your server now sticks to one IP, like that friend who overstays their welcome.

3️⃣ Assigning a Local Domain Name (Optional) 🌐

Section titled “3️⃣ Assigning a Local Domain Name (Optional) 🌐”

Make your life easier than typing IP addresses like it’s the 90s.

  1. Router DNS settings

    Find Static DNS options (mine lives under: Advanced > Applications > Static DNS).

  2. Set domain

    • E.g., server.local
    • Point it to your static IP.
  3. Test

    Terminal window
    ping <server-ip>
    ping <domain-name>

    If this fails, scream into the void — or fix your router settings.

Connect from your PC/laptop:

Terminal window
ssh <username>@<ip-address-or-domain-name>

Default username is usually pi or root.

Congrats, you now have a basic home server setup!
Soon you’ll be serving files, running containers, and telling your friends, “Yeah, I run a server at home,” while they stare in awe (or concern).

Check out the next sections for advanced guides — like adding external storage, deploying apps with Docker, or accidentally bricking your network and questioning your life choices.