VPS üzerinde kendi proxy sunucunuz: 3proxy kurulumu ve test
Yeni başlayanlar için adım adım: hazır bash betiğiyle VPS'e 3proxy kurun, erişimi dışarıdan test edin, tarayıcıyı bağlayın. Ve ne zaman gerekmediği.

Linux konsolunu hiç açmamış olsanız bile kişisel proxy sunucusu kurabilirsiniz: yükleyicinin kendisi bir dakikaya sığar. Aşağıda adım adım kılavuz var: VPS kiralayın, hazır betiği çalıştırın, erişimi dışarıdan test edin ve tarayıcıyı bağlayın. Sonuç, kullanıcı adı ve parolayla korunan HTTP ve SOCKS5'li tek bir kalıcı IP'dir.
Yazının sonunda kişisel sunucunun hizmete hangi işlerde yenildiğini ele alacağız. Biz de proxy satıyoruz, bu yüzden bunu açıkça söylüyoruz.
Neler gerekli
| Ne | Hangisi |
|---|---|
| Sunucu | 1 çekirdek ve 512 MB bellekli VPS: kişisel proxy için en küçük tarife yeter |
| Sistem | temiz Ubuntu 22.04 veya 24.04, Debian 12 veya 13 |
| Erişim | root kullanıcısı ve barındırma firmasının e-postasındaki parola |
| Terminal | Windows 10 ve 11'de PowerShell, macOS ve Linux'ta Terminal |
VPS ülkesini baştan işe göre seçin: proxy adresi o ülkeden olacak ve yalnızca başka sunucuya taşınarak değiştirilebilir.
Bu yazıdaki tüm komutları tablodaki dört sistemin temiz imajlarında, her birine 512 MB bellek ve bir çekirdek vererek çalıştırdık. Kurulum 10 ila 31 saniye sürdü, 3proxy yüksüz durumda 8 MB'tan az yer tuttu.
3proxy kuracağız. Tek program hem HTTP hem SOCKS5'e hizmet eder, az bellek harcar ve tek dosyayla ayarlanır. Squid yalnızca HTTP proxy, Dante yalnızca SOCKS olarak çalışır, onlarla iki hizmet ayarlamak gerekirdi. Ubuntu depolarında 3proxy paketi yoktur, bu yüzden betik geliştiricinin resmî paketini alır ve sağlama toplamını doğrular.
Adım 1. Sunucuya bağlanın
Terminal açın ve barındırma firmasının e-postasındaki adresi yazarak komutu girin:
ssh root@SERVER_IPİlk girişte sistem sunucuya güvenip güvenmediğinizi sorar: yes yazın. Parola yazılırken görünmez, bu kasıtlıdır. Körlemesine yazın veya yapıştırıp Enter'a basın. Firma root yerine normal kullanıcı verdiyse girişten sonra sudo -i çalıştırın.
Adım 2. Yükleyiciyi çalıştırın
Kopyala'ya basın, bloğun tamamını terminal penceresine yapıştırın ve Enter'a basın. Dosyayı kendisi oluşturur ve çalıştırır.
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.shBetiğin sırayla yaptıkları:
- 3proxy paketini kurar ve dosyanın değiştirilmeden indiğini doğrular;
- rastgele kullanıcı adı, parola ve tarayıcıların 3128 ve 1080'e göre daha az baktığı üst aralıktan iki port üretir;
- kullanıcı adısız bağlantıyı yasaklar, proxy'den sunucunun iç adreslerine ve bulutun hizmet adreslerine erişimi kapatır;
- e-posta portu 25'i engeller, parola sızarsa spam gönderenler adresinizi kara listelere sokamaz;
- HTTP başlıklarından istemci bilgilerini kaldırır: site gerçek IP'nizi görmez;
- yeniden başlatma sonrası otomatik başlatmayı açar, ufw güvenlik duvarı etkinse portları açar.
Sonunda buna benzer bir rapor görünür, yalnızca sizin değerlerinizle:
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 8c1f0e77a2d94b36c5e1a07dBu bilgileri kendinize kopyalayın. Sunucuda /root/proxy.txt dosyasında durur, cat /root/proxy.txt komutu yeniden gösterir.
Adım 3. Firma panelinde portları açın
Bazı firmalar sunucunun önüne müşteri panelinden ayarlanan kendi ağ güvenlik duvarını koyar. Sizde varsa iki portu da TCP için orada açın. Panelde böyle bölüm yoksa bu adımı atlayabilirsiniz.
Adım 4. Proxy'yi dışarıdan test edin
Test kendi bilgisayarınızdan yapılır: sunucuyu dış dünyanın gözüyle görürsünüz. Linux ve macOS'ta bloğu terminale yapıştırın: check-proxy.sh dosyasını oluşturur. Sonra yükleyici raporunun son satırını yapıştırıp çalıştırın, verileriniz zaten içindedir.
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
SCRIPTHer şey doğru ayarlandıysa çıktı şöyle olur:
[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'ta betik Git Bash'te çalışır. Onsuz PowerShell'de iki komut yeter, her biri sunucunuzun adresini yazdırmalıdır. Tam olarak curl.exe yazın: PowerShell'de sadece curl başka bir komut çağırır.
curl.exe -x "http://LOGIN:PASSWORD@HOST:HTTP_PORT" https://ifconfig.me
curl.exe --socks5-hostname "LOGIN:PASSWORD@HOST:SOCKS_PORT" https://ifconfig.meTest başarısız olursa
| Ne görüyorsunuz | Sorun nedir | Ne yapmalı |
|---|---|---|
| İki satır da "gave no answer", kod 000 | sunucuya giden yolda portlar kapalı | firma panelinde ve ufw'de açın, sunucu adresini denetleyin |
| Proxy yalnızca sunucunun kendisinde yanıt verdi | firma veya sağlayıcı güvenlik duvarı | adım 3'ü tekrarlayın, firma desteğine yazın |
| Doğru parolayla kod 407 | kullanıcı adı veya parolada hata ya da IP'niz izinliler arasında değil | /root/proxy.txt ve ayarlardaki allow satırıyla karşılaştırın |
| SOCKS5 kullanıcı adısız içeri alıyor | ayarlar elle değiştirilmiş | yükleyiciyi yeniden çalıştırın, yeni bilgiler verilir |
| Yükleyici "did not start" yazıyor | hizmet başlamadı | nedene bakın: journalctl -u 3proxy -n 30 |
| Yükleyici "test request failed" yazıyor | hizmet çalışıyor ama sunucu proxy üzerinden internete çıkmıyor | günlüğe bakın: tail /usr/local/3proxy/logs/3proxy.log.* |
| Kurulumda bağımlılık hatası | sistem Ubuntu 22.04 ve Debian 12'den eski | firma panelinde güncel bir işletim sistemi kurun |
Adım 5. Proxy'yi bağlayın
Tarayıcıda HTTP portunu kullanın: eklentisiz Chrome ve Firefox SOCKS5 için kullanıcı adı ve parola giremez. Nereye ne yazılacağı elle proxy kurulumu yazısında anlatıldı. Programlar genellikle IP:PORT:LOGIN:PASSWORD biçiminde satır kabul eder, başka biçim gerekirse proxy dönüştürücü satırı yeniden yazar.
Bağlandınız mı? Proxy üzerinden anonimlik testini açın: sayfa bir sitenin hangi adresi ve başlıkları gördüğünü gösterir. HTTP'nin SOCKS5'ten farkını ve hangi yazılım için hangi portu alacağınızı protokol karşılaştırmasında anlattık.
Sunucu nasıl yönetilir
Aşağıdaki tüm komutlar sunucuda çalıştırılır. Hizmet durumu ve bugünün bağlantı günlüğü. 3proxy her gün yeni dosya açar ve bir hafta saklar. Günlükten Ctrl+C ile çıkılır:
systemctl status 3proxy --no-pager
tail -f "$(ls -t /usr/local/3proxy/logs/* | head -1)"Parolayı değiştirme. LOGIN yerine rapordaki kullanıcı adını yazın. Komut yeni parolayı gösterir, eskisi hemen çalışmaz olur, /root/proxy.txt dosyasında önceki bilgiler kalır:
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İkinci kullanıcı ekleme:
echo "friend:CL:$(openssl rand -hex 12)" >> /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwdYalnızca kendi adresinizden izin verme, kalıcıysa. YOUR_IP yerine IP'nizi yazın. Başka adreslerden proxy doğru parolayla bile 407 koduyla yanıt verir:
sed -i 's/^allow \*$/allow * YOUR_IP/' /usr/local/3proxy/conf/3proxy.cfg
systemctl restart 3proxySunucu artık gerekmediğinde her şeyi kaldırma:
systemctl disable --now 3proxy
apt-get purge -y 3proxy </dev/null
rm -rf /usr/local/3proxy /etc/3proxy /root/proxy.txtGüvenlik listesi
Erişim ayarı hatalı proxy herkese açık hale gelir. Tarayıcılar firma adreslerini sürekli dolaşır ve açık port hızla ücretsiz listelere düşer: sonra sizi başkalarının trafiği, tükenen kanal ve firmaya şikâyetler bekler. Betik temel şeyleri kapatır, gerisi size kalır:
- Aşağıdaki komutla rapordaki portları yazarak güvenlik duvarını açın: dışarıya yalnızca SSH ve proxy kalır.
- Sistemin otomatik güncellemelerini açın. 3proxy ayrı pakettir, bu yüzden birkaç ayda bir yeni sürüm çıkıp çıkmadığına bakın.
- Proxy kullanıcı adı ve parolasının şifresiz iletildiğini unutmayın. Halka açık ağda komşu onları yakalayabilir, bu yüzden kafe ve havalimanlarında proxy'ye VPN üzerinden bağlanın veya erişimi kendi IP'nizle sınırlayın. Ayrıntı halka açık Wi-Fi incelemesinde.
- Ayda bir günlükte tanımadık adreslere bakın ve sunucu IP'sini RBL kara listelerinden geçirin.
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 enableSSH'iniz başka porttaysa çalıştırmadan önce 22'yi onunla değiştirin, yoksa sunucuya erişimi kaybedersiniz.
Ne kazanır, ne kaybedersiniz
| Kendi VPS'iniz | Proxy hizmeti | |
|---|---|---|
| Denetim ve günlükler | tamamen sizin | operatör tarafında |
| Adres | bir, en fazla birkaç | binlerce adreslik havuzlar |
| Adres türü | firmanın veri merkezi | veri merkezinden ev ve hücresele |
| Konum | VPS'inizin ülkesi | ülke seçimi, konutta şehir de |
| Rotasyon | hayır, adres kalıcı | istek başına veya oturuma göre |
| Bakım | güncelleme ve çalışma süresi sizde | fiyata dahil |
| Giriş fiyatı | VPS kirası artı zaman | saatlik abonelikten |
Burada en önemlisi adres türü satırıdır. VPS barındırma alt ağında yaşar ve her site bunu otonom sistemden görür: sunucunuzu ASN sorgusuyla denetleyin. Pazar yerleri ve sosyal ağlar bu aralıklara şüpheyle bakar ve kişisel sunucu orada hiçbir şeyi değiştirmez. Adresi ev veya hücresel olmaz.
Parada da yanılsama yok. Ucuz VPS işlemciyi ve kanalı komşularla paylaşır, bu yüzden akşam hız düşüşleri olağandır. Birçok firma trafiği sınırlar ve aşım, proxy hizmetindeki bir gigabayttan belirgin biçimde pahalıdır.
Kendi proxy'niz ne zaman mantıklı
- Kendi hizmetleriniz için kalıcı IP. Yönetim ve iç paneller yalnızca tek adresten açılır: VPS bunu ucuza ve uzun süreli verir.
- Kendi makineleriniz arasında tünel. Ofis ve sunucu doğrudan bağlıdır, bu noktadan neyin geçeceğine siz karar verirsiniz.
- Günlük şartları. Trafik kayıtları yalnızca sizde kalmalıdır.
- Öğrenme. Kurun, bozun, onarın: proxy'nin içeriden nasıl çalıştığını anlamanın en hızlı yolu budur.
Hizmet ne zaman gerekir
İş birden fazla adres, rotasyon veya belirli bir IP türü istediği anda kişisel sunucu oyundan çıkar: yüzlerce VPS tutmak her tarifeden pahalıdır. Kazıma, fiyat izleme, hesap işleri ve reklam denetimi havuzlarda yaşar. Onlar için tarifelerimiz uygundur: ip:port listeli paketler ve ülke seçimli konut adresleri. Birçok kişi ikisini de tutar: kendi sistemlerine erişim için kişisel sunucu, iş için hizmet havuzu.
Sıradaki okuma

Çin proxy'si: Çin IP'si kime gerekir ve size ne kazandırır
Ağın Çin bölümü kendi kurallarıyla yaşar ve ona dışarıdan bakmak neredeyse faydasızdır: bazı siteler yalnızca Çin adreslerine yanıt verir, fiyatlar ve sonuçlar küreselden farklıdır. Çin IP'si…
4 dk okuma
Proxy sunucu türleri: HTTP'nin SOCKS5'ten farkı nedir
Protokol, yazılımın isteği proxy'ye nasıl ilettiğini belirler: HTTP proxy onu tümüyle okur, CONNECT TLS için tünel açar, SOCKS5 akışı aktarır ve UDP'yi destekler. Dört protokolü şema ve tablolarla…
6 dk okuma
Avrupa proxy'si: Avrupa IP'si kime gerekir, hangisi alınmalı
Siteler içeriği ziyaretçinin ülkesine giderek daha sıkı bağlıyor: fiyatlar, sonuçlar, stok ve reklamlar Berlin ile Paris'te farklı. Avrupa adresi gerektiren işlere bakıyor ve her birine araç…
4 dk okuma