"someone like you" refers only to "crypto novice".
Signal protocol says nothing about identity management.
Your server should have a "users" table and for each user a list of public keys.
A user should be able to perform the following operations:
Create a new user identity using a new (not seen before) user identifier, and add a new public key to that new user identity record on your server ("registration").
On a new device / new installation, prove to the server's satisfaction that they are the same user as an existing user record, and add a new public key to that existing user identity record on your server ("login").
Once logged-in (proving they have a private key matching the public key of a user in your database), they can delete public keys associated with their own user record ("logout" and "logout on other devices").
The user's identity can be:
A pseudonymous username protected by a password (but how to do recovery if they forget the password? Using email? Then just do login by email token and don't use passwords).
An email address protected by email verification (server sends token to email address, API receives it, now believes user is owner of email address).
A phone number protected by sending code via SMS.
An identity provided by some SSO (gauth, FB login, corporate, etc.).
A pseudonymous username not bound to anything external, protected by having a valid pey pair. No way to recover the identity if user loses access to all their key pairs. On registration, user is prompted to create a recovery key pair and keep the recovery private key, serialized like diceware password, safe (on paper). On a new device, they use the recovery key to login, then create a new key pair for this new device and remove the key pair of the old device. The recovery key pair is generated same way all key pairs are generated, the user doesn't get to pick it. That's why it's not a password.
Something else.
A user's key pair is generated using OS CSPRNG and stored on the device where it was generated, using the way the OS recommends to store secrets (e.g. on iOS using keychain and secure enclave, on laptop possibly encrypted by password but UX issue explaining this is local operation).
The private key should never leave the device. There should be no way to backup the private key. If the user loses their phone, they can login on another phone, create a new key pair, delete the old key pair from the server database ("logout from that device").
While it is possible to encrypt the user's key pair using their account password and store the encrypted key pair on the server and give it to the user on login - thus they would have the same key pair on many devices - I would not consider that end-to-end.