Small Form Factor Server
This Lenovo M900 PC makes for a nice Small Form Factor (AKA 1L Box) Linux Home Server
These units do not come with storage but has internal ports for both an M.2 drive (SATA or NVME) and a 2.5” Laptop drive.
In my unit I added a 256GB NVME drive and a 1TB SATA HDD drive
Before you leave make sure your unit has screws and brackets. They should have them, but double check
Mine came with a single stick of 8GB of RAM
But there was space for another slot of RAM so I could extend it an additional 8GB to make it 16GB Total.
Another thing you may want to pick up is an HDMI adapter, just for the set up process. This unit will run headless, meaning no monitor, keyboard or mouse, but for setup you will need it.
I have purchased some other Lenovo units in the past that had a built an HDMI port add on, but the one I got needed a DP to HDMI adapter for the monitor I was going to use it with.
Here is a list of things I was able to install during my spare time, over the course of a week.
- DHCP
- DNS
- NTP
- File Server (NAS Samba and NFS)
- Mail Server (postfix and dovecot)
- Podman(Docker)
- DNS over HTTPS
- Pihole
- home assistant
- TFTP
- PXEBOOT via BIOS and UEFI
- plex
- MATE
- XRDP
- Certificate Services (via XCA)
- OpenVPN
- Guacamole
- Nagios
- Influxdb/Telegraf
- Prometheus/node_exporter
- Grafana
- LDAP
- Webmin
There is a lot more I could have installed, but time was the more limiting factor.
In 2024 I am going to have a series of meetups to discuss building this server and adding these (and maybe more) services to this unit.
https://www.meetup.com/Tukwila-Maker-User-Group/
Still working out the logistics, join this meetup if you are interested.
In the past we have had meetups in the King County Library, I have presented at Linuxfest Northwest in the past.
May do some virtual stuff as well.
Note that the OS I am going to use is Linux and the distribution is Rocky 9. As I write this document, I am tempted to give more details, but this is getting longer than I expected.
What are these services
DHCP/DNS/NTP
DHCP is what provides IP addresses to your device (mobile or computer) when it is connected to your network. Normally, most of these services are provided by the router. Some of the later services I have installed require control of the DHCP server, so I put it here.
DNS is what translates numeric IP addresses to names. This home server can register names of clients assigned IP addresses into DNS so you can reference devices on your network by name. The real reason I have a local DNS server is for use of other record types, like MX records for internal mail services.
NTP provides internal time services, this home server syncs up time with Internet time servers and provides time internally. It was added here because it was relatively easy to set up.
File Server
One of the common services a server provides is file services. Being able to share files internally is relatively easy. There are different protocols, usually Samba is used to share files between windows machines. NFS is used to share files between Linux boxes. Finally, I use webdav to share keepass (a password vault) between Linux, Windows, IOS, and Android.
Mail Server
Although you can expose this on the internet as a real public mail server, there is a lot involved and there are a lot of risks. But you can set this up as an internal mail server so you can use archive email from other sources (gmail, outlook.com, etc).
Podman (Containers AKA Docker)
I lot of software is written on other Linux platforms and may have different dependencies, containers are used so you can package up what you need and provide it to others on different Linux distros. Couple of these services are provided via containers.
- DNS over HTTPS – this is provided by cloudflared container. We will use it to encrypt DNS traffic so an ISP cannot see what you are looking up.
- Pihole – a DNS server used to filter out ads and see what your computer is making lookups on.
- Home Assistant – This is a way to control devices in your home, I use it to turn smart plugs and bulbs (like TP-Link Kasa on and off), I have sensors around the home to detect when a door opens or there is motion in a room. This deserves a larger section, but there are other services this unit provides. It even integrates with my netgear router to let me know what devices appears on my network.
TFTP/PXEBOOT
With control over DHCP and access to a fileserver, you can set up a TFTP server with PXE boot so you can boot machines over the network.
You can use it to build more home servers, run utilities to clone another machine on your network like a Windows desktop as a backup, or run a memory test.
You can even run a diskless OS like ubuntu or mint temporarily on another machine without touching the hard drive.
Plex
Plex is like a private streaming service, I installed a native version of Plex on this server, the videos tend to be large so I have attached a larger 5TB external ESX USB drive.
Those grey devices on the top are older HD Homeruns you occasionally find. The one on the left was $5 the other one on the right was $37.
The black unit is a newer model that runs about $120. The older units, can record 2 channels each so I can simultaneously record 4 TV streams.
The CPU can do hardware transcoding but are of an older model
Disclosure: Although plex is free I have purchased the Lifetime Premium version. I believe TV recording and hardware transcoding require the premium version.
MATE/XRDP
Most people associate Linux boxes as machines that needs to be managed via command line. To be fair, the setup of these boxes was done via command line.
But you can RDP into these boxes like you do Windows boxes, using the RDP protocol with a utility like mstsc.exe.
You can even skin it to make it look like Windows.
Certificate Services (via XCA)
Although technically not a service run by this unit, I did set up a certificate authority to avoid these types of annoyances.
The CA is used with OpenVPN though.
OpenVPN
When you are out and about, you can connect to you home network securely using a VPN. There are a couple out there, but this one is a free one called openvpn. There are clients for Windows, Linux, MAC, android, and iphone.
Guacamole
Another way to access some of your resources internally is through Guacamole. This is a browser application that uses an HTML5 compliant browser like Chrome, Edge or Firefox, to access SSH, RDP, or VNC services.
One use case is say you were at a friends house and needed to access your network at home, you can use their browser, log in with a username and password, in addition use two facto authentication for more security, and access one of your boxes at home.
Side note, if you do change your mind and want a Windows 10 box, they do come with a digital Windows 10 license and will register automatically.
Nagios
Those are a lot of services to manage from one tiny box. Nagios is an older monitoring tool that can watch services and make sure they are running.
Influx, Telegraf, Grafana, and Prometheus
Can this tiny box handle all these services? Let’s a couple of more services to see graphs to show if it is indeed handling the load.
Grafana takes data from influx and/or Prometheus that is populated with telegraf (and something called node_exporter) to produce graphs like this which will give historical trends on resource usage.
Webmin/LDAP
Grafana, Nagios, Samba, Mail server, and other services (not plex though) require some sort of authentication system. Webmin is a nice Web interface to manage users and groups, view basic stats and control DNS and DHCP setttings.
Conclusion
Here is the biggest thing, this gets you started, there are a lot of more things you can do with a Linux home server, you can get into Software Designed Radios, run a Minecraft server, Run virtual machines for other OS’s like Windows.
So its just the start.