Empty page after login

Checklist
[ x] I have read intro post: About the Installation Issues category
[ x] I have read the tutorials, help and searched for similar issues
[ x] I provide relevant information about my server (component names and versions, etc.)
[ x] I provide a copy of my logs and healthcheck
[ x] I describe the steps I have taken to trouble shoot the problem
[ x] I describe the steps on how to reproduce the issue

All I get after I successfully login is an empty page.
This is happening after I upgraded from 2.9.0 to 3.1.0 or 3.0.2

Reverting to 2.9.0 brings everything back.

I run the migrations / cleanup / etc. and everything runs without any issues, but page is empty

<!doctype html>
<html class="passbolt no-js version launching no-passboltplugin" lang="en">
<head>
    <meta charset="utf-8"/>
    <title>Passbolt | Open source password manager for teams</title>
    <!--

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

    Open source password manager for teams
    Copyright (c) Passbolt SA ()


    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program. If not, see 


    -->
    <meta name="description" content="Open source password manager for teams">
    <meta name="keywords" content="Passbolt, password manager, online password manager, open source password manager">
    <meta name="robots" content="noindex, nofollow">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="shortcut icon" type="image/x-icon" href="./favicon.ico" />
    <link rel="icon" href="./favicon_32.png" sizes="32x32" />
    <link rel="icon" href="./favicon_57.png" sizes="57x57" />
    <link rel="icon" href="./favicon_76.png" sizes="76x76" />
    <link rel="icon" href="./favicon_96.png" sizes="96x96" />
    <link rel="icon" href="./favicon_128.png" sizes="128x128" />
    <link rel="icon" href="./favicon_192.png" sizes="192x192" />
    <link rel="icon" href="./favicon_228.png" sizes="228x228" />
    <base href="./">
    <link rel="stylesheet" href="./css/themes/default/api_main.min.css?v=3.1.0" id="js_css_theme"/></head>
<body>
<!-- main -->
<div id="container" class="page ">
<div class="temporary skeleton">
    <div id="container" class="page password">
        <div class="header first">
            <nav><div class="primary navigation top"></div></nav>
        </div>
        <div class="header second"></div>
        <div class="header third"></div>
        <div class="panel main"></div>
    </div>
    <footer>
        <div class="footer"></div>
    </footer>
</div>
</div>
</body>
</html>


No errors in logs

docker logs 8217c4fe5463
gpg: keybox '/var/lib/passbolt/.gnupg/pubring.kbx' created
gpg: /var/lib/passbolt/.gnupg/trustdb.gpg: trustdb created
gpg: key 5B5EB23D812422EA: public key "Passbolt default user <emanuel@mytime.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 5B5EB23D812422EA: "Passbolt default user <emanuel@mytime.com>" not changed
gpg: key 5B5EB23D812422EA: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
Generating a RSA private key
.................................................................................................................................++++
.........................................................................................................................................++++
writing new private key to '/etc/ssl/certs/certificate.key'
-----

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

Open source password manager for teams
---------------------------------------------------------------

Running baseline checks, please wait...
Some tables are already present in the database. A new installation would override existing data.
Please use --force to proceed anyway.

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

Open source password manager for teams
---------------------------------------------------------------
Running migration scripts.
---------------------------------------------------------------
using migration paths 
- /etc/passbolt/Migrations
using seed paths 
- /etc/passbolt/Seeds
using environment default
using adapter mysql
using database passbolt
ordering by creation time

All Done. Took 0.0059s
Cleared default cache
Cleared _cake_core_ cache
Cleared _cake_model_ cache
Enjoy! ☮

/usr/lib/python2.7/dist-packages/supervisor/options.py:461: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  'Supervisord is running as root and it is searching '
2021-05-14 19:18:10,811 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2021-05-14 19:18:10,811 INFO Included extra file "/etc/supervisor/conf.d/cron.conf" during parsing
2021-05-14 19:18:10,811 INFO Included extra file "/etc/supervisor/conf.d/nginx.conf" during parsing
2021-05-14 19:18:10,811 INFO Included extra file "/etc/supervisor/conf.d/php.conf" during parsing
2021-05-14 19:18:10,817 INFO RPC interface 'supervisor' initialized
2021-05-14 19:18:10,817 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2021-05-14 19:18:10,817 INFO supervisord started with pid 48
2021-05-14 19:18:11,819 INFO spawned: 'php-fpm' with pid 192
2021-05-14 19:18:11,820 INFO spawned: 'nginx' with pid 193
2021-05-14 19:18:11,822 INFO spawned: 'cron' with pid 194
[14-May-2021 19:18:11] NOTICE: fpm is running, pid 192
[14-May-2021 19:18:11] NOTICE: ready to handle connections
[14-May-2021 19:18:11] NOTICE: systemd monitor interval set to 10000ms
2021-05-14 19:18:12,866 INFO success: php-fpm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2021-05-14 19:18:12,866 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2021-05-14 19:18:12,866 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)


Healthcheck is ok

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

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

Environment

[PASS] PHP version 7.3.27-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
[WARN] The passbolt config file is missing in /etc/passbolt/
  [HELP] Copy /etc/passbolt/passbolt.default.php to /etc/passbolt/passbolt.php
  [HELP] The passbolt config file is not required if passbolt is configured with environment variables

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://passbolt.mytime.com
[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.
[FAIL] The server gpg key is not set
  [HELP] Create a key, export it and add the fingerprint to config/passbolt.php
  [HELP] See. help/tech/install#toc_gpg
[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.
[FAIL] The server key fingerprint doesn't match the one defined in config/passbolt.php.
  [HELP] Double check the key fingerprint, example: 
  [HELP] sudo su -s /bin/bash -c "gpg --list-keys --fingerprint --home /var/lib/passbolt/.gnupg" www-data | grep -i -B 2 'SERVER_KEY_EMAIL'
  [HELP] SERVER_KEY_EMAIL: The email you used when you generated the server key.
  [HELP] See. help/tech/install#toc_gpg
[FAIL] The server public key defined in the config/passbolt.php (or environment variables) is not in the keyring
  [HELP] Import the private server key in the keyring of the webserver user.
  [HELP] you can try:
  [HELP] sudo su -s /bin/bash -c "gpg --home /var/lib/passbolt/.gnupg --import /etc/passbolt/gpg/serverkey_private.asc" www-data
[FAIL] The server key does not have a valid email id.
  [HELP] Edit or generate another key with a valid email id.

Application configuration

[PASS] Using latest passbolt version (3.1.0).
[PASS] Passbolt is configured to force SSL use.
[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.

  4 error(s) found. Hang in there!