سرورها و روترها و دستگاههای NAS میز کاری ندارند، پس نصب Clash Verge رویشان بیمعناست. بهجایش هستهٔ Mihomo را اجرا کنید — یک باینری خط فرمانی است و بس.
این نوشته کل ماجرا را روی Linux amd64 طی میکند.
۱. دانلود و نصب
آنچه ما میزبانی میکنیم یک آرشیو .gz است که یک فایل اجرایی درش هست:
# استخراج
gunzip mihomo-linux-amd64-v1.19.29.gz
# اجرایی کردنش
chmod +x mihomo-linux-amd64-v1.19.29
# گذاشتنش در PATH با نامی کوتاهتر
sudo mv mihomo-linux-amd64-v1.19.29 /usr/local/bin/mihomo
# بررسی
mihomo -vباید یک رشتهٔ نسخه و اطلاعات ساخت بگیرید.
۲. یک پوشهٔ کاری آماده کنید
Mihomo جایی برای نگه داشتن پیکربندی و فایلهای دادهاش میخواهد:
sudo mkdir -p /etc/mihomo
cd /etc/mihomoفایل config.yaml خود را آنجا بگذارید. اگر لینک اشتراک دارید دانلودش کنید:
sudo curl -L -o /etc/mihomo/config.yaml \
-A "clash.meta" \
"لینک-اشتراک-شما"پیکربندی دستکم به اینها نیاز دارد تا کار کند:
mixed-port: 7890 # پورت ترکیبی HTTP + SOCKS5
allow-lan: true # اجازه به دستگاههای دیگر شبکه برای اتصال
bind-address: "*"
mode: rule
log-level: info
external-controller: 0.0.0.0:9090 # API کنترل
secret: "رمز خودتان را بگذارید" # رمز API، اگر در دسترس باشد الزامی است۳. اول در پیشزمینه اجرایش کنید
mihomo -d /etc/mihomoسوییچ -d پوشهٔ کاری را تعیین میکند. یک شروع سالم چنین است:
INFO[0000] Start initial configuration in progress
INFO[0000] Geodata Loader mode: memconservative
INFO[0000] HTTP proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: [::]:9090وقتی listening at دیدید یعنی بالاست.
از کار کردنش مطمئن شوید، با Ctrl+C متوقفش کنید، بعد تبدیلش کنید به سرویس.
۴. فایل unit سیستمی
فایل /etc/systemd/system/mihomo.service را بسازید:
[Unit]
Description=Mihomo Daemon
Documentation=https://wiki.metacubex.one
After=network.target nss-lookup.target
[Service]
Type=simple
User=root
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
Restart=always
RestartSec=5
ExecStartPre=/usr/local/bin/mihomo -t -d /etc/mihomo
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
[Install]
WantedBy=multi-user.targetخط ExecStartPre بررسی پیکربندی را اجرا میکند (-t یعنی test). آنوقت پیکربندی خراب بهجای اینکه سرویس در حال اجرا را بیندازد در بررسی میافتد — جزئیات کوچکی که دردسر زیادی را میخرد.
sudo systemctl daemon-reload
sudo systemctl enable mihomo # اجرا هنگام بوت
sudo systemctl start mihomo # همین حالا اجرا کن
sudo systemctl status mihomo # بررسیactive (running) یعنی تمام شد.
دستورهای روزمره
sudo systemctl restart mihomo # بعد از تغییر پیکربندی
sudo systemctl stop mihomo
journalctl -u mihomo -f # دنبال کردن لاگ
journalctl -u mihomo -n 100 # آخرین ۱۰۰ خط۵. اجازه دادن به دستگاههای دیگر
allow-lan: true پیشاپیش دسترسی از شبکهٔ محلی را میدهد. دستگاههای دیگر فقط پروکسیشان را به IP و پورت این دستگاه اشاره میدهند:
روی دستگاههای کلاینت:
- ویندوز: Settings ← Network & Internet ← Proxy ← Manual ← مقدار
192.168.1.10و7890را وارد کنید - گوشی (Wi-Fi): روی شبکهٔ فعلی نگه دارید ← Modify ← Advanced ← Proxy: Manual ← همان نشانی و پورت
- در سطح روتر: اگر خود روتر دروازه است، میتوانید این را با TUN/TProxy برای پروکسی شفاف جفت کنید تا همهٔ دستگاهها خودکار پوشش داده شوند (راهاندازی سنگینتری است و اینجا نمیآید)
۶. API کنترل و پنل وب
external-controller: 0.0.0.0:9090 یک RESTful API برای تعویض گره و بازرسی اتصالها و بارگذاری دوبارهٔ پیکربندی باز میکند.
بررسی سریع:
curl -H "Authorization: Bearer secret-شما" http://127.0.0.1:9090/versionنقاط پایانی مفید:
| نقطهٔ پایانی | کاربرد |
|---|---|
GET /proxies | فهرست همهٔ گرهها و گروههای سیاست |
PUT /proxies/{group} | تعویض گرهٔ انتخابشدهٔ یک گروه |
GET /connections | اتصالهای جاری |
DELETE /connections | بستن همهٔ اتصالها |
GET /logs | جریان زندهٔ لاگ |
PUT /configs?force=true | بارگذاری دوبارهٔ پیکربندی |
با یک پنل وب چیزی نزدیک به کلاینت گرافیکی به دست میآورید. فایلهای پنل را در پوشهای محلی بگذارید و external-ui را به آن اشاره بدهید:
external-ui: /etc/mihomo/ui
external-ui-name: metacubexdبعد در مرورگر به http://ip-سرور:9090/ui بروید.
۷. بهروز نگه داشتن اشتراک
استقرار بدون رابط گرافیکی کلاینتی برای تازه کردن اشتراک ندارد، پس سراغ cron بروید:
sudo crontab -eیک خط اضافه کنید (بهروزرسانی ساعت ۴ بامداد و راهاندازی مجدد):
0 4 * * * curl -L -A "clash.meta" -o /etc/mihomo/config.yaml "لینک-اشتراک-شما" && systemctl restart mihomoنسخهٔ امنتر در یک فایل موقت دانلود میکند، اعتبارسنجی میکند و تنها بعدش پیکربندی زنده را جایگزین میکند:
#!/bin/bash
TMP=$(mktemp)
curl -fsSL -A "clash.meta" -o "$TMP" "لینک-اشتراک-شما" || exit 1
# بررسی کمینهٔ سلامت: باید بخش proxies داشته باشد
grep -q "^proxies:" "$TMP" || { rm -f "$TMP"; exit 1; }
mv "$TMP" /etc/mihomo/config.yaml
systemctl restart mihomoبا نام /usr/local/bin/update-mihomo.sh ذخیرهاش کنید، chmod +x بزنید و از cron صدایش کنید. اینطور یک سرویس اشتراک که موقتاً خراب شده نمیتواند پیکربندی سالم را با صفحهٔ خطا بازنویسی کند.
مشکلهای رایج
با unmarshal error بالا نمیآید YAML نامعتبر است، یا فیلدی به کار برده که این نسخهٔ هسته نمیشناسد. برای بررسی پیکربندی mihomo -t -d /etc/mihomo را اجرا کنید.
پورت در حال استفاده است sudo ss -tlnp | grep 7890 نشان میدهد چه چیزی گرفتهاش. پورت را در پیکربندی عوض کنید یا آن فرایند را متوقف کنید.
پایگاه دادهٔ GeoIP دانلود نمیشود فایلهای geoip.metadb و geosite.dat را دستی در پوشهٔ کاری بگذارید، یا بهروزرسانی خودکار را خاموش کنید:
geo-auto-update: falseخلاصه
چهار گام: باینری را جایی بگذارید، پیکربندی را کنارش بگذارید، سرویس systemd بسازید، و پورت را با فایروال ببندید.
وقتی راه افتاد یک سرویس پسزمینه است که عملاً نگهداری نمیخواهد — بهمراتب کمکارتر از نصب کلاینت روی تکتک دستگاهها.
بیشتر بخوانید: اشتراک پروکسی در شبکهٔ محلی و نصب Clash Verge روی لینوکس.