Eigener Proxy-Server auf VPS: 3proxy einrichten und prüfen
Anleitung für Einsteiger: 3proxy per fertigem Bash-Skript auf einem VPS installieren, Zugang von außen prüfen, Browser verbinden. Und wann es unnötig ist.

Einen persönlichen Proxy-Server können Sie auch einrichten, wenn Sie noch nie eine Linux-Konsole geöffnet haben: Das Installationsprogramm selbst braucht eine Minute. Unten steht die Anleitung Schritt für Schritt: VPS mieten, fertiges Skript starten, Zugang von außen prüfen und Browser verbinden. Das Ergebnis ist eine feste IP mit HTTP und SOCKS5 unter Login und Passwort.
Am Ende des Artikels zeigen wir, bei welchen Aufgaben ein persönlicher Server einem Dienst unterliegt. Wir verkaufen selbst Proxys und sagen das deshalb offen.
Was Sie brauchen
| Was | Welches |
|---|---|
| Server | VPS mit 1 Kern und 512 MB Arbeitsspeicher: Für einen persönlichen Proxy reicht der kleinste Tarif |
| System | sauberes Ubuntu 22.04 oder 24.04, Debian 12 oder 13 |
| Zugang | Benutzer root und Passwort aus der Mail des Hosters |
| Terminal | PowerShell unter Windows 10 und 11, Terminal unter macOS und Linux |
Wählen Sie das VPS-Land gleich passend zur Aufgabe: Die Proxy-Adresse kommt aus diesem Land, ändern lässt sie sich nur durch den Umzug auf einen anderen Server.
Wir haben alle Befehle dieses Artikels auf sauberen Images der vier Systeme aus der Tabelle ausgeführt, jeweils mit 512 MB Arbeitsspeicher und einem Kern. Die Installation dauerte 10 bis 31 Sekunden, und 3proxy selbst belegte ohne Last weniger als 8 MB.
Wir installieren 3proxy. Ein Programm bedient HTTP und SOCKS5, braucht wenig Speicher und wird über eine Datei eingerichtet. Squid arbeitet nur als HTTP-Proxy, Dante nur als SOCKS, damit müssten Sie zwei Dienste einrichten. In den Ubuntu-Repositorys gibt es kein 3proxy-Paket, daher nimmt das Skript das offizielle Paket des Entwicklers und prüft dessen Prüfsumme.
Schritt 1. Mit dem Server verbinden
Öffnen Sie ein Terminal und geben Sie den Befehl mit der Adresse aus der Mail des Hosters ein:
ssh root@SERVER_IPBei der ersten Anmeldung fragt das System, ob Sie dem Server vertrauen: Tippen Sie yes. Das Passwort erscheint bei der Eingabe nicht, das ist so gewollt. Tippen Sie es blind oder fügen Sie es ein und drücken Sie Enter. Hat der Hoster einen normalen Benutzer statt root vergeben, führen Sie nach der Anmeldung sudo -i aus.
Schritt 2. Installationsprogramm starten
Klicken Sie auf Kopieren, fügen Sie den ganzen Block ins Terminalfenster ein und drücken Sie Enter. Er legt die Datei an und startet sie selbst.
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.shDas macht das Skript der Reihe nach:
- installiert das Paket 3proxy und prüft, dass die Datei unverfälscht heruntergeladen wurde;
- erzeugt zufällige Login, Passwort und zwei Ports aus dem oberen Bereich, wo Scanner seltener nachsehen als bei 3128 und 1080;
- verbietet Verbindungen ohne Login und sperrt den Zugriff vom Proxy auf interne Adressen des Servers und Dienstadressen der Cloud;
- sperrt den Mail-Port 25, damit Spammer bei einem Passwortleck Ihre Adresse nicht auf Sperrlisten bringen;
- entfernt Client-Angaben aus den HTTP-Headern: Die Website sieht Ihre echte IP nicht;
- schaltet den Autostart nach einem Neustart ein und öffnet die Ports in ufw, falls diese Firewall aktiv ist.
Am Ende erscheint ein solcher Bericht, nur mit Ihren Werten:
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 8c1f0e77a2d94b36c5e1a07dKopieren Sie diese Daten für sich. Auf dem Server liegen sie in der Datei /root/proxy.txt, der Befehl cat /root/proxy.txt zeigt sie erneut.
Schritt 3. Ports im Hoster-Panel öffnen
Manche Hoster setzen vor den Server eine eigene Netzwerk-Firewall, die sich im Kundenbereich einstellen lässt. Falls vorhanden, erlauben Sie dort beide Ports über TCP. Hat das Panel keinen solchen Bereich, können Sie diesen Schritt überspringen.
Schritt 4. Proxy von außen prüfen
Geprüft wird vom eigenen Computer aus: So sehen Sie den Server mit den Augen der Außenwelt. Unter Linux und macOS fügen Sie den Block ins Terminal ein: Er legt die Datei check-proxy.sh an. Danach fügen Sie die letzte Zeile aus dem Bericht des Installationsprogramms ein und starten sie, Ihre Daten stehen schon darin.
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
SCRIPTIst alles richtig eingerichtet, sieht die Ausgabe so aus:
[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.Unter Windows läuft das Skript in Git Bash. Ohne dieses genügen zwei Befehle in PowerShell, jeder muss die Adresse Ihres Servers ausgeben. Schreiben Sie genau curl.exe: Einfach curl ruft in PowerShell einen anderen Befehl auf.
curl.exe -x "http://LOGIN:PASSWORD@HOST:HTTP_PORT" https://ifconfig.me
curl.exe --socks5-hostname "LOGIN:PASSWORD@HOST:SOCKS_PORT" https://ifconfig.meWenn die Prüfung fehlschlägt
| Was Sie sehen | Woran es liegt | Was zu tun ist |
|---|---|---|
| Beide Zeilen „gave no answer", Code 000 | Ports auf dem Weg zum Server geschlossen | im Hoster-Panel und in ufw öffnen, Serveradresse prüfen |
| Proxy antwortete nur auf dem Server selbst | Firewall von Hoster oder Provider | Schritt 3 wiederholen, Hoster-Support anschreiben |
| Code 407 bei richtigem Passwort | Tippfehler in Login oder Passwort, oder Ihre IP gehört nicht zu den erlaubten | mit /root/proxy.txt und der Zeile allow in den Einstellungen vergleichen |
| SOCKS5 lässt ohne Login hinein | Einstellungen von Hand geändert | Installationsprogramm neu starten, Sie bekommen neue Daten |
| Installationsprogramm meldet „did not start" | Dienst ist nicht gestartet | Ursache ansehen: journalctl -u 3proxy -n 30 |
| Installationsprogramm meldet „test request failed" | Dienst läuft, aber der Server gelangt nicht über den Proxy ins Internet | Log ansehen: tail /usr/local/3proxy/logs/3proxy.log.* |
| Abhängigkeitsfehler bei der Installation | System älter als Ubuntu 22.04 und Debian 12 | im Hoster-Panel ein aktuelles OS neu installieren |
Schritt 5. Proxy verbinden
Im Browser nutzen Sie den HTTP-Port: Chrome und Firefox können ohne Erweiterungen kein Login und Passwort für SOCKS5 eingeben. Was wohin gehört, steht im Artikel zur manuellen Proxy-Einrichtung. Programme nehmen meist eine Zeile der Form IP:PORT:LOGIN:PASSWORD an, und brauchen sie ein anderes Format, schreibt der Proxy-Konverter die Zeile um.
Verbunden? Öffnen Sie die Anonymitätsprüfung über den Proxy: Die Seite zeigt, welche Adresse und welche Header eine Website sieht. Wie sich HTTP von SOCKS5 unterscheidet und welchen Port Sie für welche Software nehmen, steht im Protokollvergleich.
So verwalten Sie den Server
Alle Befehle unten laufen auf dem Server. Dienststatus und Verbindungslog von heute. 3proxy legt jeden Tag eine neue Datei an und hebt sie eine Woche auf. Das Log verlassen Sie mit Strg+C:
systemctl status 3proxy --no-pager
tail -f "$(ls -t /usr/local/3proxy/logs/* | head -1)"Passwort ändern. Setzen Sie statt LOGIN den Login aus dem Bericht ein. Der Befehl zeigt das neue Passwort, das alte funktioniert sofort nicht mehr, und in /root/proxy.txt bleiben die bisherigen Daten:
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/passwdZweiten Benutzer hinzufügen:
echo "friend:CL:$(openssl rand -hex 12)" >> /usr/local/3proxy/conf/passwd
systemctl restart 3proxy
cat /usr/local/3proxy/conf/passwdNur von Ihrer Adresse zulassen, falls sie fest ist. Setzen Sie statt YOUR_IP Ihre IP ein. Von anderen Adressen antwortet der Proxy selbst bei richtigem Passwort mit Code 407:
sed -i 's/^allow \*$/allow * YOUR_IP/' /usr/local/3proxy/conf/3proxy.cfg
systemctl restart 3proxyAlles entfernen, wenn Sie den Server nicht mehr brauchen:
systemctl disable --now 3proxy
apt-get purge -y 3proxy </dev/null
rm -rf /usr/local/3proxy /etc/3proxy /root/proxy.txtSicherheits-Checkliste
Ein Proxy mit einem Fehler in der Zugangseinstellung wird öffentlich. Scanner durchkämmen Hoster-Adressen ständig, und ein offener Port landet schnell in kostenlosen Listen: Dann warten fremder Traffic, ein aufgezehrter Kanal und Beschwerden beim Hoster. Das Skript schließt das Wichtigste, der Rest liegt bei Ihnen:
- Schalten Sie die Firewall mit dem Befehl unten ein und setzen Sie die Ports aus dem Bericht ein: Nach außen bleiben nur SSH und der Proxy.
- Schalten Sie automatische Systemupdates ein. 3proxy selbst ist ein eigenes Paket, prüfen Sie daher alle paar Monate, ob eine neue Version erschienen ist.
- Denken Sie daran, dass Login und Passwort des Proxys unverschlüsselt übertragen werden. In einem öffentlichen Netz kann ein Nachbar sie abfangen, daher verbinden Sie sich in Cafés und Flughäfen über ein VPN oder begrenzen den Zugang auf Ihre IP. Mehr in der Analyse zum öffentlichen WLAN.
- Sehen Sie einmal im Monat im Log nach unbekannten Adressen und prüfen Sie die Server-IP über RBL-Sperrlisten.
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 enableLäuft Ihr SSH auf einem anderen Port, ersetzen Sie 22 vor dem Start, sonst verlieren Sie den Zugang zum Server.
Was Sie gewinnen und was Sie verlieren
| Eigener VPS | Proxy-Dienst | |
|---|---|---|
| Kontrolle und Logs | ganz Ihre | beim Betreiber |
| Adressen | eine, höchstens wenige | Pools mit Tausenden Adressen |
| Adresstyp | Rechenzentrum des Hosters | von Rechenzentrum bis Heim und Mobilfunk |
| Standort | Land Ihres VPS | Länderwahl, bei Residential auch Stadt |
| Rotation | nein, die Adresse ist fest | pro Anfrage oder pro Sitzung |
| Wartung | Updates und Verfügbarkeit bei Ihnen | im Preis enthalten |
| Einstiegspreis | VPS-Miete plus Zeit | ab einem Stundenabo |
Am wichtigsten ist hier die Zeile zum Adresstyp. Ein VPS lebt in einem Hosting-Subnetz, und jede Website erkennt das am autonomen System: Prüfen Sie Ihren Server über die ASN-Abfrage. Marktplätze und soziale Netzwerke behandeln solche Bereiche misstrauisch, und ein persönlicher Server ändert dort nichts. Seine Adresse wird nicht zu einer Heim- oder Mobilfunkadresse.
Auch beim Geld ohne Illusionen. Ein billiger VPS teilt CPU und Kanal mit Nachbarn, abendliche Tempoeinbrüche sind daher normal. Viele Hoster begrenzen den Traffic, und Mehrverbrauch kostet merklich mehr als ein Gigabyte bei einem Proxy-Dienst.
Wann sich ein eigener Proxy lohnt
- Feste IP für Ihre Dienste. Admin- und interne Panels sind nur von einer Adresse aus offen: Ein VPS liefert sie günstig und langfristig.
- Tunnel zwischen Ihren Rechnern. Büro und Server sind direkt verbunden, und Sie entscheiden, was über diesen Punkt läuft.
- Anforderungen an Logs. Traffic-Aufzeichnungen müssen nur bei Ihnen liegen.
- Lernen. Aufsetzen, kaputt machen, reparieren: So verstehen Sie am schnellsten, wie ein Proxy von innen arbeitet.
Wann ein Dienst nötig ist
Ein persönlicher Server scheidet aus, sobald eine Aufgabe mehr als eine Adresse, Rotation oder einen bestimmten IP-Typ braucht: Hunderte VPS zu unterhalten kostet mehr als jeder Tarif. Scraping, Preisüberwachung, Kontoarbeit und Anzeigenprüfung leben auf Pools. Dafür passen unsere Tarife: Pakete mit ip:port-Liste und Residential-Adressen mit Länderwahl. Viele halten beides: einen persönlichen Server für den Zugang zu eigenen Systemen und einen Dienst-Pool für die Arbeit.
Weiterlesen

Proxys in China: Wer eine chinesische IP braucht und wozu
Das chinesische Netz lebt nach eigenen Regeln, und ein Blick von außen bringt kaum etwas: Manche Websites antworten nur Adressen aus China, Preise und Ergebnisse weichen von den globalen ab. Wir…
5 Min. Lesezeit
Proxy-Server-Typen: wie sich HTTP von SOCKS5 unterscheidet
Das Protokoll bestimmt, wie die Software eine Anfrage an den Proxy übergibt: Ein HTTP-Proxy liest sie ganz, CONNECT öffnet einen Tunnel für TLS, SOCKS5 leitet den Strom weiter und kann UDP. Wir…
7 Min. Lesezeit
Proxys in Europa: Wer eine europäische IP braucht und welche
Websites binden Inhalte immer enger an das Land des Besuchers: Preise, Ergebnisse, Bestand und Anzeigen unterscheiden sich zwischen Berlin und Paris. Wir sehen uns Aufgaben an, die eine europäische…
4 Min. Lesezeit