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

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


จัดเตรียม folder ติดตั้ง

image.pngย้อนกลับไปดูไฟล์ docker-compose.yaml อีกครั้ง ในส่วนของ volume

        หลังจากนั้นเข้าไปในvolumes:
          NAS- สร้าง"./etc-pihole/:/etc/pihole/"
          - "./etc-dnsmasq.d/:/etc/dnsmasq.d/"

    จะเห็นได้ว่าเราจะต้องมีการสร้าง 2 folder ในย่อยใน docker ชื่อโดยโครงสร้าง Pi-holefolder

    สร้างก็จะมีหน้าตาประมาณนี้ 2
    docker
    Folder
    ย่อย└─── คือpihole
         │   docker-compose.yaml
         │
         └─── etc-pihole
         และ
         └─── etc-dnsmasq.d

     

    เข้าไปจัดการสร้าง folder ผ่าน File Station ใน DSM ให้เรียบร้อย

    หลังจากนั้น copy ไฟล์ docker-compose.yml ที่ทำไว้แล้วไปใส่ด้วยที่ทำไว้แล้วไปใส่ไว้ใน จะได้ตามรูป

    pihole

     ตัวอักษรเล็กใหญ่มีผล ตั้งให้ถูกต้อง ไม่งั้นจะไป error ในขั้นตอนติดตั้ง

    image.pngimage.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 เพื่อติดตั้ง

    1 DHGGSUDWUKo7ajLnMCVK7w.jpeg 

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

    1 DHGGSUDWUKo7ajLnMCVK7w.jpeg

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

    • เข้าไปตั้งค่าใน 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/