Linux / Networking / Self Hosting

Personal Linux Server and Self Hosting

Outside of my coursework, I built a personal Linux server using spare computer parts that I already had. The goal was to create a self hosted remote server that I could use for my own websites, game servers, remote access, and general server administration practice.

I do not run this as a business or make money from it. I built it because I wanted to learn more about Linux, networking, hosting, and server management while also avoiding the cost of paying third party hosting services. It has become a practical learning environment where I can test real services, troubleshoot real problems, and manage my own infrastructure.


Project Overview

This project started as a way to reuse older computer hardware instead of letting it sit unused. I turned the spare parts into a dedicated Ubuntu server that I could access remotely and use for personal hosting. Over time, it became one of the most useful projects I have worked on because it gave me a real environment to practice Linux administration, networking, and server troubleshooting.

One of the main uses of the server is hosting my portfolio website. I also use it for project websites, subdomains, remote access, and personal game servers. Since this server is hosted from my own hardware, I have had to learn how to manage the full setup myself, including the operating system, web server, DNS records, dynamic DNS, ports, SSL certificates, file permissions, Git deployment, and service logs.

This project is not meant to be an enterprise hosting platform. It is a personal self hosted server that I built to save money, learn by doing, and have more control over the services I use.


Tools and Skills Used

Ubuntu Linux Apache Dynamic DNS SSH Docker Git SSL Reverse Proxy Server Troubleshooting

What I Worked On

For this project, I handled the setup and maintenance of the server myself. I installed and configured Ubuntu, set up Apache to host websites, configured domains and subdomains, and worked with dynamic DNS so my domains could continue pointing to my home network even when my public IP address changed.

I also set up remote access so I could manage the server from another computer. This helped me get more comfortable using SSH, working in the Linux terminal, editing configuration files, checking service status, restarting services, and reading logs when something was not working correctly.

Another major part of the project was using Git to manage website updates. I can edit my portfolio locally, push the changes to GitHub, and then pull the updated files onto the server. This gave me a better understanding of how version control can be used as part of a simple deployment workflow.



Hosted Services and Use Cases

The server is mainly used for personal hosting and learning. It gives me a place to run my portfolio website, test web projects, manage game servers, and practice Linux administration without relying on paid hosting providers.


Portfolio Hosting

Hosted my personal portfolio website using Apache, custom domain routing, Git-based updates, and HTTPS configuration.

Domain and DNS Management

Configured domains and subdomains so different services could run separately while still using the same physical server.

Game Server Hosting

Managed personal game servers, configuration files, ports, backups, and remote access tools for server administration.

Remote Administration

Used SSH, command line tools, service logs, and Linux permissions to maintain the server and troubleshoot issues.


Useful Skills Gained


Project Accomplishments


What I Learned

This project taught me a lot about how hosted services actually work. Before building my own server, it was easy to think of hosting as simply uploading files somewhere. Running my own server showed me how much happens behind the scenes, including DNS, ports, web server configuration, permissions, certificates, services, and logs.

I also learned that troubleshooting is a major part of server administration. Many issues were not fixed by one obvious command. I had to check logs, test DNS, verify Apache configurations, inspect service status, confirm ports, and make sure files were in the correct locations with the correct permissions.

Overall, this project has been one of the most useful personal projects I have worked on because it gives me a real environment to practice Linux, networking, hosting, and debugging. It is not a commercial hosting system, but it has been a practical way to build useful skills while saving money and keeping control over my own services.


Back to Projects