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

BASH
sudo su
apt update && apt upgrade -y 

Güncellemeler tamamlandıktan sonra sunucumuza docker kurulumu yapalım

BASH
# 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 update

latest versionu kurmak için aşağıdaki komutları kullanalım

PHP
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
BASH
sudo 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.

BASH
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

BASH
sudo su
mkdir DB
mkdir NPM
cd NPM
mkdir data
mkdir letsencrypt

oluşturduğunuz dizinlerin konumlarını docker compose dosyasına kendinize göre düzenleyin.

YAML
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.