خادم بروكسي خاص على VPS: تثبيت 3proxy والفحص خطوة بخطوة
دليل للمبتدئين خطوة بخطوة: ثبّت 3proxy على VPS بسكربت bash جاهز، وافحص الوصول من الخارج، ووصل المتصفح. وبصدق: متى لا تحتاج إليه.

يمكنك إنشاء خادم بروكسي شخصي حتى لو لم تفتح وحدة تحكم Linux من قبل: يستغرق المثبت نفسه دقيقة. فيما يلي دليل بالخطوات: استأجر VPS، وشغّل سكربتًا جاهزًا، وافحص الوصول من الخارج، ووصل المتصفح. النتيجة IP دائم واحد مع HTTP وSOCKS5 باسم مستخدم وكلمة مرور.
في نهاية المقال سنبين في أي مهام يخسر الخادم الشخصي أمام الخدمة. نحن نبيع البروكسي بأنفسنا، لذلك نقول هذا صراحة.
ما تحتاج إليه
| ماذا | أي |
|---|---|
| الخادم | VPS بنواة واحدة و512 MB ذاكرة: تكفي أصغر خطة لبروكسي شخصي |
| النظام | Ubuntu 22.04 أو 24.04 أو Debian 12 أو 13 نظيف |
| الوصول | المستخدم root وكلمة المرور من رسالة الاستضافة |
| الطرفية | PowerShell في Windows 10 و11، وTerminal في macOS وLinux |
اختر بلد VPS حسب المهمة من البداية: سيكون عنوان البروكسي من هذا البلد، ولا يتغير إلا بالانتقال إلى خادم آخر.
شغّلنا كل أوامر هذا المقال على صور نظيفة للأنظمة الأربعة في الجدول، مع 512 MB ذاكرة ونواة واحدة لكل منها. استغرق التثبيت من 10 إلى 31 ثانية، وشغل 3proxy دون حمل أقل من 8 MB.
سنثبت 3proxy. برنامج واحد يخدم HTTP وSOCKS5، ويستهلك ذاكرة قليلة، ويُضبط بملف واحد. يعمل Squid كبروكسي HTTP فقط وDante كـ SOCKS فقط، فمعهما يلزم ضبط خدمتين. لا توجد حزمة 3proxy في مستودعات Ubuntu، لذا يأخذ السكربت الحزمة الرسمية من المطور ويتحقق من مجموعها الاختباري.
الخطوة 1. اتصل بالخادم
افتح الطرفية وأدخل الأمر مع العنوان من رسالة الاستضافة:
ssh root@SERVER_IPعند الدخول الأول يسأل النظام هل تثق بالخادم: اكتب yes. لا تظهر كلمة المرور أثناء الكتابة، وهذا مقصود. اكتبها دون رؤية أو ألصقها واضغط Enter. إذا أعطتك الاستضافة مستخدمًا عاديًا بدل root فنفذ sudo -i بعد الدخول.
الخطوة 2. شغّل المثبت
اضغط «نسخ»، وألصق الكتلة كاملة في نافذة الطرفية واضغط Enter. سينشئ الملف ويشغله بنفسه.
cat > install-proxy.sh <<'SCRIPT'
#!/usr/bin/env bash
# Installs 3proxy with HTTP and SOCKS5, login and password required.
# Ubuntu 22.04+ or Debian 12+. Run as root on a clean server.
set -euo pipefail
VERSION="1.0.2"
CONF_DIR="/usr/local/3proxy/conf"
if [ "$(id -u)" -ne 0 ]; then
echo "Run as root: sudo bash install-proxy.sh"
exit 1
fi
case "$(dpkg --print-architecture)" in
amd64) ARCH="x86_64"; SHA="d42c0a15ab7bc2e129de2e72fedfb6c908bfc1f7b7f4be15368c56eeb21e9a08" ;;
arm64) ARCH="arm64"; SHA="e7b8f21bc527b30e9b7fd2ebd5889a11eb14889bb45f71074c94c865fc1b2556" ;;
*) echo "Only amd64 and arm64 servers are supported"; exit 1 ;;
esac
echo "==> Installing packages"
export DEBIAN_FRONTEND=noninteractive NEEDRESTART_SUSPEND=1
APT="apt-get -o DPkg::Lock::Timeout=300"
$APT update -qq
$APT install -y -qq curl openssl ca-certificates >/dev/null
DEB="/tmp/3proxy-$VERSION.$ARCH.deb"
curl -fsSL -o "$DEB" "https://github.com/3proxy/3proxy/releases/download/$VERSION/3proxy-$VERSION.$ARCH.deb"
echo "$SHA $DEB" | sha256sum -c --quiet -
$APT install -y -qq "$DEB" >/dev/null
rm -f "$DEB"
echo "==> Creating login, password and ports"
LOGIN="user$(openssl rand -hex 3)"
PASS="$(openssl rand -hex 12)"
HTTP_PORT="$(shuf -i 20000-59999 -n 1)"
SOCKS_PORT="$((HTTP_PORT + 1))"
echo "$LOGIN:CL:$PASS" > "$CONF_DIR/passwd"
cat > "$CONF_DIR/3proxy.cfg" <<EOF
nscache 65536
nserver 1.1.1.1
nserver 8.8.8.8
log /logs/3proxy.log D
rotate 7
maxconn 200
users \$/conf/passwd
auth strong
deny * * 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,100.64.0.0/10
deny * * * 25
allow *
proxy -a -p$HTTP_PORT
socks -p$SOCKS_PORT
EOF
chown proxy:proxy "$CONF_DIR/passwd" "$CONF_DIR/3proxy.cfg"
chmod 640 "$CONF_DIR/passwd" "$CONF_DIR/3proxy.cfg"
if command -v ufw >/dev/null && ufw status | grep -q "Status: active"; then
echo "==> Opening ports in ufw"
ufw allow "$HTTP_PORT/tcp" >/dev/null
ufw allow "$SOCKS_PORT/tcp" >/dev/null
fi
echo "==> Starting the service"
systemctl enable 3proxy >/dev/null 2>&1
systemctl restart 3proxy
sleep 2
if ! systemctl is-active --quiet 3proxy; then
echo "3proxy did not start. Details: journalctl -u 3proxy -n 30"
exit 1
fi
SERVER_IP=""
for URL in https://ifconfig.me https://api.ipify.org; do
SERVER_IP="$(curl -s --max-time 20 -x "http://$LOGIN:$PASS@127.0.0.1:$HTTP_PORT" "$URL" || true)"
[ -n "$SERVER_IP" ] && break
done
if [ -z "$SERVER_IP" ]; then
echo "The proxy runs but its test request failed. Details: tail /usr/local/3proxy/logs/3proxy.log.*"
exit 1
fi
umask 077
cat > /root/proxy.txt <<EOF
Server: $SERVER_IP
HTTP port: $HTTP_PORT
SOCKS port: $SOCKS_PORT
Login: $LOGIN
Password: $PASS
curl -x "http://$LOGIN:$PASS@$SERVER_IP:$HTTP_PORT" https://ifconfig.me
curl --socks5-hostname "$LOGIN:$PASS@$SERVER_IP:$SOCKS_PORT" https://ifconfig.me
bash check-proxy.sh $SERVER_IP $HTTP_PORT $SOCKS_PORT $LOGIN $PASS
EOF
echo
echo "Done. These details are saved in /root/proxy.txt"
echo
cat /root/proxy.txt
SCRIPT
bash install-proxy.shهذا ما يفعله السكربت بالترتيب:
- يثبت حزمة 3proxy ويتحقق من أن الملف نُزل دون عبث؛
- ينشئ اسم مستخدم وكلمة مرور عشوائيين ومنفذين من النطاق العلوي، حيث تنظر الماسحات أقل مما في 3128 و1080؛
- يمنع الاتصال دون اسم مستخدم ويغلق الوصول من البروكسي إلى عناوين الخادم الداخلية وعناوين خدمة السحابة؛
- يحظر منفذ البريد 25، كي لا يُدخل مرسلو البريد المزعج عنوانك في القوائم السوداء عند تسرب كلمة المرور؛
- يزيل من ترويسات HTTP بيانات العميل: لن يرى الموقع عنوان IP الحقيقي؛
- يفعّل التشغيل التلقائي بعد إعادة التشغيل ويفتح المنافذ في ufw إذا كان هذا الجدار الناري نشطًا.
في النهاية يظهر تقرير كهذا، لكن بقيمك:
Done. These details are saved in /root/proxy.txt
Server: 203.0.113.10
HTTP port: 34512
SOCKS port: 34513
Login: user4f2a9c
Password: 8c1f0e77a2d94b36c5e1a07d
curl -x "http://user4f2a9c:8c1f0e77a2d94b36c5e1a07d@203.0.113.10:34512" https://ifconfig.me
curl --socks5-hostname "user4f2a9c:8c1f0e77a2d94b36c5e1a07d@203.0.113.10:34513" https://ifconfig.me
bash check-proxy.sh 203.0.113.10 34512 34513 user4f2a9c 8c1f0e77a2d94b36c5e1a07dانسخ هذه البيانات عندك. توجد على الخادم في الملف /root/proxy.txt، ويعرضها الأمر cat /root/proxy.txt مجددًا.
الخطوة 3. افتح المنافذ في لوحة الاستضافة
تضع بعض شركات الاستضافة أمام الخادم جدارها الناري الشبكي، ويُضبط في لوحة العميل. إذا كان لديك واحد فاسمح هناك بالمنفذين عبر TCP. وإذا لم يكن في اللوحة قسم كهذا فيمكنك تخطي هذه الخطوة.
الخطوة 4. افحص البروكسي من الخارج
يجب الفحص من حاسوبك: هكذا ترى الخادم بعيون العالم الخارجي. في Linux وmacOS ألصق الكتلة في الطرفية: ستنشئ الملف check-proxy.sh. ثم ألصق وشغّل السطر الأخير من تقرير المثبت، ففيه بياناتك بالفعل.
cat > check-proxy.sh <<'SCRIPT'
#!/usr/bin/env bash
# Usage: bash check-proxy.sh HOST HTTP_PORT SOCKS_PORT LOGIN PASSWORD
# Run it from your own computer: only an outside check shows the real picture.
set -u
if [ "$#" -ne 5 ]; then
echo "Usage: bash check-proxy.sh HOST HTTP_PORT SOCKS_PORT LOGIN PASSWORD"
exit 2
fi
HOST="$1"; HTTP_PORT="$2"; SOCKS_PORT="$3"; LOGIN="$4"; PASS="$5"
URL="https://ifconfig.me"
FAILED=0
pass() { echo "[ OK ] $1"; }
fail() { echo "[FAIL] $1"; FAILED=$((FAILED + 1)); }
info() { echo "[INFO] $1"; }
MY_IP=$(curl -4 -s --max-time 10 "$URL" || curl -4 -s --max-time 10 https://api.ipify.org || true)
info "Your own IP: ${MY_IP:-unknown}"
HTTP_IP=$(curl -s --max-time 20 -x "http://$LOGIN:$PASS@$HOST:$HTTP_PORT" "$URL" || true)
if [ -n "$HTTP_IP" ]; then pass "HTTP proxy works, exit IP $HTTP_IP"; else fail "HTTP proxy gave no answer"; fi
SOCKS_IP=$(curl -s --max-time 20 --socks5-hostname "$LOGIN:$PASS@$HOST:$SOCKS_PORT" "$URL" || true)
if [ -n "$SOCKS_IP" ]; then pass "SOCKS5 proxy works, exit IP $SOCKS_IP"; else fail "SOCKS5 proxy gave no answer"; fi
if [ -n "$HTTP_IP" ] && [ "$HTTP_IP" = "$MY_IP" ]; then
info "Exit IP equals your IP: fine on the server itself, a problem anywhere else"
fi
CODE=$(curl -s --max-time 20 -o /dev/null -w "%{http_code}" -x "http://$HOST:$HTTP_PORT" "http://ifconfig.me" || true)
if [ "$CODE" = "407" ]; then pass "HTTP without login is refused (407)"; else fail "HTTP without login returned $CODE, expected 407"; fi
CODE=$(curl -s --max-time 20 -o /dev/null -w "%{http_code}" -x "http://$LOGIN:wrong-$PASS@$HOST:$HTTP_PORT" "http://ifconfig.me" || true)
if [ "$CODE" = "407" ]; then pass "HTTP with a wrong password is refused (407)"; else fail "HTTP with a wrong password returned $CODE, expected 407"; fi
if [ -n "$SOCKS_IP" ]; then
if curl -s --max-time 20 -o /dev/null --socks5-hostname "$HOST:$SOCKS_PORT" "$URL"; then
fail "SOCKS5 lets you in without a login: the proxy is open"
else
pass "SOCKS5 without login is refused"
fi
fi
if [ -n "$MY_IP" ] && [ -n "$HTTP_IP" ] && [ "$HTTP_IP" != "$MY_IP" ]; then
if curl -s --max-time 20 -x "http://$LOGIN:$PASS@$HOST:$HTTP_PORT" "http://ifconfig.me/all" | grep -qF "$MY_IP"; then
fail "The site can see your own IP in the proxy headers"
else
pass "Your own IP is not visible in the headers"
fi
fi
echo
if [ "$FAILED" -eq 0 ]; then
echo "All checks passed."
else
echo "Failed checks: $FAILED"
exit 1
fi
SCRIPTإذا كان كل شيء مضبوطًا فسيكون الإخراج هكذا:
[INFO] Your own IP: 198.51.100.7
[ OK ] HTTP proxy works, exit IP 203.0.113.10
[ OK ] SOCKS5 proxy works, exit IP 203.0.113.10
[ OK ] HTTP without login is refused (407)
[ OK ] HTTP with a wrong password is refused (407)
[ OK ] SOCKS5 without login is refused
[ OK ] Your own IP is not visible in the headers
All checks passed.في Windows يعمل السكربت في Git Bash. ودونه يكفي أمران في PowerShell، وعلى كل منهما طباعة عنوان خادمك. اكتب curl.exe بالضبط: مجرد curl في PowerShell يستدعي أمرًا آخر.
curl.exe -x "http://LOGIN:PASSWORD@HOST:HTTP_PORT" https://ifconfig.me
curl.exe --socks5-hostname "LOGIN:PASSWORD@HOST:SOCKS_PORT" https://ifconfig.meإذا لم ينجح الفحص
| ما تراه | ما السبب | ماذا تفعل |
|---|---|---|
| السطران «gave no answer»، الرمز 000 | المنافذ مغلقة في الطريق إلى الخادم | افتحها في لوحة الاستضافة وفي ufw، وطابق عنوان الخادم |
| رد البروكسي على الخادم نفسه فقط | جدار ناري للاستضافة أو المزود | كرر الخطوة 3، واكتب إلى دعم الاستضافة |
| الرمز 407 بكلمة مرور صحيحة | خطأ في اسم المستخدم أو كلمة المرور، أو عنوانك غير مسموح | طابق مع /root/proxy.txt والسطر allow في الإعدادات |
| يسمح SOCKS5 بالدخول دون اسم مستخدم | غُيرت الإعدادات يدويًا | شغّل المثبت من جديد، وستحصل على بيانات جديدة |
| يكتب المثبت «did not start» | لم تبدأ الخدمة | انظر السبب: journalctl -u 3proxy -n 30 |
| يكتب المثبت «test request failed» | الخدمة تعمل، لكن الخادم لا يخرج إلى الإنترنت عبر البروكسي | انظر السجل: tail /usr/local/3proxy/logs/3proxy.log.* |
| خطأ تبعيات عند التثبيت | النظام أقدم من Ubuntu 22.04 وDebian 12 | أعد تثبيت نظام حديث في لوحة الاستضافة |
الخطوة 5. وصل البروكسي
في المتصفح استخدم منفذ HTTP: لا يستطيع Chrome وFirefox دون إضافات إدخال اسم المستخدم وكلمة المرور لـ SOCKS5. أين تدخل ماذا مشروح في مقال إعداد البروكسي يدويًا. تقبل البرامج عادة سطرًا بصيغة IP:PORT:LOGIN:PASSWORD، وإذا احتاجت إلى صيغة أخرى فسيعيد محول البروكسي كتابته.
اتصلت؟ افتح فحص إخفاء الهوية عبر البروكسي: تعرض الصفحة أي عنوان وترويسات يراها الموقع. كيف يختلف HTTP عن SOCKS5 وأي منفذ تأخذ لبرنامج معين مشروح في مقارنة البروتوكولات.
كيف تدير الخادم
كل الأوامر أدناه تُنفذ على الخادم. حالة الخدمة وسجل اتصالات اليوم. ينشئ 3proxy ملفًا جديدًا كل يوم ويحتفظ بها أسبوعًا. للخروج من السجل استخدم Ctrl+C:
systemctl status 3proxy --no-pager
tail -f "$(ls -t /usr/local/3proxy/logs/* | head -1)"تغيير كلمة المرور. ضع اسم المستخدم من التقرير بدل LOGIN. يعرض الأمر كلمة المرور الجديدة، وتتوقف القديمة فورًا، وتبقى في /root/proxy.txt البيانات السابقة:
NEW="$(openssl rand -hex 12)"
sed -i "s/^LOGIN:CL:.*/LOGIN:CL:$NEW/" /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwdإضافة مستخدم ثانٍ:
echo "friend:CL:$(openssl rand -hex 12)" >> /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwdالسماح من عنوانك فقط إذا كان دائمًا. ضع IP الخاص بك بدل YOUR_IP. من العناوين الأخرى سيرد البروكسي بالرمز 407 حتى بكلمة مرور صحيحة:
sed -i 's/^allow \*$/allow * YOUR_IP/' /usr/local/3proxy/conf/3proxy.cfg
systemctl restart 3proxyحذف كل شيء عندما لا تحتاج إلى الخادم:
systemctl disable --now 3proxy
apt-get purge -y 3proxy </dev/null
rm -rf /usr/local/3proxy /etc/3proxy /root/proxy.txtقائمة الأمان
يصبح البروكسي ذو الخطأ في ضبط الوصول عامًا. تجوب الماسحات عناوين الاستضافات باستمرار، ويدخل المنفذ المفتوح سريعًا إلى القوائم المجانية: وبعدها تنتظرك بيانات الغرباء والقناة المستهلكة والشكاوى إلى الاستضافة. يغلق السكربت الأساسيات، والباقي عليك:
- فعّل الجدار الناري بالأمر أدناه مع منافذ التقرير: يبقى للخارج SSH والبروكسي فقط.
- فعّل التحديثات التلقائية للنظام. 3proxy حزمة منفصلة، لذا افحص كل بضعة أشهر هل صدرت نسخة جديدة.
- تذكر أن اسم المستخدم وكلمة مرور البروكسي يُنقلان دون تشفير. في شبكة عامة قد يعترضهما جار، لذا في المقاهي والمطارات اتصل بالبروكسي عبر VPN أو قيّد الوصول بعنوانك. التفاصيل في تحليل Wi-Fi العام.
- مرة في الشهر راجع السجل بحثًا عن عناوين مجهولة وافحص IP الخادم في القوائم السوداء RBL.
DEBIAN_FRONTEND=noninteractive apt-get install -y ufw unattended-upgrades </dev/null
printf 'APT::Periodic::Update-Package-Lists "1";\nAPT::Periodic::Unattended-Upgrade "1";\n' > /etc/apt/apt.conf.d/20auto-upgrades
ufw allow 22/tcp
ufw allow HTTP_PORT/tcp
ufw allow SOCKS_PORT/tcp
ufw --force enableإذا كان SSH لديك على منفذ آخر فاستبدل 22 به قبل التشغيل، وإلا فقدت الوصول إلى الخادم.
ما تكسبه وما تخسره
| VPS خاص | خدمة بروكسي | |
|---|---|---|
| التحكم والسجلات | لك بالكامل | لدى المشغل |
| العناوين | واحد، بضعة كحد أقصى | مجموعات بآلاف العناوين |
| نوع العنوان | مركز بيانات الاستضافة | من مراكز البيانات إلى المنزلية والجوال |
| الموقع | بلد VPS الخاص بك | اختيار البلد، والمدينة في السكني |
| التدوير | لا، العنوان دائم | لكل طلب أو حسب الجلسة |
| الصيانة | التحديثات واستمرار العمل عليك | ضمن السعر |
| سعر البدء | إيجار VPS مع الوقت | من اشتراك بالساعة |
أهم ما هنا سطر نوع العنوان. يعيش VPS في شبكة فرعية للاستضافة، ويرى أي موقع ذلك من النظام المستقل: افحص خادمك عبر فحص ASN. تتعامل منصات التسوق والشبكات الاجتماعية بحذر مع هذه النطاقات، ولن يغير الخادم الشخصي شيئًا هناك. لن يصبح عنوانه منزليًا أو جوالًا.
ولا أوهام في المال أيضًا. يتقاسم VPS الرخيص المعالج والقناة مع الجيران، لذا تراجع السرعة مساءً أمر معتاد. كثير من الاستضافات تحد البيانات، والتجاوز يكلف أكثر بوضوح من غيغابايت لدى خدمة بروكسي.
متى يكون البروكسي الخاص مبررًا
- IP دائم لخدماتك. لوحات الإدارة والداخلية مفتوحة من عنوان واحد فقط: يعطيه VPS برخص ولمدة طويلة.
- نفق بين أجهزتك. المكتب والخادم متصلان مباشرة، وأنت تقرر ما يمر عبر هذه النقطة.
- متطلبات السجلات. يجب أن تبقى سجلات البيانات لديك وحدك.
- التعلم. أنشئ واكسر وأصلح: هكذا تفهم بأسرع طريقة كيف يعمل البروكسي من الداخل.
متى تحتاج إلى خدمة
يخرج الخادم الشخصي من اللعبة بمجرد أن تحتاج المهمة إلى أكثر من عنوان أو تدوير أو نوع IP محدد: صيانة مئات VPS أغلى من أي خطة. يعيش الكشط ومراقبة الأسعار والعمل بالحسابات وفحص الإعلانات على المجموعات. تناسبها خططنا: باقات بقائمة ip:port وعناوين سكنية مع اختيار البلد. كثيرون يحتفظون بالاثنين: خادم شخصي للوصول إلى أنظمتهم ومجموعة خدمة لمهام العمل.
اقرأ أيضًا

بروكسي الصين: من يحتاج إلى IP صيني وماذا يقدم له فعليًا
يعيش القسم الصيني من الشبكة وفق قواعده، والنظر إليه من الخارج شبه عديم الفائدة: بعض المواقع لا تستجيب إلا لعناوين من الصين، والأسعار والنتائج تختلف عن العالمية. نشرح المهام التي تتطلب IP صينيًا، وما…
4 دقائق قراءة
أنواع خوادم البروكسي: كيف يختلف HTTP عن SOCKS5 عمليًا
يقرر البروتوكول كيف يمرر البرنامج الطلب إلى البروكسي: يقرأه بروكسي HTTP كاملًا، ويفتح CONNECT نفقًا لـ TLS، وينقل SOCKS5 التدفق ويدعم UDP. نشرح البروتوكولات الأربعة بمخطط وجداول: أين يهم socks5h،…
6 دقائق قراءة
بروكسي أوروبا: من يحتاج إلى IP أوروبي وأي خيار تأخذ
تربط المواقع المحتوى ببلد الزائر أكثر فأكثر: تختلف الأسعار والنتائج والمخزون والإعلانات بين برلين وباريس. نستعرض المهام التي تتطلب عنوانًا أوروبيًا ونختار لكل منها أداة: مجمع أوروبا في الباقات للفحوص…
4 دقائق قراءة