m1k1o / neko Goto Github PK
View Code? Open in Web Editor NEWA self hosted virtual browser that runs in docker and uses WebRTC.
Home Page: https://neko.m1k1o.net/
License: Apache License 2.0
A self hosted virtual browser that runs in docker and uses WebRTC.
Home Page: https://neko.m1k1o.net/
License: Apache License 2.0
Reconnects are annoying. It happens often with weak/instable connections. After reconnect it works again, however, when watching video you miss 3 - 6 seconds.
Reconnects should be better understood, why they happen and what could be done to prevent them. Since I watch video without any visible problems, and after reconnect that video works again, network must be good enough. Maybe some timers are there, that expire or kick user out in some weird edge case scenarios.
Temporary network problems should be handled gracefully. If possible (in Pion).
Hi there,
Sorry can't connect to neko.
Running neko from https://hub.docker.com/r/m1k1o/neko
Container output:
neko_1 | 2021-12-03 12:03:04,986 DEBG 'neko' stdout output:
neko_1 | 12:03PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
docker-compose.yaml
version: "3.4"
services:
neko:
image: "m1k1o/neko:latest"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "1080:8080"
- "62000-62100:52000-52100/udp"
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
NEKO_NAT1TO1: 192.168.0.13
Any idea?
As an admin of a n.eko m1k1o/neko:vlc
station/instance,
I want to be the only person with controls over content being distributed to vieweing parties, by using a "flag" or "mode" in the runtime configuration.
So that I can provide an exclusive experience, in order to disable user interaction within the UI and signal listeners in the API for requesting controls or modifications from regular members.
Variant example of use case instance β Admin Control: EVENT.ADMIN.CONTROL
Not to be disabled. This can force a user with ADMIN role to steal or take controls by force, however, it should also be possible for an admin to use the regular control event EVENT.CONTROL.LOCKED
as an ideal use case interaction, but NOT for regular members.
Global setting
Viper flag/mode called "NEKO_ADMIN_MODE
", when set to true, the introduced feature being requested will make sure several things happen. In the websocket, by using session.Admin()
and the flag, it can make sure to notify the user connection through the SessionConnected
method to disallow control features. Thus, making sure this.$accessor.remote
webrtc action requests as limited to be used only by admin roles.
Additional presentation factors
We make sure to disable the corresponding logic behind presentation. i.e: video component, controls component, remote store additional logic.
Backend securing
Then, we make sure controls are only enabled to admins in websocket control only if the flag feature is enabled. This can be done by a condition in the beginning of each method and then returning false. Or, alternatively, only enabling these events for admin roles.
Admins can now host a session where users are limited to watching, interacting with each other, controlling local settings such as volume and play/pause-ability, but not admin features, such as broadcasting or screen, as well as internal control features. This will allow admins to have the sole control of what is being seen on demand.
Let me know if I missed anything, I can get started on this PR and submit it some time soon if others approve of the need for this feature and would like to see it implemented.
good day everyone
how it is possible to login in google account on the google chrome browser?
best wishes from berlin
This shoud revert 29359ba and reintroduce functionality, that automatically unmutes even on any control attempt unless it is explicitly specified by user, that is should be muted.
Hi,
Scrolling with my mac + chrome is terrible it causes browser to scroll too fast.
After some debugging seems that we receive 36 wheel messegas for a single event.
Here's a quick test to make it smoother:
const _sd = $client.sendData
let stdtout = null
$client.sendData = (a, b) => {
if (a === 'wheel') {
if (!stdtout) {
stdtout = setTimeout(() => {
_sd.apply($client, [a, b])
console.log(a, b)
stdtout = null
}, 100)
}
} else {
_sd.apply($client, [a, b])
}
}
Should we consider adding "smooth scroll" setting? 0 - 1000
This fork is amazing!! I'm not sure if its the stereo audio or the bitrate is increased but music sounds amazing compared to the main neko project!
Please keep this up!!!!!!
I've just installed this container through Docker on a headless Debian VPS. Every time I start it up I get this error.
It doesn't seem at first glance to have anything to do with my network configuration, but if I'm incorrect to assume this, let me know and I'll provide more information.
Adding Sponsorblock into the Browser Containers
https://sponsor.ajay.app
Would make watching YouTube videos 1000x better.
That means, room can be used only if at least one admin joined. Why? Because of security. Users should not be allowed to control if no admin is present. Of course, this setting should be optional.
If admin leaves the room, it will be locked immediately.
If admin doesn't log in after 5 minutes:
If admin doesn't even come after 10 minutes, neko-rooms will shut down room m1k1o/neko-rooms#28.
Hi, I recently hosted Neko on my personal VPS using docker-compose and Nginx as a reverse proxy. But whenever I try to log in using my admin/user password I get an error saying Error: peer disconnected
.
I am using m1k1o/neko:latest
as my docker image
Upstream Neko has no issues connecting. I tried connecting directly to Neko using the VPS IP address and port but that didn't work either, which means that the problem isn't with my Nginx config (I am anyway still attaching my conf below)
I tried connecting from Google Chrome on macOS Big Sur. One of my friends tried connecting from Windows and faced the same problem.
Neko frontend console: log
docker-compose.yml
:
version: "3"
services:
neko:
image: m1k1o/neko:latest
ports:
- '8003:8080'
- '59000-60000:59000-60000'
shm_size: "4gb"
environment:
DISPLAY: :99.0
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: userPassword
NEKO_PASSWORD_ADMIN: adminPassword
NEKO_BIND: :8080
NEKO_EPR: 59000-60000
NEKO_VP9: 'true'
NEKO_MAX_FPS: 0
NEKO_AUDIO_BITRATE: 256
/etc/nginx/sites-available/reverse-proxy.conf
:
server {
listen 443 ssl http2;
server_name something.example.com www.something.example.com;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
proxy_request_buffering off;
proxy_pass http://127.0.0.1:8003;
}
client_max_body_size 0;
}
Neko logs (when trying to connect):
neko_1 | 2021-05-22 16:13:42,365 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=256000 ! appsink name=appsink" module=remote screen_resolution=1920x1080@30 video_codec=VP9 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! vp9enc target-bitrate=3072000 cpu-used=-5 threads=4 deadline=1 keyframe-max-dist=30 auto-alt-ref=true ! appsink name=appsink"
neko_1 |
neko_1 | 2021-05-22 16:13:42,368 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 | 2021-05-22 16:13:42,369 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] protocol-native.c: Protocol version: remote 32, local 32
neko_1 | D: [pulseaudio] protocol-native.c: SHM possible: yes
neko_1 | D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
neko_1 | D: [pulseaudio] protocol-native.c: Memfd possible: yes
neko_1 | D: [pulseaudio] protocol-native.c: Negotiated SHM type: shared memfd
neko_1 | D: [pulseaudio] memblock.c: Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
neko_1 | D: [pulseaudio] srbchannel.c: SHM block is 65472 bytes, ringbuffer capacity is 2 * 32712 bytes
neko_1 | D: [pulseaudio] protocol-native.c: Enabling srbchannel...
neko_1 |
neko_1 | 2021-05-22 16:13:42,369 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
neko_1 |
neko_1 | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] source-output.c: Negotiated format: pcm, format.sample_format = "\"s16le\"" format.rate = "48000" format.channels = "2" format.channel_map = "\"front-left,front-right\""
neko_1 | I: [pulseaudio] source-output.c: Trying to change sample rate
neko_1 | D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
neko_1 | D: [pulseaudio] resampler.c: Resampler:
neko_1 |
neko_1 | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] resampler.c: rate 44100 -> 48000 (method speex-float-1)
neko_1 | D: [pulseaudio] resampler.c: format s16le -> s16le (intermediate float32le)
neko_1 | D: [pulseaudio] resampler.c: channels 2 -> 2 (resampling 2)
neko_1 | I: [pulseaudio] speex.c: Choosing speex quality setting 1.
neko_1 | D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
neko_1 | D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
neko_1 | I: [pulseaudio] source-output.c: Created output 2 "Record Stream" on auto_null.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 = "32"
neko_1 | I: [pulseaudio] source-output.c: application.process.id = "15"
neko_1 | I: [pulseaudio] source-output.c: application.process.user = "neko"
neko_1 | I: [pulseaudio] source-output.c: application.process.host = "d571df658252"
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 = "16d0468f31e32cbbc5e3e0e1e1a942bf"
neko_1 |
neko_1 | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] memblockq.c: memblockq requested: maxlength=38400, tlength=0, base=4, prebuf=1, minreq=0 maxrewind=0
neko_1 | D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=38400, tlength=38400, base=4, prebuf=4, minreq=4 maxrewind=0
neko_1 |
neko_1 | 2021-05-22 16:13:42,372 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 | 2021-05-22 16:13:42,373 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
neko_1 | D: [pulseaudio] source.c: auto_null.monitor: state: IDLE -> RUNNING
neko_1 |
neko_1 | 2021-05-22 16:13:42,375 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
neko_1 |
neko_1 | 2021-05-22 16:13:42,377 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:59150->[2607:f8b0:400d:c0e::7f]:19302: sendto: cannot assign requested address
neko_1 | module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:42,391 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF sent all ICECandidates module=webrtc
neko_1 |
neko_1 | 2021-05-22 16:13:42,692 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF signaling state changed to stable module=webrtc subsystem=pc
neko_1 |
neko_1 | 2021-05-22 16:13:42,692 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF Setting new connection state: Checking module=webrtc subsystem=ice
neko_1 | 4:13PM INF ICE connection state changed: checking module=webrtc subsystem=pc
neko_1 | 4:13PM INF connection state has changed connection_state=checking module=webrtc
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:42,893 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:43,093 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:43,326 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:43,494 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:43,695 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:43,896 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:44,096 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:44,297 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:44,498 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:44,699 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:44,899 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:45,100 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:45,300 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:45,501 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:45,702 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:45,903 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:46,104 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:46,305 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:46,507 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:46,708 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:46,909 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:47,110 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:47,312 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:47,513 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:47,713 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:47,914 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:48,115 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:48,316 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:48,516 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:48,717 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:48,918 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:49,119 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:49,320 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:49,521 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:49,722 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:49,923 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:50,124 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:50,326 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:50,527 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:50,728 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:50,929 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:51,130 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:51,331 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:51,532 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:51,733 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:51,933 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:52,133 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:52,334 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:52,534 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:52,735 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:52,936 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:53,136 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:53,337 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:53,602 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:53,739 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:53,940 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:54,140 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:54,341 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:54,542 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1 |
neko_1 | 2021-05-22 16:13:54,744 DEBG 'neko' stdout output:
neko_1 | 4:13PM INF Setting new connection state: Failed module=webrtc subsystem=ice
neko_1 | 4:13PM INF ICE connection state changed: failed module=webrtc subsystem=pc
neko_1 | 4:13PM INF peer connection state changed: failed module=webrtc subsystem=pc
neko_1 |
neko_1 | 2021-05-22 16:13:54,744 DEBG 'neko' stdout output:
neko_1 | 4:13PM WRN peer failed id=3dtrdyPJ9dwvuDbtd_ApuP_NJr0FPVLF module=webrtc
neko_1 | 4:13PM INF connection state has changed connection_state=failed module=webrtc
neko_1 | 4:13PM INF Setting new connection state: Closed module=webrtc subsystem=ice
neko_1 | 4:13PM INF peer connection state changed: closed module=webrtc subsystem=pc
neko_1 | 4:13PM INF Pipelines shutting down... module=remote
neko_1 | 4:13PM WRN Failed to start manager: connecting canceled by caller module=webrtc subsystem=pc
neko_1 | 4:13PM INF peer closed id=3dtrdyPJ9dwvuDbtd_ApuP_NJr0FPVLF module=webrtc
neko_1 | 4:13PM INF ICE connection state changed: closed module=webrtc subsystem=pc
neko_1 | 4:13PM WRN Failed to start SCTP: DTLS not established module=webrtc subsystem=pc
neko_1 | 4:13PM INF connection state has changed connection_state=closed module=webrtc
neko_1 | 4:13PM WRN undeclaredMediaProcessor failed to open SrtcpSession: the DTLS transport has not started yet module=webrtc subsystem=pc
neko_1 | 4:13PM WRN undeclaredMediaProcessor failed to open SrtpSession: the DTLS transport has not started yet module=webrtc subsystem=pc
neko_1 |
neko_1 | 2021-05-22 16:13:54,767 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] source.c: auto_null.monitor: state: RUNNING -> IDLE
neko_1 |
neko_1 | 2021-05-22 16:13:54,768 DEBG 'pulseaudio' stdout output:
neko_1 | D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
neko_1 | I: [pulseaudio] source-output.c: Freeing output 2 "Record Stream"
neko_1 |
neko_1 | 2021-05-22 16:13:54,768 DEBG 'pulseaudio' stdout output:
neko_1 | I: [pulseaudio] client.c: Freed 2 "neko"
neko_1 | I: [pulseaudio] protocol-native.c: Connection died.
neko_1 |
I'd be willing to support developing the ability to allow admin and user to share control of the mouse without clicking the control switching button.
It could be as simple as click a button to enable share control (implicit control gain).
When the mouse is not being pressed, the other user can take control.
Since original repository got archived, there is no need in preserving original branch and files to be merged:
dev
to master
..docker
..m1k1o
folder to .docker
..devcontainer
, since it is not up-to-date anymore..examples
, since they are not up-to-date too.docs
and put them on some server
Hello,
I don't know if it's the right place to ask the question or if I should ask in the original repo.
I would like to install neko in my home lab and expose it on internet. The issue is that I have only a single public IP and multiple services are currently using ICE/stun/turn. I can't therefore forward those port to Neko.
I've however a coturn installed and it works well with my other apps. The question now is how to tell Neko to use that server and not the one built-in
I've configured the reverse proxy on my web server. - That part works well
I've tried on nurdism build to add in the docker-compose the following
- NEKO_ICELITE: 0
- NEKO_ICESERVER: 'stun:<my-stun.tld:port> turn:<my-turn.tld:port:secret>'
- NEKO_IP: <my public ip>
- NEKO_NAT1TO1: <private ip of neko>
but I have no clue how to specify the turn server, how should I put the secret, etc...
It works if I connect from another machine from inside, but doesn't works from outside.
I'm now running m1k1o/neko:latest but still don't know how to use an external turn.
Thanks for your help !
I managed to replicate this error by switching off the VPN in a System. I will look how to remove it this weekend. It should be a rare case anyway.
Can you add a way to translate it ? i'm french and i'd like to translate the repo
You can use Crowdin if you want
Hi,
I am want to use the Addons SoundFixer and SurfShark, is there any way to add these using variables, or do i need to Fork the Image?
I have Surfshark as my VPN provider, is there a way to have the Surfshark extension installed by default and remove the Nord VPN one?
If this is possible please let me know! :)
Hey Miroslav!
I run a newsletter about open source software and I like to put an interview with one of the developers in each email. Would you be interested in answering a few questions about software development and Neko?
If so, you can send me an email at console . substack @ gmail . com, or just respond to this thread π
Hey, i'm using HAProxy to redirect neko.domain to my neko server.
After a while, it reconnect me,
My server is accessible from anywhere, if you want to go deeper and test by yourself, ask me in Discord : RisedSky#4841
Logs:
6:31PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=connected module=webrtc
6:31PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:31PM INF peer connected id=UV0F6et3-SymJCCqoNPWNvd5inrjr0Kk module=webrtc
6:31PM WRN Failed to accept RTP stream is already closed module=webrtc subsystem=pc
6:31PM WRN Failed to accept RTCP stream is already closed module=webrtc subsystem=pc
6:31PM INF Setting new connection state: Closed module=webrtc subsystem=ice
6:31PM INF peer connection state changed: closed module=webrtc subsystem=pc
6:31PM INF Pipelines shutting down... module=remote
6:31PM INF ICE connection state changed: closed module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=closed module=webrtc
6:31PM INF peer closed id=UV0F6et3-SymJCCqoNPWNvd5inrjr0Kk module=webrtc
6:31PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=128000 ! appsink name=appsink" module=remote screen_resolution=1280x720@30 video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! vp8enc target-bitrate=3072000 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=18432 buffer-initial-size=12288 buffer-optimal-size=15360 keyframe-max-dist=180 min-quantizer=3 max-quantizer=40 ! appsink name=appsink"
6:31PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
6:31PM INF signaling state changed to stable module=webrtc subsystem=pc
6:31PM INF Setting new connection state: Checking module=webrtc subsystem=ice
6:31PM INF ICE connection state changed: checking module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=checking module=webrtc
6:31PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
6:31PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:52023->[2a00:1450:400c:c0a::7f]:19302: sendto: cannot assign requested address
module=webrtc subsystem=ice
6:31PM INF sent all ICECandidates module=webrtc
6:31PM INF Setting new connection state: Connected module=webrtc subsystem=ice
6:31PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=connected module=webrtc
6:31PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:31PM INF peer connected id=lGgiyDtqyEvMuOqh8JVUgvAbas9c4cPF module=webrtc
6:33PM WRN Failed to accept RTP stream is already closed module=webrtc subsystem=pc
6:33PM WRN Failed to accept RTCP stream is already closed module=webrtc subsystem=pc
6:33PM INF Setting new connection state: Closed module=webrtc subsystem=ice
6:33PM INF peer connection state changed: closed module=webrtc subsystem=pc
6:33PM INF Pipelines shutting down... module=remote
6:33PM INF ICE connection state changed: closed module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=closed module=webrtc
6:33PM INF peer closed id=lGgiyDtqyEvMuOqh8JVUgvAbas9c4cPF module=webrtc
6:33PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=128000 ! appsink name=appsink" module=remote screen_resolution=1280x720@30 video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! vp8enc target-bitrate=3072000 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=18432 buffer-initial-size=12288 buffer-optimal-size=15360 keyframe-max-dist=180 min-quantizer=3 max-quantizer=40 ! appsink name=appsink"
6:33PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
6:33PM INF signaling state changed to stable module=webrtc subsystem=pc
6:33PM INF Setting new connection state: Checking module=webrtc subsystem=ice
6:33PM INF ICE connection state changed: checking module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=checking module=webrtc
6:33PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
6:33PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:52074->[2a00:1450:400c:c0a::7f]:19302: sendto: cannot assign requested address
module=webrtc subsystem=ice
6:33PM INF sent all ICECandidates module=webrtc
6:33PM INF Setting new connection state: Connected module=webrtc subsystem=ice
6:33PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=connected module=webrtc
6:33PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:33PM INF peer connected id=CJcEYMeyTFMPsVyWTlH81GaRtGQI3lpa module=webrtc
My docker-compose file :
root@debian-ptero:~/neko# cat docker-compose.yaml
version: "3.4"
services:
neko:
# image: "m1k1o/neko:google-chrome"
#marche
# image: "m1k1o/neko:chromium"
#marche
image: "m1k1o/neko:ungoogled-chromium"
#marche
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "9090:8080"
- "52000-52100:52000-52100/udp"
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: '1280x720@30'
NEKO_PASSWORD: XYZ
NEKO_PASSWORD_ADMIN: XYZ
NEKO_EPR: 52000-52100
NEKO_NAT1TO1: CLASS C ADRESS
Since parent repository has been archived, this issue tracks all issues that were left open there.
When writing <
on US keyboard (shift
+ ,
) it writes >
instead. In Guacamole (their keyboard is being used) it works without issues.
Considering, if it would be interensting, to have some kind of hibernate feature. It has already been discussed, that browser does not need to be running always, when neko is idle. It could "sleep" or just be hibernating. Meaning, Go serwer would run but all the pipelines (maybe xorg & pulseaudio) and browser would be shut down.
There would be a button (only for admins) that can "wake it up". Others could connect to neko, but they would be notified about it is "sleeping".
This would introduce much refactoring on the connectionl logic on client / server. Considering, if it is worth it.
As one of the users of Docker Hubβs Autobuild service, we wanted to reach out and let you know that from June 18th, 2021 users on the free plan will no longer have access to the Autobuild feature. This means that any of your currently configured Autobuild will fail to run and you will need to upgrade to a Pro or Team account to restore functionality.
Need to find a way how to keep autobuilds work.
Sometimes you just want to kindy disconnect user. If he sees "you have been kicked" message, that is not really friendly.
Language could be automatically detected from user's browser. And if he changes it, this change should be remembered (stored in local storage).
Hey, thanks for the container. Running into some issues though. I get a pretty annoying stutter with videos, both with VLC and firefox, and can't seem to figure out settings to get completely smooth playback. I figured I'd try x264 encoding to see if that would make it better.
Getting this error:
2021-07-06 22:22:18,848 DEBG 'neko' stdout output:
οΏ½[90m2:22AMοΏ½[0m οΏ½[1mοΏ½[31mERRοΏ½[0mοΏ½[0m message handler has failed οΏ½[31merror=οΏ½[0mοΏ½[31m"signal/answer failed: unable to start track, codec is not supported by remote"οΏ½[0m οΏ½[36mmodule=οΏ½[0mwebsocket2021-07-06 22:22:34,161 DEBG 'neko' stdout output:
οΏ½[90m2:22AMοΏ½[0m οΏ½[31mWRNοΏ½[0m read message error οΏ½[31merror=οΏ½[0mοΏ½[31m"websocket: close 1005 (no status)"οΏ½[0m οΏ½[36mmodule=οΏ½[0mwebsocket2021-07-06 22:22:34,161 DEBG 'neko' stdout output:
οΏ½[90m2:22AMοΏ½[0m οΏ½[32mINFοΏ½[0m Setting new connection state: Closed οΏ½[36mmodule=οΏ½[0mwebrtc οΏ½[36msubsystem=οΏ½[0mice
οΏ½[90m2:22AMοΏ½[0m οΏ½[32mINFοΏ½[0m peer connection state changed: closed οΏ½[36mmodule=οΏ½[0mwebrtc οΏ½[36msubsystem=οΏ½[0mpc
οΏ½[90m2:22AMοΏ½[0m οΏ½[32mINFοΏ½[0m Pipelines shutting down... οΏ½[36mmodule=οΏ½[0mremote
οΏ½[90m2:22AMοΏ½[0m οΏ½[32mINFοΏ½[0m peer closed οΏ½[36mid=οΏ½[0mKK1GCXVq2aktaM-AjmlktKhz5gyAzAvB οΏ½[36mmodule=οΏ½[0mwebrtc2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
D: [pulseaudio] source.c: auto_null.monitor: state: RUNNING -> IDLE2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
I: [pulseaudio] source-output.c: Freeing output 0 "Record Stream"2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
I: [pulseaudio] client.c: Freed 1 "neko"
I: [pulseaudio] protocol-native.c: Connection died.
this is my docker compose:
docker run -d --name='stream' --net='proxynet' -e TZ="America/New_York" -e HOST_OS="Unraid" -e 'NEKO_PASSWORD'='stream' -e 'NEKO_PASSWORD_ADMIN'='&puMS29yJ#uv%d' -e 'NEKO_ICELITE'='true' -e 'NEKO_H264'='true' -e 'NEKO_VP8'='false' -e 'NEKO_VP9'='false' -e 'NEKO_MAX_FPS'='25' -e 'NEKO_EPR'='52000-52100' -e 'NEKO_SCREEN'='1920x1080@30' -p '8080:8080/tcp' -p '52000-52100:52000-52100/udp' -v '/mnt/user/downloads/hardlinks':'/home/neko/archive/':'rw' -v '/mnt/user/temp/hardlinks/':'/home/neko/temp':'rw' --shm-size="2gb" 'm1k1o/neko:vlc'
Any ideas?
Because why not...
After introducing ICE Trickle in a362df4 was introdiced new data race. If server sends candidates before it provides session, it cannot be set properly. It should be stored in array and added to peer connection lter, when it will be created.
Problem is here:
a362df4#diff-01af1cb98fad8c26c221267bd152503959ece9ffdcf52cb92dc06f7e72d0b4c3R252
FYI: @mbattista
I just noticed that there's no tag for the Ungoogled Chromium variant of Neko on Docker Hub: https://hub.docker.com/r/m1k1o/neko/tags
On iPhone devices, you cannot play or enable audio
Would be good if we have a fullscreen mode to unmute and play using iOS default controls
If reconnect happens while you are controlling, you loose control. Although, there should be some grace period when user disconnects and his control is taken back.
But since our user diappears on server completly on reconnect, and will be created when he joins again, it would be lot of refactoring (after #48 is finished).
It could be done purely on client, simply storing that information and requesting control again. It could happen, that someone "steals" control while another user is experiencing disconnects. But admin can take his control anyway, so it should not be an issue.
I've been trying to look for documentation on it but was unable to figure it out. How do you use the RTMP broadcast feature for Neko?
This would be fantastic because if a user is joining, I'd like to have the option of having the music/show or whatever not being muted by default.
This would also help because sometimes my internet glitches and Neko reloads, which resets it back to muted, requiring me to go to the window and unmute the music again. :/
Hi,
Having issues with key combinations using mac, specially annoying the copy&paste
Opening the ticket for discussion.
https://github.com/novnc/noVNC/blob/master/core/input/keyboard.js#L129-L148 (from previous conversation on Discord)
And a dirty hack:
const isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)
function macKeyMap (a, b) {
// Alt behaves more like AltGraph on macOS, so shuffle the
// keys around a bit to make things more sane for the remote
// server. This method is used by RealVNC and TigerVNC (and
// possibly others).
let { key: keysym } = b
if (isMacLike) {
switch (keysym) {
case KeyTable.XK_Meta_L:
keysym = KeyTable.XK_Control_L
break
case KeyTable.XK_Super_L:
keysym = KeyTable.XK_Alt_L
break
case KeyTable.XK_Super_R:
keysym = KeyTable.XK_Super_L
break
case KeyTable.XK_Alt_L:
keysym = KeyTable.XK_Mode_switch
break
case KeyTable.XK_Alt_R:
keysym = KeyTable.XK_ISO_Level3_Shift
break
}
}
const c = { key: keysym }
console.log(a, b, c)
_sd.apply(window.$client, [a, c])
}
Problem: The part where browser should appear is completely blank on arm-chromium
and arm-firefox
Operating System: Linux 5.11.0-1019-oracle #20~20.04.1-Ubuntu SMP aarch64
GPU: No
Tested browsers: Google Chrome, Microsoft Edge, Firefox
I also tried different codecs (VP8, VP9, H264) and tried to change STUN server but that didn't help
Tried with and without nginx - still no luck
mbattista's neko behaves the same way
docker-compose.yaml
version: "3.4"
services:
neko:
image: "m1k1o/neko:arm-firefox"
restart: "unless-stopped"
# increase on rpi's with more then 1gb ram.
shm_size: "2gb"
ports:
- "15824:15824"
- "59000-59100:59000-59100/udp"
# this is important since we need a GPU for hardware acceleration alternatively mount the devices into the docker.
privileged: true
environment:
NEKO_SCREEN: '1280x720@30'
NEKO_PASSWORD: 'neko'
NEKO_PASSWORD_ADMIN: 'admin'
NEKO_BIND: :15824
NEKO_EPR: 59000-59100
NEKO_ICELITE: 'true' # changing this didnt help
some logs from neko:
https://gist.github.com/Mayzol/f646e37bf7a837795faa3086ed5c4749
Not really an issue but is there a way to disable/lock the chat?
I can't seem to find any doco on any fork to do this.
Thanks
So I have the container succesfully reverse proxy using "Swag/Cloudflare" and I am able to access it at its subdomain "neko.my.domain" and everything works except the clipboard. At first login it does ask for clipboard permission and I allow but it still does not show up only if I access it with internal ip and port.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name neko.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
# enable for ldap auth, fill in ldap details in ldap.conf
#include /config/nginx/ldap.conf;
# enable for Authelia
#include /config/nginx/authelia-server.conf;
location / {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable the next two lines for ldap auth
#auth_request /auth;
#error_page 401 =200 /ldaplogin;
# enable for Authelia
#include /config/nginx/authelia-location.conf;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app 10.1.3.10;
set $upstream_port 6530;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Right now, we use AWS. If I want to use proxy for the whole container, even that request is proxied and as my WebRTC IP is my proxy's IP. There should be ability to set own URL, that can provide current IP.
Hello
I'm using docker-compose to deploy it
I can see the cursor
but seems like Browser is unable to Start
Environment : OracleLinux 8 on ARM64@OracleCloud
neko-neko-1 | 2021-12-04 20:25:46,153 DEBG 'neko' stdout output:
neko-neko-1 | 8:25PM INF webrtc starting ephemeral_port_range=52000-52100 ice_lite=true ice_servers="[{URLs:[stun:stun.l.google.com:19302] Username: Credential:<nil> CredentialType:password}]" module=webrtc nat_ips=*.*.*.*
neko-neko-1 |
neko-neko-1 | 2021-12-04 20:25:46,153 DEBG 'neko' stdout output:
neko-neko-1 | 8:25PM WRN http listening on :8080 module=http
neko-neko-1 | 8:25PM INF neko ready service=neko
neko-neko-1 |
neko-neko-1 | 2021-12-04 20:25:47,155 INFO success: dbus entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1 | 2021-12-04 20:25:47,155 INFO success: openbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1 | 2021-12-04 20:25:47,155 INFO success: pulseaudio entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1 | 2021-12-04 20:25:47,155 INFO success: x-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1 | 2021-12-04 20:25:47,156 INFO spawned: 'firefox' with pid 40
neko-neko-1 | 2021-12-04 20:25:47,156 INFO success: neko entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1 | 2021-12-04 20:25:47,160 DEBG 'firefox' stdout output:
neko-neko-1 | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1 |
neko-neko-1 | 2021-12-04 20:25:47,215 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1 | 2021-12-04 20:25:47,215 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)
neko-neko-1 | 2021-12-04 20:25:47,215 DEBG received SIGCLD indicating a child quit
neko-neko-1 | 2021-12-04 20:25:49,219 INFO spawned: 'firefox' with pid 42
neko-neko-1 | 2021-12-04 20:25:49,224 DEBG 'firefox' stdout output:
neko-neko-1 | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1 |
neko-neko-1 | 2021-12-04 20:25:49,280 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1 | 2021-12-04 20:25:49,280 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)
neko-neko-1 | 2021-12-04 20:25:49,281 DEBG received SIGCLD indicating a child quit
neko-neko-1 | 2021-12-04 20:25:52,285 INFO spawned: 'firefox' with pid 44
neko-neko-1 | 2021-12-04 20:25:52,289 DEBG 'firefox' stdout output:
neko-neko-1 | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1 |
neko-neko-1 | 2021-12-04 20:25:52,349 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1 | 2021-12-04 20:25:52,349 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)
neko-neko-1 | 2021-12-04 20:25:52,349 DEBG received SIGCLD indicating a child quit
neko-neko-1 | 2021-12-04 20:25:53,350 INFO gave up: firefox entered FATAL state, too many start retries too quickly
I have built the client and server successfully.
ββββββββββββββββββββββββββββββββββββββββββ
β β
β Serving! β
β β
β Local: http://localhost:5000 β
β β
β Copied local address to clipboard! β
β β
ββββββββββββββββββββββββββββββββββββββββββ
/ | / /__ / /______ \ /\
/ |/ / _ \/ //_/ __ \ ) ( ')
/ /| / __/ ,< / /_/ / ( / )
/_/ |_/\___/_/|_|\____/ \(__)|
nurdism/m1k1o server v2.3.0 4410956
10:13PM WRN preflight complete without config file config= debug=false logging=false
10:13PM INF starting neko server service=neko
10:13PM WRN invalid screen option 1280x720@30 module=remote
10:13PM INF webrtc starting ephemeral_port_range=59000-59100 ice_lite=false ice_servers="[{URLs:[stun:stun.l.google.com:19302] Username: Credential:<nil> CredentialType:password}]" module=webrtc nat_ips=2.49.230.55
10:13PM WRN http listening on 127.0.0.1:8080 module=http
10:13PM INF neko ready service=neko
I am unable to login as I am unaware if there is any default screenname and password.
When attempting to install extensions the following occurs:
Looks like this is probably a result of the following lines. There may be a good reason for disabling it but the commit message doesn't have any hints.
I may remove those lines and test it out to see what happens. I expect plugins will be wiped on container restart which is fine for my purposes, but there might be another feature request for storing the firefox user profile in a volume to make them persist.
I'd like to access the neko instance on my local computer while also having my friend access it over the internet. From what I can tell, the NEKO_NAT1TO1 variable only can accept one ip address at a time. Is there a solution to this I'm missing?
Heyo! First, let me say thank you for all the hard work you've put into this. I have a ton of appreciation for someone willing to fork a project, improve it, update it, and keep it active. I was able to get neko up and running yesterday with only a couple missteps or dead ends, and it's exactly as advertised. So again, thank you.
I am wondering if there's any way to set up neko so that you could switch between it showing a browser and VLC. I've got a group where it would be advantageous to be able to share both local content and online content, and right now - unless I've missed something - I'd need to have two instances of neko to support that. It'd be great to be able to do it without having to jump instances.
I understand that this is probably a fairly hefty feature request, but it would really go a long way toward making neko a true kosmi/kast/rabb.it replacement.
Right now, only amd64 images are being built. It would be great, to have multiarch builds.
Taken from #93.
With chrome 90 I did some tests with the AV1 real time encoder and it should be fine on most systems. (Screenshare 1600x900 with ~30 fps on an 4500U was possible)
Would you be fine with an PR where aomenc is used?
The main problem would be that even a change to an "unstable" apt to install gtreamer 1.18 instead of 1.16 would not be enough, since the deadline / realtime flags are not available (yet).
This would propably add a lot of extra code and changes, since I think about using https://aomedia.googlesource.com/aom/+/webm_nextgenv2/aomenc.c directly. Hence why I ask beforehand if you think this is something you would approve.
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.