From 252dbb8a982b5a85aff4000dbd058d8a89b7ac28 Mon Sep 17 00:00:00 2001 From: Ludovic Cartier Date: Wed, 27 May 2026 15:45:15 +0200 Subject: [PATCH] add backup option for gitea --- README.md | 12 ++++++++++++ defaults/main.yml | 6 ++++++ templates/brain_backup.j2 | 29 +++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/README.md b/README.md index 6496e64..5cbee76 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ The custom script : - can dump MySQL database(s), including routines/events/triggers - can dump MariaDB database(s), including routines/events/triggers - can dump PostgreSQL database(s) + - can dump Gitea data All files are then send it to a custom Proxmox Backup Server. @@ -57,6 +58,11 @@ Role variables | backup_pg_password | string | | | optional | | backup_pg_docker_enabled | boolean | | false | run postgresql in docker | | backup_pg_docker_container| string | | | required if docker enabled | +| backup_gitea_enabled | boolean | | false | enable gitea dump | +| backup_gitea_config | string | | /data/gitea/conf/app.ini | gitea app.ini path | +| backup_gitea_docker_enabled | boolean | | false | run gitea dump in docker | +| backup_gitea_docker_container | string | | | required if docker enabled | +| backup_gitea_docker_workdir | string | | | optional container workdir | | backup_cron_minute | int | | | | | backup_cron_hour | int | | | | @@ -120,6 +126,12 @@ backup_pg_password: '' backup_pg_docker_enabled: false backup_pg_docker_container: '' +backup_gitea_enabled: true +backup_gitea_config: '/data/gitea/conf/app.ini' +backup_gitea_docker_enabled: true +backup_gitea_docker_container: 'gitea' +backup_gitea_docker_workdir: '/backup/today/gitea' + backup_cron_minute: 30 backup_cron_hour: 5 ``` diff --git a/defaults/main.yml b/defaults/main.yml index 138628f..9cd23ab 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -19,3 +19,9 @@ backup_pg_user: "" backup_pg_password: "" backup_pg_docker_enabled: false backup_pg_docker_container: "" + +backup_gitea_enabled: false +backup_gitea_config: "/data/gitea/conf/app.ini" +backup_gitea_docker_enabled: false +backup_gitea_docker_container: "" +backup_gitea_docker_workdir: "" diff --git a/templates/brain_backup.j2 b/templates/brain_backup.j2 index f2889f1..c2e7acb 100644 --- a/templates/brain_backup.j2 +++ b/templates/brain_backup.j2 @@ -199,6 +199,32 @@ fi ## end of postresql ## {% endif %} +{% if backup_gitea_enabled is sameas true %} +## gitea ## +backup_gitea_config="{{ backup_gitea_config | default('/data/gitea/conf/app.ini') }}" +backup_gitea_docker_enabled="{{ (backup_gitea_docker_enabled | default(false)) | ternary('true', 'false') }}" +backup_gitea_docker_container="{{ backup_gitea_docker_container | default('') }}" +backup_gitea_docker_workdir="{{ backup_gitea_docker_workdir | default('') }}" + +mkdir -p "$backup_dir/$today/gitea" + +if [ "$backup_gitea_docker_enabled" = "true" ]; then + if [ -z "$backup_gitea_docker_container" ]; then + echo "Gitea Docker mode enabled but container name is empty: exiting." + exit 1 + fi + + if [ -z "$backup_gitea_docker_workdir" ]; then + backup_gitea_docker_workdir="$backup_dir/$today/gitea" + fi + + /usr/bin/docker exec -u git -i -w "$backup_gitea_docker_workdir" "$backup_gitea_docker_container" bash -c "/usr/local/bin/gitea dump -c \"$backup_gitea_config\" -q --type tar.gz" +else + sudo su -s /bin/bash - git -c "cd $backup_dir/$today/gitea && /usr/local/bin/gitea dump -c \"$backup_gitea_config\" -q --type tar.gz" +fi +## end of gitea ## +{% endif %} + # purge old backups find $backup_dir -type d -ctime +$backup_local_retention -exec rm -rf {} \; @@ -228,6 +254,9 @@ mysql.pxar:$backup_dir/$today/mysql \ {% if backup_mariadb_enabled is sameas true %} mariadb.pxar:$backup_dir/$today/mariadb \ {% endif %} +{% if backup_gitea_enabled is sameas true %} +gitea.pxar:$backup_dir/$today/gitea \ +{% endif %} --rate ${PBS_RATE} ## end of send to PBS ##