The password of the user shall be used for client side encryption. A PBKDF and salt shall be used to derive a key from the user password.
Do I need to store this salt on the server and deliver it to each new client/device the user authenticates from? (I'm assuming here that the client can't store the salt, otherwise he could just store a strong encryption key and using a PBKDF would be a bad choice.)
If I do have to store it in some form on the server, is there a way to make it "hard" for the server to guess a weak user password? I guess the answer to this question is "no". It would always be possible for the server to try logging in as the user and brute-forcing it's way through a weak password in this way.