When setting up wireguard, we have no GUI to input the conf file. so how do you go about that
1 view
High agreement — the answer is well-supported across models.
Models agree on
- ✓Install via package manager: apt install wireguard on Debian/Ubuntu, dnf install wireguard-tools on Fedora/RHEL, pacman -S wireguard-tools on Arch
- ✓Config file must be placed at /etc/wireguard/wg0.conf
- ✓The filename (e.g. wg0) determines the interface name
- ✓Use sudo nano /etc/wireguard/wg0.conf to create/edit the config file
- ✓Set permissions with sudo chmod 600 /etc/wireguard/wg0.conf to protect the private key
- ✓Start the tunnel with sudo wg-quick up wg0
- ✓Stop the tunnel with sudo wg-quick down wg0
- ✓Enable at boot with sudo systemctl enable wg-quick@wg0
- ✓Verify the connection with sudo wg show
Without a GUI, WireGuard is configured entirely via the command line by placing a .conf file in the right location and using wg-quick to manage it. Here's the full process:
1. Install WireGuard
bash
Debian/Ubuntu
sudo apt update && sudo apt install wireguard
Fedora/RHEL/CentOS
sudo dnf install wireguard-tools
Arch
sudo pacman -S wireguard-tools
2. Place the Config File
WireGuard reads configs from /etc/wireguard/. The filename becomes the interface name — so wg0.conf creates a wg0 interface.
Option A — Create it directly and paste your config: bash sudo nano /etc/wireguard/wg0.conf
Paste your config, then save with Ctrl+O, Enter, and exit with Ctrl+X.
Option B — Copy an existing file you already have: bash sudo cp ~/Downloads/your-config.conf /etc/wireguard/wg0.conf
Option C — Transfer it from another machine via SCP: bash
On the remote machine, send it over:
scp wg0.conf user@server-ip:/tmp/wg0.conf
Then on the server, move it into place:
sudo mv /tmp/wg0.conf /etc/wireguard/wg0.conf
Example config structure
ini [Interface] PrivateKey = <your_private_key> Address = 10.0.0.2/32 DNS = 1.1.1.1
[Peer] PublicKey = <peer_public_key> Endpoint = vpn.example.com:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
3. Secure the Config File
The config contains your private key, so lock down its permissions: bash sudo chmod 600 /etc/wireguard/wg0.conf
4. Start the Tunnel
bash
Bring the interface up
sudo wg-quick up wg0
Bring it down
sudo wg-quick down wg0
5. Enable at Boot (Optional but Recommended)
bash sudo systemctl enable --now wg-quick@wg0
This starts WireGuard immediately and ensures it comes back up after a reboot.
6. Verify the Connection
bash
See interface status, peer handshake, and traffic
sudo wg show
Or confirm the network interface exists
ip addr show wg0
A successful handshake in wg show output confirms the tunnel is working.
Bonus: Generate Keys if You Need Them
If you don't have a keypair yet: bash wg genkey | tee privatekey | wg pubkey > publickey
This writes your private key to privatekey and public key to publickey in the current directory. Use the private key in your [Interface] block and share the public key with your peer.
Quick Summary
bash sudo apt install wireguard sudo nano /etc/wireguard/wg0.conf # paste your config sudo chmod 600 /etc/wireguard/wg0.conf sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0 # auto-start on boot sudo wg show # verify
If you're on a specific platform (router firmware, minimal Alpine install, etc.) the steps may differ slightly — let me know and I can tailor the guidance.
Follow-ups
You just saw open-source models answer
Want GPT-5, Claude, Gemini & more on the same question?
Sign in free to run any question against frontier models — side by side, same synthesis, honest comparison.