Personal server exit review

Published on Fri 11 December 2015. Filed under . Tags .

I used a Cubieboard as a personal server until October, running Kanboard, tt-rss and some other Web apps there. It allowed me to keep more of my data at home and practice some more system administration.

Why Cubieboard

Initially I wanted a computer that would work during the night in my bedroom. This required a fanless design and therefore a low power usage. (Now I have a separate room for the computers, so they don’t need to be so quiet, while I pay their power bills.)

I could have either used my BeagleBone Black, a Cubieboard or buy a different board. I haven’t chosen the BBB for this since its 512 MiB RAM is not enough for a Web app that maintain in my spare time (Cubieboard’s 1 GiB is enough), and I wanted a more stable storage than microSD: Cubieboard has a SATA port which I connected to an SSD (also no moving parts). Meanwhile, I can use the BBB for flashing and debugging coreboot which requires some downtime.

(Now I think I wouldn’t need the personal server to work at night, but it’s easier: I can read some Web comics when I resume my laptop from suspend and get daily mails from cron and Kanboard. Also I won’t forget to turn it on before accessing these while traveling.)

How it was configured

ARM makes booting slightly more interesting than on x86. It booted u-boot from a microSD card which loaded a kernel from /boot on the same microSD card (I wasn’t able to make it load a kernel from the SSD, while it was documented to support SATA) which mounted a btrfs root filesystem from the SSD.

The server was running Debian Jessie, manually installed using its usual installer (with good support for such boards). I configured nearly all services running on top of it using Ansible. Much configuration was shared with my other computers, e.g. using OpenVPN, Postfix for relaying locally-generated mails to my VPS, etc.

Like all my computers (or, in case of Thinkpads, disks moved between computers), it had a unique hostname. I named it after Sam, the trusted friend of Alice, Bob and Frodo.

How I broke it

After receiving a mail from apticron about Debian package updates being available, I ran aptitude full-upgrade. There was a kernel upgrade, so I rebooted it. This worked many times, but it didn’t once in October.

After getting the serial TTL cable (which required removing the top of its case), I found errors from initramfs. Root couldn’t have been mounted due to filesystem errors. Checking in another computer (a big advantage of SATA over soldered storage chips), I have seen many btrfs errors, while all interesting files could be read.

So I copied the filesystem image to my desktop, ran mkfs.btrfs, copied all files to the new filesystem, in many reboot loops I fixed /etc/fstab and some initramfs configuration. Then it was not booting, probably not being completely configured to use the new filesystem.


Not being able to fix it ‘now’, I migrated services to my desktop computer (really easy with Ansible). I used data restored from the filesystem image and a daily PostgreSQL image. (I couldn’t get the possibly corrupted newer PostgreSQL data: it won’t load files written on a different architecture, requiring using pgdump on armhf.)

Two months passed and I haven’t noticed a need for that server, so I still haven’t fixed it and use the desktop as a personal server. There is a difference in the power bill, while I don’t know how much of it can be attributed to the desktop running more often now.


When I set up a new personal server, I will think about filesystem errors before it stops booting. Maybe periodically running btrfs scrub or choosing an older filesystem would help. Certainly, I should backup before installing any OS update. I should also get a recovery method for when the OS won’t boot (very easy on x86).

My task management: input queues

Published on Thu 10 December 2015. Filed under . Tags .

I have a complex task management system, which was partially influenced by Getting Things Done and by blog posts of Leo Babauta, while it seems to have randomly evolved into a different thing since. I’m writing how it currently works (or doesn’t), to better understand what mistakes I ...

read more

Inclusion of licenses longer than licensed works

Published on Sun 19 April 2015. Filed under . Tags .

There are licenses known for excessive attribution requirements: in a single project the old four-clause BSD license required including 75 different texts in all advertising materials. The license text itself can be long (GNU FDL 1.3 takes more than 3 500 words, the Web browser that I use would ...

read more

PlaneShift and free software

Published on Sat 11 April 2015. Filed under . Tags .

On the download page of PlaneShift I see big letters ‘Fully Free Cross-Platform MMORPG’ and ‘Open Source Development!’. They provide the source code of their client, while writing how this helps user’s freedom and security. (I prefer using clearer terms like free software and copyleft for the exact things ...

read more

Intel GM45, AMD K10 and Richland compilation benchmark

Published on Wed 01 April 2015. Filed under . Tags .

The fastest computers working with a fully free boot firmware distribution are Intel GM45 laptops from 2008 like Lenovo X200 and R400. No newer Intel system can work without signed and nonfree firmware which probably cannot be replaced without a significant breakthrough in number theory. Some AMD systems are known ...

read more

How temporary data loss helped me improve my backup policies

Published on Sun 29 March 2015. Filed under . Tags .

Two recent situations have motivated me to rethink and improve my backup policies. Once I have accidentally clicked the ‘Mark as read’ button in my feed reader which marked all 5 000+ unread entries as read, not only the ones from a single feed where I intended to do this ...

read more

Free software with nonfree dependencies and the emulation argument

Published on Sun 15 March 2015. Filed under . Tags .

There is a fallacy that if program X requires nonfree software, then program X is nonfree. (I discuss software that is free as in user’s freedom, not software with external costs. X is a placeholder variable, not the name of a concrete program, while there are relevant issues in ...

read more

Free software Flash replacements and the JavaScript trap

Published on Sat 13 December 2014. Filed under . Tags .

One of the nonfree programs that make it hard for many people to use completely free software operating systems is Adobe Flash. There are several free software projects aiming to replace the Flash interpreter, one of them is an FSF high priority project. I don’t believe that developing such ...

read more

My email spam filtering and end-to-end encryption

Published on Sat 06 September 2014. Filed under . Tags .

Big email providers use very complex spam filtering methods. Solutions used by Google require distributed real-time processing, access to to plain text of all messages. Their work is closely followed by spammers in an arms race, while it’s not usable for small servers and both sides benefit from reducing ...

read more

LibrePlanet 2014 stream recordings

Published on Sun 23 March 2014. Filed under . Tags .

The LibrePlanet 2014 conference talks end today. Since there are no official recordings yet, several users published copies of fragments of the live streams that they have downloaded. This page lists the fragments that I know.

See the official program for a complete list of talks. Live stream fragments of ...

read more

DRM in free software

Published on Wed 12 March 2014. Filed under . Tags .

Free software has less antifeatures than proprietary software and users can remove them. While a well-known distro vendor includes spyware, such bugs usually get fixed. Despite these, some well-known free programs include antifeatures restricting uses or modification of data that these programs should access or edit.

These antifeatures are called ...

read more

Buying a freedom-respecting USB wifi card for a Lenovo laptop

Published on Tue 18 February 2014. Filed under . Tags .

I received a second-hand Lenovo ThinkPad R400. It’s compatible with Trisquel GNU/Linux 6.0.1 except for its Intel wifi card that needs nonfree firmware (while its fingerprint reader needs an updated userspace driver). I decided to buy a compatible card, since it’s more practical than getting ...

read more

Missing source code for non-software works in free GNU/Linux distributions

Most software cannot be edited without a source, making source availability necessary for software freedom. Free GNU/Linux distributions have an explicit requirement to provide sources of included software. Despite this, they include works without source. I do believe this is practically acceptable, while it restricts potential uses of the ...

read more

How can we improve hardware support in free GNU/Linux distributions?

Published on Sun 09 June 2013. Filed under . Tags .

Answering questions on free distro IRC channels I find two main reasons for people to not use these distros: hardware depending on nonfree software and specific nonfree applications that they ‘need’. (There are other reasons, like other free distros being better for the purposes of the user or having newer ...

read more

Laptops and free software

Published on Sun 02 June 2013. Filed under . Tags .

Users of free GNU/Linux distributions often choose computers that can be optimally used without installing nonfree software. This article is based on many discussions of such hardware and problems making this a nontrivial issue.

There are no free laptops: all use CPUs that the user cannot study, manufacture nor ...

read more

Nonfree firmware in Linux and OpenBSD; why it should be free

Published on Sun 12 May 2013. Filed under . Tags .

The FSF doesn't endorse most GNU/Linux distributions for mainly two reasons: they have no rules against including nonfree programs and include nonfree firmware blobs in their kernels. This article shows some specific examples of such firmware, its usually nonfree licenses and problems that could be solved by having ...

read more

Manual dynamic memory management might make debugging easier

Published on Tue 08 January 2013. Filed under . Tags .

Dynamic memory allocation has an important use in real world programs: data like input lines has no fixed size, so robust programs shouldn’t allocate fixed buffers for it. Writing a homework program I found another reason for it: it leads to more errors that tools like Valgrind can detect ...

read more

Lemote YeeLoong 8101B with Loongson 2F CPU review

Published on Mon 03 September 2012. Filed under . Tags .

The Lemote YeeLoong is a small and free software-friendly laptop and one of the few available non-x86 (and non-ARM) laptops. (It’s sometimes called a ‘netbook’ or a ‘mini notebook’.)

As a user and contributor to a GNU/Linux distribution supporting this device, I’m often asked about it. The ...

read more

Free software licenses are not a sufficient condition for software freedom

Published on Tue 14 August 2012. Filed under . Tags .

A common misconception about free software is that having a free license is both a sufficient and necessary condition for the software to be free. There might be cases when software is too simple to be restricted by copyright, so it is not a necessary condition. There are much more ...

read more

Advertising considered harmful

Published on Sun 12 August 2012. Filed under . Tags .

It’s said often that if we don’t pay for a service, we are the product. It isn’t generally true, although it seems true for many businesses supported by advertising. In this essay I explain why I believe such advertising to be generally useless for the user and ...

read more

There is no tree of evolution

Published on Sun 05 August 2012. Filed under . Tags .

We often see diagrams called ‘trees’ showing how different beings or things evolve from others. These are used to describe families, species, languages, programs and other entities. Most of them share two problems: they aren’t trees as in graph theory (while we reason about them as trees) and they ...

read more

Some advantages of shared libraries

Published on Tue 31 July 2012. Filed under . Tags .

As a contributor to a GNU/Linux distro, I’ve seen three main ways of using libraries from other projects in a program:

  • using a shared library from another package
  • using a static library from another package
  • copying the source of another project and building it in the same package ...
read more

Socket activation for FastCGI with systemd

Published on Thu 26 July 2012. Filed under . Tags .

The server hosting this blog runs Parabola GNU/Linux-libre with systemd. The HTTP daemon I use is nginx, it serves several domains with Python software connected to it via FastCGI (using MoinMoin as example, it handled a wiki this article was migrated from). Since nginx doesn’t start FastCGI processes ...

read more

A guide to DNS configuration on servers

Published on Fri 06 April 2012. Filed under . Tags .

I use DNS daemons on my server for two different tasks:

  • to find what names maintained by others point to
  • to publish this mapping for the zone

This article aims to explain how these tasks could be done on a small personal server.

DNS servers work in different ...

read more

An unnamed DNS replacement idea

Published on Mon 27 February 2012. Filed under . Tags .

DNS solves two problems:

  1. translating between human-readable domain names and machine-usable IP addresses
  2. storing a reliable, hierarchical, distributed database describing which servers provide which services and the above mapping.

It’s known that the second problem is solved inefficiently, insecurely, unreliably and centrally. Thus a different system should be designed ...

read more