MayVaneDay Studios

Git # RSS Feed # My GPG key # Archive # Identity & Contact # About


Weirdiverse # Software: CLIViable # Distrohopping # Rollcall # Art # Books # FTC Disclosure


A Viable Software Model

last updated: 11-4-2019


Inspired by a trawl through the FreedomBone blog after a failed attempt to install Epicyon on my Raspberry Pi, I've decided to write a list of software that I endorse.

About halfway through the sole year I spent in a college, I discovered that the college's ISP had left ports 443 and 80 open, and that devices were assigned mostly static IP addresses. So I installed YunoHost over the existing Raspbian setup on my Raspberry Pi, which had spent most of its time languishing behind my TV as a poor man's desktop computer, and installed nearly every app I could get running. Three fediverse servers at the same time, Tiny Tiny RSS, an oft-abused Syncthing share: the poor beleaguered server spent nearly all of its time at 90% RAM, and I had to write a cron line to restart the MySQL server every six hours because the system would run out of RAM and all the databases would crash thanks to the OOM killer.

Until one day, when the SQL databases randomly decided to wipe half of themselves and corrupt the other half. I was only a baby administrator, and I didn't know how to manually dump what was left of the tables, and any answers I got from the internet didn't work. So I sighed and salvaged the little that was plaintext and resigned myself to only hosting static websites without databases.

All was well until late October of 2019, when the Alpine server I'd been living comfortably on for some months suddenly ran out of storage space, and I couldn't open a Byobu session no matter how many files I deleted. Several web applications I'd installed were installed through Docker, and I couldn't start the Docker daemon to try to figure out where each app's database was stored, so I lost my Matrix server (which I was only using as a cheap microblogging service through a public room, anyway) and my Pinry page. Again, when I bit the bullet and wiped and reinstalled the server, I devolved back to static websites without databases.

That, combined with incessant distrohopping on my laptop and all the reinstalling that comes with it, has made me come to appreciate programs that do or have the following:

  1. Store their files and configuration in plaintext, preferably in a single easy-to-sync folder. All my notes are in Markdown format in a single folder. They can be opened with any text editor on any platform.

  2. Don't use any databases whatsoever, or, at the very least, have a single SQLite database file that's easy to back up with the rest of the program. ZeroNet does this; it has two main databases (chart.db and content.db). Other zites can have their own databases, but these are more for indexing search rather than storing data, and the ZeroNet interface has a button to rebuild databases if they get corrupted. Ultimately, only users.json absolutely needs to be backed up, as this file has your private keys, and JSON is plaintext.

  3. Come in a portable folder that doesn't require installation, in case the distro they're running under has something weird going on with their package manager, or if the newest available versions of dependencies are outdated. AppImages are an extreme version of this, as they're a single file instead of a folder. The vanilla Tor Browser Bundle does this too. ZeroNet on Linux fails at this, though, since you have to install its dependencies via pip. That means, in an emergency scenario where the pip repositories aren't available, it will be a lot harder to install ZeroNet on Linux.

  4. Have configurable... config and default directories, preferably settable via the CLI. This makes life a lot easier when working within Tails, as I can point everything to my Persistent folder instead of messing with dotfiles and wondering why nothing's saving on reboot.

Software I endorse is as follows: