Menggunakan docker untuk openvpn server

Saat ini saya sering sekali mengunakan VPN untuk browsing website karena banyak sekali website yang di block ataupun lambat diakses pada saat menggunakan Indihome :(

Saya menggunakan instance Amazon Lightsail dan menggunakan Pritunl sebagai penyedia VPN

Tetapi ada beberapa masalah setelah memakai pritunl, yaitu:

Masalah

  1. Amazon Lightsail instance hanya mempunyai 512MB Memory
  2. Pritunl membutuhkan banyak resouces yang banyak tidak terpakai (bloated)
  3. Proses instalasi yang rumit

Solusi

OpenVPN - Service VPN yang membutuhkan resource kecil dan tidak bloated

Docker - Proses installasi container yang sangat mudah yang dapat dibantu dengan docker-compose

docker-openvpn - Container OpenVPN

Kareana deployment service lain yang ada pada VPS juga menggunakan docker, jadi hanya menambahkannya pada docker-compose.yml

# docker-compose.yml
version: '3.8'
services:
  openvpn:
    cap_add:
     - NET_ADMIN
    image: kylemanna/openvpn
    container_name: openvpn
    ports:
     - "1194:1194/udp"
    restart: always
    volumes:
     - ./openvpn-data/conf:/etc/openvpn

Lalu kita setup openvpn pada VPS

$ docker-compose run --rm openvpn ovpn_genconfig -u udp://openvpn.andrikurnia.com
$ docker-compose run --rm openvpn ovpn_initpki

Setelah kita selesai proses setup kita dapat menjalankan openvpn service

$ docker-compose up -d openvpn

$ docker-compose ps

 Name     Command    State            Ports
----------------------------------------------------
openvpn   ovpn_run   Up      0.0.0.0:1194->1194/udp

Oke, sekarang openvpn server kita sudah jalan

Next, kita generate client (.ovpn) file yang akan kita pakai pada device

$ docker-compose run --rm openvpn easyrsa build-client-full andrikurnia

$ docker-compose run --rm openvpn ovpn_getclient andrikurnia > andrikurnia.ovpn

Kita dapat mengambil file andrikurnia.ovpn pada server menggunakan scp ataupun ftp :tada:


Sekarang hanya ada service openvpn! tidak ada web client ataupun service lain yang tidak terpakai :)

CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT    MEM %     NET I/O         BLOCK I/O     PIDS
764ca078df3a   openvpn   1.28%     2.98MiB / 482.4MiB   0.62%     690MB / 707MB   13.1MB / 0B   1