Added PVE-to-PBS-Backup & OVHCloud-DDNS-API-Setup
This commit is contained in:
6
Linux/Proxmox/PVE-BackupToPBS/Backup.service
Normal file
6
Linux/Proxmox/PVE-BackupToPBS/Backup.service
Normal file
@@ -0,0 +1,6 @@
|
||||
[Unit]
|
||||
Description=PVE to PBS Backup
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/bash /opt/PVEtoPBS.sh
|
||||
9
Linux/Proxmox/PVE-BackupToPBS/Backup.timer
Normal file
9
Linux/Proxmox/PVE-BackupToPBS/Backup.timer
Normal file
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Scheduled PVE to PBS Backup
|
||||
|
||||
[Timer]
|
||||
OnCalendar=weekly
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
55
Linux/Proxmox/PVE-BackupToPBS/BackupScipt.sh
Normal file
55
Linux/Proxmox/PVE-BackupToPBS/BackupScipt.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
#List of files to in/exclude form the backup located /.pxarexclude
|
||||
|
||||
#Scipt config
|
||||
PBS_Host=<PBS_IP/Hostname>
|
||||
PBS_Datastore=<DataStoreName>
|
||||
PBS_User=root@pam!<APIKeyName>
|
||||
export PBS_PASSWORD="<APIKey/Password>"
|
||||
export PBS_FINGERPRINT="<PBS Fingerprint>"
|
||||
PBS_NameSpace=PVE-Hosts
|
||||
Run_Purge=false
|
||||
Purge_DryRun=true
|
||||
Run_GarbageColletion=false
|
||||
|
||||
##end of config
|
||||
|
||||
export PBS_LOG=info #Possible values are off, error, warn, info, debug and trace
|
||||
export PBS_REPOSITORY="$PBS_User@$PBS_Host:$PBS_Datastore"
|
||||
PVE_Hostname=$(hostname)
|
||||
PBS_NameSpace=$PBS_NameSpace/"$PVE_Hostname"
|
||||
|
||||
echo "Generating package(APT) report"
|
||||
apt-mark showmanual > /SystemRepport-APT
|
||||
|
||||
echo "Generating PVE report"
|
||||
pvereport 2> /dev/null > /SystemRepport-PVE
|
||||
|
||||
echo "Running backup"
|
||||
proxmox-backup-client backup root.pxar:/ --include-dev /etc/pve --ns $PBS_NameSpace
|
||||
|
||||
##Prunne while runing instead of using jobs in PBS
|
||||
# Docs: https://pbs.proxmox.com/docs/backup-client.html#pruning-and-removing-backups
|
||||
#
|
||||
# Prune options --keep-last <N> --keep-hourly <N> --keep-daily <N> --keep-weekly <N> --keep-monthly <N> --keep-yearly <N>
|
||||
#
|
||||
# To test and generate a repport set Run_Purge and Purge_DryRun to true
|
||||
# To use Run_Purge to true Purge_DryRun to false
|
||||
|
||||
|
||||
if $Run_Purge; then
|
||||
if ! $Purge_DryRun; then
|
||||
echo purge
|
||||
proxmox-backup-client prune host/"$PVE_Hostname" --keep-daily 1 --keep-weekly 3 --ns $PBS_NameSpace
|
||||
else
|
||||
echo dry
|
||||
proxmox-backup-client prune host/"$PVE_Hostname" --dry-run --keep-daily 1 --keep-weekly 3 --ns $PBS_NameSpace | tee Pruge-DryRun
|
||||
fi
|
||||
fi
|
||||
|
||||
if $Run_GarbageColletion; then
|
||||
proxmox-backup-client garbage-collect
|
||||
fi
|
||||
|
||||
rm /SystemRepport-PVE /SystemRepport-APT
|
||||
31
Linux/Proxmox/PVE-BackupToPBS/ReadMe.md
Normal file
31
Linux/Proxmox/PVE-BackupToPBS/ReadMe.md
Normal file
@@ -0,0 +1,31 @@
|
||||
## Instalation
|
||||
### PVE Setup
|
||||
Put the following files on the Proxmox-VE server
|
||||
* `pxarexclude` as `/.pxarexclude
|
||||
* `BackupScipt.sh` as `/opt/PVEtoPBS.sh`
|
||||
* `Backup.service` as `/etc/systemd/system/PVEtoPBS.service`
|
||||
* `Backup.timer` as `/etc/systemd/system/PVEtoPBS.timer`
|
||||
|
||||
Edit `/opt/PVEtoPBS.sh` to configure the backups.
|
||||
Edit `/etc/systemd/system/PVEtoPBS.timer` to set-up the schedule the backups,
|
||||
change OnCalendar (examples yearly,monthly,weekly,daily,hourly or *-01-01 00:00:00)
|
||||
|
||||
Run `systemctl enable --now PVEtoPBS.timer`.
|
||||
To run a backup now run `systemctl start PVEtoPBS.service` or `bash /opt/PVEtoPBS.sh`
|
||||
|
||||
### PBS Setup
|
||||
using name space for PVE with nested 1 for hostname,
|
||||
This is done for permission managment
|
||||
|
||||
### Required permission for api token/user
|
||||
| **Used for?** | **Path** | **Role** |
|
||||
|------------------------------|---------------------------------------------------|--------------------|
|
||||
| Basic usage | /system/status | Audit |
|
||||
| Creating backups | /datastore/`<datastoreName>`/PVE-Hosts/PVE-Hostname | DatastoreBackup |
|
||||
| Creating and purging backups | /datastore/`<datastoreName>`/PVE-Hosts/PVE-Hostname | DatastorePowerUser |
|
||||
| Run garbage collection | /datastore/`<datastoreName>` | DatastoreAdmin |
|
||||
|
||||
### Source/Inspriration
|
||||
* https://github.com/DerDanilo/proxmox-stuff/blob/master/prox_config_backup.sh
|
||||
* https://pbs.proxmox.com/docs/backup-client.html
|
||||
|
||||
16
Linux/Proxmox/PVE-BackupToPBS/pxarexclude
Normal file
16
Linux/Proxmox/PVE-BackupToPBS/pxarexclude
Normal file
@@ -0,0 +1,16 @@
|
||||
*
|
||||
!/etc
|
||||
!/etc/**
|
||||
!/root
|
||||
!/root/**
|
||||
!/opt
|
||||
!/opt/**
|
||||
!/var/
|
||||
!/var/lib/
|
||||
!/var/lib/pve-cluster
|
||||
!/var/lib/pve-cluster/**
|
||||
!/usr/
|
||||
!/usr/share/
|
||||
!/usr/share/kvm/
|
||||
!/usr/share/kvm/*.vbios
|
||||
!/SystemRepport-*
|
||||
61
OVHCloud/SetupAPI-Key_ddns-updater.md
Normal file
61
OVHCloud/SetupAPI-Key_ddns-updater.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# OVHCloud api DDNS Setup
|
||||
This system uses OVH's API v1 and [ddns-updater](https://github.com/qdm12/ddns-updater "Lightweight universal DDNS Updater program
|
||||
")
|
||||
## Get record ID(s) in preparation for generating the API keys
|
||||
* First make sure the required `A` and `AAAA` for the (sub)domain exist in OVHCloud's manager.
|
||||
* Go to OVHCloud API Console's [Auth page]( "OVHCloud API Console").
|
||||
* Click `Login with OVHCloud SSO`, and follow the steps.
|
||||
* Go to OVHCloud API Console's [List record]("OVHCloud API Console").
|
||||
* Enter the domain name (without subdomain) under `zoneName`.
|
||||
* If you want to update a subdomain enter this in `subDomain`.
|
||||
* Enter `A` in the `fieldType` field
|
||||
* Click the Blue `EXECUTE` button
|
||||
* Note the number given in the response field
|
||||
* If you also want to update IPv6 record enter `AAAA` in the ` fieldType` field
|
||||
* Click the Blue `EXECUTE` button
|
||||
* Note the number given in the response field
|
||||
|
||||
## Generating the API keys
|
||||
|
||||
* Go to the OVHCloud [API Key generator]("OVHCloud Auth")
|
||||
* Enter a Application name (example: "mydomain-subdomain-DDNS").
|
||||
* Enter a Application Description (example: "subdomain.mydomain.com DNS Updater").
|
||||
* Set Validity to `Unlimited`
|
||||
* Add the following rights:
|
||||
```
|
||||
GET: /domain/zone/<DomainName>/record
|
||||
PUT: /domain/zone/<DomainName>/record/<IPv4 Record ID>
|
||||
PUT: /domain/zone/<DomainName>/record/<IPv6 Record ID>
|
||||
POST: /domain/zone/<DomainName>/refresh
|
||||
```
|
||||
|
||||
## ddns-updater example config
|
||||
```
|
||||
{
|
||||
"settings": [
|
||||
{
|
||||
"provider": "ovh",
|
||||
"mode": "api",
|
||||
"domain": "quartz.nxdi.nl",
|
||||
"api_endpoint": "ovh-eu",
|
||||
"app_key": "<app_key>",
|
||||
"app_secret": "<app_secret>",
|
||||
"consumer_key": "<consumer_key>",
|
||||
"ip_version": "ipv4"
|
||||
},
|
||||
{
|
||||
"provider": "ovh",
|
||||
"mode": "api",
|
||||
"domain": "quartz.nxdi.nl",
|
||||
"api_endpoint": "ovh-eu",
|
||||
"app_key": "<app_key>",
|
||||
"app_secret": "<app_secret>",
|
||||
"consumer_key": "<consumer_key>",
|
||||
"ip_version": "ipv6",
|
||||
"ipv6_suffix": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user