Arthur's Blog

The Very Manual Way to Backup Gitea in a[n Umbrel] Docker Container

2025-10-30 || Tags: gitea docker self-hosting backup

I run gitea on my umbrel server and it's an absolute dream. Painless set up, worked first time, easy to follow instructions; couldn't really ask for more... except the backup story. Backing up your gitea instance is unfortunately not provided through the web interface, an API, or anything quite so simple.

This is the very annoyingly manual way I backup my gitea instance. This is more posted here so I can remember how to do it next week in case I forget.

Log in to umbrel

ssh umbrel@umbrel.local

Find the umbrel docker id

sudo docker ps | grep gitea

sh into the gitea docker

sudo docker exec -it <docker gitea id> sh

Find the gitea executable

For me it was in /app/gitea/gitea. To find it, use this:

find / -name "gitea"

Run the dump with the appropriate ini file

For me the ini was /etc/gitea/app.ini

/app/gitea/gitea dump -c /etc/gitea/app.ini

After it finishes, the last line should give you something like:

2025/10/30 23:29:25 cmd/dump.go:334:runDump() [I] Finish dumping in file /var/lib/gitea/gitea-dump-<linux-epoch>.zip

Exit the docker sh

exit

Copy the file out of the gitea dump file out of the docker ... instance?

sudo docker cp <docker gitea id>:/var/lib/gitea/gitea-dump-<linux-epoch>.zip .

(Potentially Required) Update permissions

The file is probably owned by root. Let's change the owner so that it's easier to copy off later

sudo chown <user> gitea-dump<linux epoch>.zip

Copy the File and Store It

Store it somewhere safe. Try 3-2-1.

Optional - Check it's all there

Unzip the Folder

unzip git-dump-<linux epoch>.zip

Check all the repos are in their appropraite folders

ls repos/<user>

Check the files are all there

ls <temporary folder>

Check you can clone the repos

git clone repos/<user>/<repo name>.git <temporary folder>