Linux Home Server
Built and configured a dedicated Linux home server from the ground up to provide centralized file sharing, remote network access, web hosting, and virtualization. The server became the foundation of my home lab and was used to host my first web project with Nginx.
EliteDesk Platform
192.168.x.x
|
Local File Sharing
|
Secure Remote Access
|
Chrissy Rae's Cookies
Building My Own Linux Infrastructure
This project began with a small EliteDesk computer that I repurposed into a dedicated Linux server. Rather than relying entirely on cloud services, I wanted to build and manage infrastructure myself while developing a stronger understanding of Linux administration and networking. The server was configured with Debian Linux and became the central system for several home-lab services. Samba was configured to provide file sharing across devices on my local network, allowing computers such as my MacBook to access centralized storage. I also configured Tailscale to create secure remote connectivity to my home network. This allowed me to connect my MacBook back to the server while working away from home and continue developing projects without needing to expose the server directly to the public internet. One of the first practical applications of the server was hosting "Chrissy Rae's Cookies," my first web project deployed through Nginx. This gave me hands-on experience with Linux web hosting, networking, server configuration, and the process of taking a locally developed website and making it accessible through real infrastructure. The server eventually evolved into the foundation for a larger home lab, including KVM virtualization for additional Linux and Windows systems used for networking, security, and infrastructure practice.
Repurposed Enterprise Hardware
Platform
HP EliteDesk
Processor
Intel Core i5-7500T
Memory
16 GB RAM
Storage
256 GB
Operating System
Debian 13 "Trixie"
Desktop Environment
GNOME
Architecture
x86-64
Purpose
Home Lab Infrastructure
Services Running on the Server
📁 Samba
Configured network file sharing so local devices could access centralized files from the server.
🔐 Tailscale
Established secure remote connectivity to the home network without exposing internal services directly to the internet.
🌐 Nginx
Configured Nginx as a web server and used it to host the Chrissy Rae's Cookies project.
💻 OpenSSH
Configured SSH for remote administration and command-line management of the Linux server.
🛡 UFW
Configured the Linux firewall to control which network services were allowed to communicate with the server.
🌐 Networking & Troubleshooting
Configured network connectivity, IP addressing, firewall rules, and services while troubleshooting real-world Linux networking and access issues throughout the build.
⚙ KVM
Enabled hardware-assisted virtualization and used KVM to host additional virtual machines for continued lab work.
🖥 GNOME
Maintained a graphical Linux environment while also gaining experience managing the system through the terminal.
Centralized File Sharing
One of the first services I configured was Samba, turning the Linux server into a centralized file server for devices on my local network. The goal was to create a location where files could be stored and accessed from multiple computers rather than maintaining separate copies on each device. This required learning how Linux permissions, ownership, directory access, and network shares interact. I also used the project to become more comfortable troubleshooting access and permission issues from both Linux and client devices. The result was a practical introduction to server-side storage management and network file sharing.
Managing the Server with SSH
SSH was configured to allow secure remote administration of the Linux server without requiring physical access or a graphical session. This allowed me to manage the server from other devices on my local network and became especially useful while working remotely. Through this setup, I gained hands-on experience with SSH authentication, remote command-line administration, Linux permissions, and troubleshooting connectivity issues. SSH also provided a practical introduction to managing a server primarily through the terminal rather than relying on the GNOME desktop environment. The SSH configuration became an important part of the server's overall administration, working alongside Tailscale to provide secure remote access to the system.
Remote Access
Connected to the Linux server remotely from other devices using the SSH protocol.
Command-Line Administration
Performed server administration, configuration, and troubleshooting through the Linux terminal.
Authentication
Configured SSH access and worked with Linux users, permissions, and authentication.
Secure Management
Used SSH as a secure management method rather than exposing the GNOME desktop for remote administration.
Connecting Back to Home
To make the server useful outside my home network, I configured Tailscale as a VPN-based remote access solution. This allowed my MacBook to establish a secure connection back to the home network while I was away. Instead of making internal services directly accessible from the public internet, the VPN provided authenticated access to the devices inside the lab. This became especially useful for development. I could work from outside the house while still accessing the Linux server and its services as though I were connected locally. The project gave me practical experience with VPN concepts, private networking, remote administration, and secure access to internal infrastructure.
From Linux Server to Web Server
One of the most important milestones of this project was using the
server to host my first web project.
I installed and configured Nginx as the web server and deployed
"Chrissy Rae's Cookies" to the Linux system. This connected several
different areas of the home lab into a single practical project:
Development
↓
Linux Server
↓
Nginx
↓
Network Connectivity
↓
Web Application
The project gave me experience with the relationship between a
website and the infrastructure required to serve it.
It also became the starting point for my interest in combining
systems administration, networking, and web development.
Hardening the Server
Firewall
Configured UFW to limit network access to required services and reduce unnecessary exposure.
SSH
Used SSH for remote command-line administration and server management.
Fail2ban
Implemented automated protection against repeated authentication attempts.
Service Management
Learned to manage Linux services, networking, permissions, packages, and system configuration.
Expanding the Home Lab
As the home lab developed, the EliteDesk became more than a simple
file and web server.
Hardware virtualization was enabled and KVM was configured so the
system could host additional virtual machines. This provided a
platform for experimenting with different operating systems and
security tools without requiring additional physical hardware.
The virtualization environment was later used for systems including
Kali Linux, Wazuh, Ubuntu, Windows 11, and Metasploitable 2.
This allowed the same physical server to support multiple areas of
technical development:
Linux Administration
Networking
Web Hosting
Virtualization
Security Testing
Windows Infrastructure
What This Project Taught Me
Linux Administration
Command-line administration, package management, permissions, services, networking, and system troubleshooting.
Networking
IP addressing, local network services, VPN connectivity, ports, firewall rules, and remote access.
Server Management
Deploying services, configuring access, troubleshooting failures, and maintaining a continuously running server.
Web Infrastructure
Understanding how Nginx, DNS, networking, and website files come together to deliver a web application.
Virtualization
Configured KVM and used virtualization to expand the capabilities of a single physical server.
Security Fundamentals
Applied firewall rules, VPN-based access, SSH administration, and brute-force protection.
A Server That Became a Lab
What started as a small Linux server became the foundation for my entire home lab. The project gave me hands-on experience building infrastructure instead of simply consuming it. I configured the operating system, managed network services, created shared storage, established remote connectivity, deployed a web server, implemented basic security controls, and eventually expanded the system into a virtualization platform. Most importantly, this project connected several areas of IT that I had been learning independently and gave me a practical environment where I could continue experimenting. The EliteDesk became the foundation for my ongoing work in Linux, networking, systems administration, cybersecurity, and web infrastructure.