Membangun Server VPN WireGuard Menggunakan Docker

Rabu, 16 September 2020

Membangun Server VPN WireGuard Menggunakan Docker. Oke ini hanyalah catatan pribadi saya mengenai bagaimana proses instalasi server VPN WireGuard menggunakan docker. Dengan menggunakan docker maka proses akan menjadi lebih simple dibanding memasang di host.

Di tutorial ini kita menggunakan sistem operasi Ubuntu. Jangan lupa install Docker dan juga Docker Compose.

Install Docker

sudo apt-get 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 -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $(whoami)

newgrp docker

Install Docker Compose

sudo curl -L https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

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

Install WireGuard
Oke setelah docker dan docker-compose terinstall, sekarang kita sudah siap untuk memasang VPN WireGuard. Image yang akan kita gunakan disini adalah image WireGuard dari linuxserver.io.

Pertama, kita buat direktori terlebih dahulu untuk menyimpan file konfigurasi WireGuard. Agar rapi, kita letakkan saja di direktori /opt.
sudo mkdir /opt/wireguard-server
sudo chown kano:kano /opt/wireguard-server
Sesuaikan sendiri untuk usernya.

nano /opt/wireguard-server/docker-compose.yaml

Berikut adalah template docker-compose yang bisa kita gunakan:
version: "2.1"
services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - SERVERURL=wireguard.domain.com #optional
      - SERVERPORT=51820 #optional
      - PEERS=1 #optional
      - PEERDNS=auto #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
    volumes:
      - /opt/wireguard-server/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped
Sesuaikan sendiri untuk SERVERURLnya. Kalian bisa gunakan domain atau juga alamat IP publik server kalian.
Jika semua konfigurasi sudah oke, kalian bisa jalankan service WireGuardnya menggunakan perintah
cd /opt/wireguard-server
docker-compose up -d

Menggunakan WireGuard di Client
Setelah service WireGuard dijalankan, seluruh file konfigurasi akan disimpan di direktori /opt/wireguard-server/config. Yang perlu kalian lakukan adalah menyalin file konfigurasi wireguard per peer, misalnya peer1/peer1.conf dan menggunakannya sebagai wg0.conf di client.

Atau jika kalian menggunakan smartphone, kalian bisa langsung scan qrcode nya. Untuk melihat qrcode, gunakan command docker exec -it wireguard /app/show-peer <peer-number>. Misalnya
docker exec -it wireguard /app/show-peer 1
Jika kalian ingin menambah client WireGuard, kalian bisa edit nilainya di baris PEERS. Jangan lupa untuk merebuild ulang dengan command
docker-compose up -d --force-recreate
Oke sekian tutorial singkat kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.

Artikel Terkait Docker ,VPN