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`**client on a Raspberry Pi (ARM64) and schedules backups to your **existing**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**OS (`aarch64`aarch64)

-
  • Network access to your PBS server (default port **8007**8007)

  • -
  • A PBS user + **API token**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**arm64 to download prebuilt `.deb`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`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