# OpnSense Stuff

# Backup via API

1. Benutzer erstellen, Berechtigungen müssen so aussehen:

[![image.png](https://bs.tombehrendt.de/uploads/images/gallery/2025-10/scaled-1680-/g3V3OYcxMKxDLLIQ-image.png)](https://bs.tombehrendt.de/uploads/images/gallery/2025-10/g3V3OYcxMKxDLLIQ-image.png)

Danach kann man den ein API Token generieren (rechts neben den Benutzern, sieht aus wie ein Ticket)

Danach z.B auf Synology folgendes Script in Aufgabenplanung erstellen **(Anpassen von KEY, SECRET % HOST NÖTIG!)**

```bash
#!/usr/bin/bash

# Change API key and secret, number of days to keep backups, the path to your backups and the hostname for your firewall

key="xxxxxxxxxxx"
secret="yyyyyyyy"
daystokeep=30
destination="/volume1/bckup/opnsense"
fwhost="IPADRESSE:PORT"

date=$(date +%Y-%m-%d)

result=$(/usr/bin/curl -I -s -k -u "$key:$secret" https://$fwhost/api/core/backup/download/this | head -1)

if [[ $result != *"200"* ]]; then
   echo "Result of the HTTP request is $result"
   exit 1
fi

/usr/bin/curl -s -k -u "$key:$secret" https://$fwhost/api/core/backup/download/this > "$date.xml"
error=$?

if [ $error -gt 0 ]; then
   echo "Curl returned error number $error"
   exit 1
fi

/usr/bin/gzip "$date.xml"
mv "$date.xml.gz" "$destination"
/usr/bin/find "$destination"/* -mtime +$daystokeep -exec rm {} \;

```