In the first Uroboros hosting post, an assistant helped me set up hosting, then helped me write about setting it up. Today the loop reached the maintenance stage.

The Oracle Cloud VM had been running for almost 69 days. I asked Codex to help review the logs and work through the updates, one terminal step at a time.

The logs contained familiar internet noise: SSH login attempts, probes for missing paths, and HTTP requests sent to the mail server. The services were running, and the website was responding normally. There were also system packages to update and newer versions of the analytics stack to install.

Before changing anything, we prepared a way back:

  • A full boot-volume backup in Oracle Cloud.
  • A PostgreSQL dump, checked by restoring it into a temporary database.
  • Copies of the configuration and previous Docker images, saved to my Mac with verified checksums.

The test restore brought back all fourteen user tables. A backup that has actually been restored is much easier to trust than a file whose name ends in .dump.

Then we updated Ubuntu and rebooted into the new kernel. PostgreSQL moved from 15.17 to 15.19, followed by Umami from 3.0.3 to 3.4.0. We also took a fresh database dump with Umami stopped, immediately before those Docker updates.

Umami applied twelve new database migrations. Both containers became healthy, the dashboard retained its historical statistics, and new page views appeared after a browser check. The final server checks showed no failed services or recent errors in the service and kernel logs we inspected.

Publishing the updated repository state brought one more small trap: the dependency installation passed on my Mac, but Linux CI rejected a lockfile missing two optional package entries. Restoring those entries got the normal deployment working again.

Now the assistant that helped maintain the hosting is helping me write this post. The updated server will serve it. Uroboros hosting, with a tested backup behind the next turn of the loop.