Skip to main content

Setup a new PBS client

# Proxmox Backup Client on Raspberry Pi (ARM64) — Community Setup Guide

This guide installs **`proxmox-backup-client`** on a Raspberry Pi (ARM64) and schedules backups to your **existing** PBS server (no PBS web UI on the Pi).

> **Tip:** Try to keep the client major version close to your PBS major version. Proxmox tests compatibility across current major versions, but “two or more releases apart” is best-effort. citeturn2view0


## 1) Requirements

- Raspberry Pi running **64-bit OS** (`aarch64`)
- Network access to your PBS server (default port **8007**)
- A PBS user + **API token** (recommended)

Check ARM64:
```bash
uname -m
# should be: aarch64
```


## 2) Install the client (community ARM64 packages)

We’ll use the community ARM64 build repo **wofferl/proxmox-backup-arm64** to download prebuilt `.deb` packages. citeturn0search0turn0search9

### A) Download packages
```bash
sudo apt update
sudo apt install -y git ca-certificates curl

cd /tmp
git clone https://github.com/wofferl/proxmox-backup-arm64.git
cd proxmox-backup-arm64

# Choose branch (common pattern):
# - Debian 12 / Bookworm:   git checkout stable-3
# - Debian 13 / Trixie:     stay on main
#
# Pick a VERSION tag from the repo releases page.
# Example (as seen in your packages folder):
VERSION="4.1.1-1"

./build.sh download=$VERSION
```
`build.sh` expects `download=VERSION`. citeturn0search0turn0search9

### B) Install ONLY the client packages
```bash
cd /tmp/proxmox-backup-arm64/packages

# minimal client install
sudo apt install -y ./proxmox-mini-journalreader_*_arm64.deb ./proxmox-backup-client_*_arm64.deb

# optional: restore tool
sudo apt install -y ./proxmox-backup-file-restore_*_arm64.deb

proxmox-backup-client version
```

> Don’t install `proxmox-backup-server_*.deb` on the Pi if you only need a client.


## 3) Create a PBS token + collect connection info

On your **PBS server**, create a dedicated user/token (recommended) and grab:
- **Repository string** (format like `user@pbs!token@host:datastore`) citeturn1view0
- **Token secret** (used as the “password”) citeturn1view0
- **Server fingerprint** (needed if the TLS cert isn’t trusted by system CAs) citeturn1view0

In PBS UI, you can usually find these under the datastore “connection information” section.


## 4) Configure the Pi (secure files)

Create a small config directory:
```bash
sudo mkdir -p /etc/proxmox-backup-client
sudo chmod 700 /etc/proxmox-backup-client
```

### A) Save your repository string
```bash
# Example:
# echo "backup@[email protected]:datastore1" | sudo tee /etc/proxmox-backup-client/repository

echo "PUT_YOUR_REPOSITORY_HERE" | sudo tee /etc/proxmox-backup-client/repository >/dev/null
sudo chmod 600 /etc/proxmox-backup-client/repository
```

### B) Save your token secret
```bash
sudo nano /etc/proxmox-backup-client/token.secret
sudo chmod 600 /etc/proxmox-backup-client/token.secret
```

### C) (Optional) Save PBS fingerprint
```bash
# only needed if your Pi doesn't trust PBS's TLS cert chain
sudo nano /etc/proxmox-backup-client/fingerprint
sudo chmod 600 /etc/proxmox-backup-client/fingerprint
```


## 5) Create the backup script

Create:
```bash
sudo nano /usr/local/sbin/pbs_backup.sh
sudo chmod 700 /usr/local/sbin/pbs_backup.sh
```

Paste (adjust paths to your Pi):
```bash
#!/usr/bin/env bash
set -euo pipefail

export PBS_REPOSITORY="$(cat /etc/proxmox-backup-client/repository)"
export PBS_PASSWORD_FILE="/etc/proxmox-backup-client/token.secret"

# Optional TLS pinning:
if [[ -f /etc/proxmox-backup-client/fingerprint ]]; then
  export PBS_FINGERPRINT="$(head -n1 /etc/proxmox-backup-client/fingerprint)"
fi

# Note: proxmox-backup-client skips mount points by default; include them explicitly only if desired. citeturn1view0

exec proxmox-backup-client backup   etc.pxar:/etc   home.pxar:/home   --exclude /home/**/.cache   --exclude /home/**/node_modules   --exclude /mnt   --exclude /media
```

Test a manual run:
```bash
sudo /usr/local/sbin/pbs_backup.sh
```

List snapshots:
```bash
sudo -E proxmox-backup-client snapshot list
```
`snapshot list` is documented as a way to view your backups. citeturn1view0


## 6) Schedule it with systemd (daily)

```bash
sudo tee /etc/systemd/system/pbs-backup.service >/dev/null <<'EOF'
[Unit]
Description=Proxmox Backup Client (Pi) -> PBS
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/pbs_backup.sh
EOF
```

```bash
sudo tee /etc/systemd/system/pbs-backup.timer >/dev/null <<'EOF'
[Unit]
Description=Nightly Proxmox Backup Client

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true

[Install]
WantedBy=timers.target
EOF
```

Enable:
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now pbs-backup.timer
systemctl list-timers | grep pbs-backup
```

Check logs after it runs:
```bash
journalctl -u pbs-backup.service -n 200 --no-pager
```


## Notes

- Environment variables supported by the client include `PBS_REPOSITORY`, `PBS_PASSWORD_FILE`, and `PBS_FINGERPRINT`. citeturn1view0
- Excluding files can also be done with `.pxarexclude` files if you prefer patterns near the data. citeturn1view0