Backup Guide

    Duplicati Backup Guide

    Duplicati is a free, open-source backup client with an intuitive web interface. Combined with RamNode's S3-compatible object storage, you can create encrypted, incremental backups with easy management.

    Ubuntu/Debian/Windows
    Web Interface
    ⏱️ 15-25 minutes

    Introduction

    Duplicati is a free, open-source backup client that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers. Its web-based interface makes it easy to configure and manage backups without command-line expertise.

    Strong Encryption

    AES-256 encryption with client-side key management

    Wide Storage Support

    S3, Backblaze B2, Google Drive, OneDrive, SFTP, and more

    Web-Based Interface

    Easy-to-use browser interface for management

    Automated Scheduling

    Backup schedules with retention policies

    1

    Prerequisites

    Before beginning, ensure you have:

    • A RamNode VPS running Ubuntu 20.04 or 22.04 (other distros supported)
    • Root or sudo access to your server
    • At least 512MB RAM (1GB+ recommended for better performance)
    • Storage space for temporary backup data
    • A configured backup destination (cloud storage account or remote server)
    2

    Install Duplicati

    System Preparation

    Update system and install dependencies
    sudo apt update && sudo apt upgrade -y
    sudo apt install wget curl unzip mono-complete mono-devel ca-certificates-mono -y

    Duplicati requires Mono to run on Linux. The packages above ensure all necessary runtime components are available.

    Download and Install Duplicati

    Install Duplicati
    cd /tmp
    wget https://updates.duplicati.com/beta/duplicati-latest.deb
    
    # Install the package
    sudo dpkg -i duplicati-latest.deb
    sudo apt --fix-broken install -y

    The --fix-broken command resolves any dependency issues that may arise during installation.

    3

    Configure Duplicati as a System Service

    Create a Dedicated User

    Create user and directories
    sudo useradd -r -s /bin/false duplicati
    sudo mkdir -p /var/lib/duplicati
    sudo chown -R duplicati:duplicati /var/lib/duplicati

    Create Systemd Service File

    /etc/systemd/system/duplicati.service
    [Unit]
    Description=Duplicati Backup Server
    After=network.target
    
    [Service]
    Type=simple
    User=duplicati
    Group=duplicati
    ExecStart=/usr/bin/duplicati-server --webservice-interface=any --webservice-port=8200 --server-datafolder=/var/lib/duplicati
    Restart=on-failure
    RestartSec=10
    StandardOutput=journal
    StandardError=journal
    
    [Install]
    WantedBy=multi-user.target

    Configuration Notes

    • --webservice-interface=any allows remote access (use with caution)
    • --webservice-port=8200 sets the web interface port
    • --server-datafolder specifies where Duplicati stores its database

    Enable and Start the Service

    Start Duplicati
    sudo systemctl daemon-reload
    sudo systemctl enable duplicati
    sudo systemctl start duplicati
    sudo systemctl status duplicati
    4

    Secure Access with Nginx Reverse Proxy

    For production use, it's recommended to place Duplicati behind a reverse proxy with SSL.

    Install Nginx and Certbot

    Install packages
    sudo apt install nginx certbot python3-certbot-nginx -y

    Create Nginx Configuration

    /etc/nginx/sites-available/duplicati
    server {
        listen 80;
        server_name backup.yourdomain.com;
    
        location / {
            proxy_pass http://127.0.0.1:8200;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    
            # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            # Increase timeouts for long backup operations
            proxy_read_timeout 3600s;
            proxy_connect_timeout 3600s;
            proxy_send_timeout 3600s;
        }
    }

    Enable Site and Get SSL Certificate

    Enable and secure
    sudo ln -s /etc/nginx/sites-available/duplicati /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx
    sudo certbot --nginx -d backup.yourdomain.com
    5

    Configure Firewall

    With Reverse Proxy (Recommended)

    Allow Nginx traffic
    sudo ufw allow 'Nginx Full'
    sudo ufw reload

    Direct Access (Without Reverse Proxy)

    Allow direct access
    sudo ufw allow 8200/tcp
    6

    Initial Web Interface Setup

    Access the Duplicati web interface at:

    • With reverse proxy: https://backup.yourdomain.com
    • Direct access: http://your-vps-ip:8200

    On First Login:

    1. Set a strong password: Click "Settings" → "Set password" to protect your backup configuration
    2. Configure server settings: Adjust temporary file paths, thread counts, and other performance options
    3. Review update settings: Configure automatic update checks
    7

    Create Your First Backup Job

    Click "Add backup" and follow the wizard:

    1. General Settings

    • Name: Descriptive name for your backup
    • Encryption: Choose "AES-256 encryption" (strongly recommended)
    • Passphrase: Create a strong passphrase (store safely!)

    2. Destination Settings - RamNode Object Storage

    RamNode provides S3-compatible object storage that integrates seamlessly with Duplicati. First, generate your S3 credentials following our S3 API Quick Start guide.

    Duplicati S3 Configuration:

    • Storage Type: S3 Compatible
    • Server: lax-controller.ramnode.com:8080
    • Bucket: your-bucket-name
    • AWS Access ID: [your-access-key]
    • AWS Secret Key: [your-secret-key]
    • Path: /backups/server1/
    • Use SSL: Yes

    Replace lax-controller.ramnode.com with your region's controller endpoint (nlx-controller.ramnode.com for NLX, etc.).

    3. Source Data

    Add folders or files to backup and configure exclusion filters for:

    • Temporary files: */temp/*, */tmp/*
    • Cache directories: */cache/*, */.cache/*
    • Log files: *.log
    • Database locks: *.lock

    4. Schedule & Retention

    • Configure backup frequency (e.g., daily at 2 AM)
    • Set retention policy to manage old backups
    • Example: "Keep all backups from last 7 days, keep weekly for 4 weeks, keep monthly for 12 months"

    5. Advanced Options (Recommended)

    Recommended settings
    --blocksize=100kb
    --backup-test-samples=10
    --keep-time=30D
    --retention-policy=1W:1D,4W:1W,12M:1M
    --upload-verification-file=true
    --auto-vacuum=true
    8

    Performance Optimization

    Adjust Thread Counts

    • Concurrent uploads: Settings → Advanced → Number of concurrent uploads (Recommended: 4-8 threads)
    • Database connections: Settings → Advanced → Number of concurrent database connections (Recommended: 3-5)

    Configure Temporary Directory

    If your VPS has limited root partition space:

    Create temp directory
    sudo mkdir -p /var/lib/duplicati/temp
    sudo chown duplicati:duplicati /var/lib/duplicati/temp

    Add to advanced options: --tempdir=/var/lib/duplicati/temp

    9

    Monitoring and Notifications

    Email Notifications

    Configure SMTP settings in "Settings" → "Default options":

    Email configuration
    --send-mail-to=admin@example.com
    --send-mail-from=duplicati@yourdomain.com
    --send-mail-subject="Backup report for %PARSEDRESULT%"
    --send-mail-level=Warning,Error

    HTTP Reporting (Webhooks)

    Webhook configuration
    --send-http-url=https://your-monitoring-service.com/webhook
    --send-http-message={"status":"%PARSEDRESULT%","backup":"%backup-name%"}
    --send-http-level=Success,Warning,Error

    Check Logs

    View service logs
    sudo journalctl -u duplicati -f

    Security Best Practices

    Strong Encryption Passphrase

    Use a password manager to generate and store a complex passphrase.

    Secure Storage Credentials

    Never commit API keys or passwords to version control.

    Regular Passphrase Backup

    Store encryption passphrase in a secure location separate from backups.

    Access Control

    Use Nginx authentication or VPN access for the web interface.

    Troubleshooting

    Service Won't Start

    # Check logs
    sudo journalctl -u duplicati -n 50 --no-pager
    
    # Verify Mono installation
    mono --version
    
    # Check file permissions
    sudo chown -R duplicati:duplicati /var/lib/duplicati
    
    # Reinstall if corrupted
    sudo apt remove --purge duplicati
    sudo apt install ./duplicati-latest.deb

    Backup Fails with Timeout

    Increase timeout values in advanced options:

    --http-operation-timeout=600s

    Slow Backup Performance

    --number-of-retries=3
    --retry-delay=10s
    --asynchronous-upload-limit=8
    --blocksize=100kb

    You're All Set!

    Duplicati on a RamNode VPS provides a robust, flexible backup solution with enterprise-grade features at no software cost.

    Your setup includes:

    • Encrypted, incremental backups to your choice of storage
    • Automated backup schedules with retention policies
    • Secure web-based management interface
    • Monitoring and alerting capabilities