content/blog/2020-05-03-homelab.org
151 lines · 6596 bytes
1#+date: <2020-05-03 Sun 00:00:00>
2#+title: Homelab Construction: Hardware and Network Configuration Guide
3#+description: Comprehensive instructions on assembling and configuring a homelab environment, emphasizing hardware selection, software deployment, and network setup for operational efficiency.
4#+slug: homelab
5#+filetags: :homelab:hardware:network:
6
7* What is a Homelab?
8
9Starting as a developer, I have largely stayed away from hardware-based hobbies
10(other than building a gaming desktop). However, as the quarantine for COVID-19
11stretches out further and further, I found myself bored and in search of new
12hobbies. After spending the last few months browsing the [[https://www.reddit.com/r/homelab/][r/homelab]] subreddit, I
13decided it was time to jump in and try things out for myself.
14
15Since I am a beginner and just recently graduated from college, everything I've
16done so far in my homelab is fairly low-budget.
17
18* Hardware
19
20** Raspberry Pi 4
21
22Luckily, I had actually purchased a [[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/][Raspberry Pi 4]] before the quarantine started
23so that I could try to keep Plex Media Center running, even while my desktop
24computer was turned off. I started here, using the Pi to hold Plex and Pi-hole
25until I grew tired with the slow performance.
26
27Here are the specifications for the Pi 4:
28
29- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
30- 4GB LPDDR4-3200 SDRAM
31- Gigabit Ethernet
32- H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode)
33- 64 GB MicroSD Card
34
35** Dell Optiplex 5040
36
37Since I wasn't happy with the Pi as my main server, I turned to Craigslist. I
38know a lot of other homelabbers use Ebay, but I can't seem to ever trust it
39enough to purchase items on there. So I used Craigslist and found a Dell
40Optiplex 5040 desktop computer on sale for $90. While this computer might be
41underpowered, it was one of the few computers under $100 that was available
42during quarantine.
43
44Here are the specifications for the Dell Optiplex 5040:
45
46- Intel Core i3 6100
47- 8GB RAM DDR3
48- Intel HD Graphics
49- Gigabit Ethernet
50- 500GB Hard Drive
51
52While this hardware would be awful for a work computer or a gaming rig, it
53turned out to be wonderful for my server purposes. The only limitation I have
54found so far is the CPU. The i3-6100 only has enough power for a single 4k video
55transcode at a time. I haven't tested more than three 1080p streams at a time,
56but the maximum amount of streams I've ever actually used is two.
57
58** WD easystore 10TB & 8TB
59
60Application storage and temporary files are stored on the internal hard drive of
61the server, but all media files (movies, tv, games, books, etc) are stored
62externally on my WD easystore hard drive. Creating auto-boot configurations in
63the =/etc/fstab= file on my server allows the hard drives to automatically mount
64whenever I need to restart my server.
65
66#+begin_quote
67Update: In March 2022, I shucked the hard drives out of their external cases,
68put some Kapton tape on the third power pin to prevent power shutdowns, and
69stuck them inside my server tower using internal SATA cables.
70#+end_quote
71
72** Netgear Unmanaged Switch
73
74To manage all the ethernet cords used by my homelab, my desktop, and my living
75room media center, I purchased an 8-port gigabit ethernet switch for $50 at my
76local computer store. This is probably much more than I should have spent on an
77unmanaged switch, but I am comfortable with the choice.
78
79** TP-Link Managed Switch
80
81Since I use the unmanaged switch to group all living room devices together, I
82use the managed switch to configure VLANs and secure my network.
83
84** Arris TM1602A Modem & Sagecom Fast 5280 Router
85
86My default modem and router, provided by my ISP, are fairly standard. The Arris
87modem supports DOCSIS 3.0, which is something that I definitely wanted as a
88minimum. The Sagecom router is also standard, no fancy bells or whistles.
89However, it does support DHCP and DHCPv6, which is something you can use to
90route all household traffic through a pi-hole or firewall.
91
92** TP-Link EAP
93
94In order to gain better control over the network, I use my own wireless access
95point instead of the one included in the Sagecom router above. Now I can control
96and organize all of my ethernet connections through the VLANs on the managed
97switch and wireless connections through the VLANS on the EAP.
98
99** Generic Printer
100
101The last piece to my homelab is a standard wireless printer. Nothing special
102here.
103
104* Software
105
106** Ubuntu Server 20.04
107
108While the 20.04 version of Ubuntu was just released, I always like to experiment
109with new features (and I don't mind breaking my system - it just gives me more
110experience learning how to fix things). So, I have Ubuntu Server 20.04 installed
111on the Dell Optiplex server and Ubuntu Server 19.10 installed on the Raspberry
112Pi. Once I find an acceptable use for the Pi, I will most likely switch the
113operating system.
114
115** Docker
116
117I am /very/ new to Docker, but I have had a lot of fun playing with it so far.
118Docker is used to create containers that can hold all the contents of a system
119without interfering with other software on the same system. So far, I have
120successfully installed pi-hole, GitLab, Gogs, and Nextcloud in containers.
121However, I opted to delete all of those so that I can reconfigure them more
122professionally at a later time.
123
124** Plex Media Server
125
126Plex is a media center software that allows you to organize your movies, TV
127shows, music, photos, and videos automatically. It will even download metadata
128for you so that you can easily browse these collections.
129
130** Pi-hole
131
132Pi-hole is an alternative ad-blocker that runs at the DNS level, allowing you to
133block traffic when it hits your network, so that you can reject any traffic you
134deem to be bad. Pi-hole uses blacklists and whitelists to decide which traffic
135block and, luckily, there are a lot of pre-made lists out there on Reddit,
136GitHub, etc.
137
138** Nextcloud
139
140While I had trouble with the Docker version of Nextcloud, I was very successful
141when setting up the snap version. Using this, I was able to map Nextcloud to a
142subdomain of a domain I own in Namecheap. Additionally, Nextcloud has an
143integration with Let's Encrypt that allows me to issue certificates
144automatically to any new domain I authorize.
145
146** Webmin
147
148To monitor my servers, and the processes running on them, I use the Webmin
149dashboard. This was fairly painless to set up, and I currently access it
150straight through the server's IP address. In the future, I will be looking to
151configure Webmin to use a custom domain just like Nextcloud.