import Link from "next/link"; const features = [ { icon: "๐Ÿ“ฆ", title: "Full container backups", body: "Archive volumes, bind mounts, and Docker inspect metadata into a single .backerup bundle โ€” everything needed to fully restore or clone a container.", }, { icon: "๐Ÿ—‚", title: "Config-only export", body: "Export a lightweight .config.json (raw docker inspect output) to recreate a container on any host without moving volume data.", }, { icon: "๐Ÿ”„", title: "One-click restore", body: "Restore a container's volumes and config in-place, rebuild its config without touching data, or spin up a brand-new container from any backup.", }, { icon: "๐Ÿ“…", title: "Scheduled backups", body: "Define cron-based backup jobs per container with configurable retention strategies: keep latest N, keep every N-th, or purge older than N days.", }, { icon: "๐ŸŒ", title: "Community sharing", body: "Publish your container configs so others can spin up the same setup in seconds. Browse configs shared by the community right here.", }, { icon: "๐Ÿ”’", title: "Self-hosted & private", body: "Runs entirely inside your Docker environment. No cloud dependencies, no data leaves your server unless you choose to share.", }, ]; const steps = [ { n: "1", title: "Install", body: "Run Backerup as a Docker container with access to your Docker socket." }, { n: "2", title: "Configure", body: "Add containers, choose a backup strategy, and set a cron schedule." }, { n: "3", title: "Backup", body: "Backerup archives your volumes and metadata into a portable .backerup file." }, { n: "4", title: "Restore", body: "One click to restore in-place, rebuild config, or create a new container." }, ]; export default function LandingPage() { return ( <> {/* Hero */}
Open Source ยท Self-Hosted

Docker backups,{" "} done right.

Backerup bundles your container volumes, bind mounts, and config into a single portable file. Restore in seconds, share configs with your team, or migrate containers between hosts.

Share a config Browse configs
{/* Terminal preview */}
backerup api
            {`
            # Download the App 
            docker pull ghcr.io/evan-buss/backerup:latest
            `}
          
{/* Features */}

Everything you need

A complete backup lifecycle โ€” all from a single self-hosted UI.

{features.map((f) => (
{f.icon}

{f.title}

{f.body}

))}
{/* How it works */}

How it works

{steps.map((s) => (
{s.n}

{s.title}

{s.body}

))}
{/* Format callout */}

The .backerup format

A single gzipped-tar file containing{" "} config.json,{" "} manifest.json, and{" "} volumes/*.tar.gz. Portable, transparent, and restorable without Backerup itself.

Upload a backup or config โ†’ Browse shared files
); }