Setting up a personal server

2018-02-19

I have been running a Pi as a server for a year(?) now, and I must confess that it is was not trivial for me to run and manage one successfully. It gave me a ton of work, but in the process of configuring everything I learned a lot, particularly on configuring networks and connectivity.

Besides the learning reason, a major reason to have a personal server is to have a place to keep stuff online without using a “cloud”. This is especially useful for things like private repositories, for instance. Another thing that can be easily done is to serve (duuh!) files on the local network – the only thing needed is

cat foo.bar | nc -l 1234

and, in the other machine

nc 192.168.XXX.XXX 1234 >foo.bar

and from here you can do a lot more.

Another upside is having a temporary media server when needed (my Pi is near the TV), so if we want to see something online, the Pi may handle it, instead of having to grab my laptop for that.


A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development. – Wikipedia, retrieved in February 2018

When working on any project, I like to have a MVP, because only then does the project have a concrete reality, that I can try out to find imperfections.

So, what is the MVP of a personal server? I settled for SSH - there are megatons of tutorials on how to make it work, and it is the first step to be headless.

I won’t write here yet another tutorial. However, I think the following things cover the basics on setting up SSH:

Some of the above tips are also applicable to other setup activities. As always, common-sense is helpful, and when you are not certain of something, search for the answer or ask someone!


  1. Network Address Translation. If you are using a “box” at home, you are behind one. See this wikipedia section for an explanation.↩︎