Blank page after login

Hello!

I have the same problem on a clean install. After login, I see a blank page, as in the screenshot. Did you solve the problem?

Hi @pfzim :wave: and welcome to Passbolt community forum :call_me_hand:

Can you tell us more about your current installation ?

  • Operating system name and version
  • Passbolt version
  • used documentation to install Passbolt
  • Browser name and version

Can you also run a healthcheck command on your instance ?

On Debian/Ubuntu:

sudo -H -u www-data bash -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck"

On CentOS / install from source:

sudo -H -u www-data bash -c "/var/www/passbolt/bin/cake passbolt healthcheck"

Thanks !

Hi @_jc !

I am trying to install Passbolt on a server in a closed environment with no internet access.
I downloaded the package: https://download.passbolt.com/ce/debian/pool/stable/p/passbolt-ce-server/passbolt-ce-server_3.2.1-3~1627390708.gbp663784_all.deb.

The installation was successful, the database and the primary user were created.
After a successful login, I see a blank page.

# uname -a
Linux srv-web01 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux

# sudo -H -u www-data bash -c "/usr/share/php/passbolt/bin/cake passbolt healthcheck"

     ____                  __          ____
    / __ \____  _____ ____/ /_  ____  / / /_
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /
/_/    \__,_/____/____/_.___/\____/_/\__/

Open source password manager for teams
-------------------------------------------------------------------------------
Healthcheck shell
-------------------------------------------------------------------------------

Environment

[PASS] PHP version 7.3.29-1~deb10u1.
[PASS] PCRE compiled with unicode support.
[PASS] The temporary directory and its content are writable.
[PASS] The public image directory and its content are writable.
[PASS] The logs directory and its content are writable.
[PASS] GD or Imagick extension is installed.
[PASS] Intl extension is installed.
[PASS] Mbstring extension is installed.

Config files

[PASS] The application config file is present
[PASS] The passbolt config file is present

Core config

[PASS] Debug mode is off.
[PASS] Cache is working.
[PASS] Unique value set for security.salt
[PASS] Full base url is set to https://pass.gk.ro****.local
[PASS] App.fullBaseUrl validation OK.
[PASS] /healthcheck/status is reachable.

SSL Certificate

[PASS] SSL peer certificate validates
[PASS] Hostname is matching in SSL certificate.
[PASS] Not using a self-signed certificate

Database

[PASS] The application is able to connect to the database
[PASS] 25 tables found
[PASS] Some default content is present
[PASS] The database schema up to date.

GPG Configuration

[PASS] PHP GPG Module is installed and loaded.
[PASS] The environment variable GNUPGHOME is set to /var/lib/passbolt/.gnupg.
[PASS] The directory /var/lib/passbolt/.gnupg containing the keyring is writable by the webserver user.
[PASS] The server OpenPGP key is not the default one
[PASS] The public key file is defined in config/passbolt.php and readable.
[PASS] The private key file is defined in config/passbolt.php and readable.
[PASS] The server key fingerprint matches the one defined in config/passbolt.php.
[PASS] The server public key defined in the config/passbolt.php (or environment variables) is in the keyring.
[PASS] There is a valid email id defined for the server key.
[PASS] The public key can be used to encrypt a message.
[PASS] The private key can be used to sign a message.
[PASS] The public and private keys can be used to encrypt and sign a message.
[PASS] The private key can be used to decrypt a message.
[PASS] The private key can be used to decrypt and verify a message.
[PASS] The public key can be used to verify a signature.

Application configuration

[FAIL] Could not connect to passbolt repository to check versions It is not possible check if your version is up to date.
[HELP] Check the network configuration to allow this script to check for updates.
[FAIL] Passbolt is not configured to force SSL use.
[HELP] Set passbolt.ssl.force to true in config/passbolt.php.
[PASS] App.fullBaseUrl is set to HTTPS.
[PASS] Selenium API endpoints are disabled.
[PASS] Search engine robots are told not to index content.
[PASS] Registration is closed, only administrators can add users.
[PASS] Serving the compiled version of the javascript app
[PASS] All email notifications will be sent.

[FAIL] 2 error(s) found. Hang in there!

Ok, there is nothing special in your healthcheck output. When you got your blank page, do you see any error in the /var/log/nginx error log files ?

If you enable the debug mode of your browser by pressing the F12 key, do you see any error in the network tab ?

You can also enable the passbolt extension debug mode. This is different from the previous console.

If you are using Google Chrome can you please go to: chrome://extensions

  • Activate the Developer mode in the top right corner
  • Look for the Passbolt card and click details button
  • Look for the Inspect views and the index.html link
  • A new window will appear this is the debugger of the browser extension, try to reproduce the error and send us the logs

On Firefox, you can go to: about:debugging#/runtime/this-firefox

  • locate Passbolt and click Inspect
  • A new tab for the console of the browser extension will appear. try to reproduce the error and send us the logs

Thanks !

There are no errors in the logs of Nginx, on the Network and Console tab.

Errors are present only in the Google Chrome extension:

pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 404 (Not Found)
index.html:1 Unchecked runtime.lastError while running tabs.executeScript: The tab was closed.
    at chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36566:19
    at ScriptExecution.executeScript (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36619:5)
    at ScriptExecution.setGlobals (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36658:8)
    at PageMod.__onTabUpdated (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36399:21)
    at PageMod.__onAttachExistingTab (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36330:14)
    at tabs.forEach (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36222:16)
index.html:1 Unchecked runtime.lastError while running tabs.executeScript: The tab was closed.
    at chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36566:19
    at ScriptExecution.injectScripts (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36600:5)
    at PageMod.__onTabUpdated (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36408:21)
    at PageMod.__onAttachExistingTab (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36330:14)
    at tabs.forEach (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36222:16)
    at Object.chrome.tabs.query [as callback] (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:36221:14)
6Unchecked runtime.lastError while running tabs.executeScript: No tab with id: 2.
    at Object.callback (<URL>)
5pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
999index.min.js:13015 Uncaught (in promise) TypeError: Cannot read property 'emit' of undefined
    at Port.<anonymous> (index.min.js:13015)
    at index.min.js:36464
    at EventImpl.dispatchToListener (extensions::event_bindings:403)
    at Event.publicClassPrototype.(anonymous function) [as dispatchToListener] (extensions::utils:138:26)
    at EventImpl.dispatch_ (extensions::event_bindings:387)
    at EventImpl.dispatch (extensions::event_bindings:409)
    at Event.publicClassPrototype.(anonymous function) [as dispatch] (extensions::utils:138:26)
   at dispatchOnMessage (extensions::messaging:392)
pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
index.min.js:35362 Can not attach application if user is not logged in.
onAttach @ index.min.js:35362
pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
580index.min.js:13015 Uncaught (in promise) TypeError: Cannot read property 'emit' of undefined
    at Port.<anonymous> (index.min.js:13015)
    at index.min.js:36464
    at EventImpl.dispatchToListener (extensions::event_bindings:403)
    at Event.publicClassPrototype.(anonymous function) [as dispatchToListener] (extensions::utils:138:26)
    at EventImpl.dispatch_ (extensions::event_bindings:387)
    at EventImpl.dispatch (extensions::event_bindings:409)
    at Event.publicClassPrototype.(anonymous function) [as dispatch] (extensions::utils:138:26)
    at dispatchOnMessage (extensions::messaging:392)
(anonymous) @ index.min.js:13015
(anonymous) @ index.min.js:36464
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392
index.min.js:11889 InvalidMasterPasswordError: This is not a valid passphrase
    at Keyring.checkPassphrase (chrome-extension://jambapmihiogllcddplfkaamhgdgleha/index.min.js:32056:15)
(anonymous) @ index.min.js:11889
async function (async)
(anonymous) @ index.min.js:11886
(anonymous) @ index.min.js:36464
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392
214index.min.js:13015 Uncaught (in promise) TypeError: Cannot read property 'emit' of undefined
    at Port.<anonymous> (index.min.js:13015)
    at index.min.js:36464
    at EventImpl.dispatchToListener (extensions::event_bindings:403)
    at Event.publicClassPrototype.(anonymous function) [as dispatchToListener] (extensions::utils:138:26)
    at EventImpl.dispatch_ (extensions::event_bindings:387)
    at EventImpl.dispatch (extensions::event_bindings:409)
    at Event.publicClassPrototype.(anonymous function) [as dispatch] (extensions::utils:138:26)
    at dispatchOnMessage (extensions::messaging:392)
(anonymous) @ index.min.js:13015
(anonymous) @ index.min.js:36464
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401
_isAuthenticated @ index.min.js:39861
AuthService.isAuthenticated @ index.min.js:39835
checkAuthStatus @ index.min.js:30443
isAuthenticated @ index.min.js:30396
onAttach @ index.min.js:35361
_listeners.chrome.runtime.onConnect @ index.min.js:36267
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnConnectImpl @ extensions::messaging:363
dispatchOnConnect @ extensions::messaging:275
index.min.js:35362 Can not attach application if user is not logged in.
onAttach @ index.min.js:35362
async function (async)
onAttach @ index.min.js:35361
_listeners.chrome.runtime.onConnect @ index.min.js:36267
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnConnectImpl @ extensions::messaging:363
dispatchOnConnect @ extensions::messaging:275
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401
_isAuthenticated @ index.min.js:39861
AuthService.isAuthenticated @ index.min.js:39835
checkAuthStatus @ index.min.js:30443
isAuthenticated @ index.min.js:30396
checkAuthStatusTimeout.setTimeout @ index.min.js:30473
setTimeout (async)
startCheckAuthStatusLoop @ index.min.js:30472
async function (async)
startCheckAuthStatusLoop @ index.min.js:30466
postLogin @ index.min.js:14695
login @ index.min.js:14687
async function (async)
login @ index.min.js:14678
(anonymous) @ index.min.js:11909
async function (async)
(anonymous) @ index.min.js:11907
(anonymous) @ index.min.js:36464
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnMessage @ extensions::messaging:392
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401
_isAuthenticated @ index.min.js:39861
AuthService.isAuthenticated @ index.min.js:39835
checkAuthStatus @ index.min.js:30443
isAuthenticated @ index.min.js:30396
onAttach @ index.min.js:35361
_listeners.chrome.runtime.onConnect @ index.min.js:36267
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
EventImpl.dispatch @ extensions::event_bindings:409
publicClassPrototype.(anonymous function) @ extensions::utils:138
dispatchOnConnectImpl @ extensions::messaging:363
dispatchOnConnect @ extensions::messaging:275
index.min.js:35362 Can not attach application if user is not logged in.

Hi,

there is so many 401 errors in your extension logs, who mean you are not authenticated to the application:

pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
pass.gk.r.local/auth/is-authenticated.json:1 Failed to load resource: the server responded with a status of 401 ()
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401
index.min.js:39861 GET https://pass.gk.r.local/auth/is-authenticated.json 401

Can you try to clean browser cache and cookies, or try with a new fresh browser profile ? Did you try also with another browser ?
As you are running in a closed environment, maybe there is a kind of proxy between you and the server ?

Ok, I’ll try to clear cache and cookies.
The connection is direct, there is no proxy between the server and the client.
Can I work without this extension?

Hi, the web extension is mandatory as it contains your private GPG key and is used to encrypt / decrypt passwords, as explained here: Passbolt Help | How does it work?

Clearing cache and cookies did not resolve the issue.

Maybe the problem is that I installed the extension incorrectly?
Because I do not have direct access to the Internet, I had to download the extension from another computer in .crx format, unpack it and install it via development mode.

Is your server has the correct date and time ? There may be issues with GPG authentication if they are not synced.

The time is synchronized with the domain controller, correct on both the client and the server.

Hi,

Can you purge again cache and cookies, then enable again the web extension debug console.
Then go to the Network tab and reproduce the login process:

  • Go to Passbolt login page
  • Enter your passphrase
  • blank page

You should have some traces. Can you click on the “Arrow down” symbol and send here the .har file ? It is a text file, it doesn’t contains any sensitive data, but you can check before send it here.

Hello,

I have uploaded the .har log: https://www.sendspace.com/file/8yp37q

Hi,

Thanks for the har file, it was very helpful. I saw you are using Chrome/72.0.3626.121, released 2 years and 6 months ago. This version is too old. You should update at last version to use Passbolt extension and get last security fixes.

I noticed also you are requesting a https address with a :80 port:

Port 80 is not for https. Can you check on your server in /etc/passbolt/passbolt.php for ‘fullBaseUrl’ and check if the value starts with https ?

Best,

1 Like

Hello!
Thanks for the help!
fullBaseUrl starts with https = https://pass.g…local
I cannot update Chrome, because I do not have administrative rights on the client machine.
But I have installed Microsoft Edge and it’s newer than Chrome.
The Passbolt extension works with it.

Great, I’m glad to see you finally manage to connect to Passbolt. Chrome 72 is definitively too old.