مشکلات احتمالی (بخوانید)
- اگر سرور شما مشکل dns دارد اول مشکل ان را رفع کنید یا از سرور و Os ای استفاده کنید که چنین مشکلی ندارد. حتی میتوانید dns را از قسمت کانفیگ وایرگارد پاک کنید
- ترجیجا از دبیان 12 استفاده نمایید. من بر روی دبیان 12 و amd مشکلی نداشتم
- همیشه اگر مشکلی دارید لطفا فسمت لاگ ها را نگاه کنید یا گزینه debug در config.yaml را به true تغییر دهید
- اگر سرویس شما به هنگام ریست از کار می افتد مشکل شما در virtual env است . پوشه venv در /usr/local/bin/Wireguard-panel/src . ان مشکل را برطرف کنید
- اگر از os ای استفاده میکنید که مشکلات iproute و wireguard tools دارد لطفا اطمینان یابید که چنین مشکلاتی ندارد . در این پنل از مسیر اصلی دستورات که داخل sbin هستند استفاده شده است/چند نمونه مثال پایین اوردم. اگر این مورد خیلی اذیت کرد لطفا اطلاع دهید که مسیر اصلی را پاک کنم و این مشکل حل بشود اما نباید روی بیشتر os ها مشکلی داشته باشد
- فعلا مسیر اصلی دستورات را پاک کردم و این موضوع در bandit به عنوان مورد قابل بازبینی در نظر گرفته میشود تا ببینم بعدا چی میشه
- باید توجه داشته باشید که از داخل موبایل، من پنل را تست نکردم.ممکن است با مشکلاتی مواجه شوید یا با کامپیوتر به ان متصل شوید یا برای مویایل از طریق بات استفاده نمایید.
- کانفیگ وایرگارد را از wg0.conf آغاز کنید و نام های رندوم ندهید
- یوزر و پسورد خود را فراموش نکنید و از گزینه remember me استفاده نمایید
- لطفا حتما به سیستم عامل نصبی خود دقت کنید که چنین مشکلاتی نداشته باشد وگرنه پنل برای شما کار نخواهد کرد.
- اگر دیگران هم دوست داشتند میتوانند سایر os ها را تست کنند و به پنل اضافه کنند .
- پنل اختلالی در تانل شما به وجود نمی اورد. از لوکال ایپی ها همراه با تانل استفاده نمایید. حتما cache و data storage کلاینت خود را در موبایل پاک نمایید. ممکن تانل شما برای این مورد کار نکند.
- از ایپی لوکال در صورت محدودیت بر روی سرورتان استفاده نمایید. به طور مثال geneve - لینک اسکریپت لوکال : https://github.com/Azumi67/6TO4-GRE-IPIP-SIT
- بعد از اپدیت پنل همیشه پنل را ریست کنید. اپدیت هم که به این صورت میباشد که wire را میزنید و گزینه 10 یا از اسکریپت دانلود ، ان را داخل سرور اجرا میکنید و گزینه اول. بعد از اتمام اپدیت، لطفا پنل و بات را ریست نمایید
sudo apt update
sudo apt install iproute2
which ip
باید این مسیر /sbin/ip را نشان دهد
export PATH=$PATH:/sbin:/usr/sbin
sudo chmod +x /sbin/ip
و برای وایرگارد
sudo apt update
sudo apt install wireguard-tools
which wg-quick
sudo ln -s $(which wg-quick) /sbin/wg-quick
sudo chmod +x /sbin/wg-quick
which wg
باید به این صورت باشد
/usr/bin/wg
مشکلات DNS (بخوانید)
- سرور شما مشکل dns داشته باشد هم کارایی پنل پایین خواهد امد و هم بات از کار می افتد. من از داخل اسکریپت قسمت dns هم برداشتم
- اگر سرور شما مشکل dns دارد، میتوانید از اوپتیمایزر استفاده کنید
- بر روی سرور debian 12 و ubuntu24 میتوانید از دستورات زیر استفاده نمایید
sudo nano /etc/systemd/resolved.conf
این مقادیر را به آن اضافه کنید
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=1.0.0.1 8.8.4.4
### now Ctrl + x , y to save ###
sudo systemctl restart systemd-resolved
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
حالا بررسی کنید که تغییرات اعمال شده است
cat /etc/resolv.conf
- اگر کانفیگ /etc/resolv.conf شما هر چند دقیقه ریست میشود هم میتوانید با کرون جاب اینکار را انجام دهید
crontab -e
اینو اضافه کنید
* * * * * echo -e "nameserver 1.1.1.1\nnameserver 1.0.0.1" > /etc/resolv.conf
ذخیره کنید و خارج شوید
- اگر مشکل شما حتی با اوپتیمایزر و پاک کردن dns وایرگارد و حتی systemd-resolve و ست کرون جاب هم درست نشد باید سرور خود را عوض کنید . ترجیحا از دبیان 12 amd استفاده نمایید
- من تا حالا روی سرور های دیجیتال اوشن که تست کردم مشکلی نداشتم.
نحوه گزارش و debug
- اگر مشکلی در خود پنل و اجرا نشدنش دارید با دستورهای زیر میتوانید مشکل را متوجه شوید
systemctl status wireguard-panel
systemctl stop wireguard-panel
---------------------------------------
## change debug=false >> debug=true
nano /usr/local/bin/Wireguard-panel/src/config.yaml
پس از تغییر دیباگ، ان را ذخیره کنید و خارج شوید
/usr/local/bin/Wireguard-panel/src/venv/bin/python3 /usr/local/bin/Wireguard-panel/src/app.py
حالا باید ببینید چه خطایی گرفتید تا بشود مشکل شما را فهمید
- برای سرویس های بات هم به همین صورت عمل میکنیم
بسته به نوع سرویس فارسی یا انگلیسی
systemctl status telegram-bot-fa
systemctl stop telegram-bot-fa
/usr/local/bin/Wireguard-panel/src/venv/bin/python /usr/local/bin/Wireguard-panel/src/telegram/robot-fa.py
برای انگلیسی
systemctl status telegram-bot-en
systemctl stop telegram-bot-en
/usr/local/bin/Wireguard-panel/src/venv/bin/python /usr/local/bin/Wireguard-panel/src/telegram/robot.py
حالا باید خطا را ببینید و مشکل را حل کنید
- پس از رفع مشکل، سرویس ها را ریست نمایید
تانل
- من خودم از لوکال ایپی geneve با پورت فوروارد خودم استفاده میکنم (مصرف شخصی دارم) : https://github.com/Azumi67/proxyforwarder
- شما میتوانید از لوکال و dokodemo استفاده نمایید.
- ممکن است پورت فوروارد به کار شما نیاید. برای همین میتوانید از ریورس های frp یا backhaul و حتی تانل udp2raw و چیزل استفاده نمایید.
- برای لوکال ایپی هم میتوانید از این اسکریپت استفاده نمایید : https://github.com/Azumi67/6TO4-GRE-IPIP-SIT
- اگر باز هم مشکل داشتید باید چند کار انجام دهید . با نصب اوپتیمایزر هم تانل را تست کنید و حواستان به فایروال ufw هم باشد
- دقت کنید گاهی اوقات کلاینت وایرگارد در کامپیوتر و موبایل میتواند باعث stuck شدن 92B شود. کامپیوتر را ریست کنید و در داخل موبایل date storage و cache را خالی نمایید
- اگر باز هم مشکل داشتید باید سرور خارج خود را عوض کنید. سپس مشکل شما حل میشود
- بیشتر مورد های تانل وایرگارد در همین موارد خلاصه میشود
توضیحات:
- این پنل توسط من کاملا تست شده است و کار میکند. اگر مشکلی در نصب آن داشتید با مطالعه نحوه ریپورت کردن، ان را در گیت هاب گزارش دهید.
- این پروژه آموزشی برای یادگیری بیشتر در این زمینه میباشد و امیدوارم به کار شما بیاید ( استفاده از آن بر عهده شما میباشد).
- اگردرخواست رفع باگی یا اضافه کردن feature ای داشتید تنها در قسمت Issues بیان کنید تا در صورت توان، مشکل را حل و درخواستی را اضافه کنم.
- اطمینان حاصل کنید که قبل از نصب پنل، مشکل dns ندارید. سرور ریبیلد شده باشد. اگر مشکل dns داشته باشد ممکن است سرور شما در دریافت اطلاعات کند باشد و همچنین در بات هم مشکلدار خواهد شد. سیستم عامل خود را بررسی کنید.
- در این داشبورد از طریق خود پنل، امکان نصب بات تلگرام وجود دارد. باید دقت نمایید که نصب فارسی با نصب انگلیسی متفاوت میباشد و از قسمت مربوطه نصب نمایید
- در این پنل از json برای محدودیت حجم و مانیتورینگ استفاه شده است.
- در این پنل امکان جابجایی فایل های پشتیبان از سروری به سرور دیگر امکان پذیر است تنها باید دقت کنید که نام اینترفیس وایرگارد را تغییر ندهید و اینترفیس اصلی eth یا ens در کانفیگ وایرگارد ذکر شود. به طور مثال اگر در سرور اول اینترفیس اصلی شما eth است در سرور دوم در صورت تغییر اینترفیس اصلی، ان را در wg0.conf ویرایش نمایید.
- در صورت تانل کردن وایرگارد چه با پورت فوروارد یا تانل های دیگر، باید دقت نمایید در صورت 92B در قسمت RX ممکن است مشکل شما با ریست کردن کامپیوتر خود و خالی کردن data storage و cache وایرگارد در موبایل خود حل شود و حتما به دلیل مشکل تانل یا پنل نمیباشد چون پنل کاری با تانل شما ندارد
- در این پنل تلاش کردم در حد توان از sanitazation و استفاده از مسیر اصلی دستورات استفاده بشود تا جای ممکن از shell injection جلوگیری شود.
- در حال حاضر مسیر های اصلی دستورات برداشته شده است تا بعدا شاید دوباره اضافه کنم
- توجه داشته باشید دکمه فعال و غیر فعال کردن، حجم و زمان هم ریست میکند و در بات هم به همین صورت است
- بعدا بررسی sanitization قبل از subprocess تکمیل خواهد شد که خطاهای bandit هم کم شود
- بر روی ubuntu 24 & debian 12 تست شده است
- دقت نمایید برای اینکه پنل و feature های حجم و زمان به درستی کار کند باید سرویس wireguard-panel همیشه بدون مشکل کار کند. بهتر است گهگاهی این سرویس را بررسی کنید. البته در صورت نصب بات، در صورت قطع سرویس به شما notify میشود.
- مدیریت حجم به صورت MiB , GIB
- مدیریت زمان به صورت روز و ماه و ساعت و دقیقه
- نمایش available ips برای اساس ایپی پرایوت انتخابی شما ( تنها 30 تا را به صورت همزمان در پنل نشان میدهد)
- استفاده از Json فایل برای پشتیبانی و مدیریت و مانیتورینگ
- امکان پشتیبان گیری اتوماتیک و دستی و بازگردانی آن
- نمایش اینترفیس وایرگارد و کاربران
- نمایش cpu و disk و ram در صفحه اصلی
- پشتیبانی از زبان فارسی و انگلیسی تنها با یک بار نصب
- دارای اسکریپت نصب
- دارای ربات ادمین برای ساخت و ویرایش کاربر و پشتیبان گیری و سایر موارد به زبان انگلیسی و فارسی ( از داخل پنل نصب میشود)
- دارای وارپ پایه به صورت wgcf و xray (به صورت ازمایشی اضافه شده است)
- امکان تغییر دادن تنظیمات وایرگارد و flask از داخل پنل
- پشتیبانی از tls توسط certbot
- دارای نمایش قالب default برای کاربران و qr code و دانلود کانفیگ
- دارای ریست حجم و زمان و دکمه های فعال یا غیر فعال کردن
- دارای pagination به این صورت که هر 10 کاربر در یک صفحه قرار میگیرد
- دارای نمایش لاگ و ایپی های سرور و سرویس بات و وارپ و غیره
- دارای نمایش notification برنامه در ربات ادمین
- دارای محاسبه زمان پس از اتصال اول
- پشتیبانی بات از چندین admin chat id
- پشتیبانی endpoint از ساب دامین و ایپی
آپدیت
- ربات فارسی و انگلیسی اپدیت شد که منو های compact mode داشته باشد
- اسکریپت اپدیت شد که با فراخوانی wire اجرا شود
- اپدیت app.py برای ریدایرکت صفحه register به لاگین در صورت وجود نام کاربری و گذرواژه ( thanks to opiran for mentioning that)
- اپدیت script-fa.js برای حل مشکل refresh peer list در هنگام فیلتر فعال.
- مشکل بالا نیامدن پنل با اضافه شدن pytz module حل شد
- فغلا مسیر اصلی دستورات را پاک کردم و این موضوع در bandit به عنوان مورد قابل بازبینی در نظر گرفته میشود تا ببینم بعدا چی میشه
- اپدیت اسکریپت : از این به بعد میتوانید توسط دستور اسکریپت چه با download.sh یا wire به اپدیت پنل بپردازید ( به صورت ازمایشی اضافه شده است)
- برای بات : تنها chat admin id دسترسی به بات را خواهد داشت
- برای بات : در قسمت peer creation ، اطلاعات کاربر ساخته شده کامل تر شد و mtu هم به ان اضافه شد
- برای بات : فسمت first usage همان محاسبه زمان پس از اتصال اول میباشد
- برای بات : در قسمت settings مشکل mtu برطرف شد
- اپدیت استفاده از چندین admin chat id اضافه شد. با کاما استفاده نمایید مانند 674565756, 6545675
- اپدیت استفاده از ساب دامین به جای Ip هم اضافه شد
- اپدیت encryption فایل telegram.yaml اضافه شد
- اپدیت برای disable & enable notifications که بر اساس health app.py کار کند
- اپدیت pagination انجام شد که دیگر به صفحه نخست باز نگردد
- بات فارسی مشکل پاک شدنش برطرف شد
- اپدیت keepalive به بات اضافه شد
نصب پنل و بات
- اجرای اسکریپت دانلود
sudo apt update && sudo apt install -y curl && curl -fsSL -o download.sh https://raw.githubusercontent.com/Azumi67/Wireguard-panel/refs/heads/main/download.sh && bash download.sh
- نخست گزینه ها را به ترتیب نصب میکنید تا به گزینه 4 برسید
- نخست پورت پنل خود را وارد میکنید و سایر موارد را در صورت منابع بهتر در صورت نیاز تغییر میدهید یا به صورت دیفالت به قسمت بعد میروید
- کلید رمز عبور برنامه را وارد نمایید
- در صورت نیاز از tls گزینه yes را وارد نمایید و در صورت نیاز نداشتن به این مورد گزینه No را وارد میکنید و بدون tls استفاده مینمایید
- در صورت وارد کردن yes برای tls، باید ساب دامین و ایمیل خود را وارد نمایید. اطمینان یابید که dns ساب دامین شما به درستی به ایپی سرور شما لینک شده است
- در صورت مشکل نصب، نصب certbot را به صورت دستی انجام دهید و سپس به این مرحله بازگردید
- در صورت استفاده نکردن از tls ادرس داشبورد شما http://publicip:port/home است و در صورت استفاده از tls به صورت https://subdomain:port/home خواهد بود
- قسمت بعدی ست کردن کانفیگ وایرگارد میباشد
- همیشه با wg0 کانفیگ را اغاز کنید و سپس wg1 و wg2
- ایپی پرایوت ورژن 4 باشد و نیازی به ایپی 6 نمیباشد
- پورت و سایر موارد را وارد نمایید.
- در صورت استفاده از فایروال، پورت و رنج پرایوت را باز کنید
- این مورد برای اموزش است و تنها پس از نصب اسکریپت و داخل پنل انجام میشود. دقت نمایید که برای استفاده از ربات به زبان انگلیسی، نخست زبان پنل را انگلیسی کنید و سپس ربات را نصب نمایید. فارسی هم به همین صورت میباشد
- برای نصب بات از داخل پنل میتوانید انجام دهید. همان طور که در اسکرین شات مشاهده میکنید توکن باتی که از @BotFather دریافت کردید قرار دهید
- ادرس صفحه هم بر اساس استفاده از tls یا بدون آن خواهد بود. اگر بدون tls است باید http://publicip:port و در صورت آستفاده از tls باید https://subdomain:port قرار دهید
- قسمت بعدی همان کلید api است که از پنل دریافت کرده اید
- قسمت بعدی هم admin chat id رباتی که داخل botfather ساختید را دریافت میکنید . از طریق @userinfobot میتوانید نام ربات خود را بدهید و این مورد را بدست اوردید.
- برای اضافه کردن چندین admin chat id کافی است به این صورت وارد نمایید 676676767 ,67676767 ( استفاده از کاما مانند مثال)
- لطفا تنها از یک بات استفاده نمایید. یا فارسی یا انگلیسی
- سپس گزینه 6 و 7 اسکریپت را نصب کنید و پنل شما اماده است
- در صفحه اصلی ادرس داشبورد خود را مشاهده میکنید
نصب پنل به صورت دستی
- اجرای دستورات
sudo apt update && sudo apt install git -y
cd /usr/local/bin
sudo git clone https://github.com/Azumi67/Wireguard-panel.git
cd /usr/local/bin/Wireguard-panel
sudo apt install -y python3 python3-pip python3-venv git redis nftables iptables wireguard-tools iproute2 \
fonts-dejavu certbot curl software-properties-common wget
sudo systemctl enable redis-server.service
sudo systemctl start redis-server.service
sudo systemctl status redis-server.service
# creating env
python3 --version
sudo apt update && sudo apt install python3 python3-pip python3-venv
python3 -m venv /usr/local/bin/Wireguard-panel/src/venv
source /usr/local/bin/Wireguard-panel/src/venv/bin/activate
pip install --upgrade pip
pip install python-dotenv python-telegram-bot aiohttp matplotlib qrcode "python-telegram-bot[job-queue]" pyyaml flask-session Flask SQLAlchemy Flask-Limiter Flask-Bcrypt Flask-Caching jsonschema psutil pytz requests pynacl apscheduler redis werkzeug jinja2 fasteners gunicorn pexpect cryptography Pillow arabic-reshaper python-bidi
sudo apt-get install -y libsystemd-dev
deactivate
# permissions
chmod 644 /usr/local/bin/Wireguard-panel/src/config.yaml
chmod -R 600 /usr/local/bin/Wireguard-panel/src/db
chmod -R 700 /usr/local/bin/Wireguard-panel/src/backups
chmod 644 /usr/local/bin/Wireguard-panel/src/telegram/telegram.yaml
chmod 644 /usr/local/bin/Wireguard-panel/src/telegram/config.json
chmod 644 /usr/local/bin/Wireguard-panel/src/install_progress.json
chmod 644 /usr/local/bin/Wireguard-panel/src/api.json
chmod 744 /usr/local/bin/Wireguard-panel/src/install_telegram.sh
chmod 744 /usr/local/bin/Wireguard-panel/src/install_telegram-fa.sh
chmod -R 644 /usr/local/bin/Wireguard-panel/src/static/fonts
chmod -R 644 /usr/local/bin/Wireguard-panel/src/telegram/static/fonts
chmod -R 755 /etc/wireguard
- Flask & gunicorn configuration :
nano /usr/local/bin/Wireguard-panel/src/config.yaml
###
flask:
port: 8443
tls: true
cert_path: "/etc/letsencrypt/live/subdomain.com/fullchain.pem"
key_path: "/etc/letsencrypt/live/subdomain.com/privkey.pem"
secret_key: "azumi"
debug: false
gunicorn:
workers: 2
threads: 1
loglevel: "info"
timeout: 120
accesslog: ""
errorlog: ""
wireguard:
config_dir: "/etc/wireguard"
##
- Wireguard configuration :
nano /etc/wireguard/wg0.conf
##
[Interface]
Address = 166.66.66.1/25
ListenPort = 20821
PrivateKey = aBY+lbhuOlBknLDDi2MbI11LZKEDGOSsvIbWQDuCSX0=
MTU = 1380
DNS = 1.1.1.1
PostUp = iptables -I INPUT -p udp --dport 20821 -j ACCEPT
PostUp = iptables -I FORWARD -i eth0 -o wg0 -j ACCEPT
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp --dport 20821 -j ACCEPT
PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
##
Commands for generating private & pub key :
wg genkey | tee privatekey
cat privatekey | wg pubkey > publickey
- Wireguard panel service
nano /etc/systemd/system/wireguard-panel.service
##
[Unit]
Description=Wireguard Panel
After=network.target
[Service]
User=root
WorkingDirectory=/usr/local/bin/Wireguard-panel/src
ExecStart=/usr/local/bin/Wireguard-panel/src/venv/bin/python3 /usr/local/bin/Wireguard-panel/src/app.py
Restart=always
Environment=PATH=/usr/local/bin/Wireguard-panel/src/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=LANG=en_US.UTF-8
Environment=LC_ALL=en_US.UTF-8
[Install]
WantedBy=multi-user.target
##
sudo apt update && sudo apt install -y curl && apt install git -y && curl -fsSL -o download.sh https://raw.githubusercontent.com/Azumi67/Wireguard-panel/refs/heads/main/download.sh && bash download.sh
- باز فراخوانی اسکریپت
chmod +x /usr/local/bin/Wireguard-panel/src/setup.sh
wire