“Self-hosted” on Reddit

I think it is probably true to say that reddit is a giant step back for humanity. But even so, this site does seem to be full of neat ideas, and lists like this are exactly what I am needing right now. Ditto for this site, which also comes with a giant caveat clicktor (it’s owned by fucking Microsoft), but again, lots of neat ideas.

I want to grow the patch in order to, well, spread lucem in the world of course, but also to learn by doing as I set up each new service and try to make it work right.

The Jellyfin Media Server

While I have not done all the research there is to do, I have done some, and it seems there are pretty limited options in terms of media-server software. Most of the big fish — Plex, Subsonic, Emby, and maybe also Kodi — are either closed source or moving in that direction, and they are also moving toward a paid-subscriber model to make money. One alternative that I found, and I am sure it is not the only one, is Jellyfin, which is volunteer effort that forked the last open-source version of Emby before it closed its code.

Jellyfin is new, still developing, and not perfect. But, that said, it is pretty dang impressive. It is pretty, works well, and has lots of neat features. It looks like this:

It is reasonably easy to install and set up on a Debian system. You just follow their instructions for installing on Debian, or whatever your distro is.1 I had a bit of trouble starting it: they say to use

sudo service jellyfin start
or
sudo /etc/init.d/jellyfin start

But neither one of those actually got it running. So I just run

/usr/bin/jellyfin start

and that seems to be working fine. Then, you need to set up a subdomain with an ssl certificate just in the same way you would for a file server, home page, or blog. Again, Jacob Kauffmann has led us through all this in previous posts. Once that is set up, following Jellyfin’s instructions for setting up a reverse proxy worked really smoothly for me.

The metadata was pretty tricky in Jellyfin too. I found it is really important to read their instructions. To wit: music has to be in a library designated to be music, movies in a movies library, and TV shows in a TV shows library. Then the metadata is recognized more smoothly, but you will likely still have to tinker some.

But in a few days, you should have it up and running. My first act was to watch the first episode of Goliath on it. It’s a laughably bad show (except for Billy Bob!), but the streaming went great.

  1. I would recommend against Docker, mostly because the Nerd on the Street doesn’t like it, but also because it feels bloaty and obfuscating to run a little virtual machine to hold one program, and then if you want to change something, you have to shut down the mini-system, make a change, then start it up again…it seems hard to administer []

Installing wordpress

So far, in the posts to date, we have been setting up various elements of the little patch: first the LAMP stack, which provides the infrastructure for whatever application software you want to run, things like a file server, which is really the heart and soul of what I need, or cloud-hosted office software for collaboration, or blogging software, or a media server, and so on. I have posted so far on the LAMP stack, the file server, and the cloud office. I will post on the media server soon (Jellyfin!!). Herein I regale you with how I set up wordpress.

I guess “regale” is a bit sanguine. I’m sorry. Mostly what I have to offer is a link to the great Jacob Kauffmann’s tutorial. He shows you how to do almost everything, and I have found only joy following his advice.

I guess I can report, and maybe here I am doing some regaling, that before I followed Jacob’s approach I tried to install wordpress by using the Debian package manager and following Debian’s instructions. Boy, was that a mistake. They put files in all sorts of weird places and then have you do a whole bunch of extra steps to make up for all the weird file locations. It’s a mess. So if you are a Debian user (or Ubuntu, or MX Linux, or anything based on Debian), I suggest just letting Jacob walk you through it. He just gets the tarball from wordpress and untars it in the /var/www directory, and it’s very straightforward. I think it’s the right approach. Nerdonthestreet ftw.

Collabora online

I remember being blown away the first time I saw how Google Docs works, how two (or more) people could be editing the same document in different places at the same time. I don’t very often need that functionality, but I thought it was super cool.

When I was first setting up my Owncloud server, there wasn’t anything like that for Owncloud. When I moved to Nextcloud, I hoped maybe it would have something close. Nextcloud seems pretty eager to be a fully formed alternative to Google, to provide all the many apps/features (drive, mail, maps, news, calendar, etc.) that make the user happy to stay inside the Google ecosystem and never leave. I can report that Nextcloud is well on its way to that goal, even if it is not there quite yet. “Nextcloud Hub” is what they call this suite of tools. As I have mentioned previously, it includes the file server, a news reader, a kanban task manager, a music player, a calendar, an email client, video chat, contacts, maps, and so on.

So far, I have the file server, news reader, kanban task manager, and music player working well as my daily drivers. I just installed the shared office software and got it configured fully. It is called Collabora, and it is based on a form of LibreOffice, the leading office suite in free/open office software. My report so far? Wow! Just beautiful, fast, fully functional, smooth, fantastic all around.

The one caveat that I should make is that it can be tricky to set up. You have to set up a separate server to host the Collabora software, and what Nextcloud does is it just provides you a user interface to interact with that server. Once it is up and running, it is butter. But getting it up and running might be a bit of a pain.

It actually was really easy for me, though, because, as is now my unerring practice, I followed Jacob Kauffmann’s lead in setting Collabora up. His video guide is here. He uses Docker as a container to hold Collabora, and so I did too (you do what the nerdonthestreet tells you to do), but he says you can install it without Docker if you want/dare. I had not used Docker before, and Jacob is not high on Docker, but I have found everything to work great so far.

One important note: if you are not familiar how to set up virtual hosts in Apache (or the equivalent in Nginx), you might want to learn about those first, since they allow you to set up the Collabora server right there on the same machine (Atwood!) that your Nextcloud server is on. Never fear, though, Jacob has you covered on that score as well. You could also host Collabora on a different server (like I could have put it on Arlington), or on a server provided by a hosting service like Digital Ocean. Any of these methods will work fine, I think, but I found the same-server approach easiest given what I had available to me at the time.

This is cool, and fun, and (mostly) free. You should do this.

Speaking of words

Sorry about this. One more post on words. Do you know about Apocalypse?

According to Merriam Webster, the first definition of Apocalypse is “Jewish and Christian writings of 200 BC to 150 AD marked by … the expectation of an imminent cosmic cataclysm in which God destroys the ruling powers of evil and raises the righteous to life in a messianic kingdom.” So right off the bat, apocalypse means anticipation of the absolute best thing that could possibly happen. And cataclysm too. It means specifically a thoroughgoing triumph of good over evil. Raise your hand if you use either one of those words that way.

So then the second definition is “something viewed as a prophetic revelation,” which turns out to make perfect sense, since the Greek apokálypsis means “uncovering, disclosure, revelation.” OK, fine, but a revelation of what? If you believe Random House Kernerman Webster’s College Dictionary, a revelation of the cataclysm. Or, back to Merriam Webster, it’s a revelation of Armageddon, which, you guessed it, doesn’t mean what you think it does. It’s “the site or time of a final and conclusive battle between the forces of good and evil,” and at this point I think we can all guess that good wins there too. Either way, it’s the best thing ever.

It’s not until the fifth definition in Random House that you get the meaning we actually use, which is pretty close to the opposite of the best thing ever: “any universal or widespread destruction or disaster.” There it is, that’s apocalypse.

I don’t know why I feel the need to tell you all this. It’s beyond the ken of my little patch. But I can’t get over the fact that a word could be so breathtakingly equivocal. That it could be trying to convey, at the same time, both the best thing in the world and the worst. And I guess I am also wondering why we have so completely abandoned the hopeful meaning.

Don’t worry. I spent some time today working on setting up office software for my Nextcloud server that allows you to collaborate with others on documents in real time. It’s the best thing ever. I will post on that soon.

“You sure know a lot of words, Karl.”

This blog started out with the title “Consider the Lobster,” and when I was setting it up I needed a subtitle, because wordpress has a slot for that, and I happened across the Latin phrase Dulce periculum (danger is sweet), which I loved because it works as an aphorism for both lobsters and Nietzsche’s philosophy. In time, as it became clear this blog was going to be about my own little patch, and the title changed, well then obviously I was going to need a new Latin phrase to tag the header with. I found In absentia lucis, tenebrae vincunt, in the absence of light, darkness prevails. I liked this well enough to capture the idea, though I found it a bit too close to the Washington Post‘s self-important epigraph. But any worries I had were overrun when I discovered to my delight (via the wiktionary) that lucis is not only the genitive singular of lux, and so means “of light,” but also it is the dative plural of lucus, which means a sacred grove. So, with only a little violence to the language, we can also read: in the absence of sacred groves, darkness prevails.1

I very much like that my little patch is my own, which is to say both that it is not Google’s, and that I am responsible for tending it. But I also think that if any of this is to matter at all the little patches have to multiply, the sacred groves have to spread out over the land such that one day, after some years, we look up and realize that the light prevails, and the darkness is difficult to find.

  1. I know the dative != the genitive, that’s why I am confessing to violence []

Do it yourself file server!

The two leading software suites for running your own file server are Owncloud and Nextcloud. The latter is a fork of the former, and they are still very, very similar. My understanding is that Nextcloud forked because it felt Owncloud was moving away from the open software model. For me, I find Nextcloud to be a bit more feature rich. It includes, for example, not only 1) a great file server, but also 2) a kanban-style task organizer, 3) a news feed reader, 4) a music player, 5) a video chat client, 6) a calendar client, 7) an email client, and 8) a shared document editor. So far I have set up the first four of these, and they work beautifully. The last four are on my to-do list.

I have installed both Owncloud and Nextcloud a few times each. I can say that Nextcloud, in particular, does not wrap everything up for you in a nice, neat, installs-itself kind of package. So, if you want to set everything up following their instructions, it is certainly doable, but it is a bit of a chore. Another way to go is this guy named Jacob Kauffmann at nerdonthestreet.com, who provides a very thorough guide to setting up nextcloud. If you do not have a server running already, don’t fear, because Jacob also helps you understand how to set up a server using a paid service. I am running my own on an old desktop, but many people use a service for convenience, power, and reliability (in exchange for control and cost). In addition, Jacob also teaches you how set up a TLS certificate for your server (using Let’s Encrypt) so that it can send and receive only encrypted traffic (over https) rather than unencrypted traffic (http). Https is almost a requirement these days. And last but not least, Jacob helps you understand the process of registering a domain name (e.g. blog.foreveroverhead.cloud) so that your server’s IP address (e.g. 129.54.143.33) can be bound to it. I used Dynadot, which seems fine, but there are many others. Registering a domain name is not strictly necessary, and it does cost a few bucks a year ($2.99 for a .cloud!), but you need it to set up a TLS certificate, and, let’s be honest, it’s fun to come up with a cool domain named after your favorite David Foster Wallace short story.

What I love about Jacob is that he is, in the very best way, didactic. He does not just tell you what to do, he explains the principles that help you understand why you are doing it. I learn a ton from everything he does.

You might say this is all just Google with a lot more hassle. Maybe. But 1) “fun” is closer to the mark than “hassle,” and 2) all of this runs on your own server. You control it. You own the data you put into it. A sizable chunk of your digital self is liberated from Google and returned to you. I think that’s important.

The LAMP Stack

It might be helpful, I realize, to start at the beginning. My excitement to talk about file servers and blog hosting really needs to wait until we have a server set up. So I thought I might post on that here at the start.

A server is just a computer attached to the internet, whose job is to listen for other machines to ask it for data, and then provide (or “serve”) that data to the asking machine. All my servers listen by running a program called Apache (or httpd). It is the ‘A’ in the LAMP stack, and it listens on port 80 or 443, and when it hears a request it checks a series of config files that tell it what to do. Usually that involves finding and sending a file of some kind, so the server also needs to have a directory (or directories) in which those files are stored. If those files are big, like on a media server, the server is going to need lots of disk space. If it is just serving a blog, like this one, less space is needed. Most servers are also running another piece of software, like WordPress in the case of this blog, that organizes all the content. To do so, WordPress needs to have a database so it can keep track of where everything is. MariaDB (or MySQL), is a really (the most?) common one. It is the ‘M’ in the LAMP stack. Then there is PHP, the ‘P’ in the LAMP stack, which is a scripting language that runs all sorts of little programs to actualize tasks.1 Of course all this has to be run inside an operating system, and while some lost souls actually run Windows underneath all this, in a “WAMP stack,” the sane thing to do, the thing probably most servers in the world do these days: is to run Linux. The ‘L’ in the LAMP stack. Mine run a Linux distribution called MX Linux, which rocks.

So for anyone starting a server, I guess the first step would be to install MX Linux2 by following their directions. Once you have, you can adapt the instructions that I have on my wiki, here.

  1. I don’t know all the many things PHP does. []
  2. Or maybe Devuan…anything without systemd. (That is a very long story for another time. []