I’m a great fan of the idea of Eduroam Wi-Fi and I’ve been using it and helping others to use it for many years. The idea is simple: You have an Eduroam account at your home university which allows you to not only use the Eduroam Wi-Fi locally for ‘Internet’ access, but also in other places that offer Eduroam. Authentication is then provided by the authentication server of your home institution. Distributed authentication, world wide use, very nice! In Europe, pretty much every university offers Eduroam and in the Nordic countries you even get connectivity in train stations, airports, hospitals and other public places. This is all very nice if it weren’t for two little problems: Port blocking and ‘low signals spilling into the streets’.
Continue reading Growing Pains With Eduroam – Going ManualCategory: Uncategorized
Nextcloud Refresh – Part 5 – Differential Restore
So here we are, only one thing is missing for me to complete my switch from a self maintained Nextcloud instance to Nextcloud AIO: Differential restore of data to a standby system. A quick recap: The default restore doesn’t work for me, as it performs a full restore of all data which takes too long. What I need is a differential restore process that only transfers files that have changed from the remote backup server to my standby Nextcloud instance and deletes the files that no longer exist. While there is no official process to do this, it’s easier than I first thought.
Continue reading Nextcloud Refresh – Part 5 – Differential RestoreNextcloud Refresh – Part 4 – Recovery Testing
In the previous post on the topic, I promised to follow up with a post on how to do a differential Nextcloud AIO restore. My application: Keep a cold standby Nextcloud AIO instance up to date so I can quickly activate it, should my main server fail. However, doing a periodic full restore to a backup instance in my case is just not practical due to the sheer amount of data that needs to be moved. Hence, a differential restore is required.
Before I go to the differential restore, I would like to make a short detour, as I do not only need a way to run a differential restore, but also a way to test if the backup server would actually work when the containers are started. The one thing I need for this is that I can dynamically change the domain name at which the backup server can be reached. While the instance is only the backup server, I don’t want to reach it at, let’s say, cloud.martin.com but rather at cloud-test.martin.com. Turns out this can be configured quite easily.
Continue reading Nextcloud Refresh – Part 4 – Recovery TestingNextcloud Refresh – Part 3 – Full Restore
In the previous post on the topic, I’ve had a look at how to create manual or automated local and remote backups of a Nextcloud AIO instance. Also, I mentioned briefly that restoring an instance to a previous state works without a fuzz. In this post, I’ll have a closer look, as there is one significant shortcoming of the default procedure: It’s all or nothing!
Continue reading Nextcloud Refresh – Part 3 – Full RestoreNextcloud Refresh – Part 2 – Backup
OK, so there we go, I now have a ‘refreshed’ Nextcloud installation. Everything runs in (hopefully) well maintained Docker containers. No longer do I have to deal with web server configuration, php variables, certificate renewals and sudden incompatibilities when upgrading the underlying operation system. Next step: Let’s get the backup / restore process working for this setup. In this post, I’ll have a look at how to create a local backup to get started with, and a remote backup, which is what I need for safety and redundancy reasons. Turns out that the difference between the two types of backups is small.
Continue reading Nextcloud Refresh – Part 2 – BackupNextcloud Refresh – Part 1 – Five Minutes to Launch

It’s been 12 years since I’ve locally installed Nextcloud, or rather Owncloud at the time, to become independent of public file storage, calendar and address book synchronization services. At the time, I used a Raspberry Pi 1. Ever since, I have updated and extended my initial installation, moved to more powerful hardware, made it redundant and pushed parts out to a rented bare metal server in a data center. Nevertheless, I pretty much still run it like I did back then: A custom tailored and maintained Apache web server, PHP and Nextcloud installation. That’s all nice and well, but I’m not really keen anymore to keep upgrading to the latest Apache and PHP versions by hand and modifying configuration settings whenever the operating system version changes. Also, time has moved on and things are much more ‘containerized’ compared to back then. And finally, I still use the file based SQLite database as the backend, which might at some point become too small and inflexible for my needs. So over a long ‘nerdy’ weekend, I’ve had a look at a somewhat more modern way to set-up a Nextcloud and then started to experiment.
Continue reading Nextcloud Refresh – Part 1 – Five Minutes to LaunchScaleway Blocks Outgoing eMail Ports – Until You Identify

Recently, I wanted to configure a new service on my bare metal server hosted in a Scaleway data center that requires sending email. EMail by nature is difficult to configure, so I wasn’t surprised at first that it didn’t work. But whatever I tried, I could not get that server to work. At some point I pressed Wireshark into action and finally discovered the reason: The TCP connection to the eMail server was not established. So who is blocking this?
Continue reading Scaleway Blocks Outgoing eMail Ports – Until You IdentifyLow Hanging Antennas

A quick blog post today on an interesting phenomenon I observed when I recently traveled to Norway: ‘Low Hanging Antennas’.
Yes, I am one of the few people who actually look for cellular antennas and how they are installed. In cities, antennas are typically installed on rooftops, usually extending well over the rooftop for greater coverage. In Norway, however, I noticed the opposite: In cities, many antennas are not installed on the rooftop, but on a wall of a building and sometimes also somewhat hidden by painting them the same color as the building.
Continue reading Low Hanging AntennasCaddy as a Docker-Compose Reverse Proxy

It seems that every 10 years, a new web server comes along that becomes popular. When I started with hosting my own infrastructure, Apache, first launched in 1994, was the cool kid on the block. 10 years later in 2004, nginx saw the first light and has since become very successful. These days, I use nginx in my self-hosted infrastructure to act as a reverse proxy for my containerized services. It works well and is relatively easy to set up with this project from Evert Ramos, but it seems to be a bit of a niche thing. So I was wondering if there is an alternative to it, as it’s always good to have a plan B.
I am well aware of Traefik, but that’s a bit of an overkill for my needs. I need something simple to set up and maintain because I only need it to do two main things:
- Serve as a reverse proxy for many Docker Compose based projects running on a single host.
- The reverse proxy needs to automatically retrieve and update Letsencrypt certificates.
Long story short, say hello to Caddy, which was first released in 2015. At first, I thought Caddy was ‘just’ a Dockerized reverse proxy, but that was a misconception. In its ‘native’ form, Caddy has nothing to do with Docker, it runs as a standalone webserver that is easy to configure and has Letsencrypt capabilities built in. However, with this Docker Compose project by Lucas Lorentz, Caddy becomes a super easy to configure and to deploy reverse proxy for Docker Compose services. So let’s have a look:
Continue reading Caddy as a Docker-Compose Reverse ProxyChanging Call Forwarding Settings While Roaming
Every few years, it’s interesting to do a reality check of mobile device or network features considered as stable or perhaps even legacy. And that’s because every now and then, things do change while you are not looking, and sometimes even for the better! Case in point: Call forwarding settings for voice calls while roaming.
Continue reading Changing Call Forwarding Settings While Roaming