ZALOGUJ
    opened image

    Jak wiadomo, WireGuard — to VPN, który pozwala nam na stworzenie zabezpieczonego tunelu zarówno dla prywatnej sieci, jak i do przeglądania Internetu. Daje nam to bezpieczny i niezawodny dostęp do Internetu z telefonu komórkowego lub komputera osobistego.

    Jak go zainstalować na czystym serwerze, można zapoznać się w tym artykule.

    W tym przewodniku omówimy, jak zainstalować WireGuard w kontenerze Docker, używając Docker Compose.

     

    Zainstalujemy Docker. 

    Ale najpierw musimy zaktualizować pakiety systemu operacyjnego. 
     

    apt update


    Zainstalujemy niezbędne pakiety i dodamy nowe repozytorium:

    apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"


    Zaktualizujemy pakiety z nowym repozytorium:

    apt update


    Teraz zainstalujemy samego Dockera.

    apt-get install docker-ce docker-ce-cli containerd.io


    Sprawdzimy wersję:

    docker --version


    Sprawdzimy status:

    systemctl status docker



    Jeśli nie uruchomił się, uruchamiamy go:

    systemctl start docker
    


    I dodajemy do autostartu.

    systemctl enable docker
    


     

     

    Zainstalujemy Docker-Compose

    Dla tego projektu wystarczy wersja 1.25. 
     

    curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    


    Nadajemy prawa do uruchamiania. 

    chmod +x /usr/local/bin/docker-compose
    


    Sprawdzamy, jak zainstalował się Docker-Compose:

    docker-compose --version
    



    Dodajemy użytkownika Linux do grupy docker:

     

    usermod -aG docker $USER
    


    Stworzymy plik *.yaml  dla Docker-Compose.

    Aby w przyszłości orientować się w tym, co mamy zainstalowane, stworzymy osobny folder dla tego projektu w katalogu /opt i przejdziemy do niego.

    mkdir /opt/wireguard-server && cd /opt/wireguard-server
    


    Możesz również użyć swojego katalogu domowego /home do umieszczenia tego i innych projektów. 

    Skorzystamy z repozytorium linuxserver do stworzenia pliku docker-compose.yaml pod tym linkiem https://hub.docker.com/r/linuxserver/wireguard

    Tworzymy plik docker-compose.yaml lub docker-compose.yml,

    vim docker-compose.yaml
    


    I dodajemy do niego następujący kod:

    version: "2.1"
    services:
      wireguard:
        image: lscr.io/linuxserver/wireguard:latest
        container_name: wireguard
        cap_add:
          - NET_ADMIN
          - SYS_MODULE
        environment:
          - PUID=0
          - PGID=0
          - TZ=Europe/Amsterdam
          - SERVERURL=auto
          - SERVERPORT=51820
          - PEERS=1
          - PEERDNS=1.1.1.1
          - INTERNAL_SUBNET=10.10.10.0
          - ALLOWEDIPS=0.0.0.0/0
          - LOG_CONFS=true
        volumes:
          -  /opt/wireguard-server/config:/config
          - /lib/modules:/lib/modules
        ports:
          - 51820:51820/udp
        sysctls:
          - net.ipv4.conf.all.src_valid_mark=1
        restart: always


    Gdzie:

    container_name: nazwa Twojego kontenera;
    TZ=: strefa czasowa, możesz zmienić na potrzebną, ale dla anonimowości lepiej zostawić Europe/Amsterdam;
    SERVERPORT=: losowy port, na którym będzie działać Twój VPN. Należy go również wpisać w ports.
    PEERS=: liczba użytkowników. Można ją zwiększać do potrzebnej liczby;
    51820:51820/udp - przekierowywane porty.

    Uruchamiamy nasz skrypt (w tym celu musimy znajdować się w katalogu, w którym stworzono nasz plik. W tym przypadku to /opt/wireguard-server/):

    docker-compose up -d 


    Czekamy na pobranie obrazów i wdrożenie.

    Sprawdzamy:

    docker-compose ps


    lub 

    docker ps



    Można to również zrobić jednym poleceniem w docker:

    docker run -d \\ --name=wireguard \\ --cap-add=NET_ADMIN \\ --cap-add=SYS_MODULE \\ -e PUID=0 \\ -e PGID=0 \\ -e TZ=Europe/Amsterdam \\ -e SERVERURL=auto \\ -e SERVERPORT=51820 \\ -e PEERS=1 \\ -e PEERDNS=1.1.1.1 \\ -e INTERNAL_SUBNET=10.10.10.0 \\ -e ALLOWEDIPS=0.0.0.0/0 \\ -e LOG_CONFS=true \\ -p 51820:51820/udp \\ -v /opt/wireguard-server/config:/config \\ -v /lib/modules:/lib/modules \\ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \\ --restart always \\  lscr.io/linuxserver/wireguard:latest


    Aby wygenerować kod QR dla smartfona:

    docker exec -it wireguard /app/show-peer 1


    Gdzie:

    1 - to pierwszy konfiguracja/użytkownik.

    Wynik:


    Wszystkie pliki konfiguracyjne i kody QR znajdują się w /opt/wireguard-server/config/peer*

     

    Jak stworzyć dodatkowych użytkowników.


    Aby to zrobić, wystarczy zmienić dyrektywę PEERS w pliku docker-compose.yaml, dodać potrzebną liczbę użytkowników.

    Aby zmiany zostały zastosowane, przekształcamy nasz kontener:

     

    docker-compose up -d --force-recreate


    Również dla anonimowości, wyłączamy ping na serwerze hosta:

    echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
    

     


    I stosujemy zmiany:

    sysctl -p
    


    Miłego surfowania.