My Home Server Setup
In today’s digital age, having a reliable home server setup can be incredibly beneficial, whether for streaming media, managing files, or simply learning new tech skills. I recently took the plunge and set up my own server using a second-hand mini PC. I’m excited to share my experience, including the hardware I chose, the software stack I implemented, and the backup solutions I put in place.
Hardware Specifications
I went with a Dell Optiplex 3060 Micro for my server. It’s a compact machine that offers solid performance, even as a second-hand unit. Here’s what I’m working with:
- CPU: Intel Core i5-8400T
- RAM: 8GB DDR4
- HDD: 1TB
- SSD: 256GB
To enhance security, I’ve encrypted both the HDD and SSD using LUKS (Linux Unified Key Setup). This ensures that my data remains protected, even if the drives are physically compromised.
Additionally, I’ve integrated a Raspberry Pi into my setup as an alternative to IPMI (Intelligent Platform Management Interface). This allows me to monitor and manage my server remotely, providing a cost-effective solution for out-of-band management.
Operating System
For the operating system, I chose Debian 12. I’ve always appreciated Debian for its stability and security, and it has a strong community backing. The installation was straightforward, and I found it easy to customize to fit my needs.
Containerization with Docker
One of the best decisions I made was to use Docker for containerization. It allows me to run applications in isolated environments, which simplifies management and reduces conflicts. Here’s a rundown of the containers I have set up:
- Transmission: Used for downloading legally obtained Linux ISOs.
- Gluetun: A VPN client that secures my Transmission downloads, providing privacy while I manage my downloads.
- Jellyfin: An open-source media server for streaming my collection of movies and shows to various devices.
- Heimdall: A dashboard for quick access to all my web applications, making navigation seamless.
- Code Server: A cloud-based development environment that allows me to code remotely from my phone or tablet.
- Immich: A self-hosted solution for backing up and managing my personal photos and videos.
- Navidrome: A music server for streaming my high-resolution FLAC music collection, which is around 200 GB.
- Fresh RSS: An RSS feed aggregator that keeps me updated with my favorite news and content.
- Libre Speed: A speed test tool to monitor the performance of my server and internet connection.
- Memos: A note-taking application for organizing my thoughts and ideas.
- Stirling PDF: A PDF editing tool that serves as a better alternative to less reliable services like iLovePDF and SmallPDF.
- Docmost: Another note-taking application that helps me keep track of important information.
Managing Storage for Media
A big part of my server’s storage is dedicated to media files. I have about 100 GB of movies, 200GB of music, along with 50 GB of personal photos and 30 GB of family photos. That totals 380 GB of media that I need to manage and back up. Jellyfin has been fantastic for organizing and streaming my movie library to various devices in my home. With a 1TB HDD, I have plenty of room for my current collection and future additions.
Backup Solutions with Restic, Storj, and Backblaze
To keep my data safe, I implemented a backup strategy using Restic along with Storj and Backblaze B2. Here’s how I set it up:
-
Restic: I chose Restic for its efficiency and ease of use. It allows me to create incremental backups, which saves both time and storage space. Plus, it works well with various backends.
-
Backblaze B2: I back up my photos and critical data to Backblaze B2. This S3-compatible storage solution is affordable and reliable, making it a great choice for important backups. The integration with Restic makes the backup process seamless.
-
Storj: For my remaining containers and most of my media files, I use Storj. This decentralized cloud storage solution is secure and cost-effective. The fact that my data is distributed across multiple nodes adds an extra layer of security.
By using both Backblaze B2 and Storj, I ensure that my data is backed up in multiple locations, providing peace of mind against data loss.
VPN Setup with Windscribe
To enhance my privacy, I opted for a Windscribe VPN monthly plan at $3. This plan allows me to connect to servers in both Singapore and the US, which is great for accessing geo-restricted content. The integration of Windscribe with my Docker setup helps secure my internet traffic.
Remote Access with Tailscale
For secure remote access to my server, I implemented Tailscale. This tool creates a secure mesh VPN, allowing me to connect to my server from anywhere without exposing it to the public internet. It’s been a game-changer for accessing my services securely.
Public Access with Cloudflare Tunnels
To make my public-facing websites accessible, I use Cloudflare Tunnels. This service allows me to expose only the necessary Docker containers to the internet securely, without needing to open ports on my router. It adds an extra layer of security and ensures that my public applications are accessible from anywhere while keeping the rest of my server private.
Current Situation and Future Plans
I live in a university setting for about nine months a year, which means I need a server that is both reliable and accessible remotely. With a solid 300 Mbps broadband connection at home, I can stream media and access my server without any issues. In the future, I plan to upgrade to a NAS with a similar setup, which will allow for more storage and better data management.
Conclusion
Setting up my home server with a second-hand Dell Optiplex 3060 has been a rewarding experience. The combination of Debian, Docker, Tailscale, Windscribe, and a solid backup strategy using Restic, Storj, and Backblaze B2 has created a secure and efficient environment for hosting my applications. The added security of LUKS encryption and the use of a Raspberry Pi for remote management further enhance my setup. Whether I’m streaming movies, managing documents, or coding remotely, my server setup has proven to be a reliable solution for my needs.
If you’re considering setting up your own home server, I hope my journey provides some inspiration and guidance. The world of self-hosting is vast, and with the right tools and hardware, you can create a powerful server environment tailored to your needs. I’m open to suggestions for further improvements and enhancements. Happy hosting!