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
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)
Install Duplicati
System Preparation
sudo apt update && sudo apt upgrade -y
sudo apt install wget curl unzip mono-complete mono-devel ca-certificates-mono -yDuplicati requires Mono to run on Linux. The packages above ensure all necessary runtime components are available.
Download and 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 -yThe --fix-broken command resolves any dependency issues that may arise during installation.
Configure Duplicati as a System Service
Create a Dedicated User
sudo useradd -r -s /bin/false duplicati
sudo mkdir -p /var/lib/duplicati
sudo chown -R duplicati:duplicati /var/lib/duplicatiCreate Systemd Service File
[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.targetConfiguration Notes
--webservice-interface=anyallows remote access (use with caution)--webservice-port=8200sets the web interface port--server-datafolderspecifies where Duplicati stores its database
Enable and Start the Service
sudo systemctl daemon-reload
sudo systemctl enable duplicati
sudo systemctl start duplicati
sudo systemctl status duplicatiSecure Access with Nginx Reverse Proxy
For production use, it's recommended to place Duplicati behind a reverse proxy with SSL.
Install Nginx and Certbot
sudo apt install nginx certbot python3-certbot-nginx -yCreate Nginx Configuration
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
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.comConfigure Firewall
With Reverse Proxy (Recommended)
sudo ufw allow 'Nginx Full'
sudo ufw reloadDirect Access (Without Reverse Proxy)
sudo ufw allow 8200/tcpInitial 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:
- Set a strong password: Click "Settings" → "Set password" to protect your backup configuration
- Configure server settings: Adjust temporary file paths, thread counts, and other performance options
- Review update settings: Configure automatic update checks
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)
--blocksize=100kb
--backup-test-samples=10
--keep-time=30D
--retention-policy=1W:1D,4W:1W,12M:1M
--upload-verification-file=true
--auto-vacuum=truePerformance 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:
sudo mkdir -p /var/lib/duplicati/temp
sudo chown duplicati:duplicati /var/lib/duplicati/tempAdd to advanced options: --tempdir=/var/lib/duplicati/temp
Monitoring and Notifications
Email Notifications
Configure SMTP settings in "Settings" → "Default options":
--send-mail-to=admin@example.com
--send-mail-from=duplicati@yourdomain.com
--send-mail-subject="Backup report for %PARSEDRESULT%"
--send-mail-level=Warning,ErrorHTTP Reporting (Webhooks)
--send-http-url=https://your-monitoring-service.com/webhook
--send-http-message={"status":"%PARSEDRESULT%","backup":"%backup-name%"}
--send-http-level=Success,Warning,ErrorCheck Logs
sudo journalctl -u duplicati -fSecurity 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.debBackup Fails with Timeout
Increase timeout values in advanced options:
--http-operation-timeout=600sSlow Backup Performance
--number-of-retries=3
--retry-delay=10s
--asynchronous-upload-limit=8
--blocksize=100kbYou'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
