BackupForge is designed to be easy to install with minimal system dependencies. We believe software should "just work" without hunting for system libraries.
Problem: Traditional Rust projects using OpenSSL require:
- Ubuntu/Debian:
libssl-dev,pkg-config - RHEL/Fedora:
openssl-devel,pkg-config - Different versions across systems
- Installation permission requirements
Solution: BackupForge uses vendored OpenSSL:
openssl = { version = "0.10", features = ["vendored"] }This means:
- ✅ OpenSSL is compiled from source during build
- ✅ No system OpenSSL libraries needed
- ✅ Consistent OpenSSL version across all platforms
- ✅ No
pkg-configrequired - ✅ Works in containers without extra packages
Trade-off:
- Slightly longer initial build time (~2-3 minutes extra)
- Larger binary size (+2MB)
- Worth it for ease of installation!
- Rust 1.70+ - The Rust toolchain
- C Compiler - For compiling vendored OpenSSL
- Linux:
gcc(usually pre-installed) - macOS: Xcode Command Line Tools
- Windows: MSVC or MinGW
- Linux:
# Usually just this:
sudo apt install build-essential
# build-essential includes: gcc, g++, make, libc-devsudo dnf install gcc# Install Xcode Command Line Tools
xcode-select --installDownload and install Build Tools for Visual Studio
- Docker CLI -
dockercommand must be available - Install: https://docs.docker.com/get-docker/
- PostgreSQL Client -
pg_dumpfor PostgreSQL backupssudo apt install postgresql-client
- MySQL Client -
mysqldumpfor MySQL backupssudo apt install mysql-client
- MongoDB Tools -
mongodumpfor MongoDB backupssudo apt install mongo-tools
- Redis CLI -
redis-clifor Redis backupssudo apt install redis-tools
- SSH Client - Usually pre-installed on Linux/macOS
- ssh2 crate - Pure Rust SSH implementation (built-in)
You might wonder why we don't use rustls (pure Rust TLS) instead of OpenSSL:
Pros of rustls:
- Pure Rust - no C dependencies
- Modern, secure implementation
- Faster compilation
Cons of rustls:
- Some ecosystem crates (like rusoto for AWS) require OpenSSL
- Certificate validation differences
- Less battle-tested in production
Our approach: Use vendored OpenSSL for maximum compatibility while maintaining easy installation.
cargo build --release
# ~5-7 minutes (includes compiling OpenSSL)cargo build --release
# ~1-2 minutes (OpenSSL is cached)Use sccache to cache compiled dependencies:
cargo install sccache
export RUSTC_WRAPPER=sccache
cargo build --releaseOur Docker images are optimized:
- Multi-stage builds
- Alpine-based runtime (small size)
- Pre-compiled OpenSSL layer cached
- Final image: ~50MB
Install a C compiler:
# Ubuntu/Debian
sudo apt install build-essential
# Fedora
sudo dnf install gcc
# macOS
xcode-select --installCheck you have enough disk space:
df -h
# Need at least 5GB free for Rust target directoryReduce parallelism:
cargo build --release -j 2| Tool | System Deps | Install Complexity | Build Time |
|---|---|---|---|
| BackupForge | gcc only | ⭐ Simple | 5-7 min |
| Restic | None (Go) | ⭐⭐⭐ Very Simple | 2 min |
| Duplicati | .NET Runtime | ⭐⭐ Medium | N/A (binary) |
| Borg | Python, libs | ⭐ Complex | N/A (binary) |
| Bacula | Many libs | ⭐ Very Complex | N/A (binary) |
We're constantly working to improve the installation experience:
- Pre-built binaries for common platforms
- Snap/Flatpak packages (zero dependencies)
- Homebrew formula for macOS
- APT repository for Debian/Ubuntu
- Docker image on Docker Hub
If you have dependency issues:
- Check this document
- See INSTALLATION.md
- Open an issue: https://github.com/consigcody94/backupforge/issues
You asked a great question! Dependencies should be built-in or minimal. That's exactly what we've done:
✅ Before your question: Required system OpenSSL libraries ✅ After your question: Zero OpenSSL system dependencies
Thanks for making BackupForge better! 🚀