Underworlds Scriptorium fabula.

This article was translated from Russian to English using Groq API translator. The original article could be found here.

My progress since the last fabula was published. Moving to a new hosting. Setting up a mail server, backup, and server resource notification system. Localizing programmer-underworlds.

Hello. It's currently 01:37 on April 26, 2026, Central Standard Time, and I've decided it's time for a flight of thought and to outline my actions since I published the last fabula in February. Grab your favorite drink that you like to have while watching YouTube, and let's go... :)

I want to write this article in the form of a free flight of thoughts instead of a well-thought-out report. :) I've been working hard on different parts of my project, which I'll write about below, and it's been quite intense. I'll probably write this article in several sessions.

One major and responsible decision was to move to a new hosting, as the previous free hosting on Google Cloud no longer met my requirements and needs, and one day it just stopped working. I assumed it was due to insufficient RAM, as the free hosting from Google only had 2GB of RAM available. The next day, I started exploring alternative affordable options and found Contabo hosting, which offered good conditions in my opinion (compared to Google's alternatives). And so it began... I started transferring the existing settings from the previous hosting to the new one, and I successfully completed it in about a week.

The next step was something I had been thinking about for a long time - setting up backups of the configuration, because a huge part of the configuration was done with the help of ChatGPT, and it would take a very long time to reconfigure everything. I thought about using rsync, but ChatGPT suggested restic, and I liked that restic does incremental backups. Incremental backups are much faster than full backups and work almost like a Git repository, allowing me to revert to a previous version if needed. I successfully and quickly set up restic for backing up my server, and I was very pleased with the result. Now, to back up my entire system, I just log in to my VPS on Contabo and run a single script that backs up all configurations to my local computer.

Next on my agenda was implementing my long-standing desire to be notified if my server wasn't feeling well. Specifically, I wanted to receive notifications via email if the disk space was running low (Google only had 10GB, while now I have 100GB) or if my programmer-underworlds project (a Java process) died for some reason. To achieve this, I came to the conclusion that it would be good to have my own mail server, as the VPS configuration now allows it (4GB of RAM and 4 CPU cores, compared to 2 cores on Google). And since I already had a domain, I decided that with the help of LLM, it would be easy to set up a mail server. And I was right. :) Mailcow is a simple and convenient solution that includes everything I need (web interface, IMAP, SpamAssassin). If you want to get a mailbox on the @programmer-underworlds.dev domain (there's also an alias @p-u.dev, which makes it easier to dictate your email address in person or over the phone), let me know by writing to pasha@p-u.dev.

After setting up the mail server, I needed to set up a resource monitoring system (monitoring RAM usage, free disk space, and checking if the Java process of my project is alive), and following ChatGPT's advice, I used the monit utility. This is a convenient utility that suits me just fine. For example, this is what the monit page looks like, providing visual information about the resources I'm interested in.

Monit resource monitoring page

I added monitoring of the Java process (icoupserver, programmer-underworlds) and also checking the regularity of SSL certificate updates for the site (programmer-underworlds.dev-ssl). Now, if I shut down the Java process (for updates, for example), I receive a notification on my email, like this:

Email from monit about the programmer-underworlds process being dead

It's currently 18:29 on April 26, 2026, and I'm continuing to write this fabula.

Next, I asked myself, "But how will I receive notifications from monit if my mail server goes down?" and initially, I wanted to set up SMS notifications on my phone. However, after discussing it with LLM, I was convinced that it would be better to use Telegram notifications, which I immediately set up. With the help of LLM, I created a Telegram bot and a script for monit to send notifications about the status of the mail server directly to my Telegram account.

Monit notification about the mail server being down in Telegram

It was very pleasant to see my server becoming more and more like a production-level server. :)

I realized that it would be good to have different domain names for the web interface of my mail server and for the programmer-underworlds application, and that the URL should remain the same without mentioning different ports to access these pages. Of course, I had long been familiar with the reverse proxy program widely used by industry giants (and smaller companies), nginx, created by Igor Sysoev. And this task was completed in about 2 days with the help of LLM, which created a configuration that suited my needs, and now my server successfully listens to and processes requests on the programmer-underworlds.dev and mail.programmer-underworlds.dev domain names.

Next, I split my project into two parts: programmer-underworlds and icoupserver. I decided to move the logic responsible for the game part into a separate project, as I now less frequently work on the game and more often on the part that is the website.

At this time, I was increasingly visited by the desire to share my articles with my mom and Russian-speaking friends, and I realized that few of them would be comfortable reading my articles in English. I didn't want to burden them with "manual" translation of pages, and I wanted their experience of reading and interacting with my site to be comfortable and in their native language. So, I set out to localize my articles and interface for Russian-speaking (as well as Chinese, Japanese, and many other) users. As usual, the goal was achieved in about 2 weeks, and now users from many countries can enjoy reading my fabulas in their native language, comfortably. After achieving this, I added beautiful Gothic fonts for Russian, Chinese, Japanese, and Indian languages.

By the way, one of my good friends, Zakhar, recently expressed himself approximately like this, quoting: "The font is unreadable. It's like blood from the eyes)". And if you agree with him in his opinion (I personally think these fonts are a delight for the eyes), then I recommend that you (and him) take a look at this fabula.

And now I've found the time to write this article-report. I, of course, wanted to share many things that have happened since the last fabula was written. For example, about how my YouTube account was blocked and my attempts to communicate with YouTube support to regain access to my videos, which I uploaded over the 10 years of its existence, and to which I now have lost access, and about my hatred for YouTube representatives that arose as a result. And maybe I'll write about this specific case, but now I want to localize this article for the other languages supported by my server and share it with the world.

Thank you for your time and attention. And as always...

The Emperor Protects.