screego / server Goto Github PK
View Code? Open in Web Editor NEWscreen sharing for developers https://screego.net/
Home Page: https://app.screego.net
License: GNU General Public License v3.0
screen sharing for developers https://screego.net/
Home Page: https://app.screego.net
License: GNU General Public License v3.0
See #61
Steps to reproduce:
test
)room with id test does not exist
Expected behavior:
Room should remain available after leaving the site.
Version:
screego version 1.0.1; screego/server@fa388f6e59401059530fae9d6d15da809fe2abb7
It would be great if you add some credit about PION community without with it would have not be possible.
To be able to use a command like screego hash --name foo >>users
, it would be useful to make the password prompt be output to stderr rather than stdout.
I think the line to change is this one:
Line 28 in a14762d
Hello, thanks so much for this project, it is amazing!
While learning about STUN and TURN I stumbled upon this quote from Nextcloud docs:
Nextcloud Talk will try direct P2P in the first place, use STUN if needed and TURN as last resort fallback. Thus to be most flexible and guarantee functionality of your Nextcloud Talk instance in all possible connection cases, you most properly want to setup a TURN server.
What do you think of implementing the same approach? We won't need to ask users to pick STUN or TURN before creating a room, it will always start as STUN, and only if connection cannot be established screego
would automatically try TURN next.
Of course all the existing options should be respected, e.g. with SCREEGO_AUTH_MODE=turn
the fallback to TURN would only happen if user is authenticated - exactly as it is today, I'm just thinking that we don't really have to ask users what they want, we can pick the best of the available options ourselves.
Hi,
could you make sharing of a webcam and microphone (in addition to screen sharing) available?
Cu Hauke
can i use this great job for screen remote access ?add grpc for mouse & key even?
It would be nice to use shortcuts for common functions, like:
s
to trigger screen sharing (start/stop)someKey
to switch between available streamsf
to trigger full screenc
to copy the room urlpanic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x8e3015]
goroutine 10 [running]:
github.com/screego/server/ws.(*HostOffer).Execute(0xc0001c9680, 0xc000175400, 0x8319a3a4552c7d5f, 0x206d13e1, 0xc0001de420, 0x16, 0x0, 0xc000060780, 0xc000060900, 0xc0001be430, ...)
/home/jm/src/screego/server/ws/event_hostoffer.go:33 +0x215
github.com/screego/server/ws.(*Rooms).Start(0xc000175400)
/home/jm/src/screego/server/ws/rooms.go:70 +0xe2
created by github.com/screego/server/cmd.serveCmd.func1
/home/jm/src/screego/server/cmd/serve.go:49 +0x2e5
trying to run it on windows leads to the following:
FTL could not start turn server error="turn: RelayAddress must be valid IP to use RelayAddressGeneratorStatic"
> set SCREEGO_EXTERNAL_IP=217.X.X.249
> screego.exe serve
2020-10-07T10:42:16+02:00 INF SCREEGO_SECRET unset, user logins will be invalidated on restart
2020-10-07T10:42:16+02:00 INF Users file not specified
2020-10-07T10:42:16+02:00 FTL could not start turn server error="turn: RelayAddress must be valid IP to use RelayAddressGeneratorStatic"
Hi all,
i ´m actually using screego in docker with nginx, all in all it works fine.
I have noticed that some users cannot share their screens. Now I want to try it out without nginx.
Now i would like to use screego in docker without nginx and now i have the problem that i can´t configure SSL.
Do you have a solution for that? Do I have to use nginx for SSL? Or is this procedure not intended?
Thanks for your help.
Could screego control PC/screen like teamviewer? I think screego just a viewer based on browser HTML5 fuction
thanks
It would be handful to have a function to record the stream.
Jitsi uses a TCP Fallback for WebRTC https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart#advanced-configuration which works fine with corporate NATs (and no direct networking between the workstations).
Would be nice to see this feature in ScreeGo
When going into full-screen, the (annoying) room title and controls are hidden, which is good (see #17 for more information). However, then, the regular HTML5 video controls are shown. While that wouldn't be so much of an issue (I mean, a play/pause button doesn't make too much sense, but it's not a problem), this video player just pauses whenever I click into the window.
This behavior is problematic, and it took me some time to realize why the video apparently stopped. When pressing the play button (or clicking into the window otherwise again), the stream continues.
I would suggest to completely hide the video controls, as they're not needed at all. This should also remove the ability to pause the stream by clicking into the window.
Edit: this behavior was observed in Chromium 85.0.4183.121.
It would be nice if one could force 1:1 mode with scroll bars if the sender resolution is higher than the receivers.
Great project, thanks for sharing!
While sharing the screen one pop-up should generate for which screen you want to share.That pop-up itself is not coming, so that screen share button is not working in my private instance. I have checked the logs and there is no error message.
sample screen I have attached for clarity.
In public instances it's working. Let me know if anything requires configurations for private instances.
I have made the setup through docker.
version: "3.3"
services:
screego:
image: screego/server:1.0.7
network_mode: host
environment:
SCREEGO_EXTERNAL_IP: "164.52.196.20"
Ubuntu : 16.04
For developers who are not so familiar with the used programming languages it would be nice to have a guide to "how to contribute" like in this project (even tho gotify might be more complex) or like https://gotify.net/docs/dev-setup
Helpful steps might be:
While trying your cool solution both in a Docker environment and native on my EC2 box, it reproducedly crashes after some seconds of sharing my local screen to another local browser.
Config:
SCREEGO_EXTERNAL_IP: "x.x.x.20"
SCREEGO_TURN_ADDRESS: "0.0.0.0:443"
SCREEGO_SERVER_ADDRESS: "0.0.0.0:80"
SCREEGO_SECRET: "totallysecret"
SCREEGO_TURN_PORT_RANGE: "50000:55000"
SCREEGO_TURN_STRICT_AUTH: "false"
SCREEGO_TRUST_PROXY_HEADERS: "true"
SCREEGO_AUTH_MODE: "none"
SCREEGO_CORS_ALLOWED_ORIGINS: "https://other.tld"
SCREEGO_LOG_LEVEL: "debug"
Log:
ubuntu@ip-172-31-42-4:~/screego$ sudo ./screego serve
2021-02-18T14:49:11Z DBG Logger initialized
2021-02-18T14:49:11Z DBG Loading file /home/ubuntu/screego/screego.config
2021-02-18T14:49:11Z INF Users file not specified
2021-02-18T14:49:11Z DBG Using Port Range max=55000 min=50000
2021-02-18T14:49:11Z INF Start TURN/STUN addr=0.0.0.0:443
2021-02-18T14:49:11Z INF Start HTTP addr=0.0.0.0:80
2021-02-18T14:49:15Z DBG HTTP duration="345.412µs" host=host.tld ip=172.31.35.145:64080 path=/ size=2158 status=200
2021-02-18T14:49:15Z DBG HTTP duration=2.592104ms host=host.tld ip=172.31.35.145:64080 path=/static/css/main.08e397cf.chunk.css size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration=17.883149ms host=host.tld ip=172.31.35.145:64082 path=/static/js/2.6c008a11.chunk.js size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration=3.990749ms host=host.tld ip=172.31.35.145:64080 path=/static/js/main.4606f178.chunk.js size=0 status=200
2021-02-18T14:49:15Z DBG HTTP duration="46.64µs" host=host.tld ip=172.31.35.145:64082 path=/config size=70 status=200
2021-02-18T14:49:15Z DBG HTTP duration="548.608µs" host=host.tld ip=172.31.35.145:64082 path=/favicon.ico size=15086 status=200
2021-02-18T14:49:15Z DBG HTTP duration=10.723208ms host=host.tld ip=172.31.35.145:64082 path=/static/media/logo.d2ceaca5.svg size=0 status=200
2021-02-18T14:49:15Z DBG WebSocket New Connection id=c0n7squa08d27mvfd2ng ip=172.31.35.145
2021-02-18T14:49:15Z DBG HTTP duration="185.827µs" host=host.tld ip=172.31.35.145:64084 path=/stream size=0 status=0
2021-02-18T14:49:15Z DBG WebSocket Receive event=*ws.Join id=c0n7squa08d27mvfd2ng ip=172.31.35.145
2021-02-18T14:49:15Z DBG WebSocket Close code=1000 id=c0n7squa08d27mvfd2ng ip=172.31.35.145 reason="room with id obliged-beige-salamander does not exist"
2021-02-18T14:49:15Z DBG HTTP duration="125.84µs" host=172.31.42.4 ip=172.31.17.53:24862 path=/ size=2158 status=200
2021-02-18T14:49:16Z DBG HTTP duration="134.916µs" host=172.31.42.4 ip=172.31.35.145:64088 path=/ size=2158 status=200
2021-02-18T14:49:20Z DBG WebSocket New Connection id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:20Z DBG HTTP duration="177.001µs" host=host.tld ip=172.31.35.145:64082 path=/stream size=0 status=0
2021-02-18T14:49:20Z DBG WebSocket Receive event=*ws.Create id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:20Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:24Z DBG HTTP duration="105.697µs" host=host.tld ip=172.31.35.145:64096 path=/ size=2158 status=200
2021-02-18T14:49:24Z DBG HTTP duration="95.075µs" host=host.tld ip=172.31.35.145:64096 path=/static/css/main.08e397cf.chunk.css size=0 status=200
2021-02-18T14:49:24Z DBG HTTP duration=3.70267ms host=host.tld ip=172.31.35.145:64098 path=/static/js/2.6c008a11.chunk.js size=0 status=200
2021-02-18T14:49:24Z DBG HTTP duration="188.866µs" host=host.tld ip=172.31.35.145:64096 path=/static/js/main.4606f178.chunk.js size=0 status=200
2021-02-18T14:49:25Z DBG HTTP duration="20.124µs" host=host.tld ip=172.31.35.145:64098 path=/config size=70 status=200
2021-02-18T14:49:25Z DBG HTTP duration="109.365µs" host=host.tld ip=172.31.35.145:64098 path=/favicon.ico size=15086 status=200
2021-02-18T14:49:25Z DBG HTTP duration=1.796977ms host=host.tld ip=172.31.35.145:64098 path=/static/media/logo.d2ceaca5.svg size=0 status=200
2021-02-18T14:49:25Z DBG WebSocket New Connection id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG HTTP duration="168.819µs" host=host.tld ip=172.31.35.145:64100 path=/stream size=0 status=0
2021-02-18T14:49:25Z DBG WebSocket Receive event=*ws.Join id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG WebSocket Send event=room id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:25Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
turn ERROR: 2021/02/18 14:49:25 error when handling datagram: unable to handle ChannelData from 46.100.86.24:13778: no allocation found 46.100.86.24:13778:172.31.42.4:443
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.StartShare id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientsession id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostsession id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=room id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=room id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostOffer id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostoffer id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG TURN authenticated addr=89.247.119.26:58526 realm=screego
2021-02-18T14:49:34Z DBG TURN allocated addr=[::]:53934 relayaddr=3.64.59.20:53934
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientAnswer id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientanswer id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientICE id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientice id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:34Z DBG TURN authenticated addr=89.247.119.26:51089 realm=screego
2021-02-18T14:49:34Z DBG TURN allocated addr=[::]:54764 relayaddr=3.64.59.20:54764
2021-02-18T14:49:34Z DBG WebSocket Receive event=*ws.ClientICE id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:34Z DBG WebSocket Send event=clientice id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:35Z DBG WebSocket Receive event=*ws.HostICE id=c0n7stea08d27mvfd2og ip=172.31.35.145
2021-02-18T14:49:35Z DBG WebSocket Send event=hostice id=c0n7ss6a08d27mvfd2o0 ip=172.31.35.145
2021-02-18T14:49:45Z DBG HTTP duration="101.239µs" host=172.31.42.4 ip=172.31.17.53:24880 path=/ size=2158 status=200
2021-02-18T14:49:46Z DBG HTTP duration="115.434µs" host=172.31.42.4 ip=172.31.35.145:64114 path=/ size=2158 status=200
panic: runtime error: slice bounds out of range [:3524] with capacity 1500
goroutine 60 [running]:
github.com/pion/turn/v2.(*Server).readLoop(0xc000271a40, 0xd85b20, 0xc0001a10e0, 0xc00006afc0)
/home/runner/go/pkg/mod/github.com/pion/turn/[email protected]/server.go:150 +0x3ac
created by github.com/pion/turn/v2.NewServer.func2
/home/runner/go/pkg/mod/github.com/pion/turn/[email protected]/server.go:102 +0x1b2
In our company, direct traffic between PCs is blocked, so we have to use the built-in TURN server.
This works fine when I'm using the binary, but not with the docker image (same configuration).
When inspecting port 3478 with tcpdump, it seems like some (not all) UDP packets use an internal docker IP address, which looks a bit suspicious to me.
screego:
image: screego/server:1.0.1
ports:
- mode: host
target: 5050
published: 5050
- mode: host
protocol: tcp
target: 3478
published: 3478
- mode: host
protocol: udp
target: 3478
published: 3478
environment:
- SCREEGO_EXTERNAL_IP=X.X.151.230
- SCREEGO_SERVER_ADDRESS=0.0.0.0:5050
- SCREEGO_TURN_ADDRESS=0.0.0.0:3478
- SCREEGO_AUTH_MODE=none
- SCREEGO_SERVER_TLS=true
- SCREEGO_TLS_CERT_FILE=/etc/letsencrypt/live/xxx/fullchain.pem
- SCREEGO_TLS_KEY_FILE=/etc/letsencrypt/live/xxx/privkey.pem
- SCREEGO_LOG_LEVEL=debug
volumes:
- /etc/letsencrypt:/etc/letsencrypt:ro
Once you start sharing your screen you'll see a "preview" of it in the bottom right corner.
If you click on it, it extends and there seems to be no way to "escape" out of it, so you would need to restart the stream.
Not really bothering because why would you want to show the sreego app while sharing.
It would be great if it's possible to also stream the audio of the desktop e.g. from applications, presentations etc.
Would be nice to be able to set the default to no
Hi,
what's the correct way of building Screego from source? I'm trying to add Screego to FreeBSD Ports, but the problem is that the binary I get does not contain the UI apparently. I've checked the official FreeBSD binaries you release, and they seem to work just fine by which I mean the website looks like the one on the demo site (after I configure screego.config and run screego serve
, of course). With my manually built binaries, however, I get this kind of errors:
2020/10/09 17:45:02 http: panic serving 127.0.0.1:47506: stat /usr/home/user/f/ports/head/www/screego/build/index.html: no such file or directory
goroutine 22 [running]:
net/http.(*conn).serve.func1(0xc0000be000)
/usr/local/go/src/net/http/server.go:1801 +0x147
panic(0xa93940, 0xc000390450)
/usr/local/go/src/runtime/panic.go:975 +0x3e9
github.com/screego/server/ui.serveFile.func1(0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
/usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/ui/serve.go:34 +0x1fe
net/http.HandlerFunc.ServeHTTP(0xc0002f1b90, 0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
/usr/local/go/src/net/http/server.go:2042 +0x44
github.com/gorilla/handlers.(*cors).ServeHTTP(0xc0003ac120, 0x8289b6088, 0xc00038c1c0, 0xc0003b6100)
/usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/gorilla/handlers/cors.go:54 +0x103e
github.com/rs/zerolog/hlog.AccessHandler.func1.1(0xc0f0e0, 0xc0003b0000, 0xc0003b6100)
/usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/rs/zerolog/hlog/hlog.go:196 +0x243
net/http.HandlerFunc.ServeHTTP(0xc00039a100, 0xc0f0e0, 0xc0003b0000, 0xc0003b6100)
/usr/local/go/src/net/http/server.go:2042 +0x44
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000348000, 0xc0f0e0, 0xc0003b0000, 0xc0000c6000)
/usr/home/0mp/f/ports/head/www/screego/work/server-1.0.5/vendor/github.com/gorilla/mux/mux.go:212 +0xd3
net/http.serverHandler.ServeHTTP(0xc00018a1c0, 0xc0f0e0, 0xc0003b0000, 0xc0000c6000)
/usr/local/go/src/net/http/server.go:2843 +0xa3
net/http.(*conn).serve(0xc0000be000, 0xc10de0, 0xc000090080)
/usr/local/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2969 +0x36c
zaz^C2020-10-09T17:45:09+02:00 INF Received interrupt. Shutting down...
What's the secret source needed to get the UI included in the binary?
Cheers!
mac share to windows not work !!!!
I can create room in my phone,but clicked the button "Start Presentation" ,shared is not successful, browsers such as :google chrome ,firefox
panic: send on closed channel
goroutine 10 [running]:
github.com/screego/server/ws.(*Room).notifyInfoChanged(0xc000172c40)
/home/jm/src/screego/server/ws/room.go:99 +0x35f
github.com/screego/server/ws.(*Name).Execute(0xc0001adcf0, 0xc000175400, 0x8019a3a43be67d5f, 0x426be058, 0xc0001def80, 0x13, 0x
0, 0xc000060fc0, 0xc000061140, 0xc00028a620, ...)
/home/jm/src/screego/server/ws/event_name.go:29 +0xd4
github.com/screego/server/ws.(*Rooms).Start(0xc000175400)
/home/jm/src/screego/server/ws/rooms.go:70 +0xe2
created by github.com/screego/server/cmd.serveCmd.func1
/home/jm/src/screego/server/cmd/serve.go:49 +0x2e5
Hey,
in Google Chrome (and mabe other browsers) you have a "native" Button to stop your screen share. In german its called "Freigabe beenden" in English "Stop Share" (or simmilar).
When pressing this button, the screen share window goes black and you need to click on "cancel presentation", to disable screen share.
I think there is an event, which you can hook on to toggle this, without the need to click on "cancel presentation".
I use binary screengo,built in the LAN,domain name is "screen.injdk.cn"
Use nginx reverse proxy screengo and configure SSL.
The domain name can be accessed or logged in, but when creating the room, It's a blank and the console gave me some http400 errors
Can I find a solution here?
Thank you for seeing my difficulties
When not running in full-screen, the controls on the bottom and the room name on the top cannot be hidden in any way. As they're really large (especially the name could be smaller), they're likely in the way and cover interesting content.
I would like to be able to hide those elements. Maybe they can also just be transitioned out of the way after some timeout, and brought back when a mouse pointer hovers over the page again, like most alternative solutions do (e.g., Jitsi Meet).
Hi,
we are using screego in docker and it works good, but i want to user the "Login" option.
Here is my docker-compose.yml.
version: "3.7"
services:
screego:
image: screego/server:1.0.7
network_mode: host
volumes:
- /root/screengo/screengo.passwd:/root/screengo.passwd
environment:
SCREEGO_EXTERNAL_IP: "X.X.X.X"
SCREEGO_SECRET: "...................."
SCREEGO_USERS_FILE: "/root/screengo.passwd"
SCREEGO_LOG_LEVEL: "debug"
SCREEGO_SERVER_ADDRESS: "screego.docker:5050"
SCREEGO_TURN_ADDRESS: "X.X.X.X:3478"
I understand that these settings should be correct.
When I start docker-compose and go to screego to test the login, I get this error message "Login Failed: could not authenticate". It seems that the user file will not be transferred.
Does anyone have any advice how I can solve the problem?
Thank you for this cool application!
Would it be possible to allow Screego the use of an existing TURN server such as a Coturn (https://github.com/coturn/coturn) instance or even a public TURN server? Some installations might even make it hard to run / open the TURN server on the same machine.
Add support for IPv6 for the TURN server. This should include:
See also #4
Hey fellows,
at first: thanks for this awesome software! ❤️
But I am getting the bug, that neither the public instance nor a private install with docker-compose have the screenshare working.
Sharing the screen is working but no one can see it (except if you open the same room in a private window on your own machine) (both instances (public + self-hosted))
There are no entries in the developer console nor in the output of the screego server where we could get a hint for the bug.
SSL is used for the private instance (with traefik on a .dev domain (which also only accepts SSL connections)).
I am using Chromium version 86.0.4240.111 for sharing the screen.
malformed message: kekw unexpected end of JSON input
pop up in the browser.Any clues?
Is the only way to join a session to share the link or manually type in the URL?
Can you not type in the three code words? Am I missing something?
If screego is running on a host with both an IPv4 and IPv6 address, which of the two should be used as the value for the SCREEGO_EXTERNAL_IP
environment variable?
Hi,
thank you for developing screego :-)
Could you please add an URL option that makes it possible to join a running screego session in fullscreen without clicking on the fullscreen button?
A complete URL (with login) could look like this: https://user:[email protected]:12345/?room=room&fullscreen=true
Background: In OBS a browser element can be added to a scene. This browser opens an URL and is non-interactive. If you have a site (eg with screego) someone is streaming to, it can be embedded into OBS. This could be used to have screens shared by multiple praticipiants that are composed together into a scene and broadcasted.
Cu Hauke
It would be great to support "deep links" with a room-id that will automatically create the room specified in the URL if not already existing. Alternatively some kind of API would be helpful, that allow for "room-creation" similar to the form an the welcome page.
PS: Thanks for sharing this great project as OSS!
Maybe, there should be a setting for disabling the ip whitelisting.
First, my setup:
Downloaded and extracted https://github.com/screego/server/releases/download/v1.0.1/screego_1.0.1_linux_arm64.tar.gz
I've build my own image using Dockerfile from https://github.com/screego/server/blob/master/Dockerfile
Finally, my docker-compose.yaml
version: "3.7"
services:
screego:
container_name: screego
image: bielej/screengo
ports:
- 5050:5050
- 3478:3478
environment:
SCREEGO_EXTERNAL_IP: "0.0.0.0"
SCREEGO_TRUST_PROXY_HEADERS: "true"
SCREEGO_AUTH_MODE: "none"
SCREEGO_LOG_LEVEL: "debug"
That gives:
$ docker exec -it screego /screego --version
screego version 1.0.1; screego/server@fa388f6e59401059530fae9d6d15da809fe2abb7
$ docker ps | grep screego
28f5f4500155 bielej/screengo "/screego serve" 5 minutes ago Up 5 minutes 0.0.0.0:3478->3478/tcp, 0.0.0.0:5050->5050/tcp screego
That runs behind Nginx with proper HTTPS (using the config from https://screego.net/#/proxy?id=at-root-path).
I've tried both STUN and TURN - same result. Filling SCREEGO_EXTERNAL_IP
with a real, valid IP address does not help.
In that example I've tried sharing a sample window.
The screen/window does not get shared.
Logs:
screengo | 2020-10-06T16:03:55Z DBG Logger initialized
screengo | 2020-10-06T16:03:55Z INF SCREEGO_SECRET unset, user logins will be invalidated on restart
screengo | 2020-10-06T16:03:55Z INF Users file not specified
screengo | 2020-10-06T16:03:55Z INF Start TURN/STUN addr=0.0.0.0:3478
screengo | 2020-10-06T16:03:55Z INF Start HTTP addr=0.0.0.0:5050
screengo | 2020-10-06T16:04:36Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:04:44Z DBG WebSocket error="websocket: close 1006 (abnormal closure): unexpected EOF" type=read
screengo | 2020-10-06T16:07:04Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:07:29Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:07:43Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:07:59Z DBG WebSocket Close code=1000 reason="room with id test does already existn"
screengo | 2020-10-06T16:07:59Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63295: use of closed network connection" type=read
screengo | 2020-10-06T16:08:16Z DBG WebSocket Close code=1000 reason="room with id test does already existn"
screengo | 2020-10-06T16:08:16Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63298: use of closed network connection" type=read
screengo | 2020-10-06T16:08:21Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:08:23Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:08:24Z DBG WebSocket Close code=1000 reason="room with id test does not exist"
screengo | 2020-10-06T16:08:24Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63300: use of closed network connection" type=read
screengo | 2020-10-06T16:08:37Z DBG WebSocket Close code=1001 reason=
screengo | 2020-10-06T16:08:38Z DBG WebSocket Close code=1000 reason="room with id test does not exist"
screengo | 2020-10-06T16:08:38Z DBG WebSocket error="read tcp 172.23.0.2:5050->192.168.0.128:63309: use of closed network connection" type=read
Also, the demo/public instance suffers from the same issue.
i am currently trying to find a way to stream windows I have open on my Computer to my phone.
Now I could setup Screego on my external server, but it would be simpler if i could just install it on my Computer (which is a Linux PC so no problem there). my question is about all the config with external ip etc.. what do i put there if i only want to use it inside my own home network?
I've spent quite some time testing v1.1.1 in a Docker environment according to the "Port Range" section of the installation guide. I think with the current version it's (nearly?) impossible to get Screego to work outside of a local network with port mappings such as:
ports:
- 5050:5050
- 3478:3478
- 50000-50100:50000-50100/udp
Locally it works fine, but behind a NAT, both STUN as well as TURN fail and the stream remains black.
The only solution I found to get it working with Docker was to use the network_mode: host
syntax.
(Other potential solutions approaches might involve additional firewall rules or explicitly specifying every in ports:
with the - mode: host
syntax since docker-compose does not support ranges here, but I didn't check these.)
I'm not really sure why the issue was closed but at least for me it's not working.
Further, I've tested Screego with STUN in various scenarios, all except one worked well. However, the demo instance at app.screego.net didn't work at all as soon as at least one NAT was in-between the connection path. If the demo instance is hosted using via Docker this might be caused by the same issue.
Originally posted by @ThelloD in #27 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.