# How to Set Up a Home-Lab: Upgrade Your Old Laptop to a Cloud Server

Ever wanted to get hands-on DevOps experience without spending a fortune? I turned my old laptop into a fully functional home server that I can access from anywhere — and you can too! Here's how I did it, step by step.

---

## Why Build a Home-lab?

* Learn Linux system administration and networking
    
* Gain practical DevOps skills (beyond theory!)
    
* Host and experiment with personal projects
    
* Control your environment, privately and securely
    

---

## What I Used

| Item | Description |
| --- | --- |
| 💻 Hardware | eME730 laptop (Intel i3 M 350, 4GB RAM) |
| 🧊 Cooling | Custom plastic enclosure for ventilation |
| 🐧 OS | Ubuntu Server 24.04.2 LTS (lightweight, stable) |
| 🌐 Connectivity | Wired Ethernet + SSH |
| 🔐 Remote Access | Tailscale VPN |

---

## Step-by-Step Setup

### 1\. Clean the Old Laptop

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751097991555/e4e42fc6-75c2-4f1e-9cf7-6d7e1eb49071.jpeg align="center")

* Removed unnecessary parts like the broken display
    
* Replaced thermal paste and ensured good airflow
    
* Built a custom enclosure for better cooling (Here I used old plastic box)
    

### 2\. Install Ubuntu Server

* Download Ubuntu Server 24.04.2 : [https://ubuntu.com/download/server](https://ubuntu.com/download/server)
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751098496264/732ad2b4-aa67-4a94-81e8-0860d1d8e80d.png align="center")
    
* Create a bootable USB with **Balena Etcher** or **Rufus**
    
    * Rufus download Link: [https://rufus.ie/en/](https://rufus.ie/en/)
        
    * Balena Etcher download Link: [https://etcher.balena.io/](https://etcher.balena.io/)
        
* Install using minimal setup **(no GUI)** to save resources
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751099587840/abf45aa8-a2b7-440c-bd49-9e07f13b0a0a.jpeg align="center")
    
    %[https://www.youtube.com/watch?v=K2m52F0S2w8] 
    

### 3\. Network Configuration & SSH Setup

* Connect the laptop to your router via **Ethernet** for a stable connection.
    
* Install basic networking tools:
    
    ```bash
    sudo apt install net-tools
    ```
    
    Use `ifconfig` to check your local IP address:
    
    ```bash
    ifconfig
    ```
    

#### ✅ Verify SSH Access

Try accessing your server from another device:

```bash
ssh username@your-local-ip
```

* Replace `username` and `your-local-ip` with your actual credentials (you can find the IP from `ifconfig` under `inet`).
    
* If it is successful, show like below.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751103811701/1ad1cd93-dbfe-4904-9056-e75a31074082.png align="center")
    

#### ❗ Troubleshooting SSH

If SSH is **not working**, follow these steps:

1. **Check if SSH is installed:**
    
    ```bash
    dpkg -l | grep openssh-server
    ```
    
2. **If not installed, install it:**
    
    ```bash
    sudo apt install openssh-server
    ```
    
3. **Start and enable the SSH service:**
    
    ```bash
    sudo systemctl start ssh
    sudo systemctl enable ssh
    ```
    
4. **Check SSH status:**
    
    ```bash
    sudo systemctl status ssh
    ```
    

> 🔒 Tip: Allow SSH in your firewall (if UFW is enabled):

```bash
sudo ufw allow ssh
```

Absolutely! Here's the updated **Point 4 and 5** in markdown format, with the additional notes on remote access, account authentication, and accessing from other devices:

---

### 4\. Set Up Remote Access with Tailscale

* **Install Tailscale on the server machine** (a simple, secure VPN for remote access):
    
    ```bash
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
    ```
    
* Sign in using your Tailscale account to register the server : [https://tailscale.com/](https://tailscale.com/)
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751104590491/b0257189-7daa-4892-9182-007424544a68.png align="center")
    
* **<mark>Important:</mark>**<mark><br>When setting up, use the </mark> **<mark>same Tailscale account</mark>** <mark> across:</mark>
    
    * <mark>Your </mark> **<mark>server (homelab laptop)</mark>**
        
    * <mark>Any </mark> **<mark>other device</mark>** <mark> (e.g., personal laptop, phone) you use to access it</mark>
        

✅ **Tailscale Tip:**  
If the setup is correct, you will see a **“Connected”** status with a **green dot** next to your device in the Tailscale dashboard when it’s online.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1751105298949/42672964-4799-41b1-b00c-83afc7893697.jpeg align="center")

* After setup, access your homelab [from anywhere:](https://login.tailscale.com/admin/machines)
    
    ```bash
    ssh username@your-tailscale-ip
    ```
    
    > Find the Tailscale IP by running:
    > 
    > ```bash
    > tailscale ip -4
    > ```
    

### 5\. Basic Server Configuration & Security

* Update the system:
    
    ```bash
    sudo apt update && sudo apt upgrade
    ```
    
* Install essential tools:
    
    ```bash
    sudo apt install htop git ufw fail2ban
    ```
    
* Set up firewall with UFW:
    
    ```bash
    sudo ufw allow OpenSSH
    sudo ufw enable
    ```
    
* Optional but recommended: Enable fail2ban to protect against brute-force attacks:
    
    ```bash
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    ```
    

## 💬 Got a Better Way?

If you’ve set up your own home-lab differently or have suggestions to improve this setup, I’d love to hear from you!

> 💡 **Share your thoughts:**
> 
> * Did you use another remote access method like **OpenVPN**, or **WireGuard**?
>     
> * Have tips to optimize performance on low-spec hardware?
>     
> * Got questions or need help with a similar setup?
>     

👇 **Drop a comment below -** let’s learn from each other!
