When my freshly installed Nextcloud instance asked me how I would describe my poor system’s welcoming page, slogan was obvious.
Proudly self hosted on Libre Hardware - Limited storage, maximum freedom.
The slogan explains it all. “Limited storage” as all I could score was a 750GB spinning rust in hopes that I can resurrect old discarded hardware with a new purpose for use. New purpose was being working proof of computational liberation, hence the “maximum freedom”.
Did I need a self hosted online storage and a static web hosting? No, not really. As someone who has relatively exeptional computational resources for such needs, I could easily host what I need on some spare metal or simply could have used the services that I have already access to. Still the idea of self reliance and swag that comes with having some blinkemlicht in an mysterious box in your living space lured me into this adventure but most of all doing what I preach is what motivated me. As a free software activist and a member of leading association in the country I talk too much about self hosting, federation and bright liberated future of humankind through computational freedom. If I am going to softly blame people for not taking control of their digital life, I as might show an example. So my adventure of self hosting on libre system started.
Ofcource this was not an easy journey. There were some goals that I personally liked the system would meet in the end:
- As much as free software possible for freedom,
- Least new parts as necessary for ecology,
- Low maintenance for peace of mind,
- Low noise for sanity,
Did I met those criteria? No, not that easily.
A friend of mine had one Asus GA-G41M board lying around. That solved main problem. Just internally flashed it with Libreboot and that was it. We had one 160GB HDD left from one of our X200 liberation projects. With only 2 cores at 2.2 GHz, 1 GB of ram and 160 GB of storage my new server was almost ready to deploy without spending anything for this purpose. Then I realized I have a small entropy problem.
Things need energy to work and this little machine was not an exempt. In simple terms power supplies suck. They literally suck energy along with your soul at the same time and do not output decent work for it. If you are trying not to drown your system with excess power that is supplied by seemingly always gaming oriented PSU’s, that observation is today’s fact. This system was only drawing 50 W idle and at most can make 200, perhaps. Every low power PSU off the shelf are either cheaply made or old. This meant either buying a brand new PSU with quality component and a silent design or go with old and crappy PSU with terrible specs for modern standards. I stayed true to hackers way and bought a cheap, low power PSU and hack the crap out of it with almost 3 times more expensive fan and a jigsaw. It is silent but not efficient. Besides being still overpowered, it also wastes energy. It is the first thing to be replaced with something fanless and efficient such as PicoPSU if I can get my hand on one.
When everything came together. Next order of business was picking an operating system. This might seem like a straight forward operation but low maintenance requirement of mine demanded some research. From nerdy corners of Mastodon I remembered a project called YunoHost. They aim to make running a self hosted server an easy task for everybody by automatizing processes and providing intuitive web UI. It was a joy to use YunoHost. One can get their machine online in no time with it. I highly recommend anyone who would like to self host popular services to use YunoHost. Just check out their app catalog and follow their documentation. I opted for a regular Ubuntu Server with Linux-Libre setup after a few weeks since I really like to get my hands dirty and there is nothing more intimidating then a simple shell blinking to you. Still I recommend anyone to try out Yunohost for their first hosting adventure. Libreboot also provides the possibility of signed kernel and grub config. This provides a good security for the sistem since it does not allow anything but GPG signed kernel to boot on the system. With some physical restrictions on the system it is way secure then needed.
If you cannot serve anything online you actually do not have a server. This required some squabble with my ISP. At that time the only provider I could get was semi government owned cable company. They had a terrible reputation in the past but apparently they got it a little better since those days. Still they like to see you as an cow to milk. What they provide as an internet connection is tad better than DSL over barbed wire in the end of the first quarter of 21st century. They throttle your bandwidth in prime time and overcharge for, some what necessary, static IP* to extortion level. This delayed my project until again semi government controlled fiber optic connection arrived. I paid cancellation ransom to cable company and switched. This provided me with a stable connection with 100 mbps down and 10 mbps up speeds with static IP. If I had the chance to live 200 meter away I could have had 1 gbps, almost symmetric connection for the same price. Life…
This brought the router problem. My fiber company provided their own router and GPON unit. They are well known for their terrible security, malicious and otherwise. So this router was out of option for freedom and security of my network. I had my trusty Netgear WNDR3800 router flashed with LibreCMC which I had it shield me from cable company for a while. At this moment I would liked it to connect me to the Internet directly. Some fiddling without any clear documentation provided what I want. A connection truly works on libre hardware and software on my part.
At this moment I had a working system with minimalist resources and no place to put. Easy solution would be a regular pc case but I also had plans for placement of network equipment and media storage. So I opted for a cheap 4U wall mount cabinet. It is mounted close to door and neatly stores everything. That space was wasted anyway and provides a cool welcome for visitors. Inside is a mess because of my lack of organizing cables but additional screen gave it +5 charisma points. I even got 2x DDR2 4gb RAM and a salvaged 750GB HDD for it. Even lined it with soundproofing foam. Everything was a go and we were online. Hugo static site generator and very helpful guide to setup it with Nginx from Gideon Wolfe made this site possible and Nextcloud provided the rest of the services needed. Everything was fun, then entropy hit once again!
These old CPU’s are tough to cool. Their stock coolers are akin to loud motorcycles; making more noise than work. Being enclosed in a cheap ventilation challenged rack was not good on components. I tried to use a makeshift duct made out of aluminum foil to exhaust hot air with PSU fan but failed ultimately. I was only caring about CPU temperatures which was floating around 50-55 degree celcius when idle and nothing else. This negligence on my part bit me in the byte. One morning I woke up to an unsettling 404. Motherboard was denying to power up. Up-time is paramount. Full hardware mode engaged and everything troubleshooted; PSU, RAM, HDD. What was left was either CPU or the board it self. I decided to replace the board. It was going to be a social lesson.
Since I had this board gratis, I was not sure about it’s market availability and price. As common sense dictated I could expect a relative abundance and bargain prices for such and old equipment. I was wrong. There was rather high number of boards for sale and their price was ranging between 120-400 (~10-30$) without any reasonable distinction. I was also wrong that I could be able to buy any board anytime since in the following morning of failure 2 of the cheapest out of 6 was already sold in front of my eyes. So I rushed and called the closest person who sells it. The guy had a quite nostalgic shop totally unorganized like I was used to see in my childhood in small neighborhoods. A small chat with the guy revealed the reason why this seemingly worthless +15 year old board was selling like cake. People were equipping them with quadcore CPU’s despite trashing them less then a year to play games. Games!! I was completely blown by the fact that people resorting 15 year old tech for games today. I knew economy wasn’t good but below this point you go computationally Tetris levels. So I grabbed my board and decided to take care of it well this time. A better bigger heat sink is in buying list but a hacked stock Intel cooler with another Be Quiet! fan contact glued to it had to do it while cabinet door left open. All that is left was stick some stickers on it to show the world who is the boss. I only had one Libreboot sticker left so I refrained from using it. If anyone has some extra to share can mail it to me (=
From this point on the project settled to a comfortable status. Reasonably silent, highly operational, low maintenance and least new parts used… There is still room for improvement. As mostly it runs idle, a passive CPU cooler and better PSU can drastically reduce the noise generated by cooling. A SATA SSD storing the operating system and a spun down HDD for mass data storage would curb that constant spinning sounds too. For now these changes will wait for opportunistically grabbing of discarded parts for keeping upcycling promises.
- As much as free software
- Least new hardware
- Low maintenance for peace of mind
- Low noise for sanity
For this effort and insanity what I get is upcycled hardware serving mostly better services then their poorly designed SaaS alternatives on someone else’s computer. Static web site is best choice for home publishing if some technical challenge is accepted. Otherwise this decade old hardware can host Wordpress happily with several other services. Provided enough RAM of course. Probably I cannot emphasize enough how wonderful and powerful Nextcloud has become. Besides it’s known storage ability, it also has almost any needed service one can possible require from their personal use. What I choose to use is as following;
- Appointments - If one require an automated appointment system for their professional life this cannot be overlooked. It is integrated with calendar app.
- Polls - Polling is one thing most organization/person uses propriority and privacy nightmare services. This replaces that easily.
- Forms - The same as above. A creative way to use it for dating is quite exotic
- Talk - This one is tricky. It provides webRTC video conferencing up to 4 people on low end hardware but I needed a TURN server and installation of it requires some fiddling with command line. It works awesome and any person/organization should have one and let that Zoom crap go. Please!
- Cospend - This one is interesting because the last thing came to my mind that I can do with Nextcloud was shared expense management. It works! Use it if you need with your friends on any occasion instead of shady apps from crap store. You may use MoneyBuster for easy access too!
- Music - Oh, do you need your whole music archive on the go? Go with Music and use Ultrasonic from F-droid to stream your own music where ever you feel like it.
Am I satisfied with the result? No. Dissatisfaction what drives these kind of projects and I still have ideas to try on this system. For now it saves 2 other close circle friends from using non-libre software and I am happy to provide them. No uptime promises (= If one day it is possible to obtain a free hardware, single board computer I may go with better ecological footprint, the same way Low Tech Magazine went. For now it will blinkenlight it’s existence as a proof for future Free Software and Hardware promises.