will-moss / isaiah

Self-hostable clone of lazydocker for the web. Manage your Docker fleet with ease
MIT License
950 stars 17 forks source link

Authentication issues #4

Closed accforgithubtest closed 1 month ago

accforgithubtest commented 3 months ago

I use firefox private browsing, and Isaiah keeps asking me to enter the password every few seconds. When I enter password, it says successful and asks me to select the docker stack, however I am asked to enter password again. Its a endless loop which makes it unusable.

For now I am using AUTHENTICATION_ENABLED=false. While this removed the need for entering the password every few seconds, I still need to select the docker stack every few seconds. Would be great to have the issue fixed.

This is a neat project to have lazydocker type functions in a browser, thank you for the project !

will-moss commented 3 months ago

Thanks for opening the issue and for including all those details.

Before explaining what I think is your issue, I will explain very quickly how Isaiah works :

I think this is what's happening on your end :

Am I making the correct assumption that your internet connection is unstable? If not, please let me know so I can investigate somewhere else. (I have tried using Firefox + Private Browsing, and couldn't reproduce the issue. Maybe there's other settings you're using?) Also, maybe would it be a good idea to implement an optional "simple reconnection mechanism" that does not reset everything when the websocket connection is lost? That could help users with unstable connections. Let me know!

Ultimately, for the issue "I still need to select the docker stack every few seconds", I have good news! This is actually an optional prompt. When you're connected to your server and have picked a stack for the first time, press the "X" key, navigate down to "enableOverviewOnLaunch" and toggle off the option. This will disable the prompt at launch / reconnection, plus you'll still be able to navigate between your stacks by pressing the "O" key (as in "Overview").

PS : Thanks a lot for the kind words!

accforgithubtest commented 3 months ago

"enableOverviewOnLaunch" and toggle off the option

That helps, thank you. But it looks like this setting is not persisted anywhere ? Once I re-open the browser I need to do the toggle off again.

My internet connection is stable, and this is all within the same LAN, my laptop and the home server are next to each other.

I have put isaiah behind a reverse proxy (caddy-docker-proxy) and is accessible at https://isaiah.local.host I notice from the firefox dev tools network tab that below request is sent every few seconds as a get request. I have copied it as a curl request below.

I guess that this request is the beginning of "reset sequence" ? Not sure why the websocket keeps getting broken though. I do see the warning triangle every-time before I see the request in dev tool network. Do I have to do any additional settings in case of setting up isaiah behind caddy-docker-proxy ?

curl 'wss://isaiah.local.host/ws' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Sec-WebSocket-Version: 13' -H 'Origin: https://isaiah.local.host' -H 'Sec-WebSocket-Extensions: permessage-deflate' -H 'Sec-WebSocket-Key: ha6jKElq5G/teOEpyPaFFQ==' -H 'DNT: 1' -H 'Sec-GPC: 1' -H 'Connection: keep-alive, Upgrade' -H 'Sec-Fetch-Dest: empty' -H 'Sec-Fetch-Mode: websocket' -H 'Sec-Fetch-Site: same-origin' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Upgrade: websocket'

maybe would it be a good idea to implement an optional "simple reconnection mechanism"

I do not know what issue I am facing, however something like this will probably fool proof the application and I think this is a great idea.

Also, will it be a good idea to provide environment variables for all the settings available under the "X" Parameters options - so there is a way to define and "persist" preferences ?

will-moss commented 3 months ago

You're welcome, and thanks again for the new information about your setup.

To address every point :

Regarding both the last point and your idea about the parameters being duplicated from the browser to the environment variables (so that, the server decides, rather than the browser), I think it's a good idea. Thank you very much. I will keep that issue open as long as you need help, and as long as the feature isn't released.

accforgithubtest commented 3 months ago

Thank you for the detailed replies. Will try out the links for the reverse proxy setup for websockets. Cheers!

will-moss commented 2 months ago

Hey!

I have just published a new release, along with updated documentation.

You will find the troubleshooting guide here.

I think that, from now on, you should be able to use Isaiah inside a private browser while maintaining your preferences persisted, so that you don't have to choose your Docker stack again and again on every single refresh.

Regarding the reset sequence and the fool-proofing, before getting to it, I think I may already have a solution for you. I'd like to ask you :

I have an intuition that your disconnection issues may have something to do with the SERVER_MAX_READ_SIZE setting. Increasing its value from 100000 to 200000 may fix your problem. The rough explanation is here.

I hope it all helps, and I look forward to reading from you!

will-moss commented 1 month ago

Hi again,

It's been a month since the last update.

If you don't mind, I will close the issue in a few days.

If you still encounter any issue, please feel free to let me know!