نحوه نصب WGDashboard – یک رابط کاربری وب متنباز برای WireGuard VPN #
راهاندازی WGDashboard در اوبونتو ۲۴.۰۴ با Docker، Traefik و Let’s Encrypt SSL.
WGDashboard یک رابط وب متنباز است که مدیریت سرورهای WireGuard VPN را ساده میکند. این رابط یک داشبورد متمرکز ارائه میدهد که در آن مدیران میتوانند رابطها را ایجاد کنند، پیکربندیهای کلاینت را ایجاد کنند، همتایان فعال را رصد کنند و ترافیک VPN را از یک مکان واحد مدیریت کنند.
این مقاله نحوه استقرار WGDashboard در اوبونتو ۲۴.۰۴ را با استفاده از Docker Compose با Traefik به عنوان یک پروکسی معکوس نشان میدهد. Traefik به طور خودکار گواهینامههای HTTPS را از طریق Let’s Encrypt ارائه میدهد و راهاندازی را ساده کرده و دسترسی به داشبورد را ایمن میکند. در پایان این راهنما، شما یک نمونه WGDashboard کاملاً کانتینر شده را مستقر میکنید، رابطهای WireGuard را پیکربندی میکنید و کلاینتها را به سرور VPN خود متصل میکنید.
پیش نیازها #
قبل از شروع، شما نیاز دارید:
- به عنوان یک کاربر غیر ریشه با امتیازات sudo به یک سرور مبتنی بر اوبونتو ۲۴.۰۴ دسترسی داشته باشید.
- داکر و داکر کامپوز را نصب کنید.
- یک رکورد دامنه A که به آدرس IP سرور شما اشاره میکند پیکربندی کنید (برای مثال،
wgdashboard.example.com).
تنظیم ساختار دایرکتوری و متغیرهای محیطی #
در این بخش، ساختار دایرکتوری مورد نیاز برای WGDashboard را آماده میکنید و متغیرهای محیطی را در یک فایل .env تعریف میکنید.
- ساختار دایرکتوری برای WGDashboard ایجاد کنید.console
$ mkdir -p ~/wgdashboard/{conf,data}
این دایرکتوریها انواع مختلفی از دادهها را ذخیره میکنند:
- conf: شامل فایلهای پیکربندی WireGuard از
/etc/wireguard. است. - data: دادهها، پایگاه داده و تنظیمات برنامه WGDashboard را ذخیره میکند.
- conf: شامل فایلهای پیکربندی WireGuard از
- به پوشه
wgdashboardبروید.console$ cd ~/wgdashboard
- یک فایل
.envایجاد کنید.console$ nano .env - متغیرهای زیر را اضافه کنید.ini
DOMAIN=wgdashboard.example.com LETSENCRYPT_EMAIL=admin@example.com
جایگزین کردن:
wgdashboard.example.comبا دامنه شما.admin@example.comبا ایمیل شما.
فایل را ذخیره کنید و ببندید.
فعال کردن IP Forwarding روی میزبان #
WireGuard برای هدایت ترافیک کلاینت VPN به شبکههای خارجی، به فورواردینگ IPv4 نیاز دارد. قبل از استقرار WGDashboard، فورواردینگ را روی میزبان فعال کنید.
- فعال کردن قابلیت ارسال IPv4 در پیکربندی هسته.console
$ echo "net.ipv4.ip_forward=1" | sudo tee -a /usr/lib/sysctl.d/99-custom.conf
- تغییرات sysctl را بدون راهاندازی مجدد اعمال کنید.console
$ sudo sysctl --system
نصب WGDashboard با Docker Compose #
در این بخش، شما پشته Docker Compose را که WGDashboard را پشت Traefik اجرا میکند، ایجاد و مستقر میکنید. Docker Compose هر دو کانتینر را مدیریت میکند، متغیرهای محیطی را از فایل.env شما اعمال میکند و به طور خودکار مسیریابی HTTPS را از طریق Traefik پیکربندی میکند.
- یک مانیفست جدید Docker Compose ایجاد کنید.console
$ nano docker-compose.yaml - محتوای زیر را اضافه کنید.yaml
services: traefik: image: traefik:v3.6 container_name: traefik command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}" - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" ports: - "۸۰:۸۰" - "۴۴۳:۴۴۳" volumes: - "letsencrypt:/letsencrypt" - "/var/run/docker.sock:/var/run/docker.sock:ro" restart: unless-stopped wgdashboard: image: ghcr.io/wgdashboard/wgdashboard:latest container_name: wgdashboard hostname: wgdashboard expose: - "۱۰۰۸۶" ports: - "۵۱۸۲۰:۵۱۸۲۰/udp" volumes: - "./conf:/etc/wireguard" - "./data:/data" cap_add: - NET_ADMIN sysctls: - net.ipv4.ip_forward=1 labels: - "traefik.enable=true" - "traefik.http.routers.wgdashboard.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.wgdashboard.entrypoints=websecure" - "traefik.http.routers.wgdashboard.tls.certresolver=letsencrypt" - "traefik.http.services.wgdashboard.loadbalancer.server.port=10086" restart: unless-stopped volumes: letsencrypt:
فایل را ذخیره کنید و ببندید.
این مانیفست تصریح میکند:
- services: دو کانتینر، پلتفرم مدیریت VPN را ارائه میدهند:
- traefik: Processes incoming connections, provisions TLS certificates, and routes traffic to WGDashboard.
- wgdashboard: اتصالات ورودی را پردازش میکند، گواهینامههای TLS را فراهم میکند و ترافیک را به WGDashboard هدایت میکند.
- image: ایمیج WGDashboard شامل محیط اجرایی کامل به همراه ابزارهای WireGuard است.
- container_name: قراردادهای نامگذاری منسجم، مدیریت کانتینر را ساده میکنند.
- command (Traefik): ادغام Docker را فعال میکند، شنودکنندههای دو پورت (۸۰/۴۴۳) را پیکربندی میکند، تغییر مسیر پروتکل را اعمال میکند و اتوماسیون گواهی Let’s Encrypt را فعال میکند.
- ports: Traefik پروتکل HTTP/HTTPS را برای رابط وب ارائه میدهد. WGDashboard پورت UDP 51820 را برای اتصالات WireGuard VPN ارائه میدهد.
- expose (WGDashboard): پورت ۱۰۰۸۶ را در شبکه کانتینر برای دسترسی Traefik باز میکند.
- volumes: فایلهای اتصال (
./conf,./data) پیکربندیهای WireGuard و دادههای برنامه را در طول راهاندازی مجدد حفظ میکنند. volume نامگذاری شدهletsencryptدادههای گواهی را حفظ میکند. - cap_add: قابلیت
NET_ADMINمورد نیاز برای WireGuard جهت مدیریت رابطهای شبکه درون کانتینر را اعطا میکند. - sysctls: ارسال IP را در داخل کانتینر برای مسیریابی VPN فعال میکند.
- labels (WGDashboard): دستورالعملهای مسیریابی Traefik که پروکسی را فعال میکنند، تطبیق نام میزبان را مشخص میکنند، گواهیهای SSL را پیوست میکنند و پورت backend را تعریف میکنند.
- restart: unless-stopped: بازیابی خودکار پس از خرابی یا راهاندازی مجدد سیستم را پیادهسازی میکند.
- services: دو کانتینر، پلتفرم مدیریت VPN را ارائه میدهند:
- سرویسها را ایجاد و شروع کنید.console
$ docker compose up -d - تأیید کنید که سرویسها در حال اجرا هستند.console
$ docker compose psخروجی:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS traefik traefik:v3.6 "/entrypoint.sh --pr…" traefik 30 seconds ago Up 29 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp wgdashboard ghcr.io/wgdashboard/wgdashboard:latest "/bin/bash /entrypoi…" wgdashboard 30 seconds ago Up 29 seconds 0.0.0.0:51820->51820/udp, 10086/tcpهر دو کانتینر عملیاتی هستند. WGDashboard پیکربندیهای WireGuard را مدیریت میکند در حالی که Traefik اتصالات HTTPS را روی پورتهای ۸۰ و ۴۴۳ مدیریت میکند.
- گزارشهای مربوط به سرویسها را مشاهده کنید.console
$ docker compose logsبرای اطلاعات بیشتر در مورد مدیریت پشته Docker Compose، به مقاله نحوه استفاده از Docker Compose مراجعه کنید.
دسترسی به داشبورد WG #
در این بخش، به رابط وب WGDashboard دسترسی پیدا میکنید و تنظیمات اولیه مدیریت را تکمیل میکنید. پس از ورود به سیستم، میتوانید رابطهای WireGuard را مدیریت کنید، کلاینتهای همتا ایجاد کنید و فعالیت VPN را از یک داشبورد متمرکز نظارت کنید.
- WGDashboard را در مرورگر وب خود باز کنید.
https://wgdashboard.example.com
آموزش نصب WGDashboard - با اطلاعات پیشفرض وارد شوید.
- Username:
admin - Password:
admin
- Username:
- در صورت درخواست، یک حساب کاربری مدیر جدید ایجاد کنید. در صورت تمایل، احراز هویت چند عاملی (MFA) را پیکربندی کنید یا برای رد شدن، روی «I don’t need MFA» کلیک کنید.

- برای پیکربندی گزینههای WGDashboard از جمله پیشفرضهای همتا، تنظیمات DNS و SMTP برای اعلانهای ایمیل، به Settings بروید.

پیکربندی پیشفرض کلاینت WireGuard را فعال کنید #
به طور پیشفرض، WGDashboard یک پیکربندی WireGuard(wg0) ایجاد میکند اما به طور خودکار آن را فعال نمیکند. در این بخش، پیکربندی پیشفرض را فعال میکنید تا رابط WireGuard فعال و آماده پذیرش اتصالات کلاینت شود.
- به بخش WireGuard Configurations بروید و روی
wg0کلیک کنید تا تنظیمات آن باز شود.
- برای فعال کردن پیکربندی WireGuard، کلید وضعیت Status را تغییر دهید.

پس از فعال شدن پیکربندی WireGuard، رابط
wg0درون کانتینر docker ایجاد میشود و شروع به گوش دادن به پورت UDP پیکربندی شده میکند.
ایجاد پیکربندی جدید WireGuard #
در این بخش، شما یک رابط WireGuard جدید ایجاد میکنید که مستقل از پیکربندی پیشفرض عمل میکند. این رویکرد به شما امکان میدهد کلاینتها، محیطها یا سیاستهای مسیریابی را بدون تغییر رابطهای موجود، از هم جدا کنید.
- به Home بروید و روی + Configuration کلیک کنید.

- رابط را پیکربندی کنید.

از مقادیر مثال زیر استفاده کنید:
- Name:
wg1 - Listen Port:
۵۱۸۳۰ - IP Address/CIDR:
۱۰.۱.۰.۱/۲۴
- Name:
- برای ایجاد رابط WireGuard روی Save کلیک کنید.
هر رابط WireGuard باید از یک پورت UDP و محدوده آدرس IP منحصر به فرد استفاده کند. هنگام افزودن رابطهای اضافی، بخش ports Docker Compose را بهروزرسانی کرده و قوانین فایروال را بر اساس آن تنظیم کنید.
ایجاد Client Peers #
در این بخش، شما برای رابط WireGuard، کلاینتهای همتا ایجاد میکنید و فایلهای پیکربندی را که کلاینتها برای اتصال به VPN استفاده میکنند، تولید میکنید.
- از Home ، رابط WireGuard مورد نظر خود را انتخاب کنید (برای مثال، wg0).
- برای افزودن کلاینت جدید، روی + Peer کلیک کنید.

- نام کلاینت (مثلاً
wgclient) را وارد کنید و IP های مجاز را پیکربندی کنید. از گزینه های پیشرفته برای Advanced Options DNS استفاده کنید.
- برای ایجاد peer روی Add کلیک کنید.
- روی منوی
...در همتا کلیک کنید و برای خروجی گرفتن از فایل پیکربندی کلاینت، Download را انتخاب کنید.فایل پیکربندی دانلود شده شامل کلیدها، جزئیات نقطه پایانی و اطلاعات مسیریابی مورد نیاز برای اتصال کلاینت به VPN است.
اتصال کلاینت ها به VPN #
در این بخش، پیکربندی WireGuard تولید شده را به یک دستگاه کلاینت وارد میکنید و یک اتصال VPN امن به سرور برقرار میکنید.
- کلاینت WireGuard را برای دستگاه خود (ویندوز، macOS، لینوکس، iOS یا اندروید) دانلود کنید.
- فایل پیکربندی کلاینت دانلود شده از WGDashboard را وارد کنید.

- برای اتصال به VPN، روی Activate کلیک کنید.

- با بررسی آدرس IP عمومی خود، اتصال VPN را تأیید کنید.console
$ curl ifconfig.me/ipخروجی باید آدرس IP عمومی سرور VPN شما را نشان دهد.
- با رفتن به بخش Clients یا انتخاب Details برای یک همتای خاص، اتصالات فعال را در WGDashboard رصد کنید.

نتیجه گیری #
شما با موفقیت WGDashboard را با استفاده از Docker Compose به همراه Traefik به عنوان یک پروکسی معکوس و SSL خودکار از طریق Let’s Encrypt مستقر کردهاید. این تنظیمات کانتینری، یک رابط مبتنی بر وب برای مدیریت رابطهای WireGuard، ایجاد پیکربندیهای کلاینت و نظارت بر اتصالات VPN فراهم میکند. برای ویژگیهای پیشرفته از جمله دسترسی به API و مدیریت چند سرور، به مستندات WGDashboard مراجعه کنید.












