Cara Terbaik Mengatur Pi-Hole di Container Station

Awalnya, saya mengatur Pi-Hole di Container Station menggunakan aplikasi yang sudah disediakan oleh QNAP.

Namun, aplikasi tersebut tidak mendapatkan versi terbaru dan proses update cukup merepotkan.

Saya membangun ulang container menggunakan versi terbaru Pi-Hole, tetapi tetap saja tidak praktis untuk melakukan update dan setiap kali saya me-reboot server atau me-restart container, saya harus masuk dan mengatur ulang password. Jadi, berdasarkan pengalaman saya baru-baru ini dengan SimpleHelp berkat @Weedy, saya memutuskan untuk mencoba membuat aplikasi Pi-Hole sendiri dan mengatur penyimpanan di luar struktur direktori .qpkg. Berikut adalah kode YAML saya berdasarkan aplikasi yang dibuat QNAP:

services:
  pihole:
    image: pihole/pihole:latest
    networks:
      qnet-network:
        ipv4_address: 192.168.1.4
    environment:
      WEBPASSWORD: *MyPassword*
      TZ: Chicago
    volumes:
      - /share/Container/pihole:/etc/pihole
      - etc-dnsmasq.d:/etc/dnsmasq.d
    restart: unless-stopped

networks:
  qnet-network:
    driver_opts:
      iface: eth3
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth3
      config:
        - subnet: 192.168.0.0/23
          gateway: 192.168.1.1

volumes:
  etc-dnsmasq.d:

Jadi, ada beberapa hal:

1.) WEBPASSWORD yang diatur di environment tampaknya tidak berfungsi. Itu bukan password yang dibutuhkan.

2.) Meskipun sekarang saya sudah memindahkan semua file ke folder yang biasa saya akses, saya tetap harus mengatur ulang password setiap kali aplikasi dijalankan.

3.) Beberapa hari terakhir, saya mulai melihat iklan, dan aplikasi Pi-Hole ini berjalan sangat lambat. Halaman web tidak muncul seperti biasanya dan pagi ini, saya mengatur ulang password tapi tidak terdeteksi bahwa saya sudah mengubahnya. Sepertinya aplikasi tidak bisa menulis ke disk.

Jadi, apa yang salah dengan yang saya lakukan?

sumber daya apa yang Anda berikan ke container?
itu ditemukan di bawah pengaturan lanjutan sumber daya saat Anda membuat aplikasi di CS.

Tanpa batas. Sama seperti yang kamu miliki.

apa yang ditunjukkan oleh log aplikasi, ada kesalahan?

Sebagai percobaan, Anda juga bisa mencoba mengatur batasan sesuai dengan pengaturan yang direkomendasikan oleh Pi-hole. Tidak yakin apakah itu akan membantu atau tidak. Tapi saya biasanya tidak membiarkan batasan menjadi tak terbatas, untuk berjaga-jaga jika aplikasi mengalami masalah dan menggunakan semua sumber daya NAS hingga menyebabkan NAS crash.

Saya harus melihat log secara detail, yang belum saya lakukan.

Saya benar-benar ingin tahu apakah ada yang salah dengan kode YAML saya dan bagaimana cara menginstal aplikasi agar saya tidak perlu terus-menerus mengatur ulang kata sandi setiap kali aplikasi dijalankan.

oke, saya sudah mencoba dan ada beberapa hal.
Pertama, saya mengonversi file tersebut menjadi compose.yaml dan menggunakan aplikasi container station create untuk melakukan deploy. Saya atur resource ke 2 cpu, 2gb ram.
Juga, field password berubah nama menjadi FTLCONF_webserver_api_password, jadi itu sebabnya tidak berfungsi di file milikmu.

Saya ubah port-portnya agar tidak bentrok dengan aplikasi lain yang sudah saya deploy. Mungkin kamu perlu menyesuaikan bagian networking agar bisa berjalan.

Saya tidak menjalankan pihole jadi saya tidak bisa menambah beban untuk melihat apakah akan gagal setelah beberapa hari.

services:
  pi-hole:
    container_name: pihole-server
    image: pihole/pihole:latest
    stdin_open: true
    tty: true
    volumes:
      - /share/ganti ke path yang benar/pihole:/etc/pihole
      - etc-dnsmasq.d:/etc/dnsmasq.d
    environment:
      FTLCONF_webserver_api_password: "test!test1"
      TZ: NewYork
    ports:
    - "753:53/tcp"
    - "753:53/udp"
    - "767:67/udp"
    - "780:80/tcp"
    - "7443:443/tcp"
volumes:
  etc-dnsmasq.d:

Terima kasih. Saya akan mencoba ini.

Saya telah dipanggil…

Seperti yang dikatakan marcoi, compose.yaml milikmu tidak berjalan dengan baik.
Kemungkinan besar karena QNAP melakukan hal QNAP dan tidak kompatibel dengan rilis upstream generic.
Kamu sebaiknya mencari compose dari upstream lalu cari tahu apa yang perlu disesuaikan agar bisa jalan dengan docker-nya QNAP.


Jadi, sesuatu yang selalu saya pikirkan soal aplikasi/layanan seperti pihole adalah: Apa yang harus dilakukan dengan NAT.
Terutama untuk resolusi DNS. Bukankah kita ingin IP LAN? Dan tidak ada hal lain yang menghalangi?

Jadi terima kasih @NA9D sudah membuat saya install template ini karena sekarang saya belajar beberapa hal tentang QNAP.


OKE, INI DEFAULT QNAP

version: "3"

services:
  pihole:
    image: pihole/pihole:2022.12.1
    networks:
      qnet-network:
        ipv4_address: ${QNET_STATIC_IP}
    environment:
      WEBPASSWORD: ${WEB_PASSWORD}
      TZ: ${TZ}
    volumes:
      - etc-pihole:/etc/pihole
      - etc-dnsmasq.d:/etc/dnsmasq.d
    restart: unless-stopped

networks:
  qnet-network:
    driver_opts:
      iface: ${QNET_INTERFACE}
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: ${QNET_INTERFACE}
      config:
        - subnet: ${QNET_SUBNET}
          gateway: ${QNET_GATEWAY}

volumes:
  etc-pihole:
  etc-dnsmasq.d:

Seperti yang kita lihat, ini spesifik meminta rilis tahun 2022.
Kamu dan marcoi sama-sama pakai :latest, saya juga tidak tahu tag yang direkomendasikan apa, tapi saya juga sering pakai :latest.

Saya asumsikan ini sudah benar

Kenapa kita pakai named mount kalau sudah repot-repot set sesuatu di /share?

Tidak heran opsi konfigurasi berubah sejak 2022

Jelas nanti bakal seru karena ini DNS yang kita bicarakan.

Jadi saya buka docs.pi-hole.net

# Info lebih lanjut di https://github.com/pi-hole/docker-pi-hole/ dan https://docs.pi-hole.net/
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      # Port DNS
      - "53:53/tcp"
      - "53:53/udp"
      # Port HTTP Default
      - "80:80/tcp"
      # Port HTTPs Default. FTL akan membuat sertifikat self-signed
      - "443:443/tcp"
      # Uncomment di bawah jika menggunakan Pi-hole sebagai DHCP Server
      #- "67:67/udp"
      # Uncomment baris di bawah jika menggunakan Pi-hole sebagai NTP server
      #- "123:123/udp"
    environment:
      # Set zona waktu yang sesuai dari
      # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones, misal:
      TZ: 'America/Chicago'
      # Set password untuk akses web interface. Jika tidak diatur, akan dibuat password acak
      FTLCONF_webserver_api_password: 'correct horse battery staple'
      # Jika menggunakan network default Docker `bridge`, mode listening dns harus di-set ke 'all'
###      FTLCONF_dns_listeningMode: 'all'
    # Volumes untuk menyimpan data antara upgrade container
    volumes:
      # Untuk menyimpan database Pi-hole dan file konfigurasi umum
      - /share/Container/pihole/config:/etc/pihole
      # Uncomment di bawah jika punya file konfigurasi dnsmasq custom yang ingin dipertahankan. Tidak perlu untuk kebanyakan pengguna baru Pi-hole v6. Jika upgrade dari v5 dan sudah pernah pakai direktori ini, sebaiknya tetap aktifkan saat pertama kali start container v6 untuk migrasi penuh. Bisa dihapus setelahnya. Butuh variabel environment FTLCONF_misc_etc_dnsmasq_d: 'true'
      #- /share/Container/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
    cap_add:
      # Lihat https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
      # Diperlukan jika menggunakan Pi-hole sebagai DHCP server, kalau tidak tidak perlu
      - NET_ADMIN
      # Diperlukan jika menggunakan Pi-hole sebagai NTP client agar bisa set waktu sistem host
      - SYS_TIME
      # Opsional, jika Pi-hole perlu waktu proses lebih
      - SYS_NICE
    restart: always

Yup, memang beda. Juga kelihatannya kita bisa skip bind mount kedua.

TAPI, saya rasa kita tetap perlu qnet-network itu. Jadi mungkin seperti ini…

# Info lebih lanjut di https://github.com/pi-hole/docker-pi-hole/ dan https://docs.pi-hole.net/
networks:
  qnet-network:
    driver_opts:
      iface: eth0
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth0
      config:
        - subnet: '10.0.0.0/24'
          gateway: '10.0.0.1'

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    networks:
        qnet-network:
            ipv4_address: '10.0.0.10'
    hostname: pihole
    ports:
      # Port DNS
      - "53:53/tcp"
      - "53:53/udp"
      # Port HTTP Default
      - "80:80/tcp"
      # Port HTTPs Default. FTL akan membuat sertifikat self-signed
      - "443:443/tcp"
      # Uncomment di bawah jika menggunakan Pi-hole sebagai DHCP Server
      #- "67:67/udp"
      # Uncomment baris di bawah jika menggunakan Pi-hole sebagai NTP server
      #- "123:123/udp"
    environment:
      # Set zona waktu yang sesuai dari
      # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones, misal:
      TZ: 'America/Chicago'
      # Set password untuk akses web interface. Jika tidak diatur, akan dibuat password acak
      FTLCONF_webserver_api_password: 'correct horse battery staple'
      # Jika menggunakan network default Docker `bridge`, mode listening dns harus di-set ke 'all'
###      FTLCONF_dns_listeningMode: 'all'
      #### Karena QNAP (saya punya user terpisah untuk semua hal docker)
      PIHOLE_UID: 1000
      PIHOLE_GID: 1001
    # Volumes untuk menyimpan data antara upgrade container
    volumes:
      # Untuk menyimpan database Pi-hole dan file konfigurasi umum
      - /share/Container/pihole/config:/etc/pihole
      # Uncomment di bawah jika punya file konfigurasi dnsmasq custom yang ingin dipertahankan. Tidak perlu untuk kebanyakan pengguna baru Pi-hole v6. Jika upgrade dari v5 dan sudah pernah pakai direktori ini, sebaiknya tetap aktifkan saat pertama kali start container v6 untuk migrasi penuh. Bisa dihapus setelahnya. Butuh variabel environment FTLCONF_misc_etc_dnsmasq_d: 'true'
      #- /share/Container/pihole/etc-dnsmasq.d:/etc/dnsmasq.d
    cap_add:
      # Lihat https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
      # Diperlukan jika menggunakan Pi-hole sebagai DHCP server, kalau tidak tidak perlu
      - NET_ADMIN
      # Diperlukan jika menggunakan Pi-hole sebagai NTP client agar bisa set waktu sistem host
      - SYS_TIME
      # Opsional, jika Pi-hole perlu waktu proses lebih
      - SYS_NICE
    restart: always

Sudah jalan! Semoga sukses untuk selanjutnya @NA9D


@SteveKo Apa yang spesial dari driver: qnet? Kayaknya ini cuma macvlan lain, cuma kalian buang semua IPV6-nya. Agak mengecewakan :confused:

Saya benar-benar butuh kalian support IPV6, capek harus ribut cuma biar sesuatu bisa jalan seadanya.

2 Suka

Jadi semua definisi port (753:53/tcp, dll) yang ditambahkan @marcoi adalah untuk pengujian pribadinya dan bukan untuk penggunaan normal.

Urusan jaringan itu mudah. Kamu cukup menempatkan container ke mode Bridge, menghubungkannya ke NIC-mu, dan memberikan alamat IP. Jadi kamu tidak perlu melakukan NAT khusus atau semacamnya. Itu sebabnya saya mencantumkan bagian Network di sana.

Masalah terbesar saya mungkin bukan pada container-nya. Sepertinya setiap pagi belakangan ini Pi-Hole jadi sangat lambat. Mungkin karena saya melakukan raid scrubbing antara tengah malam hingga jam 7 pagi. Saya perlu mencari tahu penyebabnya.

Dan kenapa kamu butuh IPV6 di LAN? IPV4 jauh lebih sederhana dan saya bahkan bisa menghafal alamatnya! :smiley:

itu benar soal port-nya, saya hanya menambahkan 7 untuk memastikan itu tidak memengaruhi aplikasi lain saya yang sedang berjalan.

Hai, kami telah melaporkan masalah ini ke tim internal kami dan akan menjadwalkan pembaruan untuk versi di Container Station.

Terkait masalah Docker yang Anda alami, jika dirasa perlu, silakan buka tiket dukungan agar kami dapat memeriksanya dari jarak jauh. Kami mungkin bisa mencari cara untuk membantu.

Terima kasih!

SAYA PRIBADI tidak membutuhkan tiket dukungan.
QTS/QuTS secara umum membutuhkan IPV6 yang berfungsi.

Saya sudah mengatasi banyak hal secara manual. Tapi tetap saja belum sempurna.
Kenapa saya harus membangun ip6table_nat.ko secara manual? Kenapa Anda mengirimkan dengan ipv6 diblokir di docker? Kenapa aturan pembuatan ip6tables dinonaktifkan secara paksa?

Tolong perbaiki IPV6. Terima kasih.

3 Suka

Saya sangat setuju. Saya sama sekali tidak bisa menggunakan container yang membutuhkan IPv6 di QNAP saya dan itu benar-benar merepotkan.

Saya telah menjalankan PIhole di dalam container selama beberapa tahun tanpa masalah. Namun, sekarang saya ingin menggunakan server DHCP. Dan sepertinya, permintaan DHCP tidak diteruskan ke container. Apakah ada cara untuk mem-forward port 67/68, karena saya tidak menemukan pengaturan seperti itu di implementasi container station milik Qnap?

Jika Anda ingin menggunakan server DHCP, Anda harus mengatur kontainer pi-Hole Anda ke dalam Bridge Mode dan menetapkan alamat IP tetap baru yang berada di luar pool DHCP Anda. Saya tidak akan mengandalkan fungsi “NAT” yang disediakan QNAP untuk merutekan ke LAN kontainer. Server DHCP harus berada di LAN Anda.

Berikut adalah file Compose saya. Saya mengatur pengaturan jaringan di Compose.

services:
  pihole:
    image: pihole/pihole:latest
    networks:
      qnet-network:
        ipv4_address: 192.168.1.4
    environment:
      FTLCONF_webserver_api_password:
      TZ: America/Chicago
    volumes:
      - /share/Container/pihole:/etc/pihole
      - etc-dnsmasq.d:/etc/dnsmasq.d
    restart: unless-stopped

networks:
  qnet-network:
    driver_opts:
      iface: eth3
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth3
      config:
        - subnet: 192.168.0.0/23
          gateway: 192.168.1.1

volumes:
  etc-dnsmasq.d: