Intro

I made a server recently and I thought that I would share. The hardware of the server is an old Dell Optiplex that I was gifted, the specs are:

CPU: Intel i7-7700
Memory: 16GB DDR4
Storage: 256GB NVME (OS) & 512GB SATA (Data)
OS: NixOS (the best OS)

My OS of choice was NixOS due to its modularity and ease of use when spinning up services and I already use it for my personal devices so it just made sense.

I do have a repo that contains the config for the server and all the modules that I have configured linked here and if you are interested in some general use configs I have another repo here.

My server is still in an infant state as I learn more about hosting, DNS, and just the overall concepts of running a server. I will say it has been rewarding to spin up some of these services and use them in my day to day.

Services

Currently I only use a couple services on a daily basis. Those are:

One of the most impactful for my day to day has been SearXNG, it has allowed me to search without having the AI generated response that blocks the sites that I am looking for and overall removes a lot of bloat that other search engines have.

I started using these services through Tailscale so that I can focus on just getting the services running before I point them to a subdomain and open them up to the internet. For a while my process on my devices would be to connect to the VPN to then access the service or server which became tedious. So once I was able to get these services running for a couple months with no interruptions I decided to point to subdomains using Caddy and ACME so that I do not have to rely on Tailscale so much especially from my phone. I know that there are some security risks involved but it has been a good learning experience to understand how DNS and Reverse Proxies work. Additionally, I use key-based SSH to do maintenance on the server whether it be updates or trying to resolve an issue with one of these services.

Why NixOS

I chose NixOS for the reason previously mentioned for one. I already had a working config that I could modify for this case, but there’s more to it. To me the idea of being reproducible is great, the amount of times that I have broken a Linux system because of the wrong command or a new update has taught me that it’s great to have an easy way to restore your systems last working state. NixOS has proved to be great for that allowing me to jump back to previous generations and the ability to pickup the config and move it to another device with little to no issues and have it set up exactly the same as the other device if needed.

Future Plans

In the future I would like to target some of the hardware such as my storage and setup RAID as currently I do not have redundancy. It does leave a slight worry of data loss, but if that’s what happens I will figure it out then. With the current rise in hardware prices it does not make sense to try and pickup those parts for an absurd price (thanks AI).

Final Notes

This project has been really fun to work on and has taught me about managing a server and also using NixOS. If you want to try one of my services you can go to https://search.ajimenez.me/ which will take you to SearXNG.