Self-Hosting UrBackup with Docker Compose

What Is UrBackup?

UrBackup is a client/server network backup system that backs up Windows, macOS, and Linux machines to a central server. It supports both file and image backups (full disk snapshots), with a web-based management interface. Think of it as a self-hosted alternative to enterprise backup solutions like CrashPlan or Veeam — centralized management, automatic client discovery, and both incremental and full backup support.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 1 GB of free RAM (minimum)
  • Large backup storage volume (ext4 or BTRFS recommended for hard link support)
  • Network access to client machines (port 55414-55415 + UDP 35623)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  urbackup:
    image: uroni/urbackup-server:2.5.35
    container_name: urbackup
    restart: unless-stopped
    ports:
      - "55414:55414"       # Web UI
      - "55413:55413"       # FastCGI backend
      - "55415:55415"       # Internet client connections
      - "35623:35623/udp"   # Client discovery broadcast
    volumes:
      - urbackup-data:/var/urbackup       # Server database and config
      - /path/to/backups:/backups          # CHANGE: backup storage location
    networks:
      - backup

networks:
  backup:
    driver: bridge

volumes:
  urbackup-data:

Important: Replace /path/to/backups with your actual backup storage path. This should be on a drive with sufficient space — UrBackup stores all client backups here. Use a filesystem that supports hard links (ext4, BTRFS, XFS) for efficient deduplication.

Start the server:

docker compose up -d

Initial Setup

  1. Open http://your-server-ip:55414 in your browser
  2. The web interface opens immediately — no login required initially
  3. Go to Settings → General and configure:
    • Backup storage path (should match the container’s /backups mount)
    • Server name
    • Email notifications (optional)
  4. Set an admin password: Settings → Users → Add user with admin privileges
Default SettingValue
Web UI port55414
Default authNone (set password immediately)
Backup storage/backups (container path)
Client discoveryAutomatic via UDP broadcast

Configuration

Installing Backup Clients

UrBackup uses client agents installed on each machine you want to back up. The server pulls backups from clients — clients don’t push to the server.

Windows: Download the client installer from the UrBackup web UI: Status → Download client or from urbackup.org/download.

Linux:

# Ubuntu/Debian
sudo add-apt-repository ppa:uroni/urbackup
sudo apt update
sudo apt install urbackup-client

# Or download from the web UI

macOS: Download the macOS client from the UrBackup website. Note: macOS support is more limited than Windows/Linux (file backup only, no image backup).

Client Discovery

Clients on the same LAN are discovered automatically via UDP broadcast on port 35623. For clients on different networks:

  1. In the web UI: Settings → Internet → Allow internet clients
  2. On the client: Configure the server’s IP address manually
  3. For WAN clients: Forward port 55415 on your router

Backup Types

TypeWhat It Backs UpSpeedUse Case
File backup (incremental)Selected directoriesFastDaily backups, documents
File backup (full)All selected directoriesSlowWeekly reference backup
Image backup (incremental)Entire disk/partitionMediumBare-metal restore
Image backup (full)Complete disk snapshotSlowDisaster recovery baseline

Configure backup schedules per client in the web UI under Settings → Default backup intervals.

Backup Paths

Configure which directories to back up per client:

  • Windows defaults: C:\Users, C:\Program Files
  • Linux defaults: /home, /etc, /var
  • Custom paths: Add any directory via the web UI per client

Advanced Configuration (Optional)

Email Notifications

Settings → Mail → Configure SMTP:

SMTP server: smtp.gmail.com
SMTP port: 587
SMTP username: [email protected]
SMTP password: app-specific-password
Encryption: STARTTLS

BTRFS/ZFS Storage Optimization

If your backup volume uses BTRFS or ZFS, UrBackup can use filesystem snapshots for faster incremental backups:

  • BTRFS: UrBackup detects and uses BTRFS snapshots automatically
  • ZFS: Requires manual configuration in Settings → Storage

Retention Policies

Configure in Settings → General:

SettingDefaultRecommended
Min. incremental file backups57 (one week)
Max. incremental file backups1030 (one month)
Min. full file backups24 (one per week)
Min. incremental image backups14
Min. full image backups12

Reverse Proxy

To access UrBackup behind a reverse proxy with SSL, proxy to port 55414. For detailed reverse proxy setup, see our Reverse Proxy Setup guide.

Note: Ports 55413 and 55415 handle client-server communication and should be forwarded directly (not proxied) if clients connect over WAN.

Backup

Back up the UrBackup server itself:

# The critical data is in the urbackup-data volume
docker compose exec urbackup /bin/sh -c "cp -r /var/urbackup /backups/server-config-backup/"

The /var/urbackup directory contains the server database, client metadata, and configuration. The /backups directory contains the actual backup data — ensure this is on redundant storage or backed up separately.

For a comprehensive backup strategy, see our Backup Strategy guide.

Troubleshooting

Clients not discovered automatically

Symptom: New clients on the LAN don’t appear in the web UI. Fix: Ensure UDP port 35623 is open on both the server and client firewalls. If Docker is using a bridge network, client discovery may not work — use network_mode: host or configure clients manually with the server IP.

Backups failing with “no space left”

Symptom: Backup jobs fail even though disk shows free space. Fix: Check inode usage: df -i /path/to/backups. UrBackup creates many hard links — filesystems with low inode limits (some default ext4 configs) can run out of inodes before disk space. Reformat with larger inode allocation or switch to BTRFS.

Image backups not available on Linux

Symptom: Image backup option is grayed out for Linux clients. Fix: Image backups on Linux require the dattobd kernel module or a CBT (Changed Block Tracking) driver. Install the appropriate driver for your kernel version, or use file backups instead.

Slow backup performance

Symptom: Backups run at a fraction of network speed. Fix: Check for filesystem fragmentation on the backup volume. BTRFS users should run periodic balances. Also verify the backup volume isn’t on a slow USB drive — UrBackup benefits significantly from fast storage (SSD or RAID array).

Resource Requirements

ResourceRequirement
RAM512 MB idle, 1-2 GB during active backups
CPULow (backup is I/O bound, not CPU bound)
DiskDepends on clients — plan 1.5-2x the total source data size
NetworkGigabit recommended for LAN clients

Verdict

UrBackup is the best self-hosted option for centralized network backup of multiple machines, especially in Windows-heavy environments. Its agent-based approach handles image backups (full disk snapshots) — something Restic and BorgBackup don’t do. If you need bare-metal restore capability or manage 5+ machines, UrBackup is the right choice. For simpler file-level backup of a single server, Restic or BorgBackup with Borgmatic are more lightweight.

Comments