My Home Lab [Server] Setup
Welcome to a walkthrough of my home lab setup! I’ve repurposed an old, unused PC into a functional home server that I now use to host various self-hosted services. In this post, I’ll share details about the hardware, operating system, and the services I run using Docker containers.
Hardware Overview
The foundation of my home lab is an old PC that I transformed into a server. Here are its specifications:
- CPU: Intel i3-3220 (4 cores) @ 3.300GHz
- GPU: Intel HD Graphics
- RAM: 6GB
- Storage:
- 1TB HDD
- 500GB SSD
- Network: Ethernet connection with 24x7 uptime and 40MBps speed
This setup provides enough power and storage for my current needs. Plus, it runs efficiently and handles my workload without any issues.
Operating System
I initially used Ubuntu Server as my server operating system. While it worked well, I encountered some minor issues, which led me to switch to Debian GNU/Linux 12. Debian’s stability and simplicity make it an excellent choice for a home server.
I manage the server remotely by SSH from my main computer, which runs Arch Linux, making it easy to maintain and configure.
Docker Containers
To maximize the potential of my home lab, I use Docker to run various services in isolated containers. Docker makes it easy to deploy, update, and manage services efficiently.
Here are the 17 Docker containers currently running on my server:
- Changedetection: Monitors website changes and sends notifications.
- Coder: A cloud-based IDE for collaborative coding.
- File Browser: A web-based file management tool.
- Homarr: A customizable dashboard for all apps and services.
- Homepage: A simple and customizable homepage for managing links.
- Mealie: A recipe manager and meal planner.
- Navidrome: A lightweight, self-hosted music server.
- Nextcloud: A productivity platform for file syncing and collaboration.
- Nexterm: A server management tool supporting SSH, VNC, and RDP.
- Pingvin Share: A secure file-sharing service.
- Stirling PDF: A PDF management and processing tool.
- Metube (yt-dlp): A tool for downloading videos.
- Jellyfin: A media server for personal media files.
- Kavita: A self-hosted ebook management service.
- Speedtest Tracker: Tracks and logs internet speed tests.
- Syncthing: Synchronizes files across devices.
- Portainer: A powerful tool to manage Docker containers.
Future Plans
While my current setup meets my needs, I have plans to enhance it further:
- Reverse Proxy: I plan to set up a reverse proxy for easier service access and management.
- Separate Authentication: To improve security, I will configure authentication for accessing my services.
- Custom Domain: I’m considering using a custom domain to access my server remotely.
Conclusion
This home lab setup has been a rewarding project, allowing me to learn, experiment, and host services that improve productivity and simplify tasks. While I’ve focused on the services I use the most, there’s an endless array of possibilities for what you can do with your own home lab.
If you’re interested in building a home lab or exploring similar services, check out my other blog posts and documentation for step-by-step guidance!