This commit is contained in:
bee
2026-05-25 22:06:31 +02:00
parent 9729b28681
commit 808ff14aba
11 changed files with 142 additions and 11 deletions
+10
View File
@@ -80,6 +80,16 @@
"panel": "dedicated"
}
},
{
"label": "Deploy: backup",
"type": "shell",
"command": "make deploy-backup",
"group": "build",
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
},
{
"label": "Deploy: wireguard",
"type": "shell",
+57
View File
@@ -0,0 +1,57 @@
- name: Backup
hosts: pi
become: true
vars:
gpg_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
34383033383462626132353163303532376137613539326662383038663537633465373863396539
6139623961303165353230303637303530343136363165380a323534663665323836636165323237
39653863313962353033336338376462303962323762663139663136663033306161316361303630
6466663761643438360a653166616130633862643236633663303731356337326361636436646439
37303633353961623766313063363734376334383163376337376639306135373064
tasks:
- name: Install rsync
ansible.builtin.apt:
name: rsync
state: present
- name: Create backup directory
ansible.builtin.file:
path: /opt/backup
state: directory
mode: '0700'
- name: Copy daily
ansible.builtin.copy:
src: backupDaily.sh
dest: /opt/backup/backupDaily.sh
mode: '0700'
- name: Copy weekly
ansible.builtin.copy:
src: backupWeekly.sh
dest: /opt/backup/backupWeekly.sh
mode: '0700'
- name: Copy passphrase
ansible.builtin.template:
src: passphrase.txt.j2
dest: /opt/backup/passphrase.txt
mode: '0600'
- name: Schedule daily backup
ansible.builtin.cron:
name: beepi backup daily
user: root
minute: '0'
hour: '3'
job: /opt/backup/backupDaily.sh >> /var/log/beepi-backup.log 2>&1
- name: Schedule weekly backup
ansible.builtin.cron:
name: beepi backup weekly
user: root
minute: '0'
hour: '5'
weekday: '0'
job: /opt/backup/backupWeekly.sh >> /var/log/beepi-backup.log 2>&1
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
set -euo pipefail
now=$(date +"%Y%m%d%H%M")
declare -a arr=("gitea" "mail" "matrix" "monitoring")
declare -a monitoring=("monitoring_prometheus-data" "monitoring_grafana-storage" "monitoring_loki-data" "monitoring_alloy-data")
declare -a matrix=("matrix_db")
trap cleanup EXIT
for i in "${arr[@]}"
do
cd /opt/beeserver/${i}
podman-compose down -t 60
if [[ "$i" == "monitoring" ]]
then
for j in "${monitoring[@]}"
do
podman volume export ${j} --output ${j}.tar
done
fi
if [[ "$i" == "matrix" ]]
then
for j in "${matrix[@]}"
do
podman volume export ${j} --output ${j}.tar
done
fi
rsync -aH /opt/beeserver/${i} /opt/backup/beeserver
podman-compose up -d
done
tar -czf - /opt/backup/beeserver | gpg --batch --passphrase-file /opt/backup/passphrase.txt -c -o /home/beeshare/raid/serverBackup/beeserver_daily_${now}.tar.gz.gpg
function cleanup()
{
for j in "${monitoring[@]}"
do
rm -rf /opt/beeserver/monitoring/${j}.tar
done
for j in "${matrix[@]}"
do
rm -rf /opt/beeserver/matrix/${j}.tar
done
}
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
set -euo pipefail
now=$(date +"%Y%m%d%H%M")
tar -czf - /opt/backup/beeserver | gpg --batch --passphrase-file /opt/backup/passphrase.txt -c -o /home/beeshare/raid/serverBackup/beeserver_weekly_${now}.tar.gz.gpg
if [ -s /home/beeshare/raid/serverBackup/beeserver_weekly_${now}.tar.gz.gpg ]
then
rm -rf /opt/backup/beeserver
fi
find /home/beeshare/raid/serverBackup -maxdepth 1 -name 'beeserver_weekly_*.tar.gz.gpg' -mtime +30 -delete
find /home/beeshare/raid/serverBackup -maxdepth 1 -name 'beeserver_daily_*.tar.gz.gpg' -mtime +7 -delete
+1
View File
@@ -0,0 +1 @@
{{ gpg_password }}
+6 -6
View File
@@ -46,18 +46,18 @@
state: directory
mode: '0755'
- name: Copy compose
ansible.builtin.template:
src: docker-compose.yml.j2
dest: /opt/beeserver/monitoring/docker-compose.yml
mode: '0644'
- name: Compose down
changed_when: true
ansible.builtin.command:
cmd: podman-compose down
chdir: /opt/beeserver/monitoring
- name: Copy compose
ansible.builtin.template:
src: docker-compose.yml.j2
dest: /opt/beeserver/monitoring/docker-compose.yml
mode: '0644'
- name: Copy prometheus config
ansible.builtin.copy:
src: prometheus_config.yml
+4 -5
View File
@@ -8,10 +8,9 @@ scrape_configs:
- targets: ['localhost:9090']
- job_name: node
static_configs:
- targets: ['host.containers.internal:9100']
- targets:
- 'host.containers.internal:9100'
- '192.168.178.51:9100'
- job_name: podman
static_configs:
- targets: ['podman-exporter:9882']
- job_name: beepc
static_configs:
- targets: ['192.168.178.51:9100']
- targets: ['podman-exporter:9882']