Support for Ubuntu 24.04

Hello, I just wanted to update my Raspberry Pi 4 and have prepared an Ubuntu 24.04 Server installation on SD card.

Now I can't get any further because the installer says the version is not (yet) supported

  [✗] Unsupported OS detected: Ubuntu 24.04
      If you are seeing this message and you do have a supported OS, please contact support.

      https://docs.pi-hole.net/main/prerequisites/#supported-operating-systems

      If you wish to attempt to continue anyway, you can try one of the following commands to skip this check:

      e.g: If you are seeing this message on a fresh install, you can run:
             curl -sSL https://install.pi-hole.net | sudo PIHOLE_SKIP_OS_CHECK=true bash

           If you are seeing this message after having run pihole -up:
             sudo PIHOLE_SKIP_OS_CHECK=true pihole -r
           (In this case, your previous run of pihole -up will have already updated the local repository)

      It is possible that the installation will still fail at this stage due to an unsupported configuration.
      If that is the case, you can feel free to ask the community on Discourse with the Community Help category:
      https://discourse.pi-hole.net/c/bugs-problems-issues/community-help/

It looks like I now have 3 options.

  1. cancel the update and boot the old installation
  2. wait until the version is supported.
  3. deactivate the version check.

Is there any time frame when 24.04 will be supported?

Ubuntu 24.04 is still fairly new and nobody from the core development system was able to install it on a demo server to verify everything is working 100% as of yet. Hence, the lack of "official support" by Pi-hole.

It'd be helpful if you could indeed skip the version check and report back if you find any anomaly - we do not expect any to be honest. However, if we'd blindly say "yes, it's supported" and issues start showing up we wouldn't be prepared for immediate help which is neither a good situation to be in.

Ok then I'll continue with the installation.

Installation log.

:~$ curl -sSL https://install.pi-hole.net | sudo PIHOLE_SKIP_OS_CHECK=true bash

  [✓] Root user check

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

  [i] SELinux not detected
  [✓] Update local cache of available packages

  [✓] Checking apt-get for upgraded packages... up to date!

  [i] Checking for / installing Required dependencies for OS Check...
  [✓] Checking for grep
  [✓] Checking for dnsutils

  [i] PIHOLE_SKIP_OS_CHECK env variable set to true - installer will continue
  [i] Checking for / installing Required dependencies for this install script...
  [✓] Checking for git
  [✓] Checking for iproute2
  [i] Checking for dialog (will be installed)
  [✓] Checking for ca-certificates
  [i] Waiting for package manager to finish (up to 30 seconds)
  [i] Processing apt-get install(s) for: dialog, please wait...
----------------------------------------------------------------------
Selecting previously unselected package dialog.
(Reading database ... 48110 files and directories currently installed.)
Preparing to unpack .../dialog_1.3-20240101-1_arm64.deb ...
Unpacking dialog (1.3-20240101-1) ...
Setting up dialog (1.3-20240101-1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Scanning processes...                                                                                                                                                                                              
Scanning processor microcode...                                                                                                                                                                                    
Scanning linux images...                                                                                                                                                                                           

Running kernel seems to be up-to-date.

The processor microcode seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
----------------------------------------------------------------------
  [i] IPv4 address: 192.168.1.110/24
  [i] Unable to find IPv6 ULA/GUA address
  [i] IPv6 address: 
  [i] Using upstream DNS: Google (ECS, DNSSEC) (8.8.8.8, 8.8.4.4)
  [i] Installing StevenBlack's Unified Hosts List
  [i] Installing Admin Web Interface
  [i] Installing lighttpd
  [i] Query Logging on.
  [i] Using privacy level: 0
  [✗] Check for existing repository in /etc/.pihole
  [i] Clone https://github.com/pi-hole/pi-hole.git into /etc/.pihole...HEAD is now at 5490a6e Release 5.18.2 (#5629)
  [✓] Clone https://github.com/pi-hole/pi-hole.git into /etc/.pihole

  [✗] Check for existing repository in /var/www/html/admin
  [i] Clone https://github.com/pi-hole/web.git into /var/www/html/admin...HEAD is now at be05b0f v5.21 (#2860)
  [✓] Clone https://github.com/pi-hole/web.git into /var/www/html/admin

  [i] Checking for / installing Required dependencies for Pi-hole software...
  [✓] Checking for cron
  [✓] Checking for curl
  [✓] Checking for iputils-ping
  [✓] Checking for psmisc
  [✓] Checking for sudo
  [✓] Checking for unzip
  [i] Checking for idn2 (will be installed)
  [✓] Checking for libcap2-bin
  [i] Checking for dns-root-data (will be installed)
  [✓] Checking for libcap2
  [✓] Checking for netcat-openbsd
  [✓] Checking for procps
  [✓] Checking for jq
  [i] Checking for lighttpd (will be installed)
  [i] Checking for php-common (will be installed)
  [i] Checking for php-cgi (will be installed)
  [i] Checking for php-sqlite3 (will be installed)
  [i] Checking for php-xml (will be installed)
  [i] Checking for php-intl (will be installed)
  [i] Checking for php-json (will be installed)
  [i] Waiting for package manager to finish (up to 30 seconds)
  [i] Processing apt-get install(s) for: idn2 dns-root-data lighttpd php-common php-cgi php-sqlite3 php-xml php-intl php-json, please wait...
----------------------------------------------------------------------
Selecting previously unselected package lighttpd.
(Reading database ... 48269 files and directories currently installed.)
Preparing to unpack .../00-lighttpd_1.4.74-1ubuntu3_arm64.deb ...
Unpacking lighttpd (1.4.74-1ubuntu3) ...
Selecting previously unselected package dns-root-data.
Preparing to unpack .../01-dns-root-data_2023112702~willsync1_all.deb ...
Unpacking dns-root-data (2023112702~willsync1) ...
Selecting previously unselected package php-common.
Preparing to unpack .../02-php-common_2%3a93ubuntu2_all.deb ...
Unpacking php-common (2:93ubuntu2) ...
Selecting previously unselected package php8.3-common.
Preparing to unpack .../03-php8.3-common_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-common (8.3.6-0maysync1) ...
Selecting previously unselected package php8.3-opcache.
Preparing to unpack .../04-php8.3-opcache_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-opcache (8.3.6-0maysync1) ...
Selecting previously unselected package php8.3-readline.
Preparing to unpack .../05-php8.3-readline_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-readline (8.3.6-0maysync1) ...
Selecting previously unselected package php8.3-cli.
Preparing to unpack .../06-php8.3-cli_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-cli (8.3.6-0maysync1) ...
Selecting previously unselected package php8.3-cgi.
Preparing to unpack .../07-php8.3-cgi_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-cgi (8.3.6-0maysync1) ...
Selecting previously unselected package php-cgi.
Preparing to unpack .../08-php-cgi_2%3a8.3+93ubuntu2_all.deb ...
Unpacking php-cgi (2:8.3+93ubuntu2) ...
Selecting previously unselected package php8.3-intl.
Preparing to unpack .../09-php8.3-intl_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-intl (8.3.6-0maysync1) ...
Selecting previously unselected package php-intl.
Preparing to unpack .../10-php-intl_2%3a8.3+93ubuntu2_all.deb ...
Unpacking php-intl (2:8.3+93ubuntu2) ...
Selecting previously unselected package php-json.
Preparing to unpack .../11-php-json_2%3a8.3+93ubuntu2_all.deb ...
Unpacking php-json (2:8.3+93ubuntu2) ...
Selecting previously unselected package php8.3-sqlite3.
Preparing to unpack .../12-php8.3-sqlite3_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-sqlite3 (8.3.6-0maysync1) ...
Selecting previously unselected package php-sqlite3.
Preparing to unpack .../13-php-sqlite3_2%3a8.3+93ubuntu2_all.deb ...
Unpacking php-sqlite3 (2:8.3+93ubuntu2) ...
Selecting previously unselected package php8.3-xml.
Preparing to unpack .../14-php8.3-xml_8.3.6-0maysync1_arm64.deb ...
Unpacking php8.3-xml (8.3.6-0maysync1) ...
Selecting previously unselected package php-xml.
Preparing to unpack .../15-php-xml_2%3a8.3+93ubuntu2_all.deb ...
Unpacking php-xml (2:8.3+93ubuntu2) ...
Selecting previously unselected package idn2.
Preparing to unpack .../16-idn2_2.3.7-2build1_arm64.deb ...
Unpacking idn2 (2.3.7-2build1) ...
Setting up lighttpd (1.4.74-1ubuntu3) ...
Enabling unconfigured: ok
Run "service lighttpd force-reload" to enable changes
Created symlink /etc/systemd/system/timers.target.wants/lighttpd-maint.timer → /usr/lib/systemd/system/lighttpd-maint.timer.
Created symlink /etc/systemd/system/multi-user.target.wants/lighttpd.service → /usr/lib/systemd/system/lighttpd.service.
lighttpd-maint.service is a disabled or a static unit, not starting it.
Setting up idn2 (2.3.7-2build1) ...
Setting up php-common (2:93ubuntu2) ...
Created symlink /etc/systemd/system/timers.target.wants/phpsessionclean.timer → /usr/lib/systemd/system/phpsessionclean.timer.
Setting up php8.3-common (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/calendar.ini with new version

Creating config file /etc/php/8.3/mods-available/ctype.ini with new version

Creating config file /etc/php/8.3/mods-available/exif.ini with new version

Creating config file /etc/php/8.3/mods-available/fileinfo.ini with new version

Creating config file /etc/php/8.3/mods-available/ffi.ini with new version

Creating config file /etc/php/8.3/mods-available/ftp.ini with new version

Creating config file /etc/php/8.3/mods-available/gettext.ini with new version

Creating config file /etc/php/8.3/mods-available/iconv.ini with new version

Creating config file /etc/php/8.3/mods-available/pdo.ini with new version

Creating config file /etc/php/8.3/mods-available/phar.ini with new version

Creating config file /etc/php/8.3/mods-available/posix.ini with new version

Creating config file /etc/php/8.3/mods-available/shmop.ini with new version

Creating config file /etc/php/8.3/mods-available/sockets.ini with new version

Creating config file /etc/php/8.3/mods-available/sysvmsg.ini with new version

Creating config file /etc/php/8.3/mods-available/sysvsem.ini with new version

Creating config file /etc/php/8.3/mods-available/sysvshm.ini with new version

Creating config file /etc/php/8.3/mods-available/tokenizer.ini with new version
Setting up php8.3-sqlite3 (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/sqlite3.ini with new version

Creating config file /etc/php/8.3/mods-available/pdo_sqlite.ini with new version
Setting up dns-root-data (2023112702~willsync1) ...
Setting up php8.3-readline (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/readline.ini with new version
Setting up php8.3-xml (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/dom.ini with new version

Creating config file /etc/php/8.3/mods-available/simplexml.ini with new version

Creating config file /etc/php/8.3/mods-available/xml.ini with new version

Creating config file /etc/php/8.3/mods-available/xmlreader.ini with new version

Creating config file /etc/php/8.3/mods-available/xmlwriter.ini with new version

Creating config file /etc/php/8.3/mods-available/xsl.ini with new version
Setting up php8.3-opcache (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/opcache.ini with new version
Setting up php-xml (2:8.3+93ubuntu2) ...
Setting up php8.3-intl (8.3.6-0maysync1) ...

Creating config file /etc/php/8.3/mods-available/intl.ini with new version
Setting up php-sqlite3 (2:8.3+93ubuntu2) ...
Setting up php8.3-cli (8.3.6-0maysync1) ...
update-alternatives: using /usr/bin/php8.3 to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar8.3 to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar8.3 to provide /usr/bin/phar.phar (phar.phar) in auto mode

Creating config file /etc/php/8.3/cli/php.ini with new version
Setting up php-intl (2:8.3+93ubuntu2) ...
Setting up php8.3-cgi (8.3.6-0maysync1) ...
update-alternatives: using /usr/bin/php-cgi8.3 to provide /usr/bin/php-cgi (php-cgi) in auto mode
update-alternatives: using /usr/lib/cgi-bin/php8.3 to provide /usr/lib/cgi-bin/php (php-cgi-bin) in auto mode

Creating config file /etc/php/8.3/cgi/php.ini with new version
Setting up php-cgi (2:8.3+93ubuntu2) ...
update-alternatives: using /usr/bin/php-cgi.default to provide /usr/bin/php-cgi (php-cgi) in auto mode
update-alternatives: using /usr/lib/cgi-bin/php.default to provide /usr/lib/cgi-bin/php (php-cgi-bin) in auto mode
Setting up php-json (2:8.3+93ubuntu2) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for ufw (0.36.2-6) ...
Processing triggers for php8.3-cli (8.3.6-0maysync1) ...
Processing triggers for php8.3-cgi (8.3.6-0maysync1) ...
Scanning processes...                                                                                                                                                                                              
Scanning processor microcode...                                                                                                                                                                                    
Scanning linux images...                                                                                                                                                                                           

Running kernel seems to be up-to-date.

The processor microcode seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
----------------------------------------------------------------------
  [✓] Enabling lighttpd service to start on reboot...
  [✗] Checking for group 'pihole'
  [✓] Creating group 'pihole'
  [✓] Creating user 'pihole'

  [i] FTL Checks...

  [✓] Detected AArch64 (64 Bit ARM) processor
  [i] Checking for existing FTL binary...
  [✓] Downloading and Installing FTL
  [✓] Installing scripts from /etc/.pihole

  [i] Installing configs from /etc/.pihole...
  [✓] No dnsmasq.conf found... restoring default dnsmasq.conf...
  [✓] Installed /etc/dnsmasq.d/01-pihole.conf
  [✓] Installed /etc/dnsmasq.d/06-rfc6761.conf

  [✓] Installing sudoer file

  [✓] Installing latest Cron script

  [✓] Installing latest logrotate script
  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old
  [✓] man pages installed and database updated
  [i] Testing if systemd-resolved is enabled
  [✓] Disabling systemd-resolved DNSStubListener and restarting systemd-resolved
  [✓] Restarting lighttpd service...
  [✓] Enabling lighttpd service to start on reboot...
  [i] Restarting services...
  [✓] Enabling pihole-FTL service to start on reboot...
  [✓] Restarting pihole-FTL service...
  [i] Creating new gravity database
  [i] Migrating content of /etc/pihole/adlists.list into new database
  [✓] Deleting existing list cache
  [i] Neutrino emissions detected...
  [✓] Pulling blocklist source list into range

  [✓] Preparing new gravity database
  [✓] Creating new gravity databases
  [i] Using libz compression

  [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
  [✓] Status: Retrieval successful
  [✓] Parsed 128536 exact domains and 0 ABP-style domains (ignored 1 non-domain entries)
      Sample of non-domain entries:
        - "0.0.0.0"


  [✓] Building tree
  [✓] Swapping databases
  [✓] The old database remains available
  [i] Number of gravity domains: 128536 (128536 unique domains)
  [i] Number of exact blacklisted domains: 0
  [i] Number of regex blacklist filters: 0
  [i] Number of exact whitelisted domains: 0
  [i] Number of regex whitelist filters: 0
  [✓] Flushing DNS cache
  [✓] Cleaning up stray matter

  [✓] FTL is listening on port 53
     [✓] UDP (IPv4)
     [✓] TCP (IPv4)
     [✓] UDP (IPv6)
     [✓] TCP (IPv6)

  [i] Pi-hole blocking will be enabled
  [i] Enabling blocking
  [✓] Reloading DNS lists
  [✓] Pi-hole Enabled
  [i] Web Interface password: --------XXXXX---------
  [i] This can be changed using 'pihole -a -p'

  [i] View the web interface at http://pi.hole/admin or http://192.168.1.110/admin

  [i] You may now configure your devices to use the Pi-hole as their DNS server
  [i] Pi-hole DNS (IPv4): 192.168.1.110
  [i] If you have not done so already, the above IP should be set to static.

  [i] The install log is located at: /etc/pihole/install.log
  [✓] Installation complete!

I will report later if it works or if there are problems.

1 Like

It works excellently, I haven't noticed any problems so far.

Everything is fine for my usual purpose

1 Like

Hi there, I have also installed a fresh copy of Ubuntu 24.04 on 2 Raspberry Pi 4's and installed pi-hole with disabling the OS check and they have worked flawlessly so far. I just now did an update to pi-hole with OS check disabled by running:

sudo PIHOLE_SKIP_OS_CHECK=true pihole -r

as per the suggestion when I did pihole -up and chose the repair option and it also performed flawlessly.