This commit is contained in:
2025-11-18 21:58:36 +01:00
parent ac262cc98a
commit 354b16da49

View File

@@ -4,6 +4,14 @@ import datetime
import os import os
import shutil import shutil
now = datetime.datetime.now() now = datetime.datetime.now()
import argparse
parser = argparse.ArgumentParser(description="Portainer helper - use env vars or pass credentials.")
parser.add_argument("--influx", "-i", action="store_true", help="Select influx")
parser.add_argument("--backup", "-b", action="store_true", help="Select backup mode")
args = parser.parse_args()
PASSWORD= "l4c1j4yd33Du5lo" PASSWORD= "l4c1j4yd33Du5lo"
DATETIME = now.strftime("%Y%m%d%H%M%S") DATETIME = now.strftime("%Y%m%d%H%M%S")
os.chdir("/share/docker_data/__backups/") os.chdir("/share/docker_data/__backups/")
@@ -15,6 +23,8 @@ for f in allfiles:
shutil.move(f"/share/docker_data/gitlab/data/backups/{f}", "/share/docker_data/__backups/") shutil.move(f"/share/docker_data/gitlab/data/backups/{f}", "/share/docker_data/__backups/")
if args.backup and args.nextcloud:
print("Backup nextcloud") print("Backup nextcloud")
cmnd = 'docker exec --user www-data nextcloud-app-1 php occ maintenance:mode --on' cmnd = 'docker exec --user www-data nextcloud-app-1 php occ maintenance:mode --on'
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
@@ -25,43 +35,45 @@ status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} nextcloudDB_{DATETIME}.sql.zip nextcloudDB_{DATETIME}.sql" cmnd = f"zip -P {PASSWORD} nextcloudDB_{DATETIME}.sql.zip nextcloudDB_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
os.remove(f"nextcloudDB_{DATETIME}.sql") os.remove(f"nextcloudDB_{DATETIME}.sql")
if args.backup and args.bookstack:
print("Backup Bookstack") print("Backup Bookstack")
cmnd = f"docker exec bookstack-db-1 sh -c 'exec mysqldump --single-transaction -h localhost -u bookstack -p{PASSWORD} bookstackapp' > /share/docker_data/__backups/bookstack_{DATETIME}.sql" cmnd = f"docker exec bookstack-db-1 sh -c 'exec mysqldump --single-transaction -h localhost -u bookstack -p{PASSWORD} bookstackapp' > /share/docker_data/__backups/bookstack_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} bookstack_{DATETIME}.sql.zip bookstack_{DATETIME}.sql" cmnd = f"zip -P {PASSWORD} bookstack_{DATETIME}.sql.zip bookstack_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
os.remove(f"bookstack_{DATETIME}.sql") os.remove(f"bookstack_{DATETIME}.sql")
if args.backup and args.kestra:
print("Backup Kestra") print("Backup Kestra")
cmnd = f"docker exec kestra-postgres-1 sh -c 'pg_dump -h localhost -p 5432 -U kestra -d kestra' > /share/docker_data/__backups/kestra_{DATETIME}.sql" cmnd = f"docker exec kestra-postgres-1 sh -c 'pg_dump -h localhost -p 5432 -U kestra -d kestra' > /share/docker_data/__backups/kestra_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} kestra_{DATETIME}.sql.zip kestra_{DATETIME}.sql" cmnd = f"zip -P {PASSWORD} kestra_{DATETIME}.sql.zip kestra_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
os.remove(f"kestra_{DATETIME}.sql") os.remove(f"kestra_{DATETIME}.sql")
if args.backup and args.authentik:
print("Backup Authentik") print("Backup Authentik")
cmnd = f"docker exec authentik-postgresql-1 sh -c 'pg_dump -h localhost -p 5432 -U authentik -d authentik' > /share/docker_data/__backups/authentik_{DATETIME}.sql" cmnd = f"docker exec authentik-postgresql-1 sh -c 'pg_dump -h localhost -p 5432 -U authentik -d authentik' > /share/docker_data/__backups/authentik_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} authentik_{DATETIME}.sql.zip authentik_{DATETIME}.sql" cmnd = f"zip -P {PASSWORD} authentik_{DATETIME}.sql.zip authentik_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
os.remove(f"authentik_{DATETIME}.sql") os.remove(f"authentik_{DATETIME}.sql")
if args.backup and args.zabbix:
print("Backup Zabbix") print("Backup Zabbix")
cmnd = f"docker exec zabbix-server-db-server-1 sh -c 'pg_dump -h localhost -p 5432 -U zabbix -d zabbix' > /share/docker_data/__backups/zabbix_{DATETIME}.sql" cmnd = f"docker exec zabbix-server-db-server-1 sh -c 'pg_dump -h localhost -p 5432 -U zabbix -d zabbix' > /share/docker_data/__backups/zabbix_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} zabbix_{DATETIME}.sql.zip zabbix_{DATETIME}.sql" cmnd = f"zip -P {PASSWORD} zabbix_{DATETIME}.sql.zip zabbix_{DATETIME}.sql"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
os.remove(f"zabbix_{DATETIME}.sql") os.remove(f"zabbix_{DATETIME}.sql")
if args.backup and args.influx:
print("Backup Influx") print("Backup Influx")
cmnd = f"docker exec home-assistant-influxdb-1 influx backup /backup" cmnd = f"docker exec home-assistant-influxdb-1 influx backup /backup"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"docker cp influxdb:/backup /tmp/backup" cmnd = f"docker cp influxdb:/backup /tmp/backup_{DATETIME}"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
cmnd = f"zip -P {PASSWORD} influxdb_{DATETIME}.zip /tmp/backup" print(output)
cmnd = f"zip -P {PASSWORD} influxdb_{DATETIME}.zip /tmp/backup_{DATETIME}"
status, output = subprocess.getstatusoutput(cmnd) status, output = subprocess.getstatusoutput(cmnd)
print(output)
if args.backup and args.portainer:
print("Backup portainer") print("Backup portainer")
headers = { headers = {
'Content-Type': 'application/json; charset=utf-8', 'Content-Type': 'application/json; charset=utf-8',