This repository provides a specialized build system and deployment configuration for running Proxmox Backup Server (PBS) as a high-performance container. While optimized for OpenSUSE MicroOS using Podman Quadlets, it is fully compatible with standard Docker and Podman (Compose) environments.
This setup builds a Podman image for PBS using official Proxmox repositories and deploys it to a MicroOS host. It supports two distinct build and deployment strategies to accommodate both automated CI/CD and direct host-level control.
- ποΈ Immutable Infrastructure: Designed specifically for OpenSUSE MicroOS.
- βοΈ Systemd Integration: Native management via Podman Quadlet (
.containerunits). - π οΈ Dual Build Strategy: Supports direct host builds (
build_on_microos.bash) and automated GitHub Actions. - π NFS Support: Interactive setup for NFS-backed datastores with automated systemd mount generation.
- π¦ Registry Support: Official builds published to both GitHub Container Registry (GHCR) and Docker Hub.
The build process is streamlined using pre-compiled packages from Proxmox Trixie repositories.
- Target Hardware: Lenovo ThinkCentre M92p Tiny (Intel i5-3470T (4) @ 3.60 GHz).
- Estimated Build Time: ~2-5 minutes (package-based).
- Reference Build: Lenovo Yoga Pro 9 16IMH9 (Intel Core Ultra 9 185H (22) @ 5.10 GHz).
- Measured Build Time: ~1 minute 40 seconds (clean build).
- Target Host: OpenSUSE MicroOS with
podmanenabled. - Dependencies:
nfs-utils(for NFS) andscreen(for build persistence) are required. - Quick Install: Run the following on your host:
transactional-update pkg install nfs-utils screen && sync && sleep 5 && reboot
Deploy using the image automatically built and published by GitHub Actions:
- Run the setup script:
./setup_microos.bash
- Follow the wizard: The setup will guide you through networking and storage configuration.
If you prefer to build the image directly on your target hardware:
- Run the build script:
This packs the current repo and triggers a build on the host, producing
./build_on_microos.bash
localhost/proxmox-backup-server:latest. - Run the setup script:
./setup_microos.bash
The local scripts and configuration are designed to work seamlessly with both Podman and Docker.
This script builds the image, sets up a private network, and performs a real backup verification using a separate client container:
- Build locally:
./local_build.bash - Run multi-container test:
./local_test.bash - Clean up:
./local_cleanup.bash
For a standard persistent local setup, use the provided docker-compose.yml:
- Start the server:
docker compose up -d # or podman-compose up -d - Access Web UI:
https://localhost:8007(admin@pbs / pbspbs)
docker run -d \
--name pbs-local \
-p 8007:8007 \
--tmpfs /run \
-v $(pwd)/data/config:/etc/proxmox-backup \
-v $(pwd)/data/datastores:/var/lib/proxmox-backup \
ghcr.io/ramonvanraaij/proxmox-backup-server:latestThe project uses a structured release flow to ensure stability:
- Develop Branch (
develop): Daily automated checks monitor upstream Proxmox releases. If a new version is detected, a Release Candidate (-RC) is automatically created and published from this branch. - Testing & Verification: Changes are tested on the
developbranch. Manual builds ondevelopgenerate unique date-versioned images for isolated verification. - Main Branch (
main): Once verified,developis merged intomain(squashed). Running the workflow manually onmainfinalizes the Stable release, tags it aslatest, and publishes it to Docker Hub.
- π₯οΈ Web UI:
https://<microos-ip>:8007 - π Default Login:
admin@pbs/pbspbs
| Purpose | Host Path | Container Path |
|---|---|---|
| Config | Configurable (Default: /var/lib/config/pbs) |
/etc/proxmox-backup |
| Data | Configurable (Default: /var/lib/data/pbs) |
/var/lib/proxmox-backup |
| Logs | Configurable (Default: /var/log/pbs) |
/var/log/proxmox-backup |
The project includes a robust GitHub Actions workflow (.github/workflows/pbs-auto-build.yml) that:
- Monitors Upstream: Checks the Proxmox APT repository daily for new PBS package versions.
- Auto-Builds: Creates Release Candidate (
-RC) images on thedevelopbranch when a new version is detected. - Distributes: Builds, tests, and pushes images to GHCR. Stable releases are also published to Docker Hub.
Developed and maintained by RΓ‘mon van Raaij (2026).
This project is an extensive refactor and specialization for MicroOS/Podman based on the original work by Kamil TrzciΕski (2020-2025).
- π¦ Bluesky: @ramonvanraaij.nl
- π GitHub: @ramonvanraaij
- π Website: ramon.vanraaij.eu
If you found this project helpful, informative, or if it saved you some time, consider supporting my work! Your support motivates me to keep building and sharing.
Thank you for your support! β€οΈ