ubuntu sanal makinaya Docker üzerinde WireGuard VPN sunucusunu WG-Easy ile nasıl kuracağını adım adım gösteriyorum. Ayrıca Nginx Proxy Manager ile SSL sertifikası kurulumu yapıyorum. Wgeasy hazırladığı web arayüzü sayesinde kullanımı basit bir sistem. İstediğin kadar kada profil oluşturup paylaşabilirsiniz.
Öncelik sunucunuzda dışa erişim için, Wireguard 51820 ve 51821, Nginx için 80, 81 ve 443, Portainer IO agent için ise 9001 portlarını açıyoruz. Ek olarak sorun yaşamamak için 53 ve 8080 portlarını da açabilirsiniz. Benim hali hazırda kurulu Portainer IO olduğu için sadece agent yüklemesi yaparak anlatacağım.
SSH ile sunucumuza girelim, root olup güncellemeleri kontrol edip yükleyelim
sudo su
apt update && apt upgrade -y Güncellemeler tamamlandıktan sonra sunucumuza docker kurulumu yapalım
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get updatelatest versionu kurmak için aşağıdaki komutları kullanalım
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo systemctl status docker
sudo systemctl start docker Kurulum yapıldıktan sonra normalde otomatik olarak başlar ama emin olmak için yukarıdaki komutlarla kontrol edebilirsiniz. Şimdi portainer io agent kurulumu yapalım.

docker run -d \
-p 9001:9001 \
--name portainer_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
portainer/agent:2.33.2
Environment address sunucusunuz ip adresi:9001 olarak yazmayı unutmayın ve Connect e tıklayarak sunucumuzu portainer’e bağlayalım.
SSH ile bağlandığımız sunucumuzda aşağıdaki dizinleri oluşturalım
sudo su
mkdir DB
mkdir NPM
cd NPM
mkdir data
mkdir letsencryptoluşturduğunuz dizinlerin konumlarını docker compose dosyasına kendinize göre düzenleyin.
version: '3.8'
services:
# --- NGINX Proxy Manager ---
app:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80" # HTTP
- "81:81" # Yönetim paneli
- "443:443" # HTTPS
environment:
DB_MYSQL_HOST: db
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: npm
DB_MYSQL_PASSWORD: npmpass
DB_MYSQL_NAME: npm
volumes:
- /home/USER/npm/data:/data #data dizin yolunu verin
- /home/USER/npm/letsencrypt:/etc/letsencrypt #SSL için dizinin yolunu verin
depends_on:
- db
networks:
- wg # NPM artık wg-easy'nin ağına bağlı
# --- MariaDB ---
db:
image: mariadb:10.11
container_name: npm-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: npm
MYSQL_USER: npm
MYSQL_PASSWORD: npmpass
volumes:
- /home/USER/db:/var/lib/mysql #SQL için dizin yolunu verin
networks:
- wg # DB de aynı WG ağına bağlandı
# --- WireGuard Easy ---
wg-easy:
image: ghcr.io/wg-easy/wg-easy:15
container_name: wg-easy
networks:
wg:
ipv4_address: 10.42.42.42
ipv6_address: fdcc:ad94:bacf:61a3::2a
volumes:
- etc_wireguard:/etc/wireguard
- /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=0
- net.ipv6.conf.all.forwarding=1
- net.ipv6.conf.default.forwarding=1
volumes:
etc_wireguard:
networks:
wg:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 10.42.42.0/24
- subnet: fdcc:ad94:bacf:61a3::/64
Portainer IO sol menuden Stacks sonra sağ üst köşede Add Stack tıklayarak yukarıda docker compose dosyasını yapıştırın. Stacks için bir isim vermeyi unutmayın.

kodlarda gerekli olan dizinlerin yollarını kendinize göre güncelledikten sonra en altta Deploy the Stack butonuna tıklayarak kurulumu başlatalım.

Var olan bir alan adınızın olduğu varsayarak işleme devam ediyorum. Alanadınızın DNS ayarlarına girerek yeni A kaydı oluşturalım. A kaydının değeri sunucu IP adresi olmalı. Örneğin A kaydı eklediğiniz alanadı vpn.ALANADINIZ.com –> olsun. Kaydı ekledikten sonra web tarayıcınızda http://vpn.alanadiniz.com:81 adresine girelim. Nginix default kullanıcı adı [email protected] şifre ise changeme ile Nginx e giriş yapalım. İlk girişte mail adresi ve şifrenizi değiştirmek isteyecek.
Kullanıcı ve şifrenizi değiştirdikten sonra menuden Hosts ardından proxy hosts a girin. Add Proxy e tıklayarak npm için bir kural oluşturalım.



artık nginx maneger https://vpn.alanadiniz.com şeklimde girebileceğiz. Şimdi sıra Wireguard Web için de alanadınız da bir A kaydı daha ekleyelim. Örneğin https://wg.alanadiniz.com olsun ve alan adıyla işlemlerimizi tamamlayalım. bunun içinde bir Nginx de proxy host ekleyip SSL sertifikası verelim.

kullanacağımız ip adresi 10.42.42.42 olacak.


SSL ayarlarını da yaptıkdan sonra kaydedelim. Artık https://wg.alanadiniz.com girerek Wireguard web arayüzüne erişebileceksiniz.

Continue ile devam edelim

kullanıcı adı ve şifre belirleyelim

Eğer bir yedeğiniz var ise Yes ile yükleyebilirsiniz. Sıfır bir kurulum için NO ile devam edin

host kısmına A kaydı eklediğiniz alan adını yazabilir yada sunucunun IP adresini yazıp Continue tıkladığınız belirlediğiniz kullanıcı adı ve şifre ile admin portala girebilirsiniz.

artık yeni kullanıcılar ekleyip Wireguard uygulaması ile hızlı VPN’in keyfini çıkarabilirsiniz.