How to Set Up WireGuard VPN on Ubuntu

Sometimes, you just want to browse safely without the whole world watching. I get that. That’s why I started using WireGuard. It’s a tool that helps protect your internet connection. In this post, I’ll show you how I set it up on Ubuntu, step by step.

WireGuard is a VPN, or Virtual Private Network. That’s a fancy name for a tool that hides your internet activity. It makes your connection private by wrapping it in a secure tunnel. Think of it like sending a message in a locked treasure chest instead of a postcard.

Now, I’ve tried other VPNs before. Some were slow, some were hard to install, and some just didn’t work well. WireGuard surprised me. It’s fast, lightweight, and honestly, kind of fun to use. But enough talk—let’s set it up together.


What You’ll Need

Let’s keep it simple. Here’s what you’ll need before we begin:

  • A server running Ubuntu (I used Ubuntu 22.04, but this works on others too)
  • Access to the terminal (that black window where you type commands)
  • About 20 minutes of your time
  • (Optional) A second computer or VPS to act as your VPN server

If that last bullet sounds confusing, don’t worry. I’ll explain.

When using WireGuard, you usually have two machines:

  • Client: That’s your computer. The one you’re using right now.
  • Server: That’s another computer, maybe in another country, that helps route your traffic safely.

I set mine up using a VPS (virtual private server) I rented online. But you can also use a second Ubuntu computer at home.


Step 1: Install WireGuard

Let’s install it.

Open your terminal and type:

sudo apt update
sudo apt install wireguard

You’ll be asked to enter your password. Then Ubuntu will download and install WireGuard.

If you’re using a VPS, repeat this step there too.


Step 2: Create Keys

WireGuard uses keys to identify devices. Think of them like your digital ID.

On both the client and server, run this:

wg genkey | tee privatekey | wg pubkey > publickey

This will create two files:

  • privatekey: Keep this one secret. Like, really secret.
  • publickey: This one’s okay to share. You’ll send it to the other machine.

To view your keys, type:

cat privatekey
cat publickey

I usually copy them into a text file so I can use them later.


Step 3: Set Up the Server

Let’s move to the server. (If you’re doing everything on one machine for testing, that’s okay too.)

Create the configuration file for WireGuard:

sudo nano /etc/wireguard/wg0.conf

Here’s a basic example you can paste in:

[Interface]
PrivateKey = <server_private_key>
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.0.0.2/32

Replace <server_private_key> with your actual private key. Same for <client_public_key>.

Now bring the interface up:

sudo wg-quick up wg0

You might need to enable IP forwarding too:

sudo sysctl -w net.ipv4.ip_forward=1

To make this permanent:

sudo nano /etc/sysctl.conf

Uncomment this line:

net.ipv4.ip_forward=1

Then save and exit.


Step 4: Set Up the Client

Now let’s set up your computer.

Create a config file:

sudo nano /etc/wireguard/wg0.conf

Paste this:

[Interface]
PrivateKey = <client_private_key>
Address = 10.0.0.2/24

[Peer]
PublicKey = <server_public_key>
Endpoint = <server_ip>:51820
AllowedIPs = 0.0.0.0/0

Again, replace the <...> parts with your real values.

If you’re like me and often forget what port you opened, remember: WireGuard defaults to 51820.


Step 5: Start the VPN

Ready for the big moment?

On both client and server, run:

sudo wg-quick up wg0

If it works, you won’t see much. No flashing lights or fireworks. But that’s a good sign.

You can check the connection with:

sudo wg

If you see both peers listed, it’s working.


Step 6: Make It Start Automatically

I like to keep things simple. So I set WireGuard to start on boot.

Just run:

sudo systemctl enable wg-quick@wg0

Now every time your computer boots, WireGuard will turn on.


Is It Working?

Let’s test it.

Try checking your IP address before and after turning on WireGuard:

curl ifconfig.me

If your IP changes after starting WireGuard, that means it’s working. Your internet traffic is now going through the server.

Feels pretty cool, right?


Why I Use WireGuard

You might wonder: why not just use a regular VPN app?

Well, I like:

  • Having full control over my setup
  • Knowing exactly what’s going on under the hood
  • Saving money (because I already rent a VPS)

Also, WireGuard is fast. Like, really fast. I used to have slowdowns with other VPNs. But with WireGuard, my speed barely changed.

Here’s a quick comparison from my experience:

VPN Type Speed Setup Time Control
Traditional VPN Slower Easy Low
WireGuard Much faster A bit techy High

Plus, it’s kind of satisfying to build your own VPN. Like building your own bike. It just feels right.


A Few Tips I Learned

Here are some helpful things I picked up while setting this up:

  • Always double-check your IPs in the config files
  • Watch out for typos in the keys (they’re long)
  • Restart the service if things act weird:
    sudo wg-quick down wg0 && sudo wg-quick up wg0
  • Use ufw or iptables to allow port 51820 on your server

And if you’re behind a router, don’t forget to port forward. I once spent an hour debugging, only to realize I forgot that step. Oops.


What Could Go Wrong?

Okay, I’ll be honest. Not everything goes smoothly.

Sometimes:

  • The server doesn’t respond. Check the firewall.
  • The keys don’t match. Double-check which one is private and which one is public.
  • The client connects, but no traffic flows. That’s often a routing issue.

Don’t worry. These are all fixable. Every time I ran into a problem, it taught me more about networking.

And hey—if you’re into puns, setting up VPNs really tunnels you into learning something new.


Final Thoughts

WireGuard is a simple but powerful tool. It’s not just for tech experts. If I can set it up, you probably can too. It’s fast, secure, and helps you stay private online.

You don’t need to be a network wizard to use it. You just need a little patience and a willingness to learn.

Have you tried setting up your own VPN before? Did you run into any issues? Let me know—I’d love to hear your experience.

And remember: even if you’re surfing from your cozy couch, your internet doesn’t have to leak your secrets.

Leave a Reply