Skip to content

ramonvanraaij/MicroOS-PBS

Repository files navigation

πŸ›‘οΈ MicroOS-PBS: Proxmox Backup Server on MicroOS

GitHub release (latest by date) Auto-Build PBS Container GitHub Container Registry Docker Hub

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.


πŸš€ Overview

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.

✨ Key Features

  • πŸ—οΈ Immutable Infrastructure: Designed specifically for OpenSUSE MicroOS.
  • βš™οΈ Systemd Integration: Native management via Podman Quadlet (.container units).
  • πŸ› οΈ 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.

⚑ Performance Note

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).

πŸ“‹ Prerequisites

  • Target Host: OpenSUSE MicroOS with podman enabled.
  • Dependencies: nfs-utils (for NFS) and screen (for build persistence) are required.
  • Quick Install: Run the following on your host:
    transactional-update pkg install nfs-utils screen && sync && sleep 5 && reboot

🚒 Deployment Options

⚑ Option A: Use Automated GHCR Image (Fastest)

Deploy using the image automatically built and published by GitHub Actions:

  1. Run the setup script:
    ./setup_microos.bash
  2. Follow the wizard: The setup will guide you through networking and storage configuration.

πŸ› οΈ Option B: Build Directly on MicroOS Host (Control)

If you prefer to build the image directly on your target hardware:

  1. Run the build script:
    ./build_on_microos.bash
    This packs the current repo and triggers a build on the host, producing localhost/proxmox-backup-server:latest.
  2. Run the setup script:
    ./setup_microos.bash

πŸ› οΈ Option C: Local Development & Testing (Podman/Docker)

The local scripts and configuration are designed to work seamlessly with both Podman and Docker.

1. Automated Test Suite (Recommended)

This script builds the image, sets up a private network, and performs a real backup verification using a separate client container:

  1. Build locally: ./local_build.bash
  2. Run multi-container test: ./local_test.bash
  3. Clean up: ./local_cleanup.bash

2. Local Execution via Docker Compose

For a standard persistent local setup, use the provided docker-compose.yml:

  1. Start the server:
    docker compose up -d
    # or
    podman-compose up -d
  2. Access Web UI: https://localhost:8007 (admin@pbs / pbspbs)

3. Manual Local Execution

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:latest

πŸ”„ Branch Strategy & Release Flow

The project uses a structured release flow to ensure stability:

  1. 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.
  2. Testing & Verification: Changes are tested on the develop branch. Manual builds on develop generate unique date-versioned images for isolated verification.
  3. Main Branch (main): Once verified, develop is merged into main (squashed). Running the workflow manually on main finalizes the Stable release, tags it as latest, and publishes it to Docker Hub.

βš™οΈ Configuration

  • πŸ–₯️ Web UI: https://<microos-ip>:8007
  • πŸ”‘ Default Login: admin@pbs / pbspbs

πŸ“‚ Storage Paths

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

πŸ”„ CI/CD Pipeline

The project includes a robust GitHub Actions workflow (.github/workflows/pbs-auto-build.yml) that:

  1. Monitors Upstream: Checks the Proxmox APT repository daily for new PBS package versions.
  2. Auto-Builds: Creates Release Candidate (-RC) images on the develop branch when a new version is detected.
  3. Distributes: Builds, tests, and pushes images to GHCR. Stable releases are also published to Docker Hub.

🀝 Credits & Maintenance

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).


β˜• Buy me a Coffee

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.

  • πŸ’³ Bunq.me (iDeal, Bancontact, Cards)
  • πŸ…ΏοΈ PayPal

Thank you for your support! ❀️

About

Specialized build and deployment system for Proxmox Backup Server on OpenSUSE MicroOS using Podman Quadlets.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages