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