Osobisty serwer VPN WireGuard z przyjaznym dla użytkownika interfejsem internetowym | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Jak skonfigurować własny serwer VPN WireGuard z wg-easy

wg-easy to aplikacja Docker, która uruchamia serwer VPN WireGuard razem z panelem webowym. W panelu tworzysz klientów, pobierasz ich pliki konfiguracyjne lub skanujesz kod QR telefonem oraz widzisz, którzy klienci są połączeni. Ten poradnik pokazuje, jak zainstalować aktualną wersję, wg-easy v15, na serwerze Linux za pomocą Docker Compose i połączyć pierwsze urządzenie.

Info

wg-easy v15 różni się od starszych wersji. Hasło administratora nie jest już przekazywane w zmiennej PASSWORD: kontener uruchomiony z PASSWORD lub PASSWORD_HASH nie startuje. Login i hasło ustawia się teraz w przeglądarce podczas pierwszego uruchomienia.

Wymagania

Wystarczy VPS z publicznym adresem IP i dostępem root lub sudo. wg-easy jest lekki: 1 vCPU i 1 GB RAM wystarczą do osobistego VPN. Polecenia w tym poradniku sprawdzono w Ubuntu 24.04 LTS. Ponieważ wg-easy działa w Dockerze, działają one tak samo w Ubuntu 22.04, Debianie 12, AlmaLinux 9 i Rocky Linux 9.

Tip

Jeśli nie chcesz niczego instalować ręcznie, zamów w marketplace aplikacji INTROSERV VPS z już wdrożonym wg-easy i przejdź od razu do pierwszego uruchomienia.

Instalacja Dockera

Połącz się z serwerem przez SSH i zainstaluj Docker Engine z wtyczką Compose za pomocą oficjalnego skryptu:

curl -fsSL https://get.docker.com | sudo sh

Sprawdź, czy Docker i Compose są zainstalowane:

sudo docker --version sudo docker compose version

Pobranie pliku docker-compose.yml

wg-easy instaluje się za pomocą oficjalnego pliku docker-compose.yml z repozytorium projektu. Utwórz dla niego katalog i pobierz plik:

sudo mkdir -p /etc/docker/containers/wg-easy sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

Najważniejsze wiersze pliku to obraz i porty:

image: ghcr.io/wg-easy/wg-easy:15 ports: - "51820:51820/udp" - "51821:51821/tcp"

Port 51820/udp jest używany przez sam WireGuard, a port 51821/tcp przez panel webowy. Tag 15 oznacza, że aktualizacje pozostają w obrębie wersji 15. Konfiguracja i klienci są przechowywani w woluminie Dockera, dlatego zostają zachowani po ponownym utworzeniu kontenera.

Uruchomienie wg-easy

Przejdź do katalogu z plikiem i uruchom kontener:

cd /etc/docker/containers/wg-easy sudo docker compose up -d

Sprawdź, czy kontener działa:

sudo docker compose ps

W kolumnie STATUS powinno być widoczne Up, a w kolumnie PORTS porty 51820/udp i 51821/tcp.

Otwarcie portu w zaporze

Klienci łączą się z serwerem przez port UDP 51820. Jeśli na serwerze włączony jest UFW, zezwól na ten port:

sudo ufw allow 51820/udp

W AlmaLinux i Rocky Linux z firewalld użyj:

sudo firewall-cmd --permanent --add-port=51820/udp sudo firewall-cmd --reload

Otwarcie panelu webowego

wg-easy v15 nie pozwala na logowanie do panelu przez zwykły HTTP. Najprostszym bezpiecznym sposobem jest otwarcie panelu przez tunel SSH. Na swoim komputerze uruchom:

ssh -L 51821:localhost:51821 USER@SERVER_IP

Pozostaw tę sesję SSH otwartą i przejdź w przeglądarce pod adres http://localhost:51821.

Warning

Możesz też zezwolić na dostęp przez zwykły HTTP: w docker-compose.yml odkomentuj blok environment, ustaw INSECURE=true i ponownie uruchom sudo docker compose up -d. W takim przypadku hasło do panelu jest wysyłane bez szyfrowania, dlatego używaj tej opcji wyłącznie do testów. Dla stałego dostępu przez nazwę domeny umieść panel za reverse proxy z HTTPS.

Zakończenie pierwszego uruchomienia

Przy pierwszym uruchomieniu wg-easy otwiera kreator konfiguracji. Po ekranie powitalnym utwórz konto administratora: wpisz nazwę użytkownika i hasło, a następnie potwierdź hasło.

Gdy kreator zapyta, czy masz istniejącą konfigurację, wybierz No. Spowoduje to utworzenie nowej konfiguracji.

Na następnym ekranie podaj Host i Port, z których klienci będą korzystać przy łączeniu. W polu Host wpisz publiczny adres IP lub nazwę domeny serwera, a nie localhost, nawet jeśli panel otworzyłeś przez tunel SSH. Pozostaw Port jako 51820. Przycisk Suggest wpisuje adres, który wg-easy wykrywa automatycznie.

Warning

Adres z pola Host trafia do konfiguracji każdego klienta. Jeśli wpiszesz błędny adres, klienci nie będą mogli się połączyć.

Po zakończeniu pracy kreatora zaloguj się, używając utworzonej nazwy użytkownika i hasła.

Tworzenie klienta

Na stronie głównej panelu kliknij New Client, wpisz nazwę urządzenia, na przykład laptop lub phone, i potwierdź. Klient pojawi się na liście. Obok znajdują się przyciski do wyświetlenia kodu QR i pobrania pliku konfiguracyjnego.

Utwórz osobnego klienta dla każdego urządzenia. Dzięki temu możesz wyłączyć lub usunąć dostęp jednego urządzenia bez wpływu na pozostałe.

Połączenie urządzenia

Zainstaluj na swoim urządzeniu oficjalną aplikację WireGuard. Jest dostępna dla Windows, macOS, Androida i iOS na oficjalnej stronie pobierania WireGuard.

Na telefonie otwórz aplikację WireGuard, wybierz dodanie tunelu przez kod QR i zeskanuj kod z panelu.

Na komputerze pobierz w panelu plik konfiguracyjny klienta i zaimportuj go w aplikacji WireGuard za pomocą Import tunnel(s) from file. Następnie kliknij Activate.

W Linuksie zainstaluj wireguard-tools i openresolv. Bez openresolv polecenie wg-quick kończy się błędem na wierszu DNS pliku konfiguracyjnego. W Ubuntu i Debianie:

sudo apt install wireguard-tools openresolv sudo wg-quick up ./CLIENT_NAME.conf

Aby rozłączyć się w Linuksie, uruchom sudo wg-quick down ./CLIENT_NAME.conf.

Sprawdzenie połączenia

Gdy tunel jest aktywny, sprawdź, jaki adres IP widzi internet:

curl -4 ifconfig.me

Polecenie powinno zwrócić adres IP Twojego serwera. Możesz też otworzyć w przeglądarce dowolną stronę do sprawdzania adresu IP. W panelu wg-easy połączony klient pokazuje ostatnią aktywność i ruch.

Zarządzanie klientami

Wszystkimi klientami zarządza się na stronie głównej panelu. Każdego klienta można tymczasowo wyłączyć przełącznikiem obok: urządzenie zostaje na liście, ale nie może się połączyć, dopóki go ponownie nie włączysz. Aby całkowicie odebrać dostęp, usuń klienta. Jego plik konfiguracyjny i kod QR przestają działać natychmiast. Jeśli urządzenie zostanie zgubione lub plik konfiguracyjny mógł zostać skopiowany, usuń tego klienta i utwórz nowego.

Jeśli coś nie działa

Jeśli panel się nie otwiera, sprawdź poleceniem sudo docker compose ps, czy kontener działa, i obejrzyj log:

sudo docker logs wg-easy

Jeśli panel się otwiera, ale nie możesz się zalogować i widzisz komunikat o niezabezpieczonym połączeniu, otworzyłeś go przez zwykły HTTP. Użyj tunelu SSH z poprzedniej sekcji.

Jeśli klient nie może się połączyć, sprawdź, czy port UDP 51820 jest otwarty w zaporze serwera oraz w zaporze panelu dostawcy, jeśli taka istnieje. Otwórz też plik konfiguracyjny klienta i sprawdź wiersz Endpoint: musi zawierać publiczny adres serwera. Jeśli zawiera błędny adres, Host został wpisany nieprawidłowo w kreatorze konfiguracji.

Jeśli tunel jest aktywny, ale urządzenie nie ma internetu, sprawdź log serwera poleceniem sudo docker logs wg-easy i upewnij się, że kontener został uruchomiony z oficjalnego pliku docker-compose.yml bez zmian w sekcji sysctls.

Jeśli w Linuksie wg-quick kończy się błędem dotyczącym resolvconf, zainstaluj openresolv, jak opisano w sekcji o łączeniu urządzenia.

Aktualizacja wg-easy

Aby zainstalować nowszą kompilację wersji 15, pobierz nowy obraz i utwórz kontener ponownie:

cd /etc/docker/containers/wg-easy sudo docker compose pull sudo docker compose up -d

Klienci i ustawienia zostają zachowani, ponieważ są przechowywani w woluminie Dockera.

Zatrzymanie i usunięcie wg-easy

Aby zatrzymać serwer VPN, uruchom w katalogu z plikiem docker-compose.yml:

sudo docker compose down

Konfiguracja pozostaje w woluminie, a polecenie sudo docker compose up -d uruchamia serwer ponownie z tymi samymi klientami.

Aby całkowicie usunąć wg-easy wraz ze wszystkimi klientami i kluczami, dodaj opcję -v:

sudo docker compose down -v

Warning

Po wykonaniu sudo docker compose down -v wszystkie konfiguracje klientów przestają działać. Aby ponownie korzystać z VPN, trzeba będzie przejść pierwsze uruchomienie i ponownie utworzyć klientów.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA