Part 1: Installing and Configuring the Base Ubuntu Server

Febin JoyFebin Joy
3 min read

Welcome to Part 1 of my multi-part series on setting up a headless Ubuntu home lab server tailored for developers. This post covers the installation of Ubuntu Server, setting up your development environment, and installing essential tools to get started.

๐Ÿ’ก This setup is intended for a personal home lab, not a production environment.


๐Ÿ–ฅ๏ธ Step 1: Install Ubuntu Server

  1. Download the ISO: Grab the latest Ubuntu Server ISO.

  2. Create a bootable USB with the ISO downloaded. How to do this step differs with different operating systems.

  3. Boot and Install:

    • Insert the USB drive into your server and boot from it.

    • Follow the on-screen instructions.

    • During installation:

      • Choose to install OpenSSH Server.

      • Select Use SSH via GitHub (adds your GitHub keys to enable SSH).

๐Ÿ” Ensure your GitHub account has your SSH public keys added before installation.

  1. Static IP Recommendation:
    Assign a static IP for your server in your router (outside the DHCP range).

๐Ÿ”„ Step 2: Update the System

Run the following to make sure the system is up-to-date:

sudo apt update && sudo apt upgrade -y

๐Ÿงฐ Step 3: Install Programming Languages & Frameworks

Create a setup script to install all your preferred tools in one go.

1. Create Setup Directory and Script

mkdir ~/setup
nano ~/setup/install_from_file.sh

Paste the following into the file:

#!/bin/bash

# Java Runtime Environment
sudo apt install -y default-jre

# Python and Pip
sudo apt install -y python3 python3-pip python3-venv python3-debugpy

# NodeJS
curl -fsSL https://deb.nodesource.com/setup_23.x | sudo -E bash -
sudo apt install -y nodejs

# Golang
sudo apt install -y golang

# Lua
sudo apt install -y lua5.4 luarocks

# .NET SDK
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install dotnet-sdk-8.0 -y

# Sqlite3
sudo apt install -y sqlite3

2. Make It Executable and Run

chmod +x ~/setup/install_from_file.sh
sudo ~/setup/install_from_file.sh

๐Ÿ” Step 4: Verify Installations

Check the versions to verify the tools are installed:

java --version
python3 --version
pip3 --version
node -v
npm -v
go version
dotnet --list-sdks

๐Ÿ”„ Step 5: Install and Configure Git & GitHub SSH

1. Verify Git Installation

sudo apt install -y git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

2. Create SSH Key and Add to GitHub

ssh-keygen -t ed25519 -C "you@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

Copy the output and add it to GitHub:

  • GitHub โ†’ Profile โ†’ Settings โ†’ SSH and GPG keys โ†’ New SSH Key

  • Title: Homelab - <your-server-hostname>

  • Paste key and save

Now you can git clone via SSH securely. The same steps could be repeated for Bitbucket or other source control tools if required.


In the next part, we'll install essential terminal tools and boost productivity with a custom shell setup, Neovim, TMUX, and more.

Stay tuned for Part 2: Essential Terminal Tools for Productivity!


Have questions or feedback? Drop a comment below or reach out via GitHub.

0
Subscribe to my newsletter

Read articles from Febin Joy directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Febin Joy
Febin Joy

A software engineer with over 20 years of experience in designing and developing solutions for various domains and industries with expertise in OOD, SOLID principles, Software Architecture, and Design patterns.