Jak zainstalować panel 3X-UI na VPS
Kompletny, produkcyjny poradnik: instalacja panelu 3X-UI (Xray) na Ubuntu, zabezpieczenie interfejsu WWW, certyfikat TLS, inbound VLESS Reality, użytkownicy i podłączanie klientów na komputerze i telefonie.

3X-UI to panel WWW dla Xray-core. Pozwala zarządzać inboundami (VLESS, VMess, Trojan, Shadowsocks i innymi), wydawać linki subskrypcji, ustawiać limity ruchu i daty ważności oraz oglądać żywe połączenia bez ręcznej edycji JSON. Jeśli masz już VPS, to jeden z najszybszych sposobów na utrzymywalny stos proxy zamiast konfiguracji „na jeden wieczór”, której za pół roku nikt nie odważy się ruszyć.
Poradnik jest napisany pod świeży Ubuntu 22.04 lub 24.04 — typowy obraz Linux Hiddence po pierwszym starcie. Zainstalujemy popularną kompilację MHSanaei 3X-UI, od razu zmienimy wszystkie domyślne sekrety, schowamy panel za HTTPS, otworzymy w firewallu tylko potrzebne porty, utworzymy inbound VLESS + Reality i przejdziemy przez aplikacje klienckie. Jeśli stawiałeś już Marzbana według naszego artykułu, pomysł jest podobny — panel na Xray — ale ścieżka instalacji, układ plików i codzienna praca są inne. Nie mieszaj obu paneli na tym samym serwerze, dopóki naprawdę nie umiesz rozdzielić portów.
Dlaczego 3X-UI zamiast surowego konfigu Xray
Surowy konfig Xray wystarczy przy jednym użytkowniku i jednym inboundzie. Gdy pojawiają się znajomi, rotacja kluczy Reality albo URL subskrypcji, który telefon importuje jednym stuknięciem, panel oszczędza godziny. 3X-UI trzyma użytkowników w lokalnej bazie, czysto restartuje Xray po zmianach i daje zwięzły pulpit ruchu oraz statusu online. Sam z siebie nie jest magiczną warstwą anonimowości: o zachowaniu w sieci decydują lokalizacja VPS, odcisk TLS, typ inboundu i Twoja higiena operacyjna.
- Interfejs WWW dla inboundów, klientów, ruchu i dat ważności zamiast ręcznego JSON
- Gotowe linki subskrypcji dla v2rayN, v2rayNG, Streisand, Happ i podobnych klientów
- Instalacja jedną komendą plus udokumentowana ścieżka aktualizacji
- Działa na małym VPS (1 vCPU / 1 GB RAM wystarczy do użytku osobistego)
- Root zostaje u Ciebie — panel nie wysyła konfigów do cudzej chmury
Co potrzebujesz przed startem
Nie pomijaj domeny i firewalla. Panel na HTTP na porcie 2053 z hasłem domyślnym boty znajdują w ciągu godzin. Przygotuj punkty poniżej i połącz się przez SSH jako root (albo użytkownik z sudo).
- Linux VPS z publicznym adresem IPv4 (zalecany Ubuntu 22.04/24.04)
- Co najmniej 1 GB RAM i 10 GB dysku; 2 GB jest wygodniejsze, jeśli na serwerze działa jeszcze coś innego
- Dostęp root lub sudo przez SSH
- Domena lub subdomena z rekordem A na IP VPS (potrzebna do porządnego certyfikatu panelu)
- Około 20–30 minut plus czas na DNS, jeśli rekord A właśnie utworzyłeś
Krok 1. Zaktualizuj system i ustaw strefę czasową
Świeży VPS często ma zaległe aktualizacje bezpieczeństwa, a zegar stoi na UTC. Najpierw pakiety, żeby instalator nie kłócił się ze starym OpenSSL albo curl. Strefa czasowa dla samego Xray nie jest krytyczna, ale logi panelu i daty wygaśnięcia certyfikatów czyta się dużo łatwiej.
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl wget ca-certificates gnupg socat tar unzip
timedatectl set-timezone UTC
hostnamectl set-hostname panel
# Confirm DNS for your subdomain (should print your VPS IP):
dig +short panel.example.comKrok 2. Zainstaluj 3X-UI
Oficjalny skrypt instalacji kompilacji MHSanaei 3X-UI pobiera najnowsze wydanie, instaluje Xray-core, tworzy usługę systemd i wypisuje URL pierwszego logowania. Przeczytaj wyjście uważnie: jest tam losowa ścieżka oraz wygenerowany login i hasło. Skopiuj je od razu do menedżera haseł. Jeśli skrypt zapyta o port panelu, zostaw 2053 albo wybierz wolny wysoki port — zapamiętaj go na krok z firewallem.
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# After install, useful commands:
x-ui # interactive menu (start/stop/restart, reset, update)
systemctl status x-ui # confirm the service is active
ss -tulpn | grep x-ui # see which port the panel listens onKrok 3. Pierwsze logowanie i natychmiastowe utwardzenie
Otwórz URL wypisany przez instalator, zwykle http://YOUR_IP:2053/<losowa-ścieżka>. Zaloguj się wygenerowanymi danymi, potem wejdź w Panel Settings (albo Configuration). Zmień nazwę użytkownika i hasło na unikalne. Jeśli panel pozwala zmienić bazową ścieżkę WWW — zrób to: długa losowa ścieżka obcina ogromną część skanów. Ustaw port nasłuchu, jeśli chcesz coś innego niż 2053. Zapisz i zrestartuj panel z UI albo przez systemctl restart x-ui, potem zaloguj się ponownie pod nowym URL.
Następnie włącz uwierzytelnianie dwuskładnikowe, jeśli Twoja kompilacja to oferuje, i wyłącz nieużywane szablony inboundów. W ustawieniach Xray zostaw wersję rdzenia, która przyszła z panelem, chyba że masz konkretny powód, by przypiąć inną kompilację. Nie wystawiaj panelu na 80/443, jeśli te porty zajmie później Reality albo reverse proxy — wybierz jedną strategię i się jej trzymaj.
- Natychmiast zamień wygenerowany login administratora
- Zachowaj tajną ścieżkę WWW; nie przenoś panelu na /
- Wolisz niestandardowy port panelu i zapisz go
- Nigdy nie używaj tego hasła w innych usługach
Krok 4. Certyfikat TLS dla panelu
Przeglądarki ostrzegają przy HTTP, a hasło administratora jawnym tekstem w sieci publicznej to zły pomysł. 3X-UI potrafi zamówić certyfikat Let's Encrypt, jeśli port 80 jest wolny i domena wskazuje na ten VPS. W panelu otwórz sekcję certyfikatu / SSL, wpisz panel.example.com i zamów cert. Jeśli port 80 jest już zajęty, użyj przepływu DNS-01 albo postaw Caddy/Nginx z przodu i zrób reverse proxy na 127.0.0.1:2053.
# Quick check that port 80 is free before the panel ACME challenge:
ss -tulpn | grep ':80'
# If you terminate TLS on Caddy instead of inside 3X-UI:
# Caddyfile example (panel stays on 127.0.0.1:2053):
# panel.example.com {
# reverse_proxy 127.0.0.1:2053
# }Krok 5. Utwórz inbound VLESS Reality
W Inbounds utwórz nowy inbound. Solidny domyślny wybór dla wielu sieci to VLESS z Reality i TCP. Wybierz port inny niż port panelu — 443 jest częsty, jeśli nic innego tam nie słucha; w przeciwnym razie wysoki port TCP i ten sam numer w firewallu. Wygeneruj UUID pierwszego klienta, pary kluczy Reality w UI i ustaw dest / serverNames na legalny cel, który wolno Ci naśladować (znaną witrynę z TLS 1.3). Zapisz inbound i potwierdź, że Xray przeładował się bez błędów w logach panelu.
Potem dodawaj kolejnych klientów na tym samym inboundzie: każdy użytkownik dostaje UUID, opcjonalny tag e-mail oraz opcjonalny limit ruchu lub czasu. Kopiuj link połączenia albo URL subskrypcji z wiersza użytkownika. Nie wrzucaj tych linków na publiczne czaty — to równoważnik hasła.
# On the server, confirm Xray is listening on the inbound port (example: 443):
ss -tulpn | grep -E ':443|:2053'
# Follow Xray logs if a client cannot connect:
journalctl -u x-ui -fKrok 6. Firewall — tylko potrzebne porty
Na Ubuntu wystarczy UFW. Najpierw zezwól na SSH, żeby się nie zablokować, potem port panelu i port inboundu. Jeśli zamawiasz certyfikat Let's Encrypt z panelu, na czas wydania zezwól też na 80/tcp. Reality na 443 potrzebuje 443/tcp (i nie panelu na tym samym porcie).
ufw allow OpenSSH
ufw allow 2053/tcp comment '3x-ui panel (change if you picked another port)'
ufw allow 443/tcp comment 'VLESS Reality inbound'
# ufw allow 80/tcp comment 'only if panel ACME needs it'
ufw enable
ufw status verbosePodłączanie klientów
W Windows v2rayN importuje link VLESS ze schowka. Na Androidzie v2rayNG albo podobny klient Xray robi to samo z kodu QR. Na iOS użyj klienta z obsługą VLESS Reality (na przykład Streisand albo Happ, zależnie od tego, co jest dostępne w Twoim regionie). Po imporcie włącz profil i sprawdź listę online w panelu. Jeśli klient milczy, zwykle winny jest zły port, UDP włączone na inboundzie tylko TCP, serverName Reality, który nie zgadza się z dest, albo lokalny firewall laptopa.
- Windows: v2rayN — import linku VLESS, routing globalny albo według reguł
- Android: v2rayNG — skan QR ze strony użytkownika w panelu
- macOS / iOS: klient z VLESS + Reality; wklej ten sam link
- URL subskrypcji: dodaj go w kliencie, żeby rotacja UUID nie wymagała ręcznego importu
Aktualizacje, kopia zapasowa i bezpieczna reinstalacja
Przed każdą aktualizacją panelu pobierz kopię zapasową z UI (baza + konfig) i trzymaj ją poza VPS. Aktualizacje zwykle idą przez x-ui i opcję update w menu albo ten sam skrypt instalacyjny, który wykrywa istniejącą instalację. Po aktualizacji potwierdź, że usługa systemd jest aktywna i inboundy nadal nasłuchują. Jeśli reinstaluujesz OS, przywróć kopię w panelu zamiast ręcznie odtwarzać każdy UUID.
x-ui # choose update when prompted, or:
# bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# Backup files commonly live under /etc/x-ui/ — copy them off-box:
ls -la /etc/x-ui/
# Example offsite copy:
# scp -r /etc/x-ui/ you@backup-host:~/x-ui-backup-$(date +%F)/Rozwiązywanie problemów
Większość awarii pierwszego dnia to DNS, porty albo pola Reality. Przejdź tę listę, zanim reinstaluujesz panel. Reinstalacja bez kopii to sposób, by stracić każdy UUID klienta.
- Nie otwiera się interfejs WWW: sprawdź systemctl status x-ui, ss -tulpn i UFW. Upewnij się, że w URL jest tajna ścieżka.
- Zapomniałeś hasła administratora: uruchom x-ui na serwerze i użyj opcji resetu.
- Klient łączy się i zawisa: port inboundu zablokowany albo włączone UDP na TCP Reality.
- Błędy TLS panelu: rekord A jeszcze tu nie wskazuje albo port 80 zajęty podczas ACME.
- Handshake Reality nie przechodzi: niezgodność dest/serverNames albo inna usługa już zajmuje 443.
- Wysokie CPU: za dużo inboundów na planie 1 vCPU albo skan/flood na otwartym porcie — sprawdź ss i liczbę online w panelu.
Uwagi o bezpieczeństwie, które naprawdę mają znaczenie
Traktuj panel jak produkcyjne oprogramowanie administracyjne. Może tworzyć użytkowników i czytać każdy UUID. Ogranicz, kto dosięgnie portu WWW: jeśli masz stałe IP biura, w UFW dla 2053/tcp zezwól tylko na nie. SSH na kluczach, nie na hasłach. Nie prowadź niezwiązanych publicznych witryn na tym samym IP, jeśli Reality siedzi na 443 — konkurujące stosy TLS na jednym porcie to klasyka awarii. Zmień hasło administratora, jeśli zrzut panelu kiedykolwiek wyciekł na czat.
- Tylko klucze SSH; wyłącz logowanie hasłem, gdy klucze działają
- Ogranicz port panelu w firewallu, gdy możesz
- Kopiuj /etc/x-ui poza serwer według harmonogramu
- Nie udostępniaj URL subskrypcji w publicznych grupach Telegram
- Pilnuj dysku: logi i statystyki ruchu rosną na ruchliwym inboundzie
Praktyczne wskazówki
- Jeden inbound z wieloma klientami jest łatwiejszy w obsłudze niż dziesięć niemal identycznych
- Nazwij klientów według urządzeń (laptop-anna, telefon-ben), żeby wykresy ruchu coś znaczyły
- Jeśli potrzebujesz też reverse proxy dla witryny, daj jej inne IP albo inny port — nie walcz z Reality o 443
- Po każdym restarcie x-ui przetestuj jednego klienta, zanim zamkniesz sesję SSH
- Czytaj changelog przed aktualizacją; nie skacz na latest w piątkowy wieczór
Masz teraz 3X-UI jako usługę systemd, zamknięty URL administratora, TLS na panelu, inbound VLESS Reality, reguły firewalla zgodne z tymi portami i nawyk kopii zapasowej. Dodawaj klientów ze strony inboundu, importuj link na każdym urządzeniu i aktualizuj panel dopiero po kopii. Jeśli coś padnie, ścieżka odzyskania to menu x-ui na VPS — nie pełna reinstalacja.