P520 - Home Server

P520 - Home Server

Project type
Home Server

Why I wanted a home server in the first place

This was my first time building a home server with the purpose of being a NAS and a home lab that I could tinker around with. I had been playing with the thought of building a NAS for a while now and eventually decided that I would also like to have a home lab. I eventually decided that I should do both with just one system using virtualization. It would be a great learning experience to mess around with a Type 1 hypervisor, and I ended up looking for something that could help meet those needs. I stumbled across a video from Hardware Haven where he showcased almost exactly what I needed/wanted.

In his video he bought a Lenovo Thinkstation P520 and added some of his own hardware to meet his needs. It was decently priced and had an Intel Xeon W-2135 with 6 cores which was perfect for a simple virtualization home server. Seeing his video made me decide on this being the route I was going to go and I started doing my research. I starting to watch videos explaining what Proxmox was and how it worked, what people had used it for, if it was safe, and how to install it. Once I was certain that Proxmox and the hardware of the P520 would suit my needs I went and ordered all of the parts I needed to start my own home server.

Buying Parts & Installation

I settled on this listing which was priced at $165.98. It came as a complete package, minus drives and GPU. I had spare 500gb hard drives that weren’t being used for anything that I planned on putting in the computer. For the NAS aspect I decided I would want more storage than that, so I ordered 2 (2TB) Hard Drives off of eBay with a 100% S.M.A.R.T health status. From the video and documentation on the P520, I realized I was going to need 2 more drive bays to fit everything so I bought a cheap one off of amazon to make things work in the mean time. I also decided I wanted to try OPNsense or pfSense so I went and ordered an “Intel I350-T2 Dual Port Gigabit Ethernet Adapter” NIC since that was what Lenovo had listed for an “Optional Network Adapter” on the data sheet.

Once the parts came in I opened the side panel and got to installing my parts. I put the additional drive bay in and populated all bays with my drives. I installed the two port gigabit NIC and GPU. Wired everything up and powered it on, it booted into the UFEI right away and I was able to see everything listed. Once it was up and running, I went and enabled USB Boot, and changed the boot order so that the USB was first. Plugged in my flash drive into my personal computer and navigated to the Proxmox download page. I checked their listed SHA256SUM with the download link and they matched so I went ahead and downloaded the ISO. I used a tool called Rufus to create a bootable flash drive using the Proxmox ISO. Once it finished, I plugged the USB into the P520 and turned the machine back on. Waited a few seconds and it booted into the Proxmox installer.

Installing Proxmox

The graphical installation was simple enough, I selected the disk drive that I wanted to host the install on and proceeded with the Location and Time Zone screens. Afterwards I put in a secure password that would later be used to access the root user of the machine. I am a big proponent for using secure and complex passwords, so I used my password manager to generate one for me. The last thing to was setup the Network Configuration for my installation. To do this I logged into my router and created a DHCP reservation for the MAC address of the ethernet port I used (192.168.0.161). Once the reservation was made I went back to the installation in put in the IP address, gateway, and DNS server. I then clicked install and let it do the rest. Once finished, it gave me the IP address I had specified earlier and a port number (8006 by default) to connect and manage the machine.

Since I wanted to passthrough PCI devices, namely GPU and NIC card, I had to enable IOMMU. To do this I first had to go into the UFEI and make sure Virtualization Technology was enabled. Then I connected to Proxmox server using OpenSSH via PowerShell. Once logged into root, I edited my configuration file using nano and added “quiet intel_iommu-on” to the “GRUB_CMDLINE_LINUX_DEFAULT:” line

image

Future Plans

In the future I would like to create a VM for OPNsense and use it as my router and firewall. To do so I would have to pass through the two ports on my NIC and connect everything up. One cable going to the modem, the other to a network switch. I’d then setup everything I need to while following the OPNsense docs, then make sure everything works afterwards. I would still like to have wireless connectivity for devices like my phone and TV so I would additionally have to log into my router and figure out how to turn it into an Access Point.

Another thing I would like to do with my home server is to create a VM to host all my docker containers. I’ve wanted to learn about containerization for quite some time now and what better way than to actually deploy some of my own. I have already made some progress on this and you can find it here —> github.

This project provides a way for me to manage and automate my digital collections, as well as provides access to a self hosted plex server. I have finished writing the docker-compose files for the most part, and just need to get my wireguard information from my VPN provider. My next steps are to deploy all the containers and ensure that they work properly. I don’t really have a use for the automation and management containers but figured they would be “nice to have”. In the long term I would like to add a way to remotely access my docker containers in a secure way.

So far this is the only project I have for my docker VM but I plan to add more!

The last project for my home server that I have planned for now is to create a bunch of VM’s and mimic a real life office environment. I would like to set up Active Directory (AD) and learn more about it by working with it hands on. I’d also like to create a ticketing system (probably with osTicket) and create fake tickets and how to handle them. Overall I want to learn as much as I can about real-life office environments by mimicking what they actually would look like.