This guide explains how to install zrok on Ubuntu and expose a local server (like Frappe, Node, or any localhost app) to the internet using a secure reverse proxy.
zrok is a secure sharing platform that allows you to expose local services to the public internet without port forwarding.
Typical use cases:
- Access localhost apps remotely
- Share Frappe / ERPNext development sites
- Test webhooks
- Temporary public demos
- Ubuntu / Linux system
- Internet connection
- Terminal access
- A zrok account
Create a free account here:
After login, you will receive an environment token from:
wget https://github.com/openziti/zrok/releases/download/v1.1.11/zrok_1.1.11_linux_amd64.tar.gztar -xvzf zrok_1.1.11_linux_amd64.tar.gzThis will extract a binary named:
zrok
sudo mv zrok /usr/local/bin/This makes the command available globally.
zrok versionExpected output:
zrok version v1.1.11
After logging in to the console:
Copy your environment token and run:
zrok enable <YOUR_TOKEN>Example:
zrok enable zrktkn_xxxxxxxxxxxxxxxxxThis will create configuration files in:
~/.zrok
zrok statusExpected output:
Environment: enabled
To expose a local service running on port 8000:
zrok share public 8000or
zrok share public http://localhost:8000Example output:
https://abcd1234.share.zrok.io
Now anyone can access your local server via that URL.
If your Frappe bench is running on:
http://localhost:8000
Start sharing:
zrok share public 8000Now your local Frappe site will be accessible from the internet.
Press:
CTRL + C
to stop the share.
Check environment:
zrok statusDisable environment:
zrok disableList resources:
zrok overviewDownload the Windows binary from:
https://github.com/openziti/zrok/releases
Extract and move:
zrok.exe
to:
C:/Users/<username>/bin/
Then run from Command Prompt or PowerShell:
zrok versionDo NOT expose sensitive systems, including:
- production servers
- databases
- client environments
- private networks
Only expose development or demo environments.
This guide explains how to use the automatic installation script to install zrok on a Linux system.
Instead of manually downloading and installing zrok, the script performs all steps automatically.
The script performs the following tasks automatically:
- Checks if required tools (
wget,tar) are installed - Downloads the latest zrok release (v1.1.11)
- Extracts the zrok binary
- Moves the binary to the system path
/usr/local/bin - Verifies the installation
- Optionally enables the zrok environment using your token
Clone the repository containing the script.
git clone https://github.com/<your-username>/<repo-name>.gitNavigate into the directory:
cd <repo-name>Before running the script, give it execution permission.
chmod +x install_zrok.shRun the script using:
./install_zrok.shThis will:
- download zrok
- install it
- verify the installation
After installation you should see:
zrok version v1.1.11
Login to the zrok console:
Copy your environment token.
Then run:
zrok enable <YOUR_TOKEN>Example:
zrok enable zrktkn_abc123xyzYou can also enable your environment directly using the script.
./install_zrok.sh <YOUR_TOKEN>Example:
./install_zrok.sh zrktkn_abc123xyzThe script will automatically enable the environment after installation.
Run:
zrok versionExpected output:
zrok version v1.1.11
Once installed and enabled, you can expose a local server.
Example for a service running on port 8000:
zrok share public 8000Example output:
https://abcd1234.share.zrok.io
Anyone with this link can access your local service.
If your Frappe site runs on:
http://localhost:8000
Run:
zrok share public 8000Your local Frappe instance will now be accessible from the internet.
To stop the share session press:
CTRL + C
If the zrok command is not found, verify installation path:
which zrok
Expected output:
/usr/local/bin/zrok
If needed reload the shell:
source ~/.bashrc
Instead of using a random public URL, zrok allows you to reserve a permanent share address. This ensures that every time you start the share, the same URL is used.
Example difference:
Random share:
https://a1b2c3d4.share.zrok.io
Reserved share:
https://test-demo.share.zrok.io
Benefits:
- Stable URL
- Easy to remember
- Perfect for demos and development
- No need to send a new link every time
Open:
https://api-v1.zrok.io
Login to your account.
Run the following command in terminal:
zrok reserve public --unique-name my-demoExample output:
reserved share token: xxxxxx
frontend endpoint: https://my-demo.share.zrok.io
Your reserved address will now be:
https://my-demo.share.zrok.io
To expose your local server using the reserved address:
zrok share reserved my-demo 8000or
zrok share reserved my-demo http://localhost:8000Now your application will be accessible at:
https://my-demo.share.zrok.io
If your Frappe bench runs on:
http://localhost:8000
Run:
zrok share reserved my-demo 8000Now your Frappe site will be accessible using the reserved URL.
Press:
CTRL + C
The reserved address will remain saved and can be reused later.
To see all reserved shares:
zrok overviewIf you want to delete the reserved share:
zrok release my-demoReserve a URL
zrok reserve public --unique-name my-demoStart share
zrok share reserved my-demo 8000Access your app
https://my-demo.share.zrok.io
Never expose:
- production environments
- sensitive data
- internal company services
Only expose development or demo systems.
Official Documentation
GitHub Repository
https://github.com/openziti/zrok
Install zrok
wget → extract → move to /usr/local/bin → enable environment
Share local server
zrok share public <port>
Access your local service from anywhere using the generated public URL.
Access your local application from anywhere using the generated URL.
Author
Abhishek Chougule