Kako instalirati WireGuard VPN + Web UI na Ubuntu
Otkriće: Ovaj članak sadrži partnerske poveznice. Mogu zaraditi proviziju kada kupujete putem ovih poveznica, a da vam to ne povećava trošak.
Kada se povežete na WiFi u kafiću ili pristupate internetu s bilo koje javne mreže, vaši podaci putuju kroz infrastrukturu koju ne kontrolirate. Bilo tko tko se nalazi između vas i web stranica koje posjećujete mogao bi potencijalno presresti vaš promet, čak i na vašoj kućnoj mreži, vaš pružatelj internetskih usluga može vidjeti svaku stranicu koju pregledavate.
VPN ovo rješava stvaranjem šifriranog tunela između vašeg uređaja i servera kojem vjerujete. Umjesto da vaš promet ide izravno na internet, on prvo putuje kroz ovaj siguran tunel do vašeg VPN servera, koji ga zatim prosljeđuje na odredište, tako da svatko tko promatra mrežu vidi samo šifrirane podatke koji idu prema vašem VPN serveru, ništa više.
WireGuard je moderan VPN protokol koji ovaj posao obavlja izvanredno. Za razliku od starijih VPN tehnologija koje zahtijevaju stotine tisuća linija koda, WireGuard istu zadaću izvršava s otprilike 4.000 linija, što znači manje bugova, bolju izvedbu i lakše sigurnosne provjere.
Ali evo u čemu je stvar: iako je WireGuard sam po sebi jednostavan, upravljanje s više VPN klijenata, generiranje konfiguracijskih datoteka i praćenje tko ima pristup može postati zamorno samo kroz naredbeni redak, zato je korisno imati web sučelje.
U ovom vodiču postavit ćemo kompletan WireGuard VPN server s prijateljskim web sučeljem koje vam omogućuje upravljanje svime putem preglednika, kao što je dodavanje novih uređaja, generiranje QR kodova za mobilne klijente i praćenje veza bez potrebe za ručnim uređivanjem ijedne konfiguracijske datoteke.
Što će vam trebati
Prije nego što počnemo, provjerite imate li:
- Linux poslužitelj s javnom IP adresom (VPS od pružatelja poput DigitalOcean, Linode ili AWS savršeno funkcionira).
- Root pristup ili sudo privilegije na ovom serveru.
- Osnovno razumijevanje SSH-a (trebali biste znati kako se povezati na svoj poslužitelj).
Ovaj vodič pretpostavlja da koristite Ubuntu 22.04 ili Ubuntu 24.04, ali koraci su slični i na Debianu i drugim distribucijama uz manje prilagodbe.
Razumijevanje arhitekture
Uzmimo trenutak da shvatimo što gradimo prije nego što počnemo unositi naredbe.
Postavljanje WireGuard-a sastoji se od peer uređaja – uređaja koji mogu međusobno komunicirati putem šifriranih tunela.
U našem slučaju, imat ćemo:
- Poslužitelj: Vaše Linux računalo s javnom IP adresom, koje djeluje kao središnji čvor na koji se povezuju svi vaši uređaji.
- Klijenti: Vaše prijenosno računalo, telefon, tablet ili bilo koji drugi uređaj koji želite zaštititi, svaki klijent dobiva vlastiti kriptografski par ključeva i konfiguraciju.
- Web sučelje: Lagana web aplikacija (koristit ćemo WireGuard-UI) koja radi na vašem serveru i pruža vam nadzornu ploču za upravljanje svime.
Kada se klijent želi povezati, uspostavlja izravni šifrirani tunel do poslužitelja, a zatim poslužitelj usmjerava internetski promet klijenta ili jednostavno dopušta pristup resursima na lokalnoj mreži poslužitelja, ovisno o tome kako ga konfigurirate.
Korak 1: Instalacija WireGuarda na Ubuntu server
Prvo, provjerimo je li vaš sustav ažuran i ima li instalirane potrebne alate pomoću sljedeće naredbe, koja će ažurirati popise paketa i nadograditi sav zastario softver.
sudo apt update && sudo apt upgrade -y
Zatim instalirajte WireGuard:
sudo apt install wireguard -y
Budući da je WireGuard ugrađen u Linux kernel (za kernels 5.6 i novije), ova naredba prvenstveno instalira korisničke alate potrebne za konfiguriranje i upravljanje WireGuard sučeljima.
Korak 2: Omogućavanje IP prosljeđivanja na Ubuntuu
Po defaultu, Ubuntu ne prosljeđuje pakete između mrežnih sučelja, što je sigurnosna značajka koja sprječava vaš poslužitelj da djeluje kao usmjerivač osim ako mu to izričito ne kažete, ali za VPN poslužitelj, potrebna nam je ta funkcionalnost.
Kada se vaš telefon poveže na VPN i pokuša posjetiti web stranicu, poslužitelj mora proslijediti taj zahtjev s WireGuard sučelja na svoje javno mrežno sučelje, a zatim proslijediti odgovor natrag.
Da bismo trajno omogućili prosljeđivanje IP-a, moramo urediti konfiguracijsku datoteku sustava:
sudo nano /etc/sysctl.conf
Potražite ovaj redak (možda je komentiran s # na početku):
#net.ipv4.ip_forward=1
Uklonite # da ga odkomentirate, ili dodajte liniju ako ne postoji:
net.ipv4.ip_forward=1
Spremite datoteku i zatim primijenite promjenu bez ponovnog pokretanja:
sudo sysctl -p
Korak 3: Konfigurirajte vatrozid i usmjeravanje za WireGuard
Vaš VPN poslužitelj treba prihvaćati dolazne veze na portu koji WireGuard koristi (po zadanim postavkama, UDP port 51820). Također, treba ispravno usmjeravati promet između VPN sučelja i vašeg javnog mrežnog sučelja.
Prvo, identificirajmo vaše javno mrežno sučelje:
ip route | grep default
Vidjet ćete izlaz poput:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
Naziv sučelja ovdje je `eth0`, ali na vašem sustavu može biti drugačiji, može biti `ens3`, `enp0s3` ili nešto slično.
Sada konfigurirajmo ufw vatrozid (Ubuntuov zadani vatrozid):
# Allow SSH (if you haven't already)
sudo ufw allow 22/tcp
# Allow WireGuard
sudo ufw allow 51820/udp
# Allow the web interface (we'll use port 5000)
sudo ufw allow 5000/tcp
Sljedeće, trebamo dodati NAT (Prevođenje mrežnih adresa) pravilo koje govori vašem poslužitelju da maskira VPN promet kao da dolazi sam od poslužitelja prilikom prosljeđivanja prema internetu.
sudo nano /etc/ufw/before.rules
Dodajte ove retke na vrh datoteke, odmah nakon komentara zaglavlja, ali prije linije *filter i zamijenite eth0 s imenom vašeg stvarnog sučelja:
# NAT table rules for WireGuard
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
COMMIT
Ovo znači sljedeće:
*nat: Radimo s NAT tablicom.-s 10.0.0.0/24: Za pakete koji dolaze iz naše VPN mreže (10.0.0.0/24 je podmreža koju ćemo dodijeliti VPN klijentima).-o eth0: Izlazak putem sučelja eth0.-j MASQUERADE: Prepiši izvornu IP adresu tako da bude javna IP adresa poslužitelja.
Spremi i izađi, zatim omogući i ponovno učitaj UFW:
sudo ufw enable
sudo ufw reload
Korak 4: Instalacija WireGuard-UI na Ubuntu poslužitelju
Sada dolazi zanimljiv dio, postavljanje web sučelja koristeći WireGuard-UI, što je čista i jednostavna web aplikacija napisana u Go-u.
Prvo, kreirajte direktorij za WireGuard-UI:
sudo mkdir -p /opt/wireguard-ui
cd /opt/wireguard-ui
Zatim preuzmite najnoviju verziju WireGuard-UI s GitHub stranice za izdanja, ali u vrijeme pisanja, wget naredba dohvaća nedavnu stabilnu verziju:
sudo wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/v0.6.2/wireguard-ui-v0.6.2-linux-amd64.tar.gz
Nakon preuzimanja, izdvojite ga i učinite izvršnim:
sudo tar -xzf wireguard-ui-v0.6.2-linux-amd64.tar.gz
sudo chmod +x wireguard-ui
Prije nego što pokrenemo sučelje, napravimo systemd servis kako bi se automatski pokretao pri pokretanju sustava.
sudo nano /etc/systemd/system/wireguard-ui.service
Zalijepite ovu konfiguraciju:
[Unit]
Description=WireGuard UI
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/wireguard-ui
ExecStart=/opt/wireguard-ui/wireguard-ui
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Spremi i izađi, zatim omogući i pokreni servis:
sudo systemctl daemon-reload
sudo systemctl enable wireguard-ui
sudo systemctl start wireguard-ui
Provjerite radi li:
sudo systemctl status wireguard-ui
Korak 5: Pristupanje Wireguard-UI
Otvorite svoj web preglednik i idite na sljedeću URL adresu, pazite da YOUR_SERVER_IP zamijenite stvarnom javnom IP adresom vašeg poslužitelja.
http://YOUR_SERVER_IP:5000
Vidjet ćete stranicu za prijavu, gdje možete koristiti sljedeće zadane vjerodajnice:
Username: admin
Password: admin
Važno: Promijenite ih odmah nakon prijave. Kliknite na svoje korisničko ime u gornjem desnom kutu, zatim na “Postavke” i ažurirajte svoju lozinku.
Korak 6: Konfiguriranje vašeg WireGuard servera
Kada se prijavite, bit ćete preusmjereni na nadzornu ploču WireGuard-UI. Za početak konfiguracije vašeg poslužitelja, kliknite na „WireGuard Server” u lijevom izborniku i postavite Naziv sučelja na 10.0.0.1/24 (zadano WireGuard sučelje), te Port za slušanje na 51820.
U polje Post Up Script unesite:
iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
i u polje Post Down Script unesite:
iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Pobrinite se da zamijenite eth0 s nazivom vaše stvarne mrežne sučelja ako je drugačije i postavite Address to 10.0.0.1/24, što će biti interna VPN IP adresa poslužitelja.
Kada kliknete Primijeni konfiguraciju, WireGuard će stvoriti wg0 sučelje, slušati VPN veze na portu 51820, dodijeliti vašem poslužitelju njegovu VPN IP adresu i konfigurirati pravila vatrozida kako bi ispravno prosljeđivao VPN promet.
Korisničko sučelje će također automatski generirati privatne i javne ključeve vašeg poslužitelja. Nakon primjene postavki, sučelje bi trebalo prikazivati Aktivno, što znači da je vaš WireGuard poslužitelj pokrenut i radi.
Korak 7: Dodajte svog prvog WireGuard klijenta
Sada dodajmo uređaj na vaš VPN, što može biti vaš laptop, telefon ili bilo koji drugi klijentski uređaj. S lijevog bočnog izbornika kliknite na „Klijenti”, zatim kliknite „Dodaj novog klijenta”.
Dajte klijentu opisno ime poput „Moj Laptop” ili „iPhone”, a opcionalno unesite i e-mail kako biste kasnije lakše identificirali uređaj. Kliknite „Auto” kako biste automatski dodijelili sljedeću dostupnu IP adresu (vjerojatno 10.0.0.2).
Za dopuštene IP-ove unesite 0.0.0.0/0, ::/0, što osigurava da sav promet klijenta prolazi kroz VPN; ako želite pristup samo unutarnjoj mreži poslužitelja, umjesto toga možete navesti tu podmrežu (na primjer, 10.0.0.0/24).
Kada je sve postavljeno, kliknite “Pošalji” i web sučelje će automatski generirati kompletnu WireGuard konfiguraciju za ovog klijenta, uključujući njegov vlastiti par kriptografskih ključeva.
Korak 8: Povezivanje vašeg klijentskog uređaja
Sada trebate postaviti konfiguraciju na svoj uređaj, a WireGuard-UI to olakšava pomoću QR kodova za mobilne uređaje i datoteka s konfiguracijom koje se mogu preuzeti za računala.
Za mobilne uređaje (telefon/tablet):
- Instalirajte aplikaciju WireGuard iz svoje trgovine aplikacijama (dostupna je za iOS i Android).
- U web sučelju WireGuard-UI pronađite svog novokreiranog klijenta i kliknite ikonu QR koda.
- Otvorite WireGuard aplikaciju na svom telefonu, dodirnite gumb
"+"i odaberite „Create from QR code“. - Skenirajte QR kod prikazan u vašem pregledniku.
- Dajte svojoj vezi ime i dodirnite „Stvori tunel“.
To je to! Prebaci prekidač kako bi se povezao, i tvoj mobilni uređaj sada preusmjerava sav promet kroz tvoj VPN server.
Za stolna računala/laptop
- Instalirajte WireGuard s wireguard.com/install.
- U sučelju WireGuard-UI, kliknite ikonu za preuzimanje pored vašeg klijenta kako biste preuzeli
.confdatoteku. - Otvorite aplikaciju WireGuard na svom računalu, kliknite „Uvezi tunel(e) iz datoteke“ i odaberite preuzetu konfiguracijsku datoteku.
- Kliknite „Aktiviraj” da biste se spojili.
Korak 9: Testiranje vašeg VPN-a
Pobrinimo se da sve radi ispravno. Prvo, dok je vaš VPN isključen, posjetite whatismyipaddress.com i zabilježite prikazanu IP adresu.
Zatim se povežite na svoj WireGuard VPN i osvježite stranicu, vaša IP adresa sada bi trebala prikazivati javnu IP adresu vašeg poslužitelja umjesto vaše originalne, čime se potvrđuje da se promet usmjerava preko VPN-a.
Za dodatnu provjeru ispravnog funkcioniranja DNS-a, možete pokrenuti sljedeću naredbu na vašem povezanom uređaju:
ping google.com
Ako vidite odgovore, vaš VPN pravilno usmjerava promet.
Da biste vidjeli aktivne veze na svom serveru, prijavite se putem SSH-a i pokrenite:
sudo wg show
Vidjet ćete izlaz poput:
interface: wg0
public key: [your server's public key]
private key: (hidden)
listening port: 51820
peer: [client's public key]
endpoint: [client's IP]:random_port
allowed ips: 10.0.0.2/32
latest handshake: 45 seconds ago
transfer: 2.50 MiB received, 15.23 MiB sent
Ovo pokazuje da je vaš klijent povezan, kada je posljednji put komunicirao s poslužiteljem i koliko je podataka preneseno.
Korak 10: Koristite HTTPS za WireGuard-UI
Trenutno, kada pristupite svojem WireGuard web sučelju na http://YOUR_SERVER_IP:5000, vaše korisničke vjerodajnice i svi konfiguracijski podaci putuju internetom u običnom tekstu, i svatko tko presretne promet između vašeg preglednika i poslužitelja mogao bi vidjeti vašu administratorsku lozinku i potencijalno preuzeti vašu sesiju.
Rješenje je postaviti vaše web sučelje iza reverznog proxyja s omogućenim HTTPS-om. Reverzni proxy se nalazi ispred vaše aplikacije, obrađuje sve šifrirane HTTPS veze od klijenata, a zatim prosljeđuje zahtjeve vašoj aplikaciji preko lokalne mreže gdje prisluškivanje nije problem.
Koristit ćemo Nginx (visokoučinkovit web poslužitelj) kao naš reverzni proxy i Let’s Encrypt kako bismo dobili besplatni SSL certifikat, tako da ćete moći pristupiti svom WireGuard sučelju na https://vpn.yourdomain.com umjesto putem IP adrese s HTTP-om.
Instaliraj Nginx web poslužitelj
Prvo, trebate stvoriti DNS zapis za svoju domenu (https://vpn.yourdomain.com) koji pokazuje na IP adresu vašeg poslužitelja, a zatim instalirati Nginx web poslužitelj.
sudo apt update
sudo apt install nginx -y
Nakon instalacije, možete posjetiti http://vpn.yourdomain.com u svom pregledniku i vidjet ćete zadanu Nginx početnu stranicu, što znači da Nginx radi i dostupan je s interneta.
Instalirajte Certbot za Let’s Encrypt
Dalje, instalirajte Let’s Encrypt, što je besplatna certifikacijska vlast koja pruža SSL certifikate, a certbot je alat koji automatizira proces dobivanja i obnavljanja tih certifikata.
sudo apt install certbot python3-certbot-nginx -y
Paket python3-certbot-nginx uključuje dodatak koji može automatski konfigurirati Nginx za vas, čineći proces mnogo jednostavnijim.
Konfigurirajte Nginx kao reverzni proxy
Sada ćemo napraviti Nginx konfiguraciju koja prosljeđuje zahtjeve s https://vpn.yourdomain.com na vašu WireGuard-UI aplikaciju koja radi na localhost:5000.
Stvorite novu konfiguracijsku datoteku.
sudo nano /etc/nginx/sites-available/wireguard-ui
Zalijepite ovu konfiguraciju (zamijenite vpn.yourdomain.com stvarnom domenom):
server {
listen 80;
listen [::]:80;
server_name vpn.yourdomain.com;
# This will be used by Certbot for the SSL certificate challenge
location /.well-known/acme-challenge/ {
root /var/www/html;
}
# Redirect all other HTTP traffic to HTTPS
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name vpn.yourdomain.com;
# SSL certificate paths (Certbot will fill these in)
ssl_certificate /etc/letsencrypt/live/vpn.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vpn.yourdomain.com/privkey.pem;
# Modern SSL configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Security headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
# Proxy settings
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
# WebSocket support (if WireGuard-UI uses it)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Forward real client information
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
Sada omogućite ovu konfiguraciju stvaranjem simboličke veze:
sudo ln -s /etc/nginx/sites-available/wireguard-ui /etc/nginx/sites-enabled/
Testirajte svoju Nginx konfiguraciju na sintaksne pogreške:
sudo nginx -t
Trebao bi vidjeti:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ako primijetite bilo kakve pogreške, vratite se i provjerite svoj konfiguracijski datoteku zbog tipfelera.
Nabavite SSL certifikat
Kada je sve ispravno konfigurirano, sada je vrijeme za pokretanje certbot naredbe koja će automatski dobiti SSL certifikat od Let’s Encrypt i konfigurirati Nginx da ga koristi.
sudo certbot --nginx -d vpn.yourdomain.com
Cijeli proces traje oko 30 sekundi, a kada završi, vidjet ćete poruku o uspjehu:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/vpn.yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/vpn.yourdomain.com/privkey.pem
Sada ponovno učitajte Nginx da biste primijenili sve:
sudo systemctl reload nginx
Automatsko obnavljanje certifikata
Let's Encrypt certifikati važe samo 90 dana, što je namjerno kako bi se potaknulo redovito obnavljanje i smanjila moguća šteta ako ikada dođe do kompromitiranja privatnog ključa.
Srećom, Certbot automatski postavlja tajmer za obnavljanje prilikom instalacije, a možete provjeriti je li usluga obnavljanja aktivna pokretanjem:
sudo systemctl status certbot.timer
i trebali biste ga vidjeti navedeno kao aktivno (pokrenuto), ovaj tajmer provjerava dvaput dnevno i automatski će obnoviti svaki certifikat koji istječe unutar 30 dana.
Da biste provjerili da sve funkcionira bez stvarnog obnavljanja, pokrenite:
sudo certbot renew –dry-run
Ako se test uspješno dovrši, automatsko obnavljanje vaših certifikata je potpuno konfigurirano i nećete se morati brinuti o isteku certifikata.
Ažurirajte svoj vatrozid
Budući da sada pristupamo WireGuard-UI putem Nginx na standardnom HTTPS portu (443), moramo to omogućiti u našem vatrozidu i opcionalno možemo zatvoriti izravan pristup na port 5000.
sudo ufw allow 443/tcp
Opcionalno, ako želite spriječiti izravan pristup WireGuard-UI na portu 5000 (prisiljavajući sve da koriste HTTPS sučelje), možete ukloniti to pravilo:
sudo ufw delete allow 5000/tcp
Ponovo učitaj vatrozid:
sudo ufw reload
Korak 11: Konfigurirajte WireGuard-UI da sluša samo na localhostu
Budući da Nginx sada rukuje svim vanjskim vezama, trebali bismo konfigurirati WireGuard-UI da prihvaća veze samo s lokalnog računala, što sprječava bilo koga da mu pristupi izravno na portu 5000, čak i ako otkrije da je port otvoren.
Zaustavite WireGuard-UI servis:
sudo systemctl stop wireguard-ui
Uredi datoteku servisa:
sudo nano /etc/systemd/system/wireguard-ui.service
Izmijenite liniju ExecStart tako da se veže samo na localhost:
[Unit]
Description=WireGuard UI
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/wireguard-ui
Environment="BIND_ADDRESS=127.0.0.1:5000"
ExecStart=/opt/wireguard-ui/wireguard-ui
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Spremi i izađi, zatim ponovno učitaj systemd i ponovno pokreni servis:
sudo systemctl daemon-reload
sudo systemctl start wireguard-ui
sudo systemctl status wireguard-ui
Napokon, otvorite svoj preglednik i idite na:
https://vpn.yourdomain.com
Trebali biste vidjeti ikonu lokota u adresnoj traci vašeg preglednika, možete kliknuti na ikonu lokota kako biste pregledali detalje certifikata. Vidjet ćete da ga je izdao Let’s Encrypt i da je važeći 90 dana.
Sažetak
Do sada ste uspješno postavili potpuno funkcionalan WireGuard VPN server s sigurnim web-sučeljem za upravljanje. Umjesto ručnog rukovanja ključevima, konfiguracijskim datotekama i pravilima usmjeravanja, WireGuard-UI vam pruža jednostavnu nadzornu ploču za dodavanje novih uređaja, generiranje QR kodova i praćenje aktivnih veza.






