Migrate the Docker-deployed Umami From One Server to Another.
Introduction
Nearly, I bought a new ARM server from netcup GmbH, and I need to migrate my umami server from the old server to the new one. But I installed umami with Docker.
|
|
The most difficult and important part is exporting data in umami. To do that, we have several methods:
- Export the Docker volume (Very complex)
- Export the database (My choice)
- Copy the whole path (Not recommend)
Compare Methods
First, we need to know that umami’s data is in the volume. Since docker-compose.yml
specify that:
|
|
If I mounted a path into the container instead of a volume, I can simply copy the path to my new machine. For example,
|
|
Sadly I used a volume and made things complex. How to migrated Docker volume (in a right way) is welled discussed over the internet. For example, Move a Docker volume to another host. This is too complex for me. You may ask, the Docker volumes are stored in a fixed path like /var/lib/docker/volumes/*
. Why not just copy the folder to another machine and start as normal? Well, this is applicable and I have done this before. But it may cause some potential issues, especially for different Docker container version.
Finally, I choice to just export the database and import to the new instance. Let’s do it step by step.
Migrate Database
FIrst, let’s attach to the old container.
|
|
Export the database as a .sql
file.
|
|
Now the database is in umami.sql
, but it’s inside the container, so press Ctrl + D
to disconnect from the container shell. Then, copy the file into host machine.
|
|
Then, you need transfer this backup file to your new host machine. After you docker compose up -d
the umami-db-1
container will be created. Then, you can copy the database backup file into the container by:
|
|
Then, we can attach to the umami-db-1
by:
|
|
To import the backup into the PostgreSQL, we need login psql
as umami
:
|
|
In psql
shell, we will drop the original database and create a blank one for preparing import.
|
|
Then, quit psql
shell and run:
|
|
to import backup file. Finally, restart the umami instance:
|
|
Check
Now, you may have a check to see the database is migrated or not. Open the URL of your new umami location and try to login with your original credentials. If you can login, the database is very likely migrated (credentials is stored in database).
To further confirm, you can go to the dashboard and check if all data is displaying properly.
If not, which mean the database didn’t migrated successfully. You may check the exported backup file (does it contain the right data?) and the way you import (see if the backup file is successfully imported to the new PostgreSQL).
Reference
Related Content
- Deploying a Full-Stack Excalidraw Using Docker
- Config VLESS Protocol With Advance Feature in Sing-Box
- Netcup VServer (ARM64) Benchmark and Review
- Create MCQs With ChatGPT in Scales
- Using CloudFlare Workers for Reverse Proxy