I’ve been putting off some system administration tasks while waiting for Ubuntu 20.04 LTS to come out. The new Ubuntu came out last week, so I installed it in a few VMware virtual machines over this weekend. I’m still putting out fires.

Ubuntu 20.04 Gitlab Runner

The first thing I installed 20.04 on was a Gitlab runner. In the Ubuntu installer I noticed checkboxes to install docker, and google-cloud-sdk snap packages. I checked them and began the installation.

Unfortunately, much later and after much troubleshooting, I found the google-cloud-sdk package won’t allow any extra components to be installed with it. Since I use both the beta and the docker-credential-gcr components, I threw in the towel on the snap package and tried installing it via an apt package. That failed because apt packages don’t yet exist for this new distribution. I ended up manually installing the SDK and troubleshooting path problems.

The other mistake I made was enabling LVM. I noticed on my next install, that there is a screen that is shown right afterwards that lets you configure the root volume allocation, but by default it sets it to a paltry 4GB, even specifying you want a larger volume on the previous screen. After much Googling, I found a solution to extending it while running, but it would be nice if it wasn’t necessary.

Upgrading Web Server running Ubuntu 16.04 to Ubuntu 18.04

I made the mistake of updating my 16.04 web server. I host a couple of Ruby / Sinatra websites and was using the Passenger nginx plug-in and acmetool for lets encrypt. I felt that 20.04 was a bit too fresh so I decided to play it safe and install 18.04. It’s been out two years now. Surely it is stable. I ran into a few problems.

First, I’ve found acmetool is pretty much abandoned at this point. There is a acmetool beta implementation of the v2 acme protocol but it hasn’t been released as a package yet. I decided to switch to certbot, and so far it has turned out to be a complete drop in replacement. I even used the automatic nginx config tool, and it worked perfectly.

I tried to continue using passenger, but passenger requires an older version of nginx than comes with 18.04 now. I tried following the installation instructions, and copy and pasting solutions from random Github issues, but threw in the towel after several hours.

I switched the websites over to using puma web server, and that seemed to work fine when I started the server from the command line. I then followed the instructions on setting up puma to use upstart to restart it automatically, only to realize about half way into it that 18.04 no longer uses upstart. I changed gears and tried setting up systemd to start up my puma servers. I had no luck, and ended up on some Github issue pages, but unfortunately none of the work arounds were successful. I ended up using a @reboot line in /etc/crontab to start the servers, and I’m limping along for now.

Microk8s

I also installed Microk8s on a Ubuntu 20.04, with plans to use it to replace the services running on the webserver above. I’m at the stage where I need to decide where my Docker container registry will live. More on this will come later.