My initial experience setting up Pi-hole v6 on Unraid was a real head-banger. I just could not log in at all.
TLDR version: Set password using
pihole setpasswdand login to Pi-hole's web dashboard via a hostname, not raw IP address.
What's changed with passwords on Pi-hole V6?
I went down the password rabbit hole, trying to figure what has changed between v5 and v6, and what may or may not apply when running Pi-hole under Unraid's environment.
Here are some of my learnings:
The initial randomly generated password only show up once. If you've restarted the Docker instance (which I did as I was changing a few container configs), this does not show up in the logs anymore. If you've missed the boat, just skip over and set a password instead.
The new command to set a password is now
pihole setpasswd. Whilepihole -a -pstill works,pihole setpasswdis the newer preferred one now. Also, when you set a password, the hash of the password is now stored in/etc/pihole/pihole.tomlfor v6 (not/etc/pihole/setupVars.confas that is for v5).WEBPASSWORDis nowFTLCONF_webserver_api_password. Not a secure practice (as this is visible in plain text in your docker config file), but if you decide to set a password via the Docker container's variable,WEBPASSWORDno longer works, useFTLCONF_webserver_api_passwordinstead.WEBPASSWORD_FILEstill works. You can create a file containing the password and assign the path of the file to theWEBPASSWORD_FILEdocker environment variable on v6. Yes, I know what you're thinking, the naming is not consistent anymore.Pointing
FTLCONF_webserver_api_passwordorWEBPASSWORD_FILEto a Docker secret entry. This is not for Unraid. Using Docker secrets requires you to setup Docker Compose or Docker Swarm on Unraid, which isn't standard practice on Unraid.
In short, just run pihole setpasswd in the Docker terminal of your Pi-hole instance.
Is the login page broken?
I have tried everything above and I still can't login. I'd enter my password on the login page, hit enter, and... nothing. The page would just refresh. My login attempts were just being silently rejected.
Upon inspecting the /auth network request, I found a clue - it was returning a no SID provided message in the response.
Taking an educated guess, SID likely means Session ID. This suggests that Pi-hole possibly refused to start an authenticated session.
Does Pi-hole strictly requires HTTPS to establish a session? That doesn't make any sense. Why would a service that you're setting up for the first time require HTTPS? Accessing via the HTTP protocol is normally what folks do for initial configuration, as doing cert signing and validation upfront complicates the setup process.
Pi-hole Needs a Hostname!
In a fit of frustration, I decided to put the issue aside and set up the Nginx reverse proxy to Pi-hole, as I was planning on doing it anyway. And that's when it happened - the login magically worked!
It turns out Pi-hole wants to be accessed via a hostname rather than a raw IP address. Therefore, the fix for the broken login is actually embarrassingly simple, just add an entry in your local machine's hosts file.
pi-hole.lan 12.34.56.78
And just like that, I can finally login! It's frustrating that such a simple, non-obvious step was the cause of so much headache. Hopefully, this saves someone else from the troubles I endured.


Top comments (0)