Skip to main content

Install wireguard + pihole with this portainer stack

Here is a simple portainer stack / docker compose :

WireGuard được sử dụng để thiết lập các kết nối VPN an toàn và hiệu quả. Nó bảo vệ dữ liệu khi truyền qua mạng, đảm bảo quyền riêng tư và an toàn cho người dùng. Với cấu hình đơn giản và hiệu suất cao, WireGuard phù hợp cho cả cá nhân và doanh nghiệp.

Pi-hole được sử dụng để chặn quảng cáo và theo dõi trực tuyến ở cấp độ mạng. Hoạt động như một DNS sinkhole, Pi-hole ngăn chặn các yêu cầu đến các máy chủ quảng cáo và theo dõi, cải thiện tốc độ duyệt web và bảo vệ quyền riêng tư cho tất cả các thiết bị kết nối vào mạng.

Lưu ý: cài đặt này trên Ubuntu OS và docker + portainer stack

services:
  
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN # Work good on Ubuntu System
      - SYS_MODULE #optional
    environment:
      - PUID=0 # just type "id" on your OS (Ubuntu/Centos) terminal to see puid and pgid
      - PGID=0
      - TZ=Asia/Ho_Chi_Minh 
      - SERVERURL=ABC.DOMAIN.COM #public domain
      - SERVERPORT=51820 #optional
      - PEERS=20 #optional
      - PEERDNS=172.21.0.3 #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
      - ALLOWEDIPS=0.0.0.0/0 #optional
      - PERSISTENTKEEPALIVE_PEERS= #optional
      - LOG_CONFS=true #optional
    volumes:
      - /home/USERNAME/docker/wireguard/config:/config # Change USERNAME to your Ubuntu/Centos Username
      - /home/USERNAME/docker/wireguard/lib/modules:/lib/modules #Change USERNAME to your Ubuntu/Centos Username
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    networks:
      private_network:
        ipv4_address: 172.21.0.4
    restart: unless-stopped
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    restart: unless-stopped
    hostname: pi.hole
    ports:
      - "88:80/tcp" # Expose port 88 to the public, you can visit with IP:88 or ABC.DOMAIN.COM:88 to pihole and configure it later
    dns:
      - 127.0.0.1
    volumes:
      - ./etc-pihole/:/etc/pihole/
      - ./etc-dnsmasq.d/:/etc/dnsmasq.d/
    cap_add:
      - NET_ADMIN
    networks:
      private_network:
        ipv4_address: 172.21.0.3

networks:
  private_network:
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.0/24