A modern, user-friendly graphical interface for OpenVPN3 Linux client built with Rust and egui.
- Easy Connection Management: One-click connect/disconnect with visual status indicators
- Configuration Management: Import, view, and manage OpenVPN configuration files
- Session Monitoring: Real-time monitoring of active VPN sessions
- Live Statistics: View connection statistics, data transfer, and connection duration
- Authentication Handling: Secure credential input with automatic prompt detection
- Live Logging: Stream OpenVPN3 logs in real-time for troubleshooting
- Error Management: Comprehensive error handling with user-friendly messages
- Cross-Distribution: Works on any Linux distribution with OpenVPN3 support
Screenshots will be added soon
- OpenVPN3 Linux Client: Must be installed and properly configured
- Ubuntu/Debian:
sudo apt install openvpn3 - Fedora/RHEL:
sudo dnf install openvpn3-client - Arch Linux:
yay -S openvpn3-git - Or build from source: OpenVPN3 Linux
- Ubuntu/Debian:
- Linux with GUI environment (X11 or Wayland)
- OpenVPN3 service running (
sudo systemctl enable --now [email protected]) - Appropriate permissions to manage OpenVPN3 (usually requires being in
openvpngroup)
# Add your user to the openvpn group
sudo usermod -a -G openvpn $USER
# Log out and back in, or run:
newgrp openvpn
# Verify OpenVPN3 is working
openvpn3 versionThe easiest way to run OpenVPN3 GUI on any Linux distribution:
- Download the latest AppImage from Releases
- Make it executable and run:
chmod +x openvpn3-gui-x86_64.AppImage ./openvpn3-gui-x86_64.AppImage
Download the appropriate binary for your system:
- Standard Linux (most distributions):
openvpn3-gui-x86_64-unknown-linux-gnu.tar.gz - Static Binary (minimal dependencies):
openvpn3-gui-x86_64-unknown-linux-musl-static.tar.gz
# Extract and run
tar -xzf openvpn3-gui-*.tar.gz
chmod +x openvpn3-gui
./openvpn3-guiSee Building from Source section below.
- Launch OpenVPN3 GUI
- Go to the Configurations tab
- Click Import Config File to add your
.ovpnfiles - Switch to the Connection tab to connect
- Select a configuration from the dropdown
- Click Connect
- Enter credentials if prompted
- Monitor status in real-time
- Import: Add new
.ovpnconfiguration files - View/Dump: Examine configuration contents
- Remove: Delete configurations you no longer need
- Sessions Tab: View all active OpenVPN3 sessions
- Statistics Tab: Real-time connection statistics
- Logs Tab: Live logging and error tracking
The GUI automatically detects when authentication is required and presents a secure input dialog. Passwords are masked and handled securely.
- Live VPN Logs: Stream output from
openvpn3 log - Manager Logs: Internal application logging
- Error Tracking: Comprehensive error management with history
- Configure application behavior
- View OpenVPN3 CLI version information
- Manage error handling preferences
# Ubuntu/Debian
sudo apt update
sudo apt install -y \
build-essential \
pkg-config \
libxcb-render0-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
libxkbcommon-dev \
libssl-dev \
libgtk-3-dev \
libatk1.0-dev \
libgdk-pixbuf2.0-dev \
libpango1.0-dev \
libcairo2-dev
# Fedora/RHEL
sudo dnf install -y \
gcc \
pkg-config \
libxcb-devel \
libxkbcommon-devel \
openssl-devel \
gtk3-devel \
atk-devel \
gdk-pixbuf2-devel \
pango-devel \
cairo-devel
# Arch Linux
sudo pacman -S \
base-devel \
pkg-config \
libxcb \
libxkbcommon \
openssl \
gtk3 \
atk \
gdk-pixbuf2 \
pango \
cairocurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env# Clone the repository
git clone https://github.com/RustNSparks/openvpn3-gui.git
cd openvpn3-gui
# Build in release mode
cargo build --release
# Run
./target/release/openvpn3-gui# For development with debug info and faster compilation
cargo runsrc/
βββ main.rs # Application entry point
βββ app.rs # Main application logic and UI
βββ config.rs # Configuration management
βββ openvpn.rs # OpenVPN3 integration and management
- App Module: Main GUI logic using egui, handles all UI interactions and state management
- OpenVPN3 Manager: Async task-based manager for OpenVPN3 CLI interactions
- Config Management: Persistent application settings and VPN configuration handling
- Message System: Thread-safe communication between GUI and VPN manager
- GUI Framework: egui - Immediate mode GUI
- Runtime: Tokio - Async runtime for VPN operations
- Serialization: Serde - Configuration and data serialization
- File Dialogs: rfd - Native file dialogs
- Error Handling: anyhow - Flexible error handling
Solution: Install OpenVPN3 Linux client
# Check if installed
which openvpn3
# If not found, install for your distribution
# Ubuntu/Debian:
sudo apt install openvpn3Solution: Ensure your user has OpenVPN3 permissions
# Add to openvpn group
sudo usermod -a -G openvpn $USER
# Restart your session or run:
newgrp openvpnSolution: Check GUI dependencies
# Verify you have a display
echo $DISPLAY
# For Wayland, you might need:
export GDK_BACKEND=wayland
# Or force X11:
export GDK_BACKEND=x11Solution:
- Verify credentials work with OpenVPN3 CLI:
openvpn3 session-start --config your-config - Check if configuration requires certificates or special authentication
- Review logs in the Logs tab for detailed error messages
Solution:
- Ensure the
.ovpnfile is valid - Check file permissions
- Verify the configuration doesn't require additional files (certificates, keys)
Run with debug logging:
RUST_LOG=debug ./openvpn3-gui- Check the Issues page
- Review OpenVPN3 Linux documentation
- Enable debug logging and include logs when reporting issues
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Add tests if applicable
- Ensure code formatting:
cargo fmt - Run tests:
cargo test - Submit a pull request
- Follow Rust standard formatting (
cargo fmt) - Use
cargo clippyto catch common issues - Write descriptive commit messages
- Add documentation for public APIs
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenVPN3 Linux - The underlying VPN client
- egui - The immediate mode GUI framework
- Tokio - Async runtime
- All contributors and users who help improve this project
- OpenVPN3 Linux - Official OpenVPN3 Linux client
- NetworkManager-openvpn - GNOME NetworkManager plugin
- OpenVPN Connect - Official OpenVPN GUI client
Made with β€οΈ by the OpenVPN3 GUI community
If you find this project useful, please consider giving it a β on GitHub!