Homelab #21 Install Proxmox Backup Server on a VPS with S3 Storage
HOMELAB

Homelab #21 Install Proxmox Backup Server on a VPS with S3 Storage

Thất Nghiệp Thất Nghiệp
Mar 5, 2026 5 min read 0 views
Back to Blog

In post 17 we already used backups once. So what was Proxmox Backup Server (PBS) even created for?
That question was also asked in the past on Mr. Thuan Bui’s blog
That question was also asked in the past on Mr

Choosing PBS or a PVE VM PBS

I was pretty torn about this. Partly because there’s a myth that you shouldn’t run PBS in a VM on the Proxmox forums
Even the staff doesn’t recommend it
Choosing PBS or a PVE VM PBS - In post 17 we already used backups once
I also asked some seniors
Choosing PBS or a PVE VM PBS - In post 17 we already used backups once
Until a friend (we worked on a project together) sent me a promo from VPSTTT for free 1TB for 3 months. So I wanted to test how the Bucket would be. And that bucket is only available for PBS. If you try hard enough you can still use it on PVE, but I wanted to do it on PBS.

Even better, thanks to this post by Mr. Thuan Bui showing PBS on Docker and VPS is feasible, I decided to install it on my 1-year VPS.

Install steps

I used Hypercore VPS — still Hypercore, my go-to choice =))
Hypercore VPS runs on Proxmox, so if you run Docker on it you can think of it as Docker on a Debian VM on top of Proxmox. Not much different from running LXC and then Docker inside PVE.

I used this repo: https://github.com/ayufan/pve-backup-server-dockerfiles
Create a new folder for PBS and the docker-compose.yml file

mkdir ~/pbs
cd ~/pbs
nano docker-compose.yml

Enter the following content

services:
  pbs:
    image: ayufan/proxmox-backup-server:latest
    ports:
      - 8007:8007
    mem_limit: 2G
    volumes:
      - ./pbs_etc:/etc/proxmox-backup
      - ./pbs_logs:/var/log/proxmox-backup
      - ./pbs_lib:/var/lib/proxmox-backup
      - ./backups:/backups
    tmpfs:
      - /run
    cap_add: # smartctl support
      - SYS_RAWIO
    #devices:
    # - /dev/sda
    restart: unless-stopped
    stop_signal: SIGHUP

I commented out devices: because this is a VPS with a virtual disk. You can adjust it if needed. I left it so it auto-detects.
Next there are three ways to access PBS.
Method 1: Use a VPN
Method 2: Allow firewall then connect via http://<IP-VPS>:8007

sudo ufw allow 8007/tcp
sudo ufw reload
sudo ufw status

Method 3: Use Cloudflared
I initially used Cloudflared, but later found it couldn’t verify the Token, which broke the connection between PVE and PBS. So I don’t recommend this method

Log in to Proxmox Backup Server (PBS)

For the first login, use the default info
Username: admin
Password: pbspbs
Realm: Proxmox Backup authentication server
Log in to Proxmox Backup Server (PBS) - sudo ufw allow 8007/tcp
sudo ufw reload
sudo ufw status

Method 3: Use Cloudflared...
After logging in, go to Access Control, click Add to create a new account
Log in to Proxmox Backup Server (PBS) - sudo ufw allow 8007/tcp
sudo ufw reload
sudo ufw status

Method 3: Use Cloudflared...
Next, switch to the Permission tab, click Add to grant admin rights to the new account.
Log in to Proxmox Backup Server (PBS) - sudo ufw allow 8007/tcp
sudo ufw reload
sudo ufw status

Method 3: Use Cloudflared...
Here I used a portion of the content from Mr. Thuan Bui’s post

Add S3 Storage

Go to the PBS UI and navigate as shown in the image
Add S3 Storage - For the first login, use the default info
Username: admin
Password: pbspbs
Realm: Proxmox Backup authenti...
Fill in the information from your S3 provider. I used VPSTTT with MinIO
Add S3 Storage - For the first login, use the default info
Username: admin
Password: pbspbs
Realm: Proxmox Backup authenti...
Now just enter it; remember the API port in my case is 9000
Add S3 Storage - For the first login, use the default info
Username: admin
Password: pbspbs
Realm: Proxmox Backup authenti...

Create a Datastore on PBS

Click Add Datastore in the left menu, then enter info like the image. Backing Path: /backups is the path declared on line 11 in docker-compose.yml
Create a Datastore on PBS - Go to the PBS UI and navigate as shown in the image

Fill in the information from your S3 prov...

The new datastore will be added. Click Show Connection Information to see details; if you used method 2 with the VPS IP, you can connect directly. I like things a bit more complicated, so I chose a domain name. That means the next step.
Create a Datastore on PBS - Click Add Datastore in the left menu, then enter info like the image

Install Caddy for Reverse Proxy

I’ve wanted to try Caddy for a while. Since there’s a chance, I used it; the benefit is you don’t have to manually request an SSL cert, it can do it automatically.
Install Caddy

sudo apt update -y
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

sudo apt update -y
sudo apt install -y caddy

sudo systemctl enable caddy
sudo systemctl start caddy
sudo systemctl status caddy --no-pager

Then nano /etc/caddy/Caddyfile
Edit it like this

tên-miền-của-bạn {
    reverse_proxy https://127.0.0.1:8007 {
        transport http {
            tls_insecure_skip_verify
        }
    }
}

Edit the PBS docker-compose.yml

services:
  pbs:
    image: ayufan/proxmox-backup-server:latest
    ports:
      - 127.0.0.1:8007:8007
    mem_limit: 2G
    volumes:
      - ./pbs_etc:/etc/proxmox-backup
      - ./pbs_logs:/var/log/proxmox-backup
      - ./pbs_lib:/var/lib/proxmox-backup
      - ./backups:/backups
    tmpfs:
      - /run
    cap_add: # smartctl support
      - SYS_RAWIO
    #devices:
    # - /dev/sda
    restart: unless-stopped
    stop_signal: SIGHUP

Add the line ports: 127.0.0.1:8007:8007

Next, go to your domain management and point an A record to your VPS.
Install Caddy for Reverse Proxy - services:
  pbs:
    image: ayufan/proxmox-backup-server:latest
    ports:
      - 127
And you’re done.

Connect PBS with PVE

Connect PBS with PVE - Next, go to your domain management and point an A record to your VPS
Now just follow the info under Show Connection Information from before.

Usage is similar to post 17 but the difference is selecting the PBS storage.

Good luck!

Share this article

Thất Nghiệp

Written by Thất Nghiệp

A developer sharing thoughts on clean code, creative freedom, and the pursuit of the perfect dev environment. Building digital sanctuaries one component at a time.

Comments

Join the conversation

Leave a comment

Won't be published

You might also like