Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
442fc88
Merge pull request #1936 from pi-hole/master
PromoFaux Nov 5, 2025
a8b6efe
Add RISCV back
yubiuser Nov 5, 2025
e23e759
Merge pull request #1939 from pi-hole/add_riscv
PromoFaux Nov 5, 2025
acf2db2
Get the size of the FTL log file upon container startup before starti…
PromoFaux Nov 6, 2025
db12aa2
Be more explicit in the timeout error message
PromoFaux Nov 6, 2025
36bbaae
Merge pull request #1940 from pi-hole/improve_startup
PromoFaux Nov 6, 2025
61d25ea
Bump docker/metadata-action from 5.8.0 to 5.9.0
dependabot[bot] Nov 8, 2025
e4954df
Merge pull request #1941 from pi-hole/dependabot/github_actions/devel…
yubiuser Nov 8, 2025
c88fb78
Bump codespell-project/actions-codespell from 2.1 to 2.2
dependabot[bot] Nov 8, 2025
9e6a667
Bump docker/setup-qemu-action from 3.6.0 to 3.7.0
dependabot[bot] Nov 8, 2025
a6ddfea
change FTLCONF_dns_listeningMode to ALL
cornshakes Nov 9, 2025
092db35
Merge pull request #1946 from cornshakes/development
yubiuser Nov 9, 2025
057dad5
Bump pytest from 8.4.2 to 9.0.1 in /test
dependabot[bot] Nov 15, 2025
cecc411
Merge pull request #1950 from pi-hole/dependabot/pip/test/development…
yubiuser Nov 15, 2025
f8d0e95
Add instructions for excluding Pi-hole from Watchtower updates
chippy01 Nov 12, 2025
6afc54b
Revise Pi-hole Watchtower exclusion instructions
chippy01 Nov 14, 2025
3052f05
Update README.md
PromoFaux Nov 16, 2025
7e25125
Merge pull request #1949 from chippy01/patch-1
PromoFaux Nov 16, 2025
8bd5187
Add GitHub Actions workflow to auto-update Docker Hub description on …
PromoFaux Nov 16, 2025
bead567
Merge pull request #1951 from pi-hole/dockerhub-description-auto-update
PromoFaux Nov 17, 2025
2a80bba
Merge pull request #1943 from pi-hole/dependabot/github_actions/devel…
PromoFaux Nov 19, 2025
23807b1
Merge pull request #1942 from pi-hole/dependabot/github_actions/devel…
yubiuser Nov 19, 2025
000d70c
Bump actions/checkout from 4 to 6
dependabot[bot] Nov 22, 2025
a531598
Use sha
yubiuser Nov 22, 2025
e751947
Merge pull request #1954 from pi-hole/dependabot/github_actions/devel…
yubiuser Nov 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions .github/workflows/build-and-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ jobs:
runner: ubuntu-24.04-arm
- platform: linux/arm64
runner: ubuntu-24.04-arm
# Drop this for the time being. bind-tools is failing to install on riscv64, and I don't have time to dig into it currently.exclude:
# It is unlikely that there are a lot of Pi-hole users on riscv64 architecture, let alone Docker users.
# - platform: linux/riscv64
# runner: ubuntu-24.04-arm
- platform: linux/riscv64
runner: ubuntu-24.04-arm

steps:
- name: Prepare name for digest up/download
Expand All @@ -45,19 +43,19 @@ jobs:
- &checkout-repo
name: Checkout Repo
if: github.event_name != 'schedule'
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0

- &checkout-dev
name: Checkout dev branch if scheduled
if: github.event_name == 'schedule'
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0
with:
ref: development

- &docker-meta
name: Docker meta
id: meta
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f #v5.8.0
uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 #v5.9.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
images: |
Expand Down Expand Up @@ -87,7 +85,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 #v3.6.0
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 #v3.7.0
with:
platforms: ${{ matrix.platform}}

Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,16 @@ jobs:
runner: ubuntu-24.04-arm
- platform: linux/arm64
runner: ubuntu-24.04-arm
# Drop this for the time being. bind-tools is failing to install on riscv64, and I don't have time to dig into it currently.exclude:
# It is unlikely that there are a lot of Pi-hole users on riscv64 architecture, let alone Docker users.
# - platform: linux/riscv64
# runner: ubuntu-24.04-arm
- platform: linux/riscv64
runner: ubuntu-24.04-arm
env:
CI_ARCH: ${{ matrix.platform }}
steps:
- name: Checkout Repo
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0

- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 #v3.6.0
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 #v3.7.0

- name: Set up Python
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c #v6.0.0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0
-
name: Spell-Checking
uses: codespell-project/actions-codespell@406322ec52dd7b488e48c1c4b82e2a8b3a1bf630 #v2.1
uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 #v2.2
with:
ignore_words_file: .codespellignore
23 changes: 23 additions & 0 deletions .github/workflows/dockerhub-description.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Update Docker Hub Description
permissions:
contents: read
on:
push:
branches:
- master
paths:
- README.md
- .github/workflows/dockerhub-description.yml
jobs:
dockerHubDescription:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0

- name: Docker Hub Description
uses: peter-evans/dockerhub-description@1b9a80c056b620d92cedb9d9b5a223409c68ddfa #v5
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASS }}
repository: pihole/pihole
short-description: ${{ github.event.repository.description }}
2 changes: 1 addition & 1 deletion .github/workflows/editorconfig.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0

- name: Get editorconfig-checker
uses: editorconfig-checker/action-editorconfig-checker@4b6cd6190d435e7e084fb35e36a096e98506f7b9 #v2.1.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0
- name: Remove 'stale' label
run: gh issue edit ${{ github.event.issue.number }} --remove-label ${{ env.stale_label }}
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-back-to-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
name: Syncing branches
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 #v6.0.0
- name: Opening pull request
run: gh pr create -B development -H master --title 'Sync master back into development' --body 'Created by Github action' --label 'internal'
env:
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ services:
TZ: 'Europe/London'
# Set a password to access the web interface. Not setting one will result in a random password being assigned
FTLCONF_webserver_api_password: 'correct horse battery staple'
# If using Docker's default `bridge` network setting the dns listening mode should be set to 'all'
FTLCONF_dns_listeningMode: 'all'
# If using Docker's default `bridge` network setting the dns listening mode should be set to 'ALL'
FTLCONF_dns_listeningMode: 'ALL'
# Volumes store your data between container upgrades
volumes:
# For persisting Pi-hole's databases and common configuration file
Expand Down Expand Up @@ -300,6 +300,8 @@ We have noticed that a lot of people use Watchtower to keep their Pi-hole contai
- If you care about your data (logs/customizations), make sure you have it volume-mapped or it will be deleted in this step.
- Recreate the container using the new image.

To exclude the Pi-hole container from Watchtower's auto-update system take a look at [Full Exclude](https://containrrr.dev/watchtower/container-selection/#full_exclude) in Watchtower's docs.

Pi-hole is an integral part of your network, don't let it fall over because of an unattended update in the middle of the night.

# User Feedback
Expand Down
32 changes: 14 additions & 18 deletions src/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ start() {
fix_capabilities
sh /opt/pihole/pihole-FTL-prestart.sh

# Get the FTL log file path from the config
FTLlogFile=$(getFTLConfigValue files.log.ftl)

# Get the EOF position of the FTL log file so that we can tail from there later.
local startFrom
startFrom=$(stat -c%s "${FTLlogFile}")

echo " [i] Starting pihole-FTL ($FTL_CMD) as ${DNSMASQ_USER}"
echo ""

Expand All @@ -70,18 +77,11 @@ start() {
# We need the PID of the capsh process so that we can wait for it to finish
CAPSH_PID=$!

# Get the FTL log file path from the config
FTLlogFile=$(getFTLConfigValue files.log.ftl)

# Wait until the log file exists before continuing
while [ ! -f "${FTLlogFile}" ]; do
sleep 0.5
done

# Wait until the FTL log contains the "FTL started" message before continuing
while ! grep -q '########## FTL started' "${FTLlogFile}"; do
sleep 0.5
done
# Wait for FTL to start by monitoring the FTL log file for the "FTL started" line
if ! timeout 30 tail -F -c +$((startFrom + 1)) -- "${FTLlogFile}" | grep -q '########## FTL started'; then
echo " [!] ERROR: Did not find 'FTL started' message in ${FTLlogFile} in 30 seconds, stopping container"
exit 1
fi

pihole updatechecker
local versionsOutput
Expand All @@ -91,11 +91,8 @@ start() {
echo ""

if [ "${TAIL_FTL_LOG:-1}" -eq 1 ]; then
# Start tailing the FTL log from the most recent "FTL Started" message
# Get the line number
startFrom=$(grep -n '########## FTL started' "${FTLlogFile}" | tail -1 | cut -d: -f1)
# Start the tail from the line number and background it
tail --follow=name -n +"${startFrom}" "${FTLlogFile}" &
# Start tailing the FTL log file from the EOF position we recorded on container start
tail -F -c +$((startFrom + 1)) -- "${FTLlogFile}" &
else
echo " [i] FTL log output is disabled. Remove the Environment variable TAIL_FTL_LOG, or set it to 1 to enable FTL log output."
fi
Expand All @@ -104,7 +101,6 @@ start() {
wait $CAPSH_PID
FTL_EXIT_CODE=$?


# If we are here, then FTL has exited.
# If the trap was triggered, then stop will have already been called
if [ $TRAP_TRIGGERED -eq 0 ]; then
Expand Down
2 changes: 1 addition & 1 deletion test/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pytest == 8.4.2
pytest == 9.0.1
pytest-testinfra == 10.2.2
pytest-clarity == 1.0.1
tox == 4.32.0
Expand Down
Loading