Skip to content

Installation

R-VPN binaries are available for multiple platforms. Choose the installation method that best fits your needs.

Supported Platforms

Platform Architectures Binary Variants
macOS x86_64, arm64 Universal binary available
Linux x86_64, aarch64, armv7 GNU (glibc) and static (musl)
FreeBSD x86_64 Experimental support

Binary Naming Convention

Binaries in the dist/ folder follow this naming pattern: - rvpn-{platform}-{arch} - Client binary - rvpn-server-{platform}-{arch} - Server binary - -static suffix for musl-linked binaries (no external libc dependency)

Examples: - rvpn-macos-universal - macOS universal client - rvpn-x86_64-linux-gnu - Linux x86_64 with glibc - rvpn-aarch64-linux-static - Linux ARM64 static binary - rvpn-server-x86_64-freebsd - FreeBSD server binary

Downloading Binaries

Pre-built binaries are available in the dist/ directory of the repository.

Quick Download

# macOS (Universal - works on both Intel and Apple Silicon)
cp dist/rvpn-macos-universal /usr/local/bin/rvpn
cp dist/rvpn-server-macos-universal /usr/local/bin/rvpn-server
chmod +x /usr/local/bin/rvpn /usr/local/bin/rvpn-server

# Linux x86_64 (GNU variant)
sudo cp dist/rvpn-x86_64-linux-gnu /usr/local/bin/rvpn
sudo cp dist/rvpn-server-x86_64-linux-gnu /usr/local/bin/rvpn-server
sudo chmod +x /usr/local/bin/rvpn /usr/local/bin/rvpn-server

# Linux x86_64 (Static/musl variant - for minimal systems)
sudo cp dist/rvpn-x86_64-linux-static /usr/local/bin/rvpn
sudo cp dist/rvpn-server-x86_64-linux-static /usr/local/bin/rvpn-server
sudo chmod +x /usr/local/bin/rvpn /usr/local/bin/rvpn-server

Verifying Downloads

All binaries include SHA256 checksums for verification:

# Verify using the checksums file
cd dist
sha256sum -c SHA256SUMS.txt

# Or verify individual binary
cat rvpn-macos-universal.sha256
sha256sum rvpn-macos-universal

Installation Locations

# Client
sudo cp rvpn /usr/local/bin/rvpn
sudo chown root:root /usr/local/bin/rvpn
sudo chmod 755 /usr/local/bin/rvpn

# Server
sudo cp rvpn-server /usr/local/bin/rvpn-server
sudo chown root:root /usr/local/bin/rvpn-server
sudo chmod 755 /usr/local/bin/rvpn-server

User-local Installation

mkdir -p ~/bin
cp rvpn ~/bin/
export PATH="$HOME/bin:$PATH"
# Add to your shell profile for persistence
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc  # or ~/.zshrc on macOS

Configuration Directories

Create the required configuration directories:

# Client configuration
mkdir -p ~/.config/rvpn

# Server configuration (requires root)
sudo mkdir -p /etc/rvpn
sudo mkdir -p /var/lib/rvpn
sudo mkdir -p /var/log/rvpn

Configuration File Locations

Component Config Directory Notes
Client ~/.config/rvpn/ User-specific settings
Server /etc/rvpn/ System-wide server config
Server Data /var/lib/rvpn/ Runtime data, keys
Logs /var/log/rvpn/ Server logs

Systemd Service Installation (Linux)

For production deployments on Linux, use the systemd service installer:

cd rvpn/

# Server service installation
sudo ./deploy/install.sh

# Or manually copy and enable the service
sudo cp deploy/systemd/rvpn-server.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable rvpn-server
sudo systemctl start rvpn-server

Check service status:

sudo systemctl status rvpn-server
sudo journalctl -u rvpn-server -f

Build from Source

If you prefer to build from source, you'll need Rust installed:

Prerequisites

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Building

# Clone the repository
cd rvpn/

# Build release binaries
cargo build --release

# Binaries will be at:
# target/release/rvpn
# target/release/rvpn-server

Cross-compilation (Advanced)

For building for multiple platforms, use the provided build script:

cd rvpn/

# Build all targets (requires cargo-zigbuild)
./scripts/build-release.sh

# Build specific targets
./scripts/build-release.sh --macos-only
./scripts/build-release.sh --linux-only
./scripts/build-release.sh x86_64-unknown-linux-musl

Requirements for cross-compilation: - cargo-zigbuild: cargo install cargo-zigbuild - zig: brew install zig (on macOS)

Next Steps