Server Migration

Server Migration

Posted on 2020-10-21

2021 Update

I have messed around with my server again, so this post is now out of date. Might still be interesting to some people, though.

Original Post

So, I finished re-deploying my server two hours or so ago, and it took ~7 hours.

The main motivation behind "this" was because I wanted a reproducible-ish config behind my server for MONTHS, and just a couple days ago started working on one.

First of all, I did the sensible thing of creating a VM and experimenting on that, which isn't usually what I do, but since I wanted this to be reproducible, testing on a VM and making it work "for real" with the same (or similar) configuration just felt like the best choice.

The VM was originally Debian bullseye, because that's what ISO I had lying around, but a couple days later I switched to Debian buster, because that's what I planned on running on the server. This switch also helped with me testing the configuration again from scratch, making sure it didn't depend on anything I installed by hand on the first VM. It also found a lot of compatibility issues I had to fix, so that's nice.

I scheduled¹ today² to the "migration" and stopped for the day.

Works on my machine. Let's ship it.

It took ~3 hours for the initial configuration to apply, and for me to migrate the data over from the previous server³. With ~1 hour to fix "Mastodon being Mastodon" and some dumb things I did that didn't get tested beforehand⁴.

After getting Mastodon working, which was my "end goal" because the rest "just works" most of the time, I decided to try out something I didn't really try before, which was "Object Storage"

Object Storage?

Object storage is basically "really cheap storage". It's actually a little more detailed than that but that's what you're getting from me at 4 AM (UTC+3)

I was mainly interested in trying it out because my server only has 20 GBs of storage, and the old server got to somewhere around 10-13 GBs full. I don't recall any specific "storage hog", but Mastodon's tendency to proxy remote media, it's system folder becoming ~2 GBs⁵, and it being the only service I have running that supports object storage made it the prime candidate to test it out on.

So I did. I enabled the "object storage" service from my VPS provider⁶ and messed around with my Nginx configuration until it worked⁷, and set up Mastodon via the following guide that's still not merged into Mastodon's documentation:

Migrate assets to S3 (tootsuite/documentation#809)

It was running on my Mastodon instance at, and hopefully it won't blow up any time soon.

Here is my old Ansible configuration in case you want to look around and email me how terrible it is. Hope I didn't commit any passwords.


1: Well, I didn't have anything important anyway.

2: 20th of October, which might be considered "yesterday" depending on how you interpret time, also relative to this post's release

3: I didn't keep track of the timeline any more detailed than a now deleted thread, and the migration did happen while I was waiting for other parts of the playbook to run.

4: My testing environment doesn't allow connection from the "outside world", so I couldn't generate SSL certs for it without more hassle than I cared about. This also prevented me from testing Mastodon, because it kept wanting to be served over SSL.

5: I am not entirely sure, but I might have skipped setting up some cron jobs that could have kept it lower than it was. I wish I could check but that server's gone now.

6: It's Linode. I probably could find a cheaper service specifically for that, but I already have all my payment stuff set-up to pay them monthly, so why not?

7: `proxy_pass` does not work properly with a trailing slash and that was probably an hour down the drain.

You seem to be blocking JavaScript, keep up the good work!
This message is just here to remind you that my blog also is available via Gemini, if you wish to read it through a protocol that's lighter and has more than three proper browsers.

Replace with gemini:// on the page address to read it from there.
Send comments and replies to ~admicos/ (mailing list etiquette)