From 808ff14ababeb0b9ca8a6ce431978979876108bb Mon Sep 17 00:00:00 2001 From: bee Date: Mon, 25 May 2026 22:06:31 +0200 Subject: [PATCH] stuff --- .vscode/tasks.json | 10 ++++ {playbooks => archive}/inspircd/Containerfile | 0 .../inspircd/inspircd.conf.j2 | 0 {playbooks => archive}/inspircd/inspircd.motd | 0 {playbooks => archive}/inspircd/inspircd.yml | 0 playbooks/backup/backup.yml | 57 +++++++++++++++++++ playbooks/backup/backupDaily.sh | 49 ++++++++++++++++ playbooks/backup/backupWeekly.sh | 15 +++++ playbooks/backup/passphrase.txt.j2 | 1 + playbooks/monitoring/monitoring.yml | 12 ++-- playbooks/monitoring/prometheus_config.yml | 9 ++- 11 files changed, 142 insertions(+), 11 deletions(-) rename {playbooks => archive}/inspircd/Containerfile (100%) rename {playbooks => archive}/inspircd/inspircd.conf.j2 (100%) rename {playbooks => archive}/inspircd/inspircd.motd (100%) rename {playbooks => archive}/inspircd/inspircd.yml (100%) create mode 100644 playbooks/backup/backupDaily.sh create mode 100644 playbooks/backup/backupWeekly.sh create mode 100644 playbooks/backup/passphrase.txt.j2 diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 1c5956d..c4feab9 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -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", diff --git a/playbooks/inspircd/Containerfile b/archive/inspircd/Containerfile similarity index 100% rename from playbooks/inspircd/Containerfile rename to archive/inspircd/Containerfile diff --git a/playbooks/inspircd/inspircd.conf.j2 b/archive/inspircd/inspircd.conf.j2 similarity index 100% rename from playbooks/inspircd/inspircd.conf.j2 rename to archive/inspircd/inspircd.conf.j2 diff --git a/playbooks/inspircd/inspircd.motd b/archive/inspircd/inspircd.motd similarity index 100% rename from playbooks/inspircd/inspircd.motd rename to archive/inspircd/inspircd.motd diff --git a/playbooks/inspircd/inspircd.yml b/archive/inspircd/inspircd.yml similarity index 100% rename from playbooks/inspircd/inspircd.yml rename to archive/inspircd/inspircd.yml diff --git a/playbooks/backup/backup.yml b/playbooks/backup/backup.yml index e69de29..b07d77f 100644 --- a/playbooks/backup/backup.yml +++ b/playbooks/backup/backup.yml @@ -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 diff --git a/playbooks/backup/backupDaily.sh b/playbooks/backup/backupDaily.sh new file mode 100644 index 0000000..3a64224 --- /dev/null +++ b/playbooks/backup/backupDaily.sh @@ -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 +} \ No newline at end of file diff --git a/playbooks/backup/backupWeekly.sh b/playbooks/backup/backupWeekly.sh new file mode 100644 index 0000000..21f5950 --- /dev/null +++ b/playbooks/backup/backupWeekly.sh @@ -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 \ No newline at end of file diff --git a/playbooks/backup/passphrase.txt.j2 b/playbooks/backup/passphrase.txt.j2 new file mode 100644 index 0000000..3b7ea0a --- /dev/null +++ b/playbooks/backup/passphrase.txt.j2 @@ -0,0 +1 @@ +{{ gpg_password }} \ No newline at end of file diff --git a/playbooks/monitoring/monitoring.yml b/playbooks/monitoring/monitoring.yml index 0cd7fa5..20002f9 100644 --- a/playbooks/monitoring/monitoring.yml +++ b/playbooks/monitoring/monitoring.yml @@ -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 diff --git a/playbooks/monitoring/prometheus_config.yml b/playbooks/monitoring/prometheus_config.yml index 13ece28..3907eba 100644 --- a/playbooks/monitoring/prometheus_config.yml +++ b/playbooks/monitoring/prometheus_config.yml @@ -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'] \ No newline at end of file + - targets: ['podman-exporter:9882'] \ No newline at end of file