From 7c0feb42e85ad7c2ad1a4ba84300095b53cb6e55 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Sat, 15 Oct 2022 18:34:20 +0200 Subject: [PATCH] Gitea: documenting the hardware, backup, restore, and upgrade. --- README.md | 47 ++++++++++++++++++++++++++++++++++++ gitea.yml | 3 +-- roles/gitea/tasks/backup.yml | 17 +++++++------ roles/gitea/tasks/setup.yml | 12 +++++++-- 4 files changed, 68 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b00566a..75ae4f7 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,53 @@ Julien Palard a aussi un rsnapshot sur `silence.palard.fr`, vérifié en octobre - `/srv/backups/rsnapshot/daily.0/deb.afpy.org/var/discourse/shared/standalone/backups/default/` contient bien les sauvegardes d'octobre 2022. +## gitea1.afpy.org + +♥ Machine sponsorisée par Gandi ♥ + +C’est un « Gandi VPS V-R1 » 1 CPU, 1 GB RAM, 25 GB disk. + +C’est la machine derrière `git.afpy.org`, déployée via `gitea.yml`. + + +### Mise à jour + +Pour faire une mise à jour, se connecter en root à la machine puis exécuter : + + systemctl start gitea-backup.service + backupopts="-c /etc/gitea/app.ini --file /var/backups/gitea/before-upgrade.zip" gitea-upgrade.sh + +(Oui, je sais, ça fait deux sauvegardes, une par nous (avec un +`pg_dump`), une par le script de gitea dont le SQL n’est pas aussi +propre que celui généré par `pg_dump`). + +Une fois la mise à jour terminée, il est de bon goût de mettre à jour +`gitea_version` dans `gitea.yml`. + + +### Restaurer une sauvegarde + +La machine est sauvegardée automatiquement sur `backup1.afpy.org` (voir `backup.yml`). + +Adapté de : https://docs.gitea.io/en-us/backup-and-restore/#restore-command-restore + +Les sauvegardes sont sur `backup1.afpy.org` dans `/srv/backups/`, +copiez-les d’abord vers `gitea1.afpy.org`. + +Une fois la sauvegarde rappatriée (`gitea.zip` ET `gitea.sql`) : + + systemctl stop gitea + unzip gitea.zip + mv app.ini /etc/gitea/app.ini + rsync -vah --delete data/ /var/lib/gitea/data/ + rsync -vah --delete repos/ /var/lib/gitea/data/gitea-repositories/ + rsync -vah --delete custom/ /var/lib/gitea/custom/ + chown -R git:git /var/lib/gitea/ + sudo --user git psql -d gitea < gitea.sql + +Puis passer le playbook `gitea.yml` pour remettre les bons droits partout (le playbook démarrera aussi `gitea`). + + # Ansible On utilies ces rôles Ansible : diff --git a/gitea.yml b/gitea.yml index a3aead0..704676b 100644 --- a/gitea.yml +++ b/gitea.yml @@ -2,8 +2,7 @@ - hosts: gitea vars: - gitea_version: "1.17.2" - gitea_binary_checksum: "sha256:d0e903671ae04007c5956beb65985825795c1d9b24c9f354b48008fd44db1b57" + gitea_version: "1.17.3" # To upgrade, read the README file first. gitea_internal_token: !vault | $ANSIBLE_VAULT;1.1;AES256 65396439373538656633396363313333663233343661643739633135306131613434353335353634 diff --git a/roles/gitea/tasks/backup.yml b/roles/gitea/tasks/backup.yml index d6a8e8d..3d1ae7f 100644 --- a/roles/gitea/tasks/backup.yml +++ b/roles/gitea/tasks/backup.yml @@ -6,6 +6,14 @@ # systemctl status gitea-backup.service +- name: Create backup directory + file: + state: directory + mode: 0700 + owner: git + group: git + path: /var/backups/gitea/ + - name: Create backup script copy: dest: /usr/local/bin/gitea-backup.sh @@ -14,14 +22,9 @@ mode: 0750 content: | #!/bin/sh - rm -fr /var/backups/gitea - mkdir /var/backups/gitea systemctl stop gitea - chown git:git /var/backups/gitea/ - GITEA_WORK_DIR=/var/lib/gitea sudo -u git --preserve-env=GITEA_WORK_DIR gitea dump -c /etc/gitea/app.ini --file /var/backups/gitea/gitea.zip - sudo -u git pg_dump gitea > /var/backups/gitea/gitea.sql - chown root:root /var/backups/gitea - chmod 700 /var/backups/gitea/ + sudo --user git gitea --work-path /var/lib/gitea --config /etc/gitea/app.ini dump --file /var/backups/gitea/gitea.zip + sudo --user git pg_dump --clean gitea > /var/backups/gitea/gitea.sql systemctl start gitea - name: Create backup service diff --git a/roles/gitea/tasks/setup.yml b/roles/gitea/tasks/setup.yml index 303978e..a968bf9 100644 --- a/roles/gitea/tasks/setup.yml +++ b/roles/gitea/tasks/setup.yml @@ -31,12 +31,19 @@ - name: Download gitea get_url: dest: /usr/local/bin/gitea - checksum: "{{ gitea_binary_checksum }}" url: "https://dl.gitea.io/gitea/{{ gitea_version }}/gitea-{{ gitea_version }}-linux-amd64" mode: 0755 owner: root group: root - register: download_gitea + +- name: Download gitea upgrade script + get_url: + dest: /usr/local/bin/gitea-upgrade.sh + url: "https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/upgrade.sh" + mode: 0755 + force: true + owner: root + group: root - name: Install dependencies package: @@ -49,6 +56,7 @@ # - npm # for static file generation # - make # for static file generation - nginx + - jq # For upgrade.sh state: present - name: Ensure locale en_US.UTF-8 exists