You must first create a client and copy the Olm config in Pangolin before running Olm.
Binary Installation
Quick Install (Recommended)
Use this command to automatically install Olm. It detects your system architecture automatically and always pulls the latest version, adding Olm to your PATH:Manual Download
Binaries for Linux, macOS, and Windows are available in the GitHub releases for ARM and AMD64 (x86_64) architectures. Download and install manually:Replace
{version}
with the desired version and {architecture}
with your architecture. Check the release notes for the latest information.Running Olm
Run Olm with the configuration from Pangolin:Permanent Installation
Install to your PATH (may need to run as root):The quick installer will do this step for you.
Systemd Service
Create a basic systemd service:/etc/systemd/system/olm.service
Make sure to move the binary to
/usr/local/bin/olm
before creating the service!Windows Service
On Windows, olm has to be installed and run as a Windows service. When running it with the cli args, it will attempt to install and run the service to function like a cli tool. You can also run the following:Service Management Commands
%PROGRAMDATA%\olm\olm-client\config.json
.
Service Configuration
When running as a service, Olm will read configuration from environment variables or you can modify the service to include command-line arguments:- Install the service:
olm.exe install
- Set the credentials in
%PROGRAMDATA%\olm\olm-client\config.json
. Hint: if you run olm once with —id and —secret this file will be populated! - Start the service:
olm.exe start
Service Logs
When running as a service, logs are written to:- Windows Event Log (Application log, source: “OlmWireguardService”)
- Log files in:
%PROGRAMDATA%\olm\logs\olm.log
Gotchas
Olm creates a native tun interface. This usually requires sudo / admin permissions. Some notes:- Windows: Olm will run as a service. You can use the commands described Configure Client to manage it. You can use this to run it in the background if needed!
- LXC containers: Need to be configured to allow tun access. See Tailscale’s guide.
- Linux: May require root privileges or specific capabilities to create tun interfaces.
- macOS: May require additional permissions for network interface creation.