haiwen / seafile-client

Seafile desktop client.
http://seafile.com
Apache License 2.0
471 stars 279 forks source link

Mac + Windows client using wrong port #1068

Closed GiovanniK closed 6 years ago

GiovanniK commented 6 years ago

Hi all,

I've been trying to figure out why my desktop clients aren't syncing and I think I found out why. I have seahub running on port 80 and seafile running on 81 (8082 is in use for another application).

[02/22/18 12:30:29] http-tx-mgr.c(1236): Bad response code for GET http://xxx:8082/protocol-version: 401.

The same error occurs on WIndows and Mac. My guess is that it's hardcoded somewhere.

shoeper commented 6 years ago

It is unlikely that this is a bug. Use the forum for questions, please.

MrzJkl commented 6 years ago

I have this problem too! This isn´t a question, it´s a bug, surprise!

Henrik0x7F commented 6 years ago

The documentation states that the fileserver port shouldn't be changed: https://manual.seafile.com/deploy_windows/ports_used_by_seafile_windows_server.html This however should be changed because some networks block 8082.

shoeper commented 6 years ago

@MoritzJoekel this is not bug - for sure. It's a misconfiguration.

@BPopcorn https://manual.seafile.com/deploy_windows/deploy_with_nginx.html - it is not possible that all components listen on the same port anyway. So a proxy - e.g. nginx - is the perfect solution. Not sure why its so hard to read the documentation ...

MrzJkl commented 6 years ago

Yes, but anyway it´s would be beautiful if you could change the port. In the config file you can change the port of the fileserver. If the client requests every time on port 8082 then the option to change the fileserver-port is totaly useless.

shoeper commented 6 years ago

Where does it say the client requests always on port 8082? That's wrong. Anyway, have a look at the nginx / Apache instructions and everything will be fine.

Henrik0x7F commented 6 years ago

I don't know about Apache / nginx but the manual clearly states that port 8082 will always be used for file syncing: grafik

MrzJkl commented 6 years ago

[08/18/18 15:49:41] http-tx-mgr.c(1257): Bad response code for GET URL:8082/protocol-version: 401. [08/18/18 15:49:41] clone-mgr.c(864): Transition clone state for dc4b78ba from [check server] to [error]: check server. [08/18/18 15:49:42] clone-mgr.c(847): Transition clone state for dc4b78ba from [error] to [check server].

Excerpt from the clientlog. It´s the same wheter the fileserver-port is another as 8082 or it is 8082.

shoeper commented 6 years ago

@freeplant you've to fix the documentation. It is wrong.

shoeper commented 6 years ago

Having a look at "8082/protocol-version" your SERVICE_URL is wrong. Edit: FILE_SERVER_ROOT is wrong. The path /seafhttp is hardcoded and the fileserver root needs to end with that. The port can be configured.

shoeper commented 6 years ago

So to summarize:

  1. Have a look at the setup with nginx and https
  2. Make sure SERVICE_URL and FILE_SERVER_ROOT are configured properly.

While the path /seafhttp is hardcoded for the seafile-server component in the client, the port is not and is part of FILE_SERVER_ROOT. Using nginx solves all the issues and allows adding TLS encryption (https) which also makes your install much more secure (without anyone capturing the traffic in a public wifi can takeover your session or even steal your password in cleartext - just to show one possible scenario).

Henrik0x7F commented 6 years ago

Is it possible that the client caches the port somewhere? Because FILE_SERVER_ROOT is certainly not 8082. Currently I redirect port 8082 to the real file server port so syncing works again. But it's still impossible to sync in networks blocking port 8082.

shoeper commented 6 years ago

Don't know. Do you have the web settings enabled? Those settings overwrite the config, so FILE_SERVER_ROOT might have been overwritten from there.

I've not seen a case where the port was cached within the last ~4 years.

Henrik0x7F commented 6 years ago

The port in the configs is 8443. In the web settings it's 443 because I redirect port 8443 to 443.

shoeper commented 6 years ago

We talk about different things, now. Add ENABLE_SETTINGS_VIA_WEB = False to seahub_settings.py (and restart) and see if that helps.