Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Apache2 config for pihole with custom / non-admin link

Prerequisites

Install Pihole

Install pihole from the official repo as described here: https://github.com/pi-hole/pi-hole#one-step-automated-install, e.g. via

curl -sSL https://install.pi-hole.net | bash

During the installation please choose to not install a Web Interface.

Setup Apache2

Create Apache2 config for Pihole

Basically if you already have working apache2 config, just create file e.g. 004-pihole.conf in a /etc/apache2/sites-available/ with following content:

LAN Restriced

<IfModule alias_module>
    Alias /admin /var/www/html/admin
    <Directory "/var/www/html/admin">
        AllowOverride None
        Options None
        Order deny,allow
        Allow from 192.168.0.0/24 localhost 127.0.0.1
        #Allow from all
        Deny from all
    </Directory>
</IfModule>

In this case you can only access Pihole from the local network (192.168.0.0/24). If you would like to access from the internet also, please apply following config:

Internet access

<IfModule alias_module>
    Alias /admin /var/www/html/admin
    <Directory "/var/www/html/admin">
        AllowOverride None
        Options None
        Order deny,allow
        #Allow from 192.168.0.0/24 localhost 127.0.0.1
        Allow from all
        #Deny from all
    </Directory>
</IfModule>

Enable config

To enable Apache2 config for pihole please run:

a2ensite 004-pihole.conf

Then test our config and reload apache2 if succeed:

sudo apachectl configtest && sudo service apache2 reload

Finish

Now you can access your pihole via http(s)://YourIP_or_Domain/admin

Change pihole URL path from /admin to /custom

If you would like to change you path from http(s)://YourIP_or_Domain/admin to e.g. http(s)://YourIP_or_Domain/custom, simply adjust Alias in 004-pihole.conf to expected path:

#Alias /admin /var/www/html/admin
Alias /custom /var/www/html/admin

And added simple rewrite rule (you have to enable apache mod_rewrite via sudo a2enmod rewrite) to your virtual host e.g. default-ssl.conf.

	#Pihole rewrite link from /admin to /pihole.
	RewriteEngine  on
	RewriteRule    "^/admin/(.*)"  "/custom/$2" [R]

Then test our config and reload apache2 if succeed:

sudo apachectl configtest && sudo service apache2 reload

Finish

Now you can access your pihole via http(s)://YourIP_or_Domain/custom

@dotSynergy

This comment has been minimized.

Copy link

@dotSynergy dotSynergy commented Feb 11, 2021

just a heads up: if you are having trouble saving configuration (see this) just add apache's user to the pihole group.
in my case it was:
sudo usermod -a -G pihole www-data
hope this helped.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment