kern / filepizza

:pizza: Peer-to-peer file transfers in your browser
https://file.pizza
Other
4.36k stars 328 forks source link

400: No WebRTC Support #108

Closed feixia5712 closed 4 years ago

feixia5712 commented 4 years ago

Hello,

Fresh install with docker 19.03.5 according to docs (the rather simple "docker run..." command).

But... ip:8080

400: No WebRTC Support. Please use Chrome or Firefox.

Same under Chrome or Firefox (latest versions of both browsers). ![Uploading image.png…]()

feixia5712 commented 4 years ago

image

qy527145 commented 4 years ago

I also built it with docker, and encountered the same problem during access 我也是用docker搭建的,访问遇到同样的问题

SaberDoTcodeR commented 4 years ago

it doesn't occur when using localhost:3000 but when using local ip 192.168.1.x:3000 problem rises

kern commented 4 years ago

I believe this is a security property of browsers that blocks WebRTC on insecure pages. Have you tried this using an SSL connection? Not sure if it works with self-signed certs or not.

SaberDoTcodeR commented 4 years ago

can you add some tech explanation on how to build the project using SSL connection

jrubenc commented 4 years ago

OP (@feixia5712) has just copy/pasted my issue at https://github.com/kern/filepizza/issues/107

SSL fixes the error, as I said there. But, anyway, it works when it wants, and is painfully slow af. And no... it's not a resources (bandwidth, browser) problem...

jrubenc commented 4 years ago

@SaberDoTcodeR

can you add some tech explanation on how to build the project using SSL connection

https://github.com/kern/filepizza/issues/100

Supposedly fixed in October. Doesn't work. What runs under https://file.pizza/ is not the same here on Github and/or lacks documentation. For example, https://file.pizza/ is hosted on CloudFlare and SSL is ended/proxied there.

kern commented 4 years ago

I've released a new update that supports initializing FilePizza with an HTTPS TLS cert/key, please check the README. Could you let me know if this helps?

jrubenc commented 4 years ago

Fair enough. For the sake of clarity, I won't obscure the hostname for debugging.

Created a new VM for this sole purpose. Debian Stretch.

Docker inspect for the container: https://pastebin.com/pyUdhn0N

# docker version
Client: Docker Engine - Community
 Version:           19.03.5

# docker run -d -p 8080:8080 -e PORT=8080 -e HTTPS_KEY=/config/server.key -e HTTPS_CERT=/config/server.crt -v mylocalpath:/config  kern/filepizza:master
fe17dd8453b7133dc5664978f51fa7ed7f681a36ff6c9784a29ee5560794ddf1

And when requested:

# curl -v https://files.apmgestio.cat:8080  
* Rebuilt URL to: https://files.apmgestio.cat:8080/
*   Trying 77.246.190.51...
* TCP_NODELAY set
* Connected to files.apmgestio.cat (77.246.190.51) port 8080 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=files.apmgestio.cat
*  start date: Dec 26 14:01:34 2019 GMT
*  expire date: Mar 25 14:01:34 2020 GMT
*  subjectAltName: host "files.apmgestio.cat" matched cert's "files.apmgestio.cat"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: files.apmgestio.cat:8080
> User-Agent: curl/7.52.1
> Accept: */*
> 

hangs there forever.

# docker logs tender_brown -f
info: FilePizza listening on :::8080

and nothing else there.

It's behind a 1:1 NAT. Requesting it from within the local vlan yields the same result: hanging forever. Same requesting to localhost:8080 from the server itself.

kern commented 4 years ago

@jrubenc give the latest build a whirl, 3e3f46ba7b716da8324ae34220d325b64e268365 should have fixed the hanging issue. Thanks for the report.

jrubenc commented 4 years ago

@kern seems to work now :) Directly on 443:

https://files.apmgestio.cat

Added http->https with nginx (would be nice if you created an insecure listener and 301 the requests to the https one).

feixia5712 commented 4 years ago

ok