من همیشه برای کارهای شخصیم یک سرور مجازی دارم که تا حدودی هم نقش موش آزمایشگاهی رو برام بازی میکنه. تا حالا همیشه از سرور مجازی اوبونتو استفاده میکردم و هرچی لازم بود رو روش نصب و کانفیگ میکردم اما چندتا مشکل همیشه وجود داشت. یکی اینکه چون نقش موش آزمایشگاهی رو هم برام داشت بعد یه مدت پر از پکیجهای بلااستفاده و کانفیگهایی که دیگه لازمشون نداشتم میشد و علاوه بر اون آپدیت نگه داشتن سیستمعامل تو طولانی مدت هم خودش گاهی برام دردسر درست میکرد. این موارد باعث شد که یه تغییرات اساسی تو کانفیگی که استفاده میکنم بدم و نتیجه چیزی شد که در ادامه قراره بگم. با ذکر این نکته که کانفیگهایی که در ادامه میگم فقط برای یک بازه چند روزه تست کردم و نتیجه رضایت بخشی ازشون گرفتم و حالا همونطور که دارم رو سرور شخصیم پیادشون میکنم اینجا هم مینویسم تا هم برای آینده خودم باشه و شاید برای کسی هم مفید بود.
برا سیستم عامل تصمیم گرفتم برم سراغ Clear Linux چون تو تستی که انجام دادم توزیع پایداری بود و رولینگ رلیز بودنش هم از باعث میشه خیلی با بحث بهروز نگه داشتن سیستمعامل به مشکل نخورم. نکته جالب دیگه این توزیع این بود که توسط اینتل توسعه داده شده و سازگاری خیلی خوبی با سیپییوهای اینتل داره (البته گویا با amd هم سازگاری خوبی داره – منبع) که عموما سرورهایی که هاستینگهای ایرانی میدن هم از سیپییو اینتل استفاده میکنن. تنها چیزی که ممکنه بعضی افراد رو از این توزیع منصرف کنه ریپوی نرمافزاریش هست که نسبت به توزیعهای دیگه خیلی بزرگ نیست. پیشنهاد میکنم اگر به برنامههای خاصی برای کارهاتون نیاز دارین قبل استفاده از این توزیع لیست برنامههاش رو چک کنین. اما قرار نیست به همون برنامهها اکتفا کنم یا برم سراغ پروسه پر دردسر کامپایل کردن برنامهها! قراره برم سراغ داکر… با داکر تجربه زیادی ندارم و عملا بحث مهاجرت به Clear Linux باعث شد برم و کار با داکر رو یاد بگیرم. و خب داکرهاب هم پر از برنامههای آماده هست که میشه از اونا کمک گرفت یا درصورت نیاز هم میتونم کانتینر مورد نیازم رو خودم بسازم.
سوال: چرا داکر؟ دلیل اصلیش این بود که برنامهها تو یک محیط ایزوله اجرا میشن و نگران کانفیگها و مشکلاتی که ممکنه ایجاد کنن نخواهم بود. مورد بعد که جذابیت داکر رو برام چند برابر کرد این بود که خیلی از ابزارهایی که لازمه نصب و کانفیگ کنم (شاید بشه گفت همشون) براشون ایمیج داکر وجود داره و دردسر من برای نصب و انجام تنظیمات فوقالعاده کم میشه و ابزارهایی که گاهی ممکن بود یک ساعت نصبشون اذیتم کنه رو الآن میتونم حتی تو زیر یک دقیقه نصب و راهاندازی کنم. نکته بعدی هم اینه که همونطور که گفتم این سرور قراره نقش موش آزمایشگاهی برای تست کد رو هم برای من بازی کنه، هرچند که داکر ماشین مجازی نیست ولی میتونم تا حدودی مثل ماشین مجازی ازش استفاده کنم و کدهام رو توی یک کانتینر اوبنتو یا هر سیستم عاملی که لازم داشتم بدون دردسر تست کنم و بعد از تموم شدن کارم هم میتونم اون کانتینر رو پاک کنم و تمام آثار کدی که داشتم تست میکردم از بین برن.
من از ایمیجهایی که مال LinuxServer.io هست برای چندتا از کانفیگها استفاده میکنم. مزیتی که استفاده از ایمیجهای این تیم برام داشت این بود که این ایمیجها کاملا با هم هماهنگ بودن ومثلا برای ریورس پروکسیای که لازم دارم درست کنم فایلهای لازم رو داره و فوقالعاده ساده و بدون هیچ مشکلی میتونم ریورس پروکسی رو کانفیگ کنم.
خب توضیحات کافیه بریم سراغ نصب سیستمعامل و ادامه داستان…
نصب Clear Linux و Docker
چون Clear Linux جزو سیستمعاملهایی نیست که هاستینگها به صورت پیشفرض ارائه بدن، اول از همه از هاستینگ میپرسم که امکان نصبش وجود داره یا نه و جوابی که میگیرم اینه که میتونم لینک ایزو رو بهشون بدم تا مونت کنن و با دسترسی vnc میتونم خودم نصبش رو انجام بدم. خیلی هم عالی! لینک ایزو رو بهشون میدم و دسترسی vnc رو میگیرم و نصب رو با توجه به راهنمای نصب انجام میدم. دوتا نکته مهم رو هم فراموش نمیکنم، اولی اینکه به پشتیبانی میگم که بوت رو روی UEFI قرار بده و نکته دوم هم اینکه تنظیمات شبکه رو هم پشتیبان میگیرم چون باید به صورت دستی تنظیم بشه. بعد از نصب از طریق vnc به سرور وصل میشم و این نکته رو هم میدونم که به صورت پیشفرض نمیتونم با یوزر root لاگین کنم و باید با یوزری که در طول نصب ساختم لاگین کنم و بعد با دستور sudo su سوییچ کنم رو یوزر روت. برای تنظیمات شبکه دستور nmtui رو میزنم و تنظیمات شبکه رو انجام میدم. سرور رو ریاستارت میکنم و بهش با ssh متصل میشم تا مطمئن بشم تنظیمات شبکه رو درست انجام دادم.
تو مرحله بعد لازمه که آپدیت خودکار رو غیر فعال کنم. تو ظاهر گزینه خوبیه ولی مشکلش اینه که بعد از آپدیت باید سیستم رو ریاستارت کنم یا سرویسهایی که آپدیت شدن رو دونه دونه ریاستارت کنم وگرنه رم به شکل عجیبی پر میشه و تا ریاستارت نشدن سرویسها پر میمونه. برای غیر فعال کردن آپدیت خودکار این یک دستور رو میزنم:
swupd autoupdate --disable
خب سیستم رو هم آپدیت میکنم:
swupd update
حالا داکر رو هم نصب میکنم:
swupd bundle-add cloud-control
و خب همیشه لازم دارم که دیمن داکر با روشن شدن سرور اجرا بشه:
systemctl enable docker
فعلا کار آماده کردن سیستم عامل و داکر تموم شده. سیستم عامل رو ریاستارت میکنم و میرم ادامه کار برای اجرای کانتینرهایی که نیاز دارم.
یک آماده سازی کوچیک برای داکر
من قراره یک وبسرور رو نصب کنم و ریورس پروکسی کنمش روی باقی کانتینرهایی که ران میکنم، به همین خاطر یک شبکه لازمه درست کنم که وب سرورم و بقیه کانتینرها بتونن از طریق اون شبکه با هم در ارتباط باشن. شبکه رو اینطوری درست میکنم:
docker network create nginx-letsencrypt-net
در ادامه برای بعضی کانتینرها لازمه که یک دایرکتوری داشته باشم که تنظیماتشون و باقی مواردی که نیاز دارن توی اون دایرکتوری ذخیره بشن و اون دایرکتوری هم به کانتینر مپ بشه. دایرکتوریهام رو تو مسیر /etc میسازم و یک دایرکتوری هم به اسم کانتینری که میخوام ران بکنم میسازم و اون دایرکتوری رو به کانتینر مورد نظر مپ میکنم.
کانتینر letsencrypt
linuxserver/letsencrypt یک ایمیج هست که لتسانکریپت رو به همراه nginx و php داره وخیلی راحت میتونم یک اتباط امن باهاش داشته باشم. اینطوری ران میکنمش (البته دامنه هم از قبل روی سرور ست کردم):
docker run \
--net=nginx-letsencrypt-net \
--name=nginx-letsencrypt \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-e URL=<domain> \
-e VALIDATION=http \
-e EMAIL=<email> \
-e DHLEVEL=2048 \
-e ONLY_SUBDOMAINS=false \
-e STAGING=false \
-p 443:443 \
-p 80:80 \
-v /etc/nginx-letsencrypt:/config \
linuxserver/letsencrypt
بعد از چند دقیقه پیغام Server ready رو میگیرم. برای اطمینان از درست بودن همه چیز آدرس سرور رو باز میکنم و یک صفحه ساده که بهم خوشآمد میگه و تایید میکنه که وبسرور به خوبی داره کار میکنه رو میگیرم. فعلا دیگه نیازی به وبسرور ندارم و چون قراره در ادامه کانتینر رو با تنظیمات کمی متفاوت اجرا کنم، کانتینر رو پاک میکنم(اگر در ادامه جایی گفتم کانتینر وب سرور رو پاک میکنم همین دستور منظورمه):
docker rm -f nginx-letsencrypt
نکته: من میخوام که وب سرورم برای فایلهای html و php و همینطور برنامههای دیگهای مثل تورنتلیچ که قراره به شکل سابفولدر در دسترس باشن ازم پسورد بخواد. برای گرفتن پسورد اول لازمه که یک فایل داشته باشم که پسوردها داخلش ذخیره بشن، از این راهنما کمک میگیرم و با ۲تا دستور زیر یک فایل که حاوی یوزر و پس هست میسازم:
sh -c "echo -n '<username>:' >> /etc/nginx-letsencrypt/nginx/.htpasswd"
sh -c "openssl passwd -apr1 >> /etc/nginx-letsencrypt/nginx/.htpasswd"
حالا لازمه به nginx بگم که باید از این فایل پسورد برای فایلهای html و php استفاده کنه. کانفیگ nginx رو باز میکنم:
nano /etc/nginx-letsencrypt/nginx/site-confs/default
و کانفیگ زیر رو تو بخشهای مشخص شده اضافه میکنم و چیزی از کانفیگهایی که وجود داره رو پاک نمیکنم:
server {
location ~ \.html$ {
auth_basic "Restricted";
auth_basic_user_file /config/nginx/.htpasswd;
}
location ~ \.php$ {
auth_basic "Restricted";
auth_basic_user_file /config/nginx/.htpasswd;
}
}
همونطور که گفتم قراره یه سری چیز دیگه مثل تورنتلیچ هم روی این سرور داشته باشم و میخوام فایلهایی که برام دانلود میشه تو مسیر domain.com/files باشه وصد البته میخوام ایندکس هم برام باز باشه که راحت بتونم فایلای دانلودی رو ببینم و اونایی رو که میخوام دانلودشون کنم. چون با ایندکس خود nginx نتونستم کنار بیام تصمیم گرفتم از Directory Lister استفاده کنم. نصبش کاری نداره ولی خب اگر بخوام نصبش کنم لینک آخرین نسخه که الآن 3.0.0-beta8 هست رو از سایتش میگیرم و اینجوری نصبش میکنم:
mkdir /etc/nginx-letsencrypt/www/files
cd /etc/nginx-letsencrypt/www/files
wget https://github.com/DirectoryLister/DirectoryLister/releases/download/3.0.0-beta.8/DirectoryLister-3.0.0-beta.8.zip
unzip DirectoryLister-3.0.0-beta.8.zip
rm LICENSE README.md DirectoryLister-3.0.0-beta.8.zip
لازمه دوباره وبسرور رو اجرا کنم تا مطمئن بشم تا اینجا کانفیگ مشکلی نداشته:
docker run -d \
--net=nginx-letsencrypt-net \
--name=nginx-letsencrypt \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-e URL=<domain> \
-e VALIDATION=http \
-e EMAIL=<email> \
-e DHLEVEL=2048 \
-e ONLY_SUBDOMAINS=false \
-e STAGING=false \
-p 443:443 \
-p 80:80 \
-v /etc/nginx-letsencrypt:/config \
linuxserver/letsencrypt
دوتا آدرس زیر رو باز میکنم (البته روی ۲تا مرورگر مختلف، چرا روی دوتا مختلف؟). برای باز شدن هرکدوم باید یوزرنیم و پسورد ازمون خواسته بشه که نشون میده تا الآن همه مراحل رو با موفقیت جلو رفتیم.
http://domain.com
http://domain.com/files
فعلا کارم با وبسرور تمومه و کانتینر وبسرور رو پاک میکنم.
کانتینر qBittorrent
یکی از اصلیترین دلایلی که باعث میشه همیشه یک سرور داشته باشم تورنت هست. همیشه تورنتهام رو روی سرور میگیرم و بعد با خیال راحت دانلود میکنمشون. فعلا تصمیم گرفتم برم سراغ qBittorrent اما برای آینده نیمنگاهی هم به rtorrent دارم و همونطور که قبلا هم گفتم میخوام تنها راه دسترسی به سرویسهایی که رو سرور دارم از طریق وبسرور باشه و لازمه یک ریورس پروکسی برای این کار درست کنم. خوشبختانه ایمیجی که برای وبسرور استفاده کردم همراه خودش کانفیگهای لازم رو داره و دردسر زیادی برای کانفیگ ریورس پروکسی نخواهم داشت. دستورات زیر رو میزنم:
cd /etc/nginx-letsencrypt/nginx/proxy-confs
cp qbittorrent.subfolder.conf.sample qbittorrent.subfolder.conf
ریورس پروکسیمون به همین سادگی آماده هست. اما چون میخوام که وبسرور برای دسترسی به qbittorrent ازم پسورد بخواد لازمه یکم فایل کانفیگ رو ادیت کنم. فایل کانفیگ که اسمش qbittorrent.subfolder.conf هست رو باز میکنم و # اول این دوتا خط رو برمیدارم:
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
و حالا با این دستور هم qbittorrent رو اجرا میکنم:
docker run -d \
--net=nginx-letsencrypt-net \
--name=qbittorrent \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e UMASK_SET=022 \
-e WEBUI_PORT=8080 \
-p 6881:6881 \
-p 6881:6881/udp \
-v /etc/qbittorrent/config:/config \
-v /etc/qbittorrent/downloads:/downloads \
--restart unless-stopped \
linuxserver/qbittorrent
وبسرور رو اجرا میکنم ولی با این دستور:
docker run -d \
--net=nginx-letsencrypt-net \
--name=nginx-letsencrypt \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-e URL=<domain> \
-e VALIDATION=http \
-e EMAIL=<email> \
-e DHLEVEL=2048 \
-e ONLY_SUBDOMAINS=false \
-e STAGING=false \
-p 443:443 \
-p 80:80 \
-v /etc/nginx-letsencrypt:/config \
-v /etc/qbittorrent/downloads:/config/www/files/qbittorrent \
linuxserver/letsencrypt
حالا از آدرس زیر میتونم به qbittorrentدسترسی داشته باشم:
http://domain.com/qbittorrent
بعد از باز کردن آدرس اول وبسرور از من یوزر و پس میخواد که وارد میکنمشون و در مرحله بعد هم خود qbittorrent ازم یوزر و پس میخواد که به ترتیب admin و adminadmin هستن. نکتهای که وجود داره اینه که من میخوام صرفا وبسرور ازم پسورد بخواد و دیگه qbittorrent ازم پسورد نخواد. برای غیرفعال کردن پسورد qbittorrent از منو Tools گزینه Options رو انتخاب میکنم و بعد میرم به تب Web UI و تیک گزینه
Bypass authentication for clients in whitelisted IP subnets رو میزنم و تو باکس زیرش عبارت زیر رو مینویسم و گزینه Save رو میزنم:
0.0.0.0/0
نکته جالبی که الآن وجود داره اینه که برای دانلود کردن تورنتهایی که توسط qbittorrent دانلود شدن به سادگی کافیه به آدرس زیر برم تا دانلودشون کنم:
http://domain.com/files/?dir=qbittorrent
تا اینجا همه چی به خوبی پیشرفته و فعلا هم نیازی نیست که وبسرور غیرفعال بشه. کار رو ادامه میدیم…
رپیدلیچ
هرچند دیگه به لطف reacaptcha2 نمیشه رو سایتای زیادی از رپیدلیچ استفاده کرد ولی خب داشتنش بهتر از نداشتنشه. نصبش هم خوشبختانه حسابی آسونه، کافیه آخرین نسخه رو از مخزن گیتهاب بگیرم، توی وب سرور قرار بدمش و تو مرورگر بازش کنم. وقتی بازش میکنم یه سری تنظیمات رو میپرسه و بعد از ذخیره کردن تنظیمات هم پیغام اخطار میگیرم که لازمه پرمشین چندتا فایل عوض بشه که پرمیشنشون رو عوض میکنم و تمام! دستوراتش میشن این دستورات:
cd /etc/nginx-letsencrypt/www/
wget https://github.com/Th3-822/rapidleech/archive/master.zip
unzip master.zip
rm master.zip
mv rapidleech-master rapidleech
chmod 777 rapidleech/configs/
chmod 777 rapidleech/configs/files.lst
chmod 777 rapidleech/files/
و حالا میشه رپیدلیچ رو از آدرس زیر باز کرد:
http://domain.com/rapidleech
وب سرور رو دوباره غیرفعال میکنیم برای ادامه کار…
کانتینر NZBGet
هرچند خیلی کم پیش میاد که بخوام از یوزنت چزی دانلود کنم (کلا دو سه بار فکر کنم تا حالا ازش چیزی دانلود کردم) ولی خب حالا که این همه راه اومدم یه کلاینت دانلود از یوزنت هم نصب میکنم و بدون دلیل خاصی NZBGet رو انتخاب کردم. و خب همون داستان ریور پروکسی و فعال کردن یوزر و پس رو دارم و خوشبختانه ایمیجی که برای وبسرور دارم استفاده میکنم کافیگهای لازم رو همراه خودش برای تنظیمات ریورس پروکسی داره و فقط باید با چندتا دستور زیر فعالش کنم:
cd /etc/nginx-letsencrypt/nginx/proxy-confs/
cp nzbget.subfolder.conf.sample nzbget.subfolder.conf
ایمیج NZBGet رو با این دستور اجرا میکنم:
docker run -d \
--net=nginx-letsencrypt-net \
--name=nzbget \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-v /etc/nzbget/config:/config \
-v /etc/nzbget/downloads:/downloads \
--restart unless-stopped \
linuxserver/nzbget
و وب سرور رو هم با این دستور اجرا میکنم:
docker run -d \
--net=nginx-letsencrypt-net \
--name=nginx-letsencrypt \
--cap-add=NET_ADMIN \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=UTC \
-e URL=<domain> \
-e VALIDATION=http \
-e EMAIL=<email> \
-e DHLEVEL=2048 \
-e ONLY_SUBDOMAINS=false \
-e STAGING=false \
-p 443:443 \
-p 80:80 \
-v /etc/nginx-letsencrypt:/config \
-v /etc/qbittorrent/downloads:/config/www/files/qbittorrent \
-v /etc/nzbget/downloads/completed:/config/www/files/nzbget \
--restart unless-stopped \
linuxserver/letsencrypt
و از این آدرس میتونم به nzbget دسترسی داشته باشم:
http://domain.com/nzbget
وقتی که آدرس بالا رو باز میکنم ازم یوزر و پس میپرسه که به ترتیب nzbget و tegbzn6789 رو میزنم (نکته: نیازی به وارد کردن یوزر و پسی که روی وبسرور گذاشتم نیست چون اون رو هنوز برای nzbget فعال نکردم). حالا لازمه که پسوردی که خود nzbget میپرسه رو غیرفعال کنم که برای این کار منوی Settings رو میزنم و بعد گزینه SECURITY رو میزنم و بعد تو قسمت ControlPassword کادر جلوش رو کامل پاک میکنم و گزینه Save all changes که پایین صفحه هست رو میزنم. حالا که پسوردی که خود nzbget میپرسیده غیر فعال شده باید با وبسرور براش پسورد بگیرم، لازمه فایل nzbget.subfolder.conf رو ادیت کنم و # اول این ۲تا خط رو بردارم:
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
و لازمه وبسرور رو هم ریاستارت کنم که با تنظیمات جدید بالا بیاد:
docker stop nginx-letsencrypt
docker start nginx-letsencrypt
الآن میشه به nzbget دسترسی داشت و تنها پسوردی هم که پرسیده میشه پسوردی هست که توسط وبسرور روش گذاشتیم. فایلهای دانلود هم که دانلودشون تکمیل شده از این آدرس در دسترسن برای دانلود:
http://domain.com/files/?dir=nzbget
rar/unrar
زیاد پیش میاد که مجبور بشم با فایلهای rar روی سرور کار کنم و از اونجایی که تو مخازن ClearLinux برنامههای rar/unrar وجود ندارن مجبورم جداگانه نصبشون کنم. برای این کار لازمه از سایت rarlab.com لینک دانلود آخرین نسخه رو بگیرم. الآن آخرین نسخه 5.90beta2 هست که لینک دانلودش رو گرفتم و اینطوری نصبش میکنم:
mkdir /usr/local/bin
cd
wget https://www.rarlab.com/rar/rarlinux-x64-5.9.b2.tar.gz
tar -xvf rarlinux-x64-5.9.b2.tar.gz
cd rar
cp unrar /usr/local/bin/
cp rar /usr/local/bin/
cd
rm -r rar
rm rarlinux-x64-5.9.b2.tar.gz
حالا به دستورات rar و unrar دسترسی دارم و میتونم کارهام رو راحت انجام بدم.
دسترسی راحتتر به برنامهها
خب با این کانفیگها به هر چیزی که بخوام دسترسی داشته باشم راحت میتونم آدرسش رو تایپ کنم و بهش دسترسی داشته باشم اما کار جالبی نیست. برای همین تصمیم گرفتم که یک صفحه html ساده تو روت وب سرور بذارم و محتواش هم کدهای زیر باشه:
<html>
<head>
<title>My Personal Server</title>
</head>
<body>
<h3>Rapidleech: <a href="./rapidleech">/rapidleech</a></h3>
<br>
<h3>qbittorrent: <a href="./qbittorrent">/qbittorrent</a></h3>
<br>
<h3>qbittorrent Files: <a href="./files/?dir=qbittorrent">/files/?dir=qbittorrent</a></h3>
<br>
<h3>nzbget: <a href="./nzbget">/nzbget</a></h3>
<br>
<h3>nzbget Files: <a href="./files/?dir=nzbget">/files/?dir=nzbget</a></h3>
<br>
<h3>All Files: <a href="./files">/files</a></h3>
</body>
</html>
حالا هرموقع آدرس سرور رو باز کنم یک صفحه ساده دارم با لینک برنامههای روی سرور. اگر هم یه موقع خواستم خیلی حرفهایتر این صفحه رو بسازم میتونم از linuxserver/heimdall استفاده کنم.
اینترنت آزاد
مهمترین استفاده! که البته بنا به مسائل امنیتی فقط میتونم خلاصه کار رو بگم :))) برای MTProto Proxy فعلا از alexbers/mtprotoproxy استفاده میکنم. برای openvpn از kylemanna/openvpn، برای shadowsocks از shadowsocks/shadowsocks-libev و برای wireguard از cmulk/wireguard-docker استفاده میکنم و چون همراهش توضیح مناسبی برای کانفیگ چندتا کلاینت نیست از این راهنما کمک میگیرم.
خب این هم از کانفیگهایی که استفاده میکنم. احتمالا تو چندماه آینده یه مطلب دیگه بنویسم و این پست رو آپدیت کنم و بگم بعد از چندماه استفاده نتیجه این کانفیگها چطور بوده.
خیلی ممنون که اموزش رو با دقت و حوصله گذاشتید. من صرفا qbittorrent-nox رو روی سرور نصب کردم و با دستور qbittorrent-nox -d بردمش روی حالت بکگراند. فقط یک چیزی مشکل دارم اونم اینه که نسخه web-ui من نسخه 3.2 هست. به هر دری زدم نتونستم بفهمم چطوری میشه به نسخه اخر یعنی 4.8 اپدیتش کنم. سیستم عامل من centos 7 هست
متاسفانه من هم روشی براش ندیدم… گویا تنها راه این هست که توسعه دهنده qbittorrent-nox نسخه web-ui رو ارتقا بده