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

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

BASH
sudo su
apt update && apt upgrade -y 
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

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

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

Sıkça Sorulan Sorular

Sıkça Sorulan Sorular (FAQ)

1. Ubuntu sanal makineye Docker üzerinde WireGuard VPN sunucusunu WG-Easy ile kurarken hangi portları açmam gerekiyor?

Sunucunuzda dışa erişim için WireGuard için 51820 ve 51821, Nginx Proxy Manager için 80, 81 ve 443, Portainer IO agent için ise 9001 portlarını açmanız gerekmektedir. Ek olarak, sorun yaşamamak adına 53 ve 8080 portlarını da açmanız önerilir.

2. Docker kurulumundan önce sunucuda yapılması gereken ilk adımlar nelerdir?

Öncelikle SSH ile sunucunuza bağlanmalı, ‘sudo su’ komutu ile root yetkisine geçmeli ve ardından ‘apt update && apt upgrade -y’ komutu ile güncellemeleri kontrol edip yüklemelisiniz.

3. Ubuntu’ya Docker nasıl kurulur ve kurulumun başarılı olduğunu nasıl kontrol edebilirim?

Docker’ın resmi GPG anahtarını ve deposunu ekledikten sonra ‘sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin’ komutu ile kurulumu yapabilirsiniz. Kurulum sonrası ‘sudo systemctl status docker’ komutu ile Docker servisinin durumunu kontrol edebilir ve gerekirse ‘sudo systemctl start docker’ ile başlatabilirsiniz.

4. Portainer IO Agent nedir ve kurulumu nasıl yapılır?

Portainer IO Agent, Docker ortamlarınızı Portainer üzerinden yönetmek için kullanılan bir araçtır. Kurulumu için aşağıdaki docker run komutunu kullanabilirsiniz:

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

Kurulum sonrası Portainer arayüzünde Environment adresini sunucunuzun IP adresi:9001 olarak ayarlayarak bağlantı kurmalısınız.

5. WG-Easy ve Nginx Proxy Manager’ın bu kurulumdaki rolleri nelerdir?

WG-Easy, WireGuard VPN sunucusunu web arayüzü sayesinde kolayca kurmanızı ve istediğiniz kadar VPN profilini oluşturup yönetmenizi sağlar. Nginx Proxy Manager ise WG-Easy gibi servisler için SSL sertifikası (Let’s Encrypt ile) kurulumunu ve ters proxy görevini üstlenerek güvenli ve yönetilebilir bir erişim sunar. Nginx Proxy Manager için ‘DB’, ‘NPM’, ‘NPM/data’ ve ‘NPM/letsencrypt’ dizinlerinin oluşturulması gerekmektedir.