My name is Siru, and I am an IT student at the Vaasa University of Applied Sciences. Currently I am an intern at Wikimedia Finland with the Helsinki Rephotography project, which is a collaboration project between Wikimedia Finland and the Estonian Ajapaik. The idea is to create a mobile app that allows users to rephotograph old photographs on Ajapaik with new, more modern versions and to see how those places have changed.
Currently we are helping Ajapaik with their server migration, since they are in the process of upgrading to a more powerful server. We have now switched to using the new server and I have setup an automated backup system and a downtime notification system that sends notifications to Slack in case of errors.
The backup system is a bash script that is made to run daily on both Ajapaik and the backup server. On Ajapaik the script makes a backup of the database and then compresses, encrypts, and digitally signs it. It also makes an unencrypted backup that only contains specific tables from the database.
On the backup server the script first checks the available disk space and sends a notification in case it is running low. It then syncs the pictures and database backups from Ajapaik to a backup folder. After syncing it verifies the integrity of the database backups using the digital signature. If the syncing fails for some reason and/or the integrity can’t be verified, it then sends a notification.
I have also made several other bash scripts, such as one that monitors the resources of Ajapaik and sends a notification in case disk space is running low, if CPU load is high for extended periods or if the memory or swap memory are running low. There is also a script that runs on startup of the Ajapaik server. It basically starts all the services and checks that Ajapaik is reachable with HTTP. There is also a similar script on the backup server that constantly monitors if the Ajapaik website is reachable and in case it isn’t it sends a notification.
In the future I will be participating in the programming of the mobile app which we are programming in Flutter. It has been interesting to do the system maintenance tasks since that is something I am interested in and that I already have experience in from working with my own servers. The internship is being done remotely, which has its own challenges, but I think it works perfectly for this kind of job.