macOS App¶
The r-vpn macOS app creates a full-tunnel VPN connection using a Network Extension. All traffic is routed through an encrypted tunnel.
Requirements¶
- macOS 13.0 or later
- A deployed r-vpn server
- Server address, identity key, and prekey bundle
Setup¶
1. Install the App¶
Install r-vpn from the Mac App Store.
2. Add a Profile¶
Open the app from the menu bar icon, then go to Settings (or press Cmd+,).
Click + to add a new profile. Fill in:
- Server Address:
wss://your-server.com/api/v1/ws - Identity Key: Click Generate to create a new key pair, or Import to load an existing key file.
- Prekey Bundle: Click Import Prekey Bundle and select the JSON file provided by your server administrator.
3. Connect¶
Click Connect in the menu bar dropdown. macOS will prompt you to allow the VPN configuration the first time. Approve it to proceed.
The app will:
- Connect to your server via TLS WebSocket
- Establish forward-secret encryption (X3DH + Double Ratchet)
- Receive a tunnel IP address from the server
- Route all traffic through the VPN
Split Tunnel¶
Split tunneling is enabled by default. It routes only international traffic through the VPN while letting domestic traffic (e.g. Chinese websites) go direct.
In the profile editor, configure:
- Bypass Country: The country whose traffic should bypass the VPN (default: CN)
- Bypass Domains: Additional domains to exclude from the tunnel
- Tunnel Domains: Specific domains to force through the tunnel
- Block Ads: Enable built-in ad domain blocking
Profiles¶
The app supports up to 10 profiles. Switch between profiles from the menu bar dropdown or the Profiles settings tab.
Each profile stores its own:
- Server address
- Identity key
- Prekey bundle
- Split tunnel settings
Troubleshooting¶
App shows "Connected" but no traffic passes¶
- Check that your server is running and accessible on port 443.
- Verify the server address in your profile is correct (must start with
wss://). - Check the server logs for connection errors.
"Failed to start VPN" or connection fails immediately¶
- Ensure both the identity key and prekey bundle are present in the profile editor (green checkmarks).
- Verify the server address does not have trailing whitespace.
- Regenerate your identity key and re-import the prekey bundle if the issue persists.
VPN stops working after an app update¶
macOS persists VPN profiles in System Settings independently of the app. After an update, the stored profile may reference a stale tunnel extension.
Fix:
- Open System Settings > VPN (or System Settings > General > VPN & Filter on newer macOS).
- Delete the R-VPN entry.
- Re-open the R-VPN app and reconnect. The app will create a fresh profile.
This is resolved in version 1.2.4 and later, which automatically detects and replaces stale profiles.
VPN profile appears in System Settings but app shows "Disconnected"¶
The VPN profile was likely created by a previous version or a different build. Remove it:
- Open System Settings > VPN.
- Click the info button (i) next to the R-VPN entry and delete it.
- Re-open the R-VPN app. It will create a new profile on the next connection attempt.
Tunnel connects but DNS does not resolve¶
The app runs a local DNS proxy for split-tunnel DNS resolution. If DNS fails:
- Check that the server address is reachable.
- Try disabling split tunnel in the profile editor to use full-tunnel mode.
- Check the server logs for DNS proxy errors.
How to collect diagnostic logs¶
Rust-level logs are written to a file in the App Group container:
For system-level logs:
Next Steps¶
- iOS App - Mobile VPN with the same encryption
- Server Setup - Deploy your own r-vpn server
- Troubleshooting - General troubleshooting guide
- Client Configuration Reference - All configuration options