Skip to main content

ติดตั้งและอัพเดท Pi-hole ตัวกันโฆษณาแบบ macvlan

ลงแบบนี้ต่างกับใช้แบบเดิม ๆ คือจะได้ ip จริง เช่น 192.168.111 ไม่ได้เป็น port Synology ซึ่งจำง่ายและสะดวกกว่าเวลาเอาไปใช้

ขั้นตอนติดตั้ง

โหลดไฟล์จาก GitHub หรือ save code ด้านล่างไปทำไฟล์ docker-compose.yaml ตามแต่สะดวก

# Note: 192.168.1.xxx is an example network, you must update all these to match your own.

version: '2.2'

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    hostname: pihole
    domainname: example.com             # <-- Update
    mac_address: d0:ca:ab:cd:ef:01
    cap_add:
      - NET_ADMIN
    networks:
      pihole_network:
        ipv4_address: 192.168.1.111   # <-- Update
    volumes:
      - "./etc-pihole/:/etc/pihole/"
      - "./etc-dnsmasq.d/:/etc/dnsmasq.d/"
    dns:
      - 127.0.0.1
      - 8.8.8.8
    ports:
      - 443/tcp
      - 53/tcp
      - 53/udp
      - 67/udp
      - 80/tcp
    environment:
      TZ: Asia/Bangkok
      ServerIP: 192.168.1.111         # <-- Update (match ipv4_address)
      VIRTUAL_HOST: pihole.example.com  # <-- Update (match hostname + domainname)
      WEBPASSWORD: "yourpassword" # <-- Add password (if required)
    restart: unless-stopped

networks:
  pihole_network:                       # Name of network
    driver: macvlan                     # Use the macvlan network driver
    driver_opts:                        # If open vSwitch is disabled use eth0 (or eth1 +)
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24            # Specify subnet <-- Update 
          gateway: 192.168.1.1              # Gateway address <-- Update
          ip_range: 192.168.1.250/28        # Available IP addresses <-- Update

ใช้ notepad หรืออะไรก็ได้เปิดไฟล์ docker-compose.yaml ขึ้นมา เน้นดูตรงส่วนของ comment ในไฟล์ แก้ให้ตรงกับที่ใช้

ipv4_address: 192.168.1.111
 ServerIP: 192.168.1.111
 WEBPASSWORD: “yourpassword”

ให้แก้จุดที่สำคัญคือส่วนของ ip ให้เป็น ip ของ Pi-hole ที่จะใช้ โดยตั้งให้ตรงกับวง LAN ในบ้าน อย่างของผมใช้ 192.168.1.111 ก็จะตามในไฟล์ แล้วอย่าลืมตั้ง password ที่จะใช้เข้าไปจัดการใน Pi-hole ด้วย

เช็ค Open vSwitch และ LAN ที่ใช้อยู่

เช็ค Open vSwitch และ LAN ที่ใช้อยู่

networks:
 pihole_network: # Name of network
 driver: macvlan # Use the macvlan network driver
 driver_opts: # If open vSwitch is disabled use eth0 (or eth1 +)
 parent: eth0

สำหรับคนที่เปิด Open vSwitch ไว้
เช็คได้จาก Control Panel > Network > Network Interface > Manage > Open vSwitch Settings ถ้ามีติ๊กถูก แสดงว่าต้องใช้ ovs_eth0
ให้แก้บรรทัดสุดท้ายให้เป็น ovs_eth0 จาก eth0

parent: ovs_eth0

สำหรับ NAS ที่มี Lan 2 ช่อง ให้เช็ค
Control Panel > Network > Network Interface
ว่าคุณเสียบ LAN ช่องไหนไว้ ถ้าเป็น LAN 1 ไม่ต้องแก้อะไร ถ้าเป็น LAN 2 ให้แก้เป็น

parent: eth1



ipam:
 config:
 — subnet: 192.168.1.0/24 # Specify subnet ← Update 
 gateway: 192.168.1.1 # Gateway address ← Update
 ip_range: 192.168.1.250/28 # Available IP addresses ← Update

ส่วนนี้คือ subnet, gateway และ ip_range ให้ตั้งเป็นวง LANในบ้าน
คือถ้าบ้านเป็นวง 192.168.0.1 ก็ต้องเปลี่ยนจาก 192.168.1.0/24 ให้เป็น 192.168.0.0/24 ทำนองนั้น ทำทั้ง 3 บรรทัดให้ครบ (ถ้าเป็นวง 192.168.1.x อยู่แล้วก็ไม่ต้องทำอะไร)



domainname: example.com
 VIRTUAL_HOST: pihole.example.com

อันนี้ไม่สำคัญแต่เป็นโดเมนไว้เข้า pihole ง่าย ๆ ถ้าไม่แก้อะไรเลยเวลาใช้งานก็เข้าผ่าน pihole.example.com

แก้เสร็จหมดแล้วให้เซฟไฟล์




image.png

  • หลังจากนั้นเข้าไปใน NAS สร้าง folder ใน docker ชื่อ Pi-hole
  • สร้าง 2 Folder ย่อย คือ etc-pihole และ etc-dnsmasq.d
  • copy ไฟล์ docker-compose.yml ที่ทำไว้แล้วไปใส่ด้วย จะได้ตามรูป

image.png

หลังจากนั้นให้คลิ๊กขวา properties ตัว folder pihole ใน docker แล้วจำ path ไว้ เพื่อใช้ในขั้นตอนต่อไป อย่างของผมคือ

/volume1/docker/pihole

ขั้นตอนเตรียมไฟล์ต่าง ๆ เสร็จเรียบร้อยแล้วต่อไปคือติดตั้ง

เปิด putty ขึ้นมาเพื่อเข้าไปจัดการต่อใน SSH โดยคนที่ไม่เคย เปิด SSH ใน NAS มาก่อนให้ให้ไปที่ Control Panel แล้วพิมพ์ SSH ในช่องค้นหาได้เลย (จำ port ไว้ด้วย)

ใส่ IP ในช่อง host อย่าลืมเลือก connection type เป็น SSH

ใส่ IP ในช่อง host อย่าลืมเลือก connection type เป็น SSH

image.png

ใส่ user และ password โดย password ใน putty จะไม่แสดงผลอะไรแต่ใช้ได้
หลังจากเสร็จแล้วจะต้องขอสิทธิ์ root โดยพิมพ์ sudo -i และกด enter หลังจากนั้นใส่ password อีกรอบเสร็จแล้วจะได้คล้าย ๆ ภาพด้านบน

image.png

หลังจากนั้นให้พิมพ์ cd /volume1/docker/pihole แล้ว enter เพื่อเข้าไปยัง folder ที่ทำไว้และพิมพ์ docker-compose up -d เพื่อติดตั้ง

หลังจากติดตั้งเสร็จแล้ว pihole จะขึ้นไปแสดงใน tab Container เอง โดยหากดูที่ tab Network ก็จะเห็น macvlan แสดงขึ้นมาด้วย

จบขั้นตอนติดตั้งแล้วอย่าลืม

  • เข้าไปตั้งค่าใน Router ให้ DHCP ชี้ไปที่ IP ของ pihole โดยในตัวอย่างคือให้ชี้ไปที่ 192.168.1.111
  • fix ip ใน DHCP โดย mac address ดูในจากในสคริปต์ ในตัวอย่างคือ mac_address: d0:ca:ab:cd:ef:01 เพื่อกันอุปกรณ์อื่นพลาดมาใช้ ip เดียวกัน
  • เข้า Pi-hole ได้ผ่าน IP ที่ตั้งไว้ หรือใช้ pihole.example.com เข้าไปตั้งค่าได้เลย



Blocklists

ลงไม่ต้องเยอะไม่งั้นจะสร้างปัญหาให้แทน

https://firebog.net/ — Pi Hole blocklists



อัพเดท Pi-hole

ง่าย ๆ ค่าที่ตั้งไว้ไม่หายโดย

  • เปิด Docker ใน Synology ขึ้นมา
  • tab Container ให้หยุดการทำงานแล้วลบทิ้ง
  • tab Image ให้ลบ pihole/pihole:latest ทิ้ง
  • tab Network ให้ลบ pihole_network ทิ้งได้เลย
  • ทำซ้ำขั้นตอนติดตั้งจบที่ docker-compose up -d
  • เรียบร้อย

หรือ ลง watchtower แล้วก็ไม่ต้องมาสนใจเรื่องอัพเดทเองอีกเลย

Source
https://www.reddit.com/r/synology/comments/gmfta3/pihole_5_on_synology_using_docker_simplified_with/
http://tonylawrence.com/posts/unix/synology/free-your-synology-ports/