m1k1o / neko

A self hosted virtual browser that runs in docker and uses WebRTC.
https://neko.m1k1o.net/
Apache License 2.0
7.51k stars 549 forks source link

How it is supposed to work? #447

Closed OnkelTem closed 49 minutes ago

OnkelTem commented 6 hours ago

Hi.

I started it with docker compose up -d and opened it locally:

image

I entered neko:neko and it changed to this and it's playing the infinite circle animation:

image

What's next? How it's assumed to be used?

This is what it's happening in the logs after I log in:

neko-1  | 2024-11-15 14:04:00,229 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF creating pipeline codec=opus module=capture src="pulsesrc device=audio_output.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc inband-fec=true bitrate=128000 ! appsink name=appsinkaudio" submodule=stream-sink video_id=audio
neko-1  | 
neko-1  | 2024-11-15 14:04:00,230 DEBG 'pulseaudio' stdout output:
neko-1  | I: [pulseaudio] client.c: Created 2 "Native client (UNIX socket client)"
neko-1  | I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
neko-1  | 
neko-1  | 2024-11-15 14:04:00,231 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF first listener, starting module=capture submodule=stream-sink video_id=audio
neko-1  | 
neko-1  | 2024-11-15 14:04:00,231 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF creating pipeline codec=vp8 module=capture src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue !  vp8enc target-bitrate=1996800 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=12288 buffer-initial-size=6144 buffer-optimal-size=9216 keyframe-max-dist=25 min-quantizer=4 max-quantizer=20  ! appsink name=appsinkvideo" submodule=stream-sink video_id=video
neko-1  | 
neko-1  | 2024-11-15 14:04:00,232 DEBG 'pulseaudio' stdout output:
neko-1  | I: [pulseaudio] source-output.c: Created output 2 "Record Stream" on audio_output.monitor with sample spec s16le 2ch 48000Hz and channel map front-left,front-right
neko-1  | I: [pulseaudio] source-output.c:     media.name = "Record Stream"
neko-1  | I: [pulseaudio] source-output.c:     application.name = "neko"
neko-1  | I: [pulseaudio] source-output.c:     native-protocol.peer = "UNIX socket client"
neko-1  | I: [pulseaudio] source-output.c:     native-protocol.version = "34"
neko-1  | I: [pulseaudio] source-output.c:     application.process.id = "14"
neko-1  | I: [pulseaudio] source-output.c:     application.process.user = "neko"
neko-1  | I: [pulseaudio] source-output.c:     application.process.host = "522e11ecf162"
neko-1  | I: [pulseaudio] source-output.c:     application.process.binary = "neko"
neko-1  | I: [pulseaudio] source-output.c:     application.language = "C"
neko-1  | I: [pulseaudio] source-output.c:     window.x11.display = ":99.0"
neko-1  | I: [pulseaudio] source-output.c:     application.process.machine_id = "05634ccd7b689a9a18cc5d94673172b0"
neko-1  | 
neko-1  | 2024-11-15 14:04:00,232 DEBG 'pulseaudio' stdout output:
neko-1  | I: [pulseaudio] protocol-native.c: Final latency 20.00 ms = 10.00 ms + 10.00 ms
neko-1  | 
neko-1  | 2024-11-15 14:04:00,233 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF first listener, starting module=capture submodule=stream-sink video_id=video
neko-1  | 
neko-1  | 2024-11-15 14:04:00,234 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF signaling state changed to have-local-offer module=webrtc submodule=pion subsystem=pc
neko-1  | 
neko-1  | 2024-11-15 14:04:00,234 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF signal update - LocalCandidate id=-BiF1HALbcP0W0R9HgqWZ3CDPsdlk7eh module=session
neko-1  | 
neko-1  | 2024-11-15 14:04:00,234 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF sent all ICECandidates module=webrtc
neko-1  | 
neko-1  | 2024-11-15 14:04:00,238 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF signal update - RemoteAnswer id=-BiF1HALbcP0W0R9HgqWZ3CDPsdlk7eh module=session
neko-1  | 
neko-1  | 2024-11-15 14:04:00,239 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF signaling state changed to stable module=webrtc submodule=pion subsystem=pc
neko-1  | 
neko-1  | 2024-11-15 14:04:00,239 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF Setting new connection state: Checking module=webrtc submodule=pion subsystem=ice
neko-1  | 
neko-1  | 2024-11-15 14:04:00,239 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF ICE connection state changed: checking module=webrtc submodule=pion subsystem=pc
neko-1  | 2:04PM INF connection state has changed connection_state=checking module=webrtc
neko-1  | 
neko-1  | 2024-11-15 14:04:00,241 DEBG 'neko' stdout output:
neko-1  | 2:04PM INF signal update - RemoteCandidate id=-BiF1HALbcP0W0R9HgqWZ3CDPsdlk7eh module=session
neko-1  | 

I also see these warnings other times:

neko-1  | 
neko-1  | 2024-11-15 14:14:57,762 DEBG 'neko' stdout output:
neko-1  | 2:14PM INF Setting new connection state: Closed module=webrtc submodule=pion subsystem=ice
neko-1  | 2:14PM INF peer connection state changed: closed module=webrtc submodule=pion subsystem=pc
neko-1  | 2:14PM INF ICE connection state changed: closed module=webrtc submodule=pion subsystem=pc
neko-1  | 
neko-1  | 2024-11-15 14:14:57,762 DEBG 'neko' stdout output:
neko-1  | 2:14PM INF connection state has changed connection_state=closed module=webrtc
neko-1  | 2:14PM WRN Failed to start manager: connecting canceled by caller module=webrtc submodule=pion subsystem=pc
neko-1  | 2:14PM WRN Failed to start SCTP: DTLS not established module=webrtc submodule=pion subsystem=pc
neko-1  | 2:14PM INF peer closed id=repba1KTcFw1qe-cY78Ut7pdZx8RfyOF module=webrtc
neko-1  | 2:14PM WRN undeclaredMediaProcessor failed to open SrtcpSession: the DTLS transport has not started yet module=webrtc submodule=pion subsystem=pc
neko-1  | 2:14PM WRN undeclaredMediaProcessor failed to open SrtpSession: the DTLS transport has not started yet module=webrtc submodule=pion subsystem=pc
neko-1  | 

And here is what the chrome://webrtc-internals tab is showing:

image

OS: Linux Kubuntu 22.04

m1k1o commented 5 hours ago

Do you want it to be reachable from outside? In that case you need to do proper port forwarding.

If you want to have it only accessible from you LAN you need to specify NAT1TO1 address.

More info in docs: https://neko.m1k1o.net/#/getting-started/?id=networking

OnkelTem commented 2 hours ago

@m1k1o Thank you for quick reply, Miroslav.

I was going to test it locally. I didn't expect I have to set any address if everything is local. That's why I skipped parts about LAN/external usage - I postponed it for later.

OnkelTem commented 2 hours ago

I entered 127.0.0.1 and it proceeded to the next step! Thank you.

I believe the default compose file might have this by default:

    environment:
      NEKO_NAT1TO1: 127.0.0.1