wg-easy는 WireGuard를 Web GUI로 편하게 생성 삭제할 수 있는 컨테이너이다.
WireGuard는 리눅스 명령어로 클라이언트를 생성 및 삭제해야하는 불편함이 있어 위 컨테이너로 간편하게 이용할 수 있다.
(Docker로 올린 경우에는 컨테이너를 지우고 다시 올려야 한다..)
docker-compose로 올리는 방법을 서술했다.
자세한 건 Container 제작자의 Github를 참고하자.
아래의 내용을 docker-compose.yml로 작성하면 된다.
환경변수 설명
WG_HOST – VPN(WireGuard) 서버 호스트 주소 또는 IP
PASSWORD – Web GUI 접속 패스워드
WG_PORT – 접속할 포트
수정 할 경우 ports에서도 수정해 줘야 한다. 단 docker쪽 포트는 건들면 안된다.
WG_DEFAULT_ADDRESS – 클라이언트가 할당 받을 IP대역
WG_DEFAULT_DNS – 클라이언트가 접속 시 사용 할 DNS 서버
WG_ALLOWED_IPS – 클라이언트가 VPN으로 접속할 IP 주소 또는 대역
사용할 환경변수는 주석을 제거하고 사용하면 된다.
호스트명은 필수로 입력해야 하고 포트도 설정해주지 않으면 GUI에서 생성된 config를 수정해줘야하니 필수 설정
포트에서 51820/udp는 WireGuard로 클라이언트가 접속할 포트이고 51821/tcp는 Web GUI 페이지 포트이다.
version: "3"
services:
wg-easy:
environment:
# Required:
# Change this to your host's public address
- WG_HOST=raspberrypi.local
# Optional:
# - PASSWORD=foobar123
# - WG_PORT=51820
# - WG_DEFAULT_ADDRESS=10.8.0.x
# - WG_DEFAULT_DNS=1.1.1.1
# - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
image: weejewel/wg-easy
container_name: wg-easy
network_mode: bridge
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
docker-compose.yml 작성이 끝나면 문제가 없는지 아래 명령어로 확인
docker-compose config
이후 문제가 없다면 docker에 올리기
docker-compose up -d
컨터이너가 올라가고 해당 포트로 브라우저에서 접속하면 아래와 같은 로그인 페이지가 나온다.
로그인에 성공하면 아래와 같이 클라이언트를 추가, 활성화 비활성화, QR code, Config 다운로드 버튼 등이 있다.
여기서 사용자를 추가하고 이용하면 된다.