Guide: How to Install Firezone (WireGuard with Web UI) on Linux via Docker
The automated quick-install scripts for Firezone often fail due to missing dependencies, conflicting firewall configurations, or SSL issues. This step-by-step guide walks you through the manual, robust deployment of Firezone using Docker and Docker Compose.
[](https://libreselfhosted.com/project/firezone/)
Libre Self-hosted +3
Prerequisites
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +1
Step 1: Install Docker and Docker Compose v2
Do not rely on the script to install Docker. Set it up properly beforehand to prevent version mismatches:
Step 2: Enable Kernel IP Forwarding
Firezone must be allowed to forward network packets from the WireGuard interface to the public network:
[](https://libreselfhosted.com/project/firezone/)
Libre Self-hosted +1
Step 3: Download and Run the Official Firezone Bootstrap
Now, use the dedicated legacy repository script which pulls down the specific production-ready Docker Compose environment:
[](https://oneuptime.com/blog/post/2026...on-ubuntu/view)
OneUptime +1
Important Prompts During Installation:
Note: The script will now generate random encryption keys, download the required database containers, and set up local SSL configurations.
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +2
Step 4: Create the Administrator Account
Once the containers are generated, you need to manually trigger the administrative user creation tool to get your login credentials:
Copy the email and temporary password generated on your terminal screen.
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +1
Step 5: Access the Web Panel & Add Devices
[](https://medium.com/@kapil_parashar/n...n-2a590db5370b)
Medium +3
Troubleshooting Common Port/Firewall Blockages
If the page doesn't load, your Linux firewall might be restricting traffic. Fix it by ensuring Docker can communicate through UFW:
Now you have a fully visual, enterprise-ready WireGuard server running securely inside isolated Docker containers! Leave a comment if your certificates fail to renew.
The automated quick-install scripts for Firezone often fail due to missing dependencies, conflicting firewall configurations, or SSL issues. This step-by-step guide walks you through the manual, robust deployment of Firezone using Docker and Docker Compose.
[](https://libreselfhosted.com/project/firezone/)
Libre Self-hosted +3
Prerequisites
- A clean VPS running Ubuntu 22.04 LTS / 24.04 LTS
- A fully qualified domain name (FQDN) pointing to your server's IP (e.g., vpn.yourdomain.com)
- Ports 80/tcp, 443/tcp, and 51820/udp open in your hosting provider's firewall
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +1
Step 1: Install Docker and Docker Compose v2
Do not rely on the script to install Docker. Set it up properly beforehand to prevent version mismatches:
Code:
sudo apt update && sudo apt upgrade -y sudo apt install curl iptables -y [](https://firstbyte.pro/manuals/how-to-install-firezone-for-wireguard-on-a-linux-server-by-firstbyte/) ### Install Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ### Install Docker Compose Plugin sudo apt install docker-compose-plugin -y
Step 2: Enable Kernel IP Forwarding
Firezone must be allowed to forward network packets from the WireGuard interface to the public network:
Code:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Libre Self-hosted +1
Step 3: Download and Run the Official Firezone Bootstrap
Now, use the dedicated legacy repository script which pulls down the specific production-ready Docker Compose environment:
Code:
sudo -E bash -c "$(curl -fsSL https://github.com/firezone/firezone/raw/legacy/scripts/install.sh)"
OneUptime +1
Important Prompts During Installation:
- Admin Email: Type your valid email address (used for the admin account).
- External URL: Enter your domain with the HTTPS prefix, for example: https://vpn.yourdomain.com.
Note: The script will now generate random encryption keys, download the required database containers, and set up local SSL configurations.
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +2
Step 4: Create the Administrator Account
Once the containers are generated, you need to manually trigger the administrative user creation tool to get your login credentials:
Code:
cd $HOME/.firezone docker compose exec firezone firezone-ctl create-or-reset-admin
[](https://wiki.crowncloud.net/?How_to_...n_Ubuntu_22_04)
CrownCloud Wiki +1
Step 5: Access the Web Panel & Add Devices
- Open your web browser and go to your configured domain: https://vpn.yourdomain.com.
- Log in using the administrator credentials from Step 4.
- Navigate to Devices -> Add Device.
- Assign a name, click generate, and you will see a QR Code along with a downloadable .conf file for your WireGuard client app.
[](https://medium.com/@kapil_parashar/n...n-2a590db5370b)
Medium +3
Troubleshooting Common Port/Firewall Blockages
If the page doesn't load, your Linux firewall might be restricting traffic. Fix it by ensuring Docker can communicate through UFW:
Code:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 51820/udp sudo ufw reload
Now you have a fully visual, enterprise-ready WireGuard server running securely inside isolated Docker containers! Leave a comment if your certificates fail to renew.