A self hosted virtual browser (rabb.it clone) that runs in docker.

Overview

release license pulls issues Chat on discord build





n.eko

This app uses Web RTC to stream a desktop inside of a docker container, I made this because rabb.it went under and my internet can't handle streaming and discord keeps crashing when my friend attempts to. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the internet and found a few kinda clones, but none of them had the virtual browser, then I found Turtus and I was able to figure out the rest. This is by no means a fully featured clone of rabbit, it hs only one room. It's stateless, so no saved user names or passwords.

Features

  • Text Chat (With basic markdown support, discord flavor)
  • Admin users (Kick, Ban & Force Give/Release Controls)
  • Clipboard synchronization (on supported browsers)
  • Emote overlay
  • Ignore user (chat and emotes)
  • Persistent settings

Why n.eko?

I like cats 🐱 (Neko is the Japanese word for cat), I'm a weeb/nerd

But why the cat butt? Because cats are assholes, but you love them anyways.

Documentation

Issues
  • [BUG] Not able to login after creation

    [BUG] Not able to login after creation

    Describe the bug I deployed the docker-compose container as described. After login It gets me this log:

    Desktop (please complete the following information): Container is running on a ubuntu server vm. Docker is installed via snap. Accessing the site trough a windows device on the same network.

    Server Log:

    neko_1  | 2021-01-19 16:30:40,979 CRIT Supervisor running as root (no user in config file)
    neko_1  | 2021-01-19 16:30:40,979 WARN For [program:firefox-esr], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignored
    neko_1  | 2021-01-19 16:30:40,979 WARN For [program:neko], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignored
    neko_1  | 2021-01-19 16:30:40,979 INFO Included extra file "/etc/neko/supervisord/firefox.conf" during parsing
    neko_1  | 2021-01-19 16:30:40,979 INFO Included extra file "/etc/neko/supervisord/neko.conf" during parsing
    neko_1  | 2021-01-19 16:30:40,982 INFO supervisord started with pid 1
    neko_1  | 2021-01-19 16:30:41,985 INFO spawned: 'dbus' with pid 8
    neko_1  | 2021-01-19 16:30:41,987 INFO spawned: 'openbox' with pid 9
    neko_1  | 2021-01-19 16:30:41,990 INFO spawned: 'pulseaudio' with pid 10
    neko_1  | 2021-01-19 16:30:41,992 INFO spawned: 'x-server' with pid 11
    neko_1  | 2021-01-19 16:30:41,994 INFO spawned: 'firefox-esr' with pid 14
    neko_1  | 2021-01-19 16:30:41,997 INFO spawned: 'neko' with pid 15
    neko_1  | 2021-01-19 16:30:42,002 DEBG 'dbus' stdout output:
    neko_1  | 13
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,008 DEBG 'x-server' stdout output:
    neko_1  | _XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,009 DEBG 'x-server' stdout output:
    neko_1  |
    neko_1  | X.Org X Server 1.19.2
    neko_1  | Release Date: 2017-03-02
    neko_1  | X Protocol Version 11, Revision 0
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,009 DEBG 'x-server' stdout output:
    neko_1  | Build Operating System: Linux 4.9.0-8-amd64 x86_64 Debian
    neko_1  | Current Operating System: Linux c88826e4dd1b 5.4.0-62-generic #70-Ubuntu SMP Tue Jan 12 12:45:47 UTC 2021 x86_64
    neko_1  | Kernel command line: BOOT_IMAGE=/vmlinuz-5.4.0-62-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro maybe-ubiquity
    neko_1  | Build Date: 03 November 2018  03:09:11AM
    neko_1  | xorg-server 2:1.19.2-1+deb9u5 (https://www.debian.org/support)
    neko_1  | Current version of pixman: 0.34.0
    neko_1  |       Before reporting problems, check http://wiki.x.org
    neko_1  |       to make sure that you have the latest version.
    neko_1  | Markers: (--) probed, (**) from config file, (==) default setting,
    neko_1  |       (++) from command line, (!!) notice, (II) informational,
    neko_1  |       (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,009 DEBG 'x-server' stdout output:
    neko_1  | (==) Log file: "/home/neko/.local/share/xorg/Xorg.99.0.log", Time: Tue Jan 19 16:30:42 2021
    neko_1  | (++) Using config file: "/etc/neko/xorg.conf"
    neko_1  | (==) Using system config directory "/usr/share/X11/xorg.conf.d"
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,020 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
    neko_1  | I: [pulseaudio] main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
    neko_1  | D: [pulseaudio] core-rtclock.c: Timer slack is set to 50 us.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,032 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] core-util.c: Failed to acquire high-priority scheduling: No such file or directory
    neko_1  | I: [pulseaudio] main.c: This is PulseAudio 10.0
    neko_1  | D: [pulseaudio] main.c: Compilation host: x86_64-pc-linux-gnu
    neko_1  | D: [pulseaudio] main.c: Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/pulseaudio-ZMrhzG/pulseaudio-10.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto
    neko_1  | D: [pulseaudio] main.c: Running on host: Linux x86_64 5.4.0-62-generic #70-Ubuntu SMP Tue Jan 12 12:45:47 UTC 2021
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,032 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] main.c: Found 10 CPUs.
    neko_1  | I: [pulseaudio] main.c: Page size is 4096 bytes
    neko_1  | D: [pulseaudio] main.c: Compiled with Valgrind support: no
    neko_1  | D: [pulseaudio] main.c: Running in valgrind mode: no
    neko_1  | D: [pulseaudio] main.c: Running in VM: yes
    neko_1  | D: [pulseaudio] main.c: Optimized build: yes
    neko_1  | D: [pulseaudio] main.c: FASTPATH defined, only fast path asserts disabled.
    neko_1  | I: [pulseaudio] main.c: Machine ID is a5a85d161208265bec1c6fb020b29456.
    neko_1  | I: [pulseaudio] main.c: Using runtime directory /home/neko/.config/pulse/a5a85d161208265bec1c6fb020b29456-runtime.
    neko_1  | I: [pulseaudio] main.c: Using state directory /home/neko/.config/pulse.
    neko_1  | I: [pulseaudio] main.c: Using modules directory /usr/lib/pulse-10.0/modules.
    neko_1  | I: [pulseaudio] main.c: Running in system mode: no
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,033 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] main.c: System supports high resolution timers
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,033 DEBG 'pulseaudio' stdout output:
    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  |
    neko_1  | 2021-01-19 16:30:42,033 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2
    neko_1  | I: [pulseaudio] svolume_mmx.c: Initialising MMX optimized volume functions.
    neko_1  | I: [pulseaudio] remap_mmx.c: Initialising MMX optimized remappers.
    neko_1  | I: [pulseaudio] svolume_sse.c: Initialising SSE2 optimized volume functions.
    neko_1  | I: [pulseaudio] remap_sse.c: Initialising SSE2 optimized remappers.
    neko_1  | I: [pulseaudio] sconv_sse.c: Initialising SSE2 optimized conversions.
    neko_1  | I: [pulseaudio] svolume_orc.c: Initialising ORC optimized volume functions.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,036 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] module.c: Loaded "module-native-protocol-unix" (index: #0; argument: "socket=/tmp/pulseaudio.socket auth-anonymous=1").
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,036 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] module-always-sink.c: Autoloading null-sink as no other sinks detected.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,037 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] sink.c: Created sink 0 "auto_null" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
    neko_1  | I: [pulseaudio] sink.c:     device.description = "Dummy Output"
    neko_1  | I: [pulseaudio] sink.c:     device.class = "abstract"
    neko_1  | I: [pulseaudio] sink.c:     device.icon_name = "audio-card"
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,037 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] source.c: Created source 0 "auto_null.monitor" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
    neko_1  | I: [pulseaudio] source.c:     device.description = "Monitor of Dummy Output"
    neko_1  | I: [pulseaudio] source.c:     device.class = "monitor"
    neko_1  | I: [pulseaudio] source.c:     device.icon_name = "audio-input-microphone"
    neko_1  | D: [null-sink] module-null-sink.c: Thread starting up
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,038 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] module.c: Loaded "module-null-sink" (index: #2; argument: "sink_name=auto_null sink_properties='device.description="Dummy Output"'").
    neko_1  | I: [pulseaudio] module.c: Loaded "module-always-sink" (index: #1; argument: "").
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,126 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] dbus-util.c: Successfully connected to D-Bus session bus 94cf3fc2e2c49028deda625c60070932 as :1.0
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,127 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] main.c: Got org.PulseAudio1!
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,127 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] main.c: Got org.pulseaudio.Server!
    neko_1  | I: [pulseaudio] main.c: Daemon startup complete.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,128 DEBG 'neko' stdout output:
    neko_1  |
    neko_1  |     _   __     __
    neko_1  |    / | / /__  / /______   \    /\
    neko_1  |   /  |/ / _ \/ //_/ __ \   )  ( ')
    neko_1  |  / /|  /  __/ ,< / /_/ /  (  /  )
    neko_1  | /_/ |_/\___/_/|_|\____/    \(__)|
    neko_1  |    nurdism/neko server v2.0.0 853dd14
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,129 DEBG 'neko' stdout output:
    neko_1  | 4:30PM WRN preflight complete without config file config= debug=true logging=false
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,367 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF starting neko server service=neko
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,401 DEBG 'pulseaudio' stdout output:
    neko_1  | I: [pulseaudio] client.c: Created 0 "Native client (UNIX socket client)"
    neko_1  | I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,401 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  |
    neko_1  | 2021-01-19 16:30:42,402 DEBG 'pulseaudio' stdout output:
    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-01-19 16:30:42,402 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,404 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF webrtc streaming audio_codec=opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audioconvert ! opusenc ! appsink name=appsink" ephemeral_port_range=59000-59100 module=webrtc nat_ips=91.67.162.153 video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc xid=:99.0 show-pointer=true use-damage=false ! video/x-raw ! videoconvert ! queue ! vp8enc cpu-used=8 threads=2 deadline=1 error-resilient=partitions keyframe-max-dist=10 auto-alt-ref=true ! appsink name=appsink"
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,404 DEBG 'neko' stdout output:
    neko_1  | 4:30PM WRN http listening on :8080 module=webrtc
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,405 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF neko ready service=neko
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,407 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] source-output.c: Negotiated format: pcm, format.sample_format = "\"s16le\""  format.rate = "48000"  format.channels = "1"  format.channel_map = "\"mono\""
    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  |
    neko_1  | 2021-01-19 16:30:42,407 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] resampler.c: Resampler:
    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 -> 1 (resampling 1)
    neko_1  | D: [pulseaudio] resampler.c: Channel matrix:
    neko_1  | D: [pulseaudio] resampler.c:        I00   I01
    neko_1  | D: [pulseaudio] resampler.c:     +------------
    neko_1  | D: [pulseaudio] resampler.c: O00 | 0.500 0.500
    neko_1  | I: [pulseaudio] remap.c: Using stereo to mono remapping
    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 0 "Record Stream" on auto_null.monitor with sample spec s16le 1ch 48000Hz and channel map mono
    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 = "c88826e4dd1b"
    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 = "a5a85d161208265bec1c6fb020b29456"
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,408 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] memblockq.c: memblockq requested: maxlength=19200, tlength=0, base=2, prebuf=1, minreq=0 maxrewind=0
    neko_1  | D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=19200, tlength=19200, base=2, prebuf=2, minreq=2 maxrewind=0
    neko_1  | I: [pulseaudio] protocol-native.c: Final latency 20.00 ms = 10.00 ms + 10.00 ms
    neko_1  |
    neko_1  | 2021-01-19 16:30:42,409 DEBG 'pulseaudio' stdout output:
    neko_1  | D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
    neko_1  |
    neko_1  | 2021-01-19 16:30:43,410 INFO success: dbus entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:43,410 INFO success: openbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:43,410 INFO success: pulseaudio entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:43,410 INFO success: x-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:43,411 INFO success: firefox-esr entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:43,411 INFO success: neko entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    neko_1  | 2021-01-19 16:30:48,310 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG request complete (304) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.24:61245","scheme":"http","uri":"http://192.168.1.28:96/"} res={"bytes":0,"elapsed":0.428095,"status":304,"time":"Tue, 19 Jan 2021 16:30:48 UTC"}
    neko_1  |
    neko_1  | 2021-01-19 16:30:48,503 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.24:61245","scheme":"http","uri":"http://192.168.1.28:96/favicon-32x32.png"} res={"bytes":1003,"elapsed":4.769822,"status":200,"time":"Tue, 19 Jan 2021 16:30:48 UTC"}
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,083 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG attempting to upgrade connection module=websocket
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,083 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG session created id=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb module=webrtc
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,103 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,104 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG sending message to client address=192.168.1.24:61247 module=websocket raw="{\"event\":\"signal/provide\",\"id\":\"cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb\",\"sdp\":\"v=0\\r\\no=- 501870501 1611073853 IN IP4 0.0.0.0\\r\\ns=-\\r\\nt=0 0\\r\\na=fingerprint:sha-256 B1:35:B6:3C:58:7D:CA:75:C4:59:FE:C6:6E:49:5F:C7:58:2F:BF:80:E9:96:48:E2:AC:8A:78:82:50:F3:E8:4F\\r\\na=ice-lite:ice-lite\\r\\na=group:BUNDLE 0 1 2\\r\\nm=application 9 DTLS/SCTP 5000\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=mid:0\\r\\na=sendrecv\\r\\na=sctpmap:5000 webrtc-datachannel 1024\\r\\na=ice-ufrag:nUopRpoGqqDyVZmH\\r\\na=ice-pwd:gZNgDwILHWgFecWegwgqhzIrudiJwnyK\\r\\na=candidate:foundation 1 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=candidate:foundation 2 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=end-of-candidates\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 96 98 102\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=mid:1\\r\\na=ice-ufrag:nUopRpoGqqDyVZmH\\r\\na=ice-pwd:gZNgDwILHWgFecWegwgqhzIrudiJwnyK\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtpmap:102 H264/90000\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=ssrc:2854263694 cname:stream\\r\\na=ssrc:2854263694 msid:stream stream\\r\\na=ssrc:2854263694 mslabel:stream\\r\\na=ssrc:2854263694 label:stream\\r\\na=msid:stream stream\\r\\na=sendonly\\r\\na=candidate:foundation 1 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=candidate:foundation 2 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=end-of-candidates\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 0 8 9\\r\\nc=IN IP4 0.0.0.0\\r\\na=setup:actpass\\r\\na=mid:2\\r\\na=ice-ufrag:nUopRpoGqqDyVZmH\\r\\na=ice-pwd:gZNgDwILHWgFecWegwgqhzIrudiJwnyK\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:111 opus/48000/2\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:9 G722/8000\\r\\na=ssrc:1879968118 cname:stream\\r\\na=ssrc:1879968118 msid:stream stream\\r\\na=ssrc:1879968118 mslabel:stream\\r\\na=ssrc:1879968118 label:stream\\r\\na=msid:stream stream\\r\\na=sendonly\\r\\na=candidate:foundation 1 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=candidate:foundation 2 udp 2130706431 91.67.162.153 59048 typ host generation 0\\r\\na=end-of-candidates\\r\\n\"}" session=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,105 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG sending message to client address=192.168.1.24:61247 module=websocket raw="{\"event\":\"screen/resolution\",\"width\":1280,\"height\":720,\"rate\":30}" session=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,105 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG session created id=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb module=websocket
    neko_1  | 4:30PM DBG new connection created address=192.168.1.24:61247 module=websocket session=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,119 DEBG 'neko' stdout output:
    neko_1  | 4:30PM DBG received message from client address=192.168.1.24:61247 module=websocket raw="{\"event\":\"signal/answer\",\"sdp\":\"v=0\\r\\no=- 3741198491647696537 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1 2\\r\\na=msid-semantic: WMS\\r\\nm=application 9 DTLS/SCTP 5000\\r\\nc=IN IP4 0.0.0.0\\r\\nb=AS:30\\r\\na=ice-ufrag:thOz\\r\\na=ice-pwd:k8maQwMnA26VaR1fp275DsBv\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 F7:0C:0E:A4:32:CF:FB:23:FC:37:F9:68:D1:29:FD:29:8A:B6:C5:6B:CE:3F:49:53:AD:AC:C0:7D:A5:13:03:0B\\r\\na=setup:active\\r\\na=mid:0\\r\\na=sctpmap:5000 webrtc-datachannel 1024\\r\\nm=video 9 UDP/TLS/RTP/SAVPF 96 98 102\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:thOz\\r\\na=ice-pwd:k8maQwMnA26VaR1fp275DsBv\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 F7:0C:0E:A4:32:CF:FB:23:FC:37:F9:68:D1:29:FD:29:8A:B6:C5:6B:CE:3F:49:53:AD:AC:C0:7D:A5:13:03:0B\\r\\na=setup:active\\r\\na=mid:1\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtpmap:98 VP9/90000\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:102 H264/90000\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 0 8 9\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:thOz\\r\\na=ice-pwd:k8maQwMnA26VaR1fp275DsBv\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 F7:0C:0E:A4:32:CF:FB:23:FC:37:F9:68:D1:29:FD:29:8A:B6:C5:6B:CE:3F:49:53:AD:AC:C0:7D:A5:13:03:0B\\r\\na=setup:active\\r\\na=mid:2\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:9 G722/8000\\r\\n\",\"displayname\":\"neko\"}" session=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,119 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF signaling state changed to stable module=webrtc subsystem=pc
    neko_1  | 4:30PM DBG Started agent: isControlling? false, remoteUfrag: "thOz", remotePwd: "k8maQwMnA26VaR1fp275DsBv" module=webrtc subsystem=ice
    neko_1  | 4:30PM INF Setting new connection state: Checking module=webrtc subsystem=ice
    neko_1  |
    neko_1  | 2021-01-19 16:30:53,120 DEBG 'neko' stdout output:
    neko_1  | 4:30PM INF ICE connection state changed: checking module=webrtc subsystem=pc
    neko_1  |
    neko_1  | 2021-01-19 16:31:08,148 DEBG 'neko' stdout output:
    neko_1  | 4:31PM WRN read message error error="websocket: close 1005 (no status)" module=websocket
    neko_1  |
    neko_1  | 2021-01-19 16:31:08,148 DEBG 'neko' stdout output:
    neko_1  | 4:31PM DBG handle socket ending address=192.168.1.24:61247 module=websocket
    neko_1  | 4:31PM DBG session ended address=192.168.1.24:61247 module=websocket session=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb
    neko_1  | 4:31PM DBG session destroyed id=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb module=webrtc
    neko_1  | 4:31PM DBG session destroyed id=cfLwgEbPRgASqqRqBD8DGnZIi36hDMkb module=websocket
    neko_1  | 4:31PM DBG request complete (0) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.24:61247","scheme":"http","uri":"http://192.168.1.28:96/ws?password=neko"} res={"bytes":0,"elapsed":15065.938681,"status":0,"time":"Tue, 19 Jan 2021 16:31:08 UTC"}
    neko_1  |
    

    Client-Log:

    app.08718670.js:1 [NEKO] DBG connecting to ws://192.168.1.28:96/ws?password=neko
    app.08718670.js:1 [NEKO] DBG received websocket event signal/provide with payload:  Object
    app.08718670.js:1 [NEKO] DBG creating peer
    app.08718670.js:1 [NEKO] DBG peer signaling state changed have-remote-offer
    app.08718670.js:1 [NEKO] DBG received video track from peer: stream RTCTrackEvent
    app.08718670.js:1 [NEKO] DBG received audio track from peer: stream RTCTrackEvent
    app.08718670.js:1 [NEKO] DBG received websocket event screen/resolution with payload:  Object
    app.08718670.js:1 [NEKO] DBG peer signaling state changed stable
    app.08718670.js:1 [NEKO] DBG peer ice connection state changed: checking
    app.08718670.js:1 [NEKO] DBG peer connection state changed connecting
    app.08718670.js:1 [NEKO] DBG peer ice connection state changed: disconnected
    app.08718670.js:1 [NEKO] DBG disconnected: Error: peer disconnected
        at RTCPeerConnection.socketOpen.peerConnected._peer.oniceconnectionstatechange (app.08718670.js:1)
    app.08718670.js:1 [NEKO] DBG peer connection state changed failed
    app.08718670.js:1 [NEKO] DBG connecting to ws://192.168.1.28:96/ws?password=neko
    app.08718670.js:1 [NEKO] DBG received websocket event signal/provide with payload:  Object
    app.08718670.js:1 [NEKO] DBG creating peer
    app.08718670.js:1 [NEKO] DBG peer signaling state changed have-remote-offer
    app.08718670.js:1 [NEKO] DBG received video track from peer: stream RTCTrackEvent
    app.08718670.js:1 [NEKO] DBG received audio track from peer: stream RTCTrackEvent
    app.08718670.js:1 [NEKO] DBG received websocket event screen/resolution with payload:  Object
    app.08718670.js:1 [NEKO] DBG received websocket event screen/configurations with payload:  Object
    app.08718670.js:1 [NEKO] DBG peer signaling state changed stable
    app.08718670.js:1 [NEKO] DBG peer ice connection state changed: checking
    app.08718670.js:1 [NEKO] DBG peer connection state changed connecting
    app.08718670.js:1 [NEKO] DBG peer ice connection state changed: disconnected
    app.08718670.js:1 [NEKO] DBG disconnected: Error: peer disconnected
        at RTCPeerConnection.socketOpen.peerConnected._peer.oniceconnectionstatechange (app.08718670.js:1)
    app.08718670.js:1 [NEKO] DBG peer connection state changed failed
    
    
    opened by clemone210 21
  • [BUG] Network issues

    [BUG] Network issues

    Describe the bug The latest release coupled with the extra port range seems to have fixed my connectivity problems from firefox, however I still can't get it to work from Chrome.

    The image is running on a linux box, and I'm testing from a mac on the same network.

    I was able to get it to work in chrome by adding --net=host, and this error makes me think that there's a port range that might need to be forwarded or something? I'm not sure.

    7:06PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:59037->[2607:f8b0:4001:c1a::7f]:19302: sendto: cannot assign requested address
    

    To Reproduce Steps to reproduce the behavior:

    1. docker pull nurdism/neko:latest
    2. docker run -p 8080:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --shm-size=1gb nurdism/neko:latest
    3. Connects with Firefox, not Chrome.

    Client Log: image

    Server Log:

    2020-01-29 19:06:21,688 DEBG 'neko' stdout output:
    7:06PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"10.0.1.46:54824","scheme":"http","uri":"http://10.0.1.101:8080/favicon-32x32.png"} res={"bytes":1003,"elapsed":0.170201,"status":200,"time":"Wed, 29 Jan 2020 19:06:21 UTC"}
    
    2020-01-29 19:06:26,397 DEBG 'neko' stdout output:
    7:06PM DBG attempting to upgrade connection module=websocket
    
    2020-01-29 19:06:26,397 DEBG 'neko' stdout output:
    7:06PM DBG session created id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=webrtc
    7:06PM DBG session created id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=websocket
    7:06PM DBG new connection created address=10.0.1.46:54852 module=websocket session=HB47-I3893KmvbAgyjrB4La5SUW22_sr
    
    2020-01-29 19:06:26,567 DEBG 'neko' stdout output:
    7:06PM DBG recieved message from client module=websocket raw="{\"event\":\"signal/provide\",\"sdp\":\"v=0\\r\\no=- 5685503494432030939 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1 2\\r\\na=msid-semantic: WMS\\r\\nm=audio 33864 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\\r\\nc=IN IP4 152.160.163.2\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:3408114210 1 udp 2113937151 d3d7beb9-15bc-4a78-8a79-c6a0a57bac0f.local 56317 typ host generation 0 network-cost 999\\r\\na=candidate:842163049 1 udp 1677729535 152.160.163.2 33864 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\\r\\na=ice-ufrag:BjL4\\r\\na=ice-pwd:aB9GMlvIcct1Uic+fUviTupm\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 C7:88:3B:49:80:69:5B:F9:AA:1F:03:4D:F0:A0:3F:73:D6:E4:23:85:22:22:BF:E7:42:BC:D4:15:FF:96:17:60\\r\\na=setup:actpass\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:106 CN/32000\\r\\na=rtpmap:105 CN/16000\\r\\na=rtpmap:13 CN/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:112 telephone-event/32000\\r\\na=rtpmap:113 telephone-event/16000\\r\\na=rtpmap:126 telephone-event/8000\\r\\nm=video 33191 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116\\r\\nc=IN IP4 152.160.163.2\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:3408114210 1 udp 2113937151 d3d7beb9-15bc-4a78-8a79-c6a0a57bac0f.local 56983 typ host generation 0 network-cost 999\\r\\na=candidate:842163049 1 udp 1677729535 152.160.163.2 33191 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\\r\\na=ice-ufrag:BjL4\\r\\na=ice-pwd:aB9GMlvIcct1Uic+fUviTupm\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 C7:88:3B:49:80:69:5B:F9:AA:1F:03:4D:F0:A0:3F:73:D6:E4:23:85:22:22:BF:E7:42:BC:D4:15:FF:96:17:60\\r\\na=setup:actpass\\r\\na=mid:1\\r\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:13 urn:3gpp:video-orientation\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\r\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\r\\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\\r\\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 goog-remb\\r\\na=rtcp-fb:96 transport-cc\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtpmap:97 rtx/90000\\r\\na=fmtp:97 apt=96\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 goog-remb\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:99 rtx/90000\\r\\na=fmtp:99 apt=98\\r\\na=rtpmap:100 VP9/90000\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtcp-fb:100 transport-cc\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 nack pli\\r\\na=fmtp:100 profile-id=2\\r\\na=rtpmap:101 rtx/90000\\r\\na=fmtp:101 apt=100\\r\\na=rtpmap:102 H264/90000\\r\\na=rtcp-fb:102 goog-remb\\r\\na=rtcp-fb:102 transport-cc\\r\\na=rtcp-fb:102 ccm fir\\r\\na=rtcp-fb:102 nack\\r\\na=rtcp-fb:102 nack pli\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=rtpmap:122 rtx/90000\\r\\na=fmtp:122 apt=102\\r\\na=rtpmap:127 H264/90000\\r\\na=rtcp-fb:127 goog-remb\\r\\na=rtcp-fb:127 transport-cc\\r\\na=rtcp-fb:127 ccm fir\\r\\na=rtcp-fb:127 nack\\r\\na=rtcp-fb:127 nack pli\\r\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\r\\na=rtpmap:121 rtx/90000\\r\\na=fmtp:121 apt=127\\r\\na=rtpmap:125 H264/90000\\r\\na=rtcp-fb:125 goog-remb\\r\\na=rtcp-fb:125 transport-cc\\r\\na=rtcp-fb:125 ccm fir\\r\\na=rtcp-fb:125 nack\\r\\na=rtcp-fb:125 nack pli\\r\\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:107 rtx/90000\\r\\na=fmtp:107 apt=125\\r\\na=rtpmap:108 H264/90000\\r\\na=rtcp-fb:108 goog-remb\\r\\na=rtcp-fb:108 transport-cc\\r\\na=rtcp-fb:108 ccm fir\\r\\na=rtcp-fb:108 nack\\r\\na=rtcp-fb:108 nack pli\\r\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\r\\na=rtpmap:109 rtx/90000\\r\\na=fmtp:109 apt=108\\r\\na=rtpmap:124 H264/90000\\r\\na=rtcp-fb:124 goog-remb\\r\\na=rtcp-fb:124 transport-cc\\r\\na=rtcp-fb:124 ccm fir\\r\\na=rtcp-fb:124 nack\\r\\na=rtcp-fb:124 nack pli\\r\\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\\r\\na=rtpmap:120 rtx/90000\\r\\na=fmtp:120 apt=124\\r\\na=rtpmap:123 H264/90000\\r\\na=rtcp-fb:123 goog-remb\\r\\na=rtcp-fb:123 transport-cc\\r\\na=rtcp-fb:123 ccm fir\\r\\na=rtcp-fb:123 nack\\r\\na=rtcp-fb:123 nack pli\\r\\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\\r\\na=rtpmap:119 rtx/90000\\r\\na=fmtp:119 apt=123\\r\\na=rtpmap:114 red/90000\\r\\na=rtpmap:115 rtx/90000\\r\\na=fmtp:115 apt=114\\r\\na=rtpmap:116 ulpfec/90000\\r\\nm=application 14512 UDP/DTLS/SCTP webrtc-datachannel\\r\\nc=IN IP4 152.160.163.2\\r\\na=candidate:3408114210 1 udp 2113937151 d3d7beb9-15bc-4a78-8a79-c6a0a57bac0f.local 59725 typ host generation 0 network-cost 999\\r\\na=candidate:842163049 1 udp 1677729535 152.160.163.2 14512 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\\r\\na=ice-ufrag:BjL4\\r\\na=ice-pwd:aB9GMlvIcct1Uic+fUviTupm\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 C7:88:3B:49:80:69:5B:F9:AA:1F:03:4D:F0:A0:3F:73:D6:E4:23:85:22:22:BF:E7:42:BC:D4:15:FF:96:17:60\\r\\na=setup:actpass\\r\\na=mid:2\\r\\na=sctp-port:5000\\r\\na=max-message-size:262144\\r\\n\"}" session=HB47-I3893KmvbAgyjrB4La5SUW22_sr
    
    2020-01-29 19:06:26,615 DEBG 'neko' stdout output:
    7:06PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:59037->[2607:f8b0:4001:c1a::7f]:19302: sendto: cannot assign requested address
     module=webrtc subsystem=ice
    
    2020-01-29 19:06:26,615 DEBG 'neko' stdout output:
    7:06PM INF signaling state changed to have-remote-offer module=webrtc subsystem=pc
    
    2020-01-29 19:06:26,616 DEBG 'neko' stdout output:
    7:06PM DBG Started agent: isControlling? false, remoteUfrag: "BjL4", remotePwd: "aB9GMlvIcct1Uic+fUviTupm" module=webrtc subsystem=ice
    
    2020-01-29 19:06:26,616 DEBG 'neko' stdout output:
    7:06PM INF Setting new connection state: Checking module=webrtc subsystem=ice
    7:06PM INF ICE connection state changed: checking module=webrtc subsystem=pc
    7:06PM INF signaling state changed to stable module=webrtc subsystem=pc
    
    2020-01-29 19:06:36,616 DEBG 'neko' stdout output:
    7:06PM INF Setting new connection state: Failed module=webrtc subsystem=ice
    7:06PM INF ICE connection state changed: failed module=webrtc subsystem=pc
    
    2020-01-29 19:06:36,617 DEBG 'neko' stdout output:
    7:06PM INF peer connection state changed: failed module=webrtc subsystem=pc
    7:06PM INF peer disconnected id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=webrtc
    7:06PM DBG read message error error="read tcp 172.17.0.2:8080->10.0.1.46:54852: use of closed network connection" module=websocket
    7:06PM DBG handle socket ending address=10.0.1.46:54852 module=websocket
    7:06PM DBG session destroyed id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=webrtc
    7:06PM DBG session destroyed id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=websocket
    7:06PM DBG session ended address=10.0.1.46:54852 module=websocket session=HB47-I3893KmvbAgyjrB4La5SUW22_sr
    7:06PM DBG request complete (0) module=http req={"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"10.0.1.46:54852","scheme":"http","uri":"http://10.0.1.101:8080/ws?password=secret"} res={"bytes":0,"elapsed":10219.653686,"status":0,"time":"Wed, 29 Jan 2020 19:06:36 UTC"}
    7:06PM DBG session destroyed id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=webrtc
    7:06PM DBG session destroyed id=HB47-I3893KmvbAgyjrB4La5SUW22_sr module=websocket```
    
    bug client help wanted server 
    opened by Penagwin 20
  • Use of closed network connection

    Use of closed network connection

    Problem

    Ran into this issue while running this issue when trying to reach a box on my local network with Chrome. It works fine on my phone but not my desktop. Wondering if anyone could shed some light on the issue.

    Error Msg

    image

    Error: "close tcp 172.17.0.2:8080->192.168.1.14:53047: use of closed network connection"

    Websocket Output

    { 
    "event":"sdp/provide",
    "sdp":"v=0\r\no=- 3890994145883479651 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=msid-semantic: WMS\r\nm=audio 51273 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 173.70.37.132\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:2087201215 1 udp 2113937151 50c8cae5-5386-448b-a64f-cf0689a064e5.local 51273 typ host generation 0 network-cost 999\r\na=candidate:842163049 1 udp 1677729535 173.70.37.132 51273 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\r\na=ice-ufrag:Pjsm\r\na=ice-pwd:5q +9iunGqwjJ+Zy2rzhZsYUX\r\na=ice-options:trickle\r\na=fingerprint:sha-256 64:8D:60:ED:02:8F:27:AA:45:76:9B:7E:FC:87:A5:30:3F:EF:60:83:F2:ED:02: DD:05:AB:2E:AD:8A:2A:2A:87\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://ww w.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na =extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hd rext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 mi nptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpma p:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\nm=video 51275 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116\r\nc=IN IP4 173.70.37.132\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=cand idate:2087201215 1 udp 2113937151 50c8cae5-5386-448b-a64f-cf0689a064e5.local 51275 typ host generation 0 network-cost 999\r\na=candidate:842163049 1 udp 1677729535 173.70.37.132 51275 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\r\na=ice-ufrag:Pjsm\r\na=ice-pwd:5q+9iunGqwjJ+Zy2rzhZsYUX\r\na=ice-options:trickle\r\na=fingerprint:sha-256 64:8D:60:ED:02:8F:27:AA:45:76:9B:7E:FC:87:A5:30:3F:EF:60:83:F2:ED:02:DD:05:AB:2E:AD:8A:2A:2A:87\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 VP9/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=123\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\nm=application 51277 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 173.70.37.132\r\na=candidate:2087201215 1 udp 2113937151 50c8cae5-5386-448b-a64f-cf0689a064e5.local 51277 typ host generation 0 network-cost 999\r\na=candidate:842163049 1 udp 1677729535 173.70.37.132 51277 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999\r\na=ice-ufrag:Pjsm\r\na=ice-pwd:5q+9iunGqwjJ+Zy2rzhZsYUX\r\na=ice-options:trickle\r\na=fingerprint:sha-256 64:8D:60:ED:02:8F:27:AA:45:76:9B:7E:FC:87:A5:30:3F:EF:60:83:F2:ED:02:DD:05:AB:2E:AD:8A:2A:2A:87\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"
    }
    
    opened by jtn7 19
  • [Help] - Trying to add multiple servers on same network

    [Help] - Trying to add multiple servers on same network

    Having issues deploying multiple servers on the same network. I have an ESXI servers with 4 VMs.

    VM 1 is Windows 10 running WAMP, this is hosting the client. (We modified the login screen to allow choosing between the 3 servers) VM 2-4 are Ubuntu 18.04.4 LTS and run the docker container. I will post the docker-compose.yaml files below for each server.

    UFW has been disabled on all 3 for testing.

    I have also tried connecting locally on each machine and the local clients on VM 3 and 4 also have the same peer disconnected error message.

    Room 1 runs on VM2 and works fine. (If I make the ports read 8080:8080, this stops working and experience timeout message. I am also adjusting port forwarding to account for this.) version: "2.0" services: neko: image: nurdism/neko:firefox restart: always shm_size: "1gb" ports: - "80:8080" - "59000-59100:59000-59100/udp" environment: DISPLAY: :99.0 NEKO_PASSWORD: neko NEKO_ADMIN: admin NEKO_BIND: :8080 Room 2 runs on VM 3 and doesn't let me connect. I get the peer disconnect error mentioned in the other bug report. version: "2.0" services: neko: image: nurdism/neko:firefox restart: always shm_size: "1gb" ports: - "8081:8081" - "59200-59300:59200-59300/udp" environment: DISPLAY: :99.0 NEKO_PASSWORD: neko NEKO_ADMIN: admin NEKO_BIND: :8081

    Room 3 runs on VM 4 and has the same issue as Room 2. version: "2.0" services: neko: image: nurdism/neko:firefox restart: always shm_size: "1gb" ports: - "8082:8082" - "59400-59500:59400-59500/udp" environment: DISPLAY: :99.0 NEKO_PASSWORD: neko NEKO_ADMIN: admin NEKO_BIND: :8082

    question 
    opened by SweetLouHD 15
  • [BUG] Can't type certain keys in Firefox

    [BUG] Can't type certain keys in Firefox

    Describe the bug Certain keys — namely -/_, =/+, ;/: — can't be typed at all. The server logs say error="invalid key <...>"

    To Reproduce Steps to reproduce the behavior (EDIT: In Firefox):

    1. Connect to a Neko instance
    2. Try typing a colon
    3. Note that it doesn't work

    Expected behavior All standard keys work.

    Desktop (please complete the following information):

    • OS: Any?
    • Browser: Firefox
    • Version: Any?

    Additional context I believe this is due to them not being specified in https://github.com/nurdism/neko/blob/master/server/internal/xorg/keycode/keys.go and https://github.com/nurdism/neko/blob/master/server/internal/xorg/xorg.go

    EDIT: See comment from @nurdism.

    Client Log: (No output when typing -=; and not in debug mode.)

    Server Log: Here are the logs from trying to type -=;:

    neko_1  | 2020-03-27 03:42:24,479 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN key down failed error="invalid key 173" module=webrtc
    neko_1  | 
    neko_1  | 2020-03-27 03:42:24,650 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN keyup failed error="invalid key 173" module=webrtc
    neko_1  | 
    neko_1  | 2020-03-27 03:42:25,438 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN key down failed error="invalid key 61" module=webrtc
    neko_1  | 
    neko_1  | 2020-03-27 03:42:25,591 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN keyup failed error="invalid key 61" module=webrtc
    neko_1  | 
    neko_1  | 2020-03-27 03:42:26,569 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN key down failed error="invalid key 59" module=webrtc
    neko_1  | 
    neko_1  | 2020-03-27 03:42:26,728 DEBG 'neko' stdout output:
    neko_1  | 3:42AM WRN keyup failed error="invalid key 59" module=webrtc
    neko_1  | 
    
    bug client good first issue 
    opened by duckinator 13
  • Allow firefox addons installation

    Allow firefox addons installation

    Hi, It's possible to add a config to allow the installation of the firefox addons? It can be useful for using youtube enhancer plugins, change adblocker or remove it, etc.

    discuss 
    opened by SergiX44 11
  • [FEATURE] Add option to enable stereo audio playback

    [FEATURE] Add option to enable stereo audio playback

    Is your feature request related to a problem? Please describe. Nope, just an plain ol' feature request.

    Describe the solution you'd like I'd love to be able to launch neko with 2-channel stereo (instead of 1-2 channel mono) audio piped to peers.

    opened by alectrocute 10
  • [BUG] websocket: close 1005 (no status)

    [BUG] websocket: close 1005 (no status)

    Describe the bug Using the latest docker image (c0fea0930e6f 11.02.2020), I get a login prompt and when I enter the default password, I get a "bouncing" green dot for a few seconds and the message "disconnected: peer disconnected" Then back to the login screen

    Same result with Chrome, Firefor and Chrome android. I already tried previous versions and I had the same behavior.

    To Reproduce Steps to reproduce the behavior:

    1. download the docker-compose.yaml file from github
    2. docker-compose pull && docker-compose up -d
    3. connec to http://IP_OF_LINUX_BOX with chrome in incognito mode (to disable any installed addon)
    4. See error

    Desktop :

    • OS: win10 latest (multiple different PC) - Android smartphone
    • Browser chrome latest / firefox / chrome android

    Server:

    • Linux ubuntu with Docker version 19.03.4-rc1, build 4ba2b1c606

    Client Log: chrome

    [NEKO] DBG connecting to ws://192.168.1.11/ws?password=neko
    app.8e3300a0.js:1 [NEKO] DBG received websocket event identity/provide with payload:  {id: "Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED"}
    app.8e3300a0.js:1 [NEKO] DBG creating peer
    app.8e3300a0.js:1 [NEKO] DBG received websocket event screen/resolution with payload:  {width: 1280, height: 720, rate: 30}
    app.8e3300a0.js:1 [NEKO] DBG sending event 'signal/provide' with payload v=0
    o=- 9203151738534139312 2 IN IP4 127.0.0.1
    s=-
    t=0 0
    a=group:BUNDLE 0 1 2
    a=msid-semantic: WMS
    m=audio 63663 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
    c=IN IP4 192.168.1.47
    a=rtcp:9 IN IP4 0.0.0.0
    a=candidate:2789017889 1 udp 2113937151 192.168.1.47 63663 typ host generation 0 network-cost 999
    a=ice-ufrag:y0tk
    a=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5
    a=ice-options:trickle
    a=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F
    a=setup:actpass
    a=mid:0
    a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
    a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
    a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    a=recvonly
    a=rtcp-mux
    a=rtpmap:111 opus/48000/2
    a=rtcp-fb:111 transport-cc
    a=fmtp:111 minptime=10;useinbandfec=1
    a=rtpmap:103 ISAC/16000
    a=rtpmap:104 ISAC/32000
    a=rtpmap:9 G722/8000
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:106 CN/32000
    a=rtpmap:105 CN/16000
    a=rtpmap:13 CN/8000
    a=rtpmap:110 telephone-event/48000
    a=rtpmap:112 telephone-event/32000
    a=rtpmap:113 telephone-event/16000
    a=rtpmap:126 telephone-event/8000
    m=video 63665 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116
    c=IN IP4 192.168.1.47
    a=rtcp:9 IN IP4 0.0.0.0
    a=candidate:2789017889 1 udp 2113937151 192.168.1.47 63665 typ host generation 0 network-cost 999
    a=ice-ufrag:y0tk
    a=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5
    a=ice-options:trickle
    a=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F
    a=setup:actpass
    a=mid:1
    a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
    a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
    a=extmap:13 urn:3gpp:video-orientation
    a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
    a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
    a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
    a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
    a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
    a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
    a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
    a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
    a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
    a=recvonly
    a=rtcp-mux
    a=rtcp-rsize
    a=rtpmap:96 VP8/90000
    a=rtcp-fb:96 goog-remb
    a=rtcp-fb:96 transport-cc
    a=rtcp-fb:96 ccm fir
    a=rtcp-fb:96 nack
    a=rtcp-fb:96 nack pli
    a=rtpmap:97 rtx/90000
    a=fmtp:97 apt=96
    a=rtpmap:98 VP9/90000
    a=rtcp-fb:98 goog-remb
    a=rtcp-fb:98 transport-cc
    a=rtcp-fb:98 ccm fir
    a=rtcp-fb:98 nack
    a=rtcp-fb:98 nack pli
    a=fmtp:98 profile-id=0
    a=rtpmap:99 rtx/90000
    a=fmtp:99 apt=98
    a=rtpmap:100 VP9/90000
    a=rtcp-fb:100 goog-remb
    a=rtcp-fb:100 transport-cc
    a=rtcp-fb:100 ccm fir
    a=rtcp-fb:100 nack
    a=rtcp-fb:100 nack pli
    a=fmtp:100 profile-id=2
    a=rtpmap:101 rtx/90000
    a=fmtp:101 apt=100
    a=rtpmap:102 H264/90000
    a=rtcp-fb:102 goog-remb
    a=rtcp-fb:102 transport-cc
    a=rtcp-fb:102 ccm fir
    a=rtcp-fb:102 nack
    a=rtcp-fb:102 nack pli
    a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
    a=rtpmap:122 rtx/90000
    a=fmtp:122 apt=102
    a=rtpmap:127 H264/90000
    a=rtcp-fb:127 goog-remb
    a=rtcp-fb:127 transport-cc
    a=rtcp-fb:127 ccm fir
    a=rtcp-fb:127 nack
    a=rtcp-fb:127 nack pli
    a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
    a=rtpmap:121 rtx/90000
    a=fmtp:121 apt=127
    a=rtpmap:125 H264/90000
    a=rtcp-fb:125 goog-remb
    a=rtcp-fb:125 transport-cc
    a=rtcp-fb:125 ccm fir
    a=rtcp-fb:125 nack
    a=rtcp-fb:125 nack pli
    a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
    a=rtpmap:107 rtx/90000
    a=fmtp:107 apt=125
    a=rtpmap:108 H264/90000
    a=rtcp-fb:108 goog-remb
    a=rtcp-fb:108 transport-cc
    a=rtcp-fb:108 ccm fir
    a=rtcp-fb:108 nack
    a=rtcp-fb:108 nack pli
    a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
    a=rtpmap:109 rtx/90000
    a=fmtp:109 apt=108
    a=rtpmap:124 H264/90000
    a=rtcp-fb:124 goog-remb
    a=rtcp-fb:124 transport-cc
    a=rtcp-fb:124 ccm fir
    a=rtcp-fb:124 nack
    a=rtcp-fb:124 nack pli
    a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
    a=rtpmap:120 rtx/90000
    a=fmtp:120 apt=124
    a=rtpmap:123 H264/90000
    a=rtcp-fb:123 goog-remb
    a=rtcp-fb:123 transport-cc
    a=rtcp-fb:123 ccm fir
    a=rtcp-fb:123 nack
    a=rtcp-fb:123 nack pli
    a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
    a=rtpmap:119 rtx/90000
    a=fmtp:119 apt=123
    a=rtpmap:114 red/90000
    a=rtpmap:115 rtx/90000
    a=fmtp:115 apt=114
    a=rtpmap:116 ulpfec/90000
    m=application 63667 UDP/DTLS/SCTP webrtc-datachannel
    c=IN IP4 192.168.1.47
    a=candidate:2789017889 1 udp 2113937151 192.168.1.47 63667 typ host generation 0 network-cost 999
    a=ice-ufrag:y0tk
    a=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5
    a=ice-options:trickle
    a=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F
    a=setup:actpass
    a=mid:2
    a=sctp-port:5000
    a=max-message-size:262144
    
    app.8e3300a0.js:1 [NEKO] DBG received websocket event signal/answer with payload:  {sdp: "v=0
    ↵o=- 693939068 1581458200 IN IP4 0.0.0.0
    ↵s=-
    …9029 typ host generation 0
    ↵a=end-of-candidates
    ↵"}
    app.8e3300a0.js:1 [NEKO] DBG peer ice connection state chagned: checking
    app.8e3300a0.js:1 [NEKO] DBG received audio track from peer: 0778bc27-3cf8-4128-a278-9c22f1892a18 RTCTrackEvent {isTrusted: true, receiver: RTCRtpReceiver, track: MediaStreamTrack, streams: Array(1), transceiver: RTCRtpTransceiver, …}
    app.8e3300a0.js:1 [NEKO] DBG received video track from peer: cc59d1b5-28ba-4190-936f-4d60d89e040a RTCTrackEvent {isTrusted: true, receiver: RTCRtpReceiver, track: MediaStreamTrack, streams: Array(1), transceiver: RTCRtpTransceiver, …}
    app.8e3300a0.js:1 [NEKO] DBG peer ice connection state chagned: disconnected
    app.8e3300a0.js:1 [NEKO] DBG disconnected: Error: peer disconnected
        at RTCPeerConnection.socketOpen.peerConnected._peer.oniceconnectionstatechange (app.8e3300a0.js:1)
    

    Server Log:

    2020-02-11 21:56:32,363 CRIT Supervisor running as root (no user in config file)
    2020-02-11 21:56:32,363 WARN For [program:firefox-esr], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignored
    2020-02-11 21:56:32,363 WARN For [program:neko], redirect_stderr=true but stderr_logfile has also been set to a filename, the filename has been ignored
    2020-02-11 21:56:32,363 INFO Included extra file "/etc/neko/supervisord/firefox.conf" during parsing
    2020-02-11 21:56:32,363 INFO Included extra file "/etc/neko/supervisord/neko.conf" during parsing
    2020-02-11 21:56:32,364 INFO supervisord started with pid 1
    2020-02-11 21:56:33,365 INFO spawned: 'dbus' with pid 8
    2020-02-11 21:56:33,367 INFO spawned: 'openbox' with pid 9
    2020-02-11 21:56:33,369 INFO spawned: 'pulseaudio' with pid 10
    2020-02-11 21:56:33,371 INFO spawned: 'x-server' with pid 11
    2020-02-11 21:56:33,373 INFO spawned: 'firefox-esr' with pid 13
    2020-02-11 21:56:33,374 INFO spawned: 'neko' with pid 14
    2020-02-11 21:56:33,383 DEBG 'x-server' stdout output:
    _XSERVTrans
    2020-02-11 21:56:33,384 DEBG 'x-server' stdout output:
    mkdir: Owner of /tmp/.X11-unix should be set to root
    
    2020-02-11 21:56:33,385 DEBG 'x-server' stdout output:
    
    X.Org X Server 1.19.2
    2020-02-11 21:56:33,385 DEBG 'x-server' stdout output:
    
    Release Date: 2017-03-02
    
    2020-02-11 21:56:33,385 DEBG 'x-server' stdout output:
    X Protocol Version 11, Revision 0
    
    2020-02-11 21:56:33,386 DEBG 'x-server' stdout output:
    Build Operating System: Linux 4.9.0-8-amd64 x86_64 Debian
    
    2020-02-11 21:56:33,386 DEBG 'x-server' stdout output:
    Current Operating System: Linux cc1544f4df51 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019 x86_64
    
    2020-02-11 21:56:33,386 DEBG 'x-server' stdout output:
    Kernel command line:
    2020-02-11 21:56:33,386 DEBG 'x-server' stdout output:
    BOOT_IMAGE=/vmlinuz-5.0.0-38-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro
    
    2020-02-11 21:56:33,387 DEBG 'x-server' stdout output:
    Build Date: 03 November 2018  03:09:11AM
    
    2020-02-11 21:56:33,387 DEBG 'x-server' stdout output:
    xorg-server 2:1.19.2-1+deb9u5 (https://www.debian.org/support)
    
    2020-02-11 21:56:33,388 DEBG 'x-server' stdout output:
    Current version of pixman: 0.34.0
            Before reporting problems, check http://wiki.x.org
            to make sure that you have the latest version.
    
    2020-02-11 21:56:33,388 DEBG 'x-server' stdout output:
    Markers: (--) probed, (**) from config file, (==) default setting,
            (++) from command line, (!!) notice, (II) informational,
            (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    (==) Log file: "/home/neko/.local/share/xorg/Xorg.99.0.log", Time: Tue Feb 11 21:56:33 2020
    (++) Using config file: "/etc/neko/xorg.conf"
    (==) Using system config directory "/usr/share/X11/xorg.conf.d"
    
    2020-02-11 21:56:33,389 DEBG 'dbus' stdout output:
    15
    
    2020-02-11 21:56:33,394 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
    I: [pulseaudio] main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
    D: [pulseaudio] core-rtclock.c: Timer slack is set to 50 us.
    
    2020-02-11 21:56:33,401 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] core-util.c: Failed to acquire high-priority scheduling: No such file or directory
    I: [pulseaudio] main.c: This is PulseAudio 10.0
    D: [pulseaudio] main.c: Compilation host: x86_64-pc-linux-gnu
    D: [pulseaudio] main.c: Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/pulseaudio-ZMrhzG/pulseaudio-10.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto
    D: [pulseaudio] main.c: Running on host: Linux x86_64 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019
    D: [pulseaudio] main.c: Found 6 CPUs.
    I: [pulseaudio] main.c: Page size is 4096 bytes
    D: [pulseaudio] main.c: Compiled with Valgrind support: no
    D: [pulseaudio] main.c: Running in valgrind mode: no
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] main.c: Running in VM: no
    D: [pulseaudio] main.c: Optimized build: yes
    D: [pulseaudio] main.c: FASTPATH defined, only fast path asserts disabled.
    I: [pulseaudio] main.c: Machine ID is a5a85d161208265bec1c6fb020b29456.
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] main.c: Using runtime directory /home/neko/.config/pulse/a5a85d161208265bec1c6fb020b29456-runtime.
    I: [pulseaudio] main.c: Using state directory /home/neko/.config/pulse.
    I: [pulseaudio] main.c: Using modules directory /usr/lib/pulse-10.0/modules.
    I: [pulseaudio] main.c: Running in system mode: no
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] main.c: System supports high resolution timers
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    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
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2
    I: [pulseaudio] svolume_mmx.c: Initialising MMX optimized volume functions.
    I: [pulseaudio] remap_mmx.c: Initialising MMX optimized remappers.
    I: [pulseaudio] svolume_sse.c: Initialising SSE2 optimized volume functions.
    I: [pulseaudio] remap_sse.c: Initialising SSE2 optimized remappers.
    I: [pulseaudio] sconv_sse.c: Initialising SSE2 optimized conversions.
    I: [pulseaudio] svolume_orc.c: Initialising ORC optimized volume functions.
    
    2020-02-11 21:56:33,402 DEBG 'pulseaudio' stdout output:
    W: [pulseaudio] authkey.c: Failed to open cookie file '/home/neko/.config/pulse/cookie': No such file or directory
    W: [pulseaudio] authkey.c: Failed to load authentication key '/home/neko/.config/pulse/cookie': No such file or directory
    W: [pulseaudio] authkey.c: Failed to open cookie file '/home/neko/.pulse-cookie': No such file or directory
    W: [pulseaudio] authkey.c: Failed to load authentication key '/home/neko/.pulse-cookie': No such file or directory
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] authkey.c: Got 0 bytes from cookie file '/home/neko/.config/pulse/cookie', expected 256
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] module.c: Loaded "module-native-protocol-unix" (index: #0; argument: "socket=/tmp/pulseaudio.socket auth-anonymous=1").
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] module-always-sink.c: Autoloading null-sink as no other sinks detected.
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] sink.c: Created sink 0 "auto_null" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
    I: [pulseaudio] sink.c:     device.description = "Dummy Output"
    I: [pulseaudio] sink.c:     device.class = "abstract"
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] sink.c:     device.icon_name = "audio-card"
    I: [pulseaudio] source.c: Created source 0 "auto_null.monitor" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
    I: [pulseaudio] source.c:     device.description = "Monitor of Dummy Output"
    I: [pulseaudio] source.c:     device.class = "monitor"
    I: [pulseaudio] source.c:     device.icon_name = "audio-input-microphone"
    D: [null-sink] module-null-sink.c: Thread starting up
    
    2020-02-11 21:56:33,403 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] module.c: Loaded "module-null-sink" (index: #2; argument: "sink_name=auto_null sink_properties='device.description="Dummy Output"'").
    I: [pulseaudio] module.c: Loaded "module-always-sink" (index: #1; argument: "").
    
    2020-02-11 21:56:33,432 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] dbus-util.c: Successfully connected to D-Bus session bus c23ba020611bca8c9ddecb1a5e432311 as :1.0
    
    2020-02-11 21:56:33,432 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] main.c: Got org.PulseAudio1!
    
    2020-02-11 21:56:33,433 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] main.c: Got org.pulseaudio.Server!
    I: [pulseaudio] main.c: Daemon startup complete.
    
    2020-02-11 21:56:33,483 DEBG 'neko' stdout output:
    
        _   __     __
       / | / /__  / /______   \    /\
      /  |/ / _ \/ //_/ __ \   )  ( ')
     / /|  /  __/ ,< / /_/ /  (  /  )
    /_/ |_/\___/_/|_|\____/    \(__)|
       nurdism/neko server v1.1.0 605cb27
    
    2020-02-11 21:56:33,483 DEBG 'neko' stdout output:
    9:56PM WRN preflight complete without config file config= debug=true logging=false
    
    2020-02-11 21:56:33,799 DEBG 'neko' stdout output:
    9:56PM INF starting neko server service=neko
    
    2020-02-11 21:56:33,811 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] client.c: Created 0 "Native client (UNIX socket client)"
    I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
    
    2020-02-11 21:56:33,811 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] protocol-native.c: Protocol version: remote 32, local 32
    D: [pulseaudio] protocol-native.c: SHM possible: yes
    D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
    D: [pulseaudio] protocol-native.c: Memfd possible: yes
    D: [pulseaudio] protocol-native.c: Negotiated SHM type: shared memfd
    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
    D: [pulseaudio] srbchannel.c: SHM block is 65472 bytes, ringbuffer capacity is 2 * 32712 bytes
    
    2020-02-11 21:56:33,811 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] protocol-native.c: Enabling srbchannel...
    
    2020-02-11 21:56:33,811 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
    
    2020-02-11 21:56:33,811 DEBG 'neko' stdout output:
    9:56PM INF webrtc streaming audio_codec=opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audioconvert ! opusenc ! appsink name=appsink" ephemeral_port_range=59000-59100 module=webrtc nat_ips=178.250.xxx.xxx (my external IP) video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc xid=:99.0 show-pointer=true use-damage=false ! video/x-raw ! videoconvert ! queue ! vp8enc cpu-used=8 threads=2 deadline=1 error-resilient=partitions keyframe-max-dist=10 auto-alt-ref=true ! appsink name=appsink"
    
    2020-02-11 21:56:33,812 DEBG 'neko' stdout output:
    9:56PM WRN http listening on :8080 module=webrtc
    9:56PM INF neko ready service=neko
    
    2020-02-11 21:56:33,812 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] source-output.c: Negotiated format: pcm, format.sample_format = "\"s16le\""  format.rate = "48000"  format.channels = "1"  format.channel_map = "\"mono\""
    I: [pulseaudio] source-output.c: Trying to change sample rate
    D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
    
    2020-02-11 21:56:33,813 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] resampler.c: Resampler:
    D: [pulseaudio] resampler.c:   rate 44100 -> 48000 (method speex-float-1)
    D: [pulseaudio] resampler.c:   format s16le -> s16le (intermediate float32le)
    D: [pulseaudio] resampler.c:   channels 2 -> 1 (resampling 1)
    D: [pulseaudio] resampler.c: Channel matrix:
    D: [pulseaudio] resampler.c:        I00   I01
    D: [pulseaudio] resampler.c:     +------------
    D: [pulseaudio] resampler.c: O00 | 0.500 0.500
    I: [pulseaudio] remap.c: Using stereo to mono remapping
    I: [pulseaudio] speex.c: Choosing speex quality setting 1.
    D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
    D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
    I: [pulseaudio] source-output.c: Created output 0 "Record Stream" on auto_null.monitor with sample spec s16le 1ch 48000Hz and channel map mono
    I: [pulseaudio] source-output.c:     media.name = "Record Stream"
    I: [pulseaudio] source-output.c:     application.name = "neko"
    I: [pulseaudio] source-output.c:     native-protocol.peer = "UNIX socket client"
    I: [pulseaudio] source-output.c:     native-protocol.version = "32"
    I: [pulseaudio] source-output.c:     application.process.id = "14"
    
    2020-02-11 21:56:33,813 DEBG 'pulseaudio' stdout output:
    I: [pulseaudio] source-output.c:     application.process.user = "neko"
    I: [pulseaudio] source-output.c:     application.process.host = "cc1544f4df51"
    I: [pulseaudio] source-output.c:     application.process.binary = "neko"
    I: [pulseaudio] source-output.c:     application.language = "C"
    I: [pulseaudio] source-output.c:     window.x11.display = ":99.0"
    I: [pulseaudio] source-output.c:     application.process.machine_id = "a5a85d161208265bec1c6fb020b29456"
    D: [pulseaudio] memblockq.c: memblockq requested: maxlength=19200, tlength=0, base=2, prebuf=1, minreq=0 maxrewind=0
    D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=19200, tlength=19200, base=2, prebuf=2, minreq=2 maxrewind=0
    I: [pulseaudio] protocol-native.c: Final latency 20.00 ms = 10.00 ms + 10.00 ms
    
    2020-02-11 21:56:33,813 DEBG 'pulseaudio' stdout output:
    D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
    
    2020-02-11 21:56:34,377 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55694","scheme":"http","uri":"http://192.168.1.11/"} res={"bytes":1079,"elapsed":1.70933,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,377 INFO success: dbus entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,377 INFO success: openbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,377 INFO success: pulseaudio entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,377 INFO success: x-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,377 INFO success: firefox-esr entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,377 INFO success: neko entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-02-11 21:56:34,414 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55695","scheme":"http","uri":"http://192.168.1.11/js/app.8e3300a0.js"} res={"bytes":81337,"elapsed":0.134241,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,425 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55694","scheme":"http","uri":"http://192.168.1.11/css/app.926d9978.css"} res={"bytes":296981,"elapsed":17.833941,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,451 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55696","scheme":"http","uri":"http://192.168.1.11/js/chunk-vendors.a000e3b5.js"} res={"bytes":397565,"elapsed":32.162854,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,601 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55696","scheme":"http","uri":"http://192.168.1.11/fonts/whitney-700.8e12fb4f.woff"} res={"bytes":80000,"elapsed":0.146901,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,601 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55694","scheme":"http","uri":"http://192.168.1.11/fonts/whitney-400.e8acd7d9.woff"} res={"bytes":77784,"elapsed":0.147746,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,602 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55695","scheme":"http","uri":"http://192.168.1.11/fonts/fa-solid-900.f6121be5.woff2"} res={"bytes":76084,"elapsed":0.09214,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,623 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55696","scheme":"http","uri":"http://192.168.1.11/emoji.json"} res={"bytes":164253,"elapsed":0.198181,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,637 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55695","scheme":"http","uri":"http://192.168.1.11/img/logo.4c7f8fc3.svg"} res={"bytes":4020,"elapsed":0.099662,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:34,680 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55696","scheme":"http","uri":"http://192.168.1.11/favicon-32x32.png"} res={"bytes":1003,"elapsed":0.101733,"status":200,"time":"Tue, 11 Feb 2020 21:56:34 UTC"}
    
    2020-02-11 21:56:39,998 DEBG 'neko' stdout output:
    9:56PM DBG attempting to upgrade connection module=websocket
    
    2020-02-11 21:56:39,998 DEBG 'neko' stdout output:
    9:56PM DBG session created id=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED module=webrtc
    
    2020-02-11 21:56:39,999 DEBG 'neko' stdout output:
    9:56PM DBG session created id=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED module=websocket
    9:56PM DBG new connection created address=192.168.1.47:55701 module=websocket session=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED
    
    2020-02-11 21:56:40,131 DEBG 'neko' stdout output:
    9:56PM DBG recieved message from client module=websocket raw="{\"event\":\"signal/provide\",\"sdp\":\"v=0\\r\\no=- 9203151738534139312 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0 1 2\\r\\na=msid-semantic: WMS\\r\\nm=audio 63663 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\\r\\nc=IN IP4 192.168.1.47\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:2789017889 1 udp 2113937151 192.168.1.47 63663 typ host generation 0 network-cost 999\\r\\na=ice-ufrag:y0tk\\r\\na=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F\\r\\na=setup:actpass\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:106 CN/32000\\r\\na=rtpmap:105 CN/16000\\r\\na=rtpmap:13 CN/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:112 telephone-event/32000\\r\\na=rtpmap:113 telephone-event/16000\\r\\na=rtpmap:126 telephone-event/8000\\r\\nm=video 63665 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116\\r\\nc=IN IP4 192.168.1.47\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:2789017889 1 udp 2113937151 192.168.1.47 63665 typ host generation 0 network-cost 999\\r\\na=ice-ufrag:y0tk\\r\\na=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F\\r\\na=setup:actpass\\r\\na=mid:1\\r\\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:13 urn:3gpp:video-orientation\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\\r\\na=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\\r\\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\\r\\na=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\\r\\na=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\\r\\na=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\\r\\na=recvonly\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:96 VP8/90000\\r\\na=rtcp-fb:96 goog-remb\\r\\na=rtcp-fb:96 transport-cc\\r\\na=rtcp-fb:96 ccm fir\\r\\na=rtcp-fb:96 nack\\r\\na=rtcp-fb:96 nack pli\\r\\na=rtpmap:97 rtx/90000\\r\\na=fmtp:97 apt=96\\r\\na=rtpmap:98 VP9/90000\\r\\na=rtcp-fb:98 goog-remb\\r\\na=rtcp-fb:98 transport-cc\\r\\na=rtcp-fb:98 ccm fir\\r\\na=rtcp-fb:98 nack\\r\\na=rtcp-fb:98 nack pli\\r\\na=fmtp:98 profile-id=0\\r\\na=rtpmap:99 rtx/90000\\r\\na=fmtp:99 apt=98\\r\\na=rtpmap:100 VP9/90000\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtcp-fb:100 transport-cc\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 nack pli\\r\\na=fmtp:100 profile-id=2\\r\\na=rtpmap:101 rtx/90000\\r\\na=fmtp:101 apt=100\\r\\na=rtpmap:102 H264/90000\\r\\na=rtcp-fb:102 goog-remb\\r\\na=rtcp-fb:102 transport-cc\\r\\na=rtcp-fb:102 ccm fir\\r\\na=rtcp-fb:102 nack\\r\\na=rtcp-fb:102 nack pli\\r\\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\\r\\na=rtpmap:122 rtx/90000\\r\\na=fmtp:122 apt=102\\r\\na=rtpmap:127 H264/90000\\r\\na=rtcp-fb:127 goog-remb\\r\\na=rtcp-fb:127 transport-cc\\r\\na=rtcp-fb:127 ccm fir\\r\\na=rtcp-fb:127 nack\\r\\na=rtcp-fb:127 nack pli\\r\\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\\r\\na=rtpmap:121 rtx/90000\\r\\na=fmtp:121 apt=127\\r\\na=rtpmap:125 H264/90000\\r\\na=rtcp-fb:125 goog-remb\\r\\na=rtcp-fb:125 transport-cc\\r\\na=rtcp-fb:125 ccm fir\\r\\na=rtcp-fb:125 nack\\r\\na=rtcp-fb:125 nack pli\\r\\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\\r\\na=rtpmap:107 rtx/90000\\r\\na=fmtp:107 apt=125\\r\\na=rtpmap:108 H264/90000\\r\\na=rtcp-fb:108 goog-remb\\r\\na=rtcp-fb:108 transport-cc\\r\\na=rtcp-fb:108 ccm fir\\r\\na=rtcp-fb:108 nack\\r\\na=rtcp-fb:108 nack pli\\r\\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\\r\\na=rtpmap:109 rtx/90000\\r\\na=fmtp:109 apt=108\\r\\na=rtpmap:124 H264/90000\\r\\na=rtcp-fb:124 goog-remb\\r\\na=rtcp-fb:124 transport-cc\\r\\na=rtcp-fb:124 ccm fir\\r\\na=rtcp-fb:124 nack\\r\\na=rtcp-fb:124 nack pli\\r\\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\\r\\na=rtpmap:120 rtx/90000\\r\\na=fmtp:120 apt=124\\r\\na=rtpmap:123 H264/90000\\r\\na=rtcp-fb:123 goog-remb\\r\\na=rtcp-fb:123 transport-cc\\r\\na=rtcp-fb:123 ccm fir\\r\\na=rtcp-fb:123 nack\\r\\na=rtcp-fb:123 nack pli\\r\\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\\r\\na=rtpmap:119 rtx/90000\\r\\na=fmtp:119 apt=123\\r\\na=rtpmap:114 red/90000\\r\\na=rtpmap:115 rtx/90000\\r\\na=fmtp:115 apt=114\\r\\na=rtpmap:116 ulpfec/90000\\r\\nm=application 63667 UDP/DTLS/SCTP webrtc-datachannel\\r\\nc=IN IP4 192.168.1.47\\r\\na=candidate:2789017889 1 udp 2113937151 192.168.1.47 63667 typ host generation 0 network-cost 999\\r\\na=ice-ufrag:y0tk\\r\\na=ice-pwd:DL58OfZVjAm92CjYNkWR+mO5\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 8F:E8:B6:CB:F2:6C:D8:18:8E:E7:3E:A7:FA:3B:B9:BE:97:D7:D0:06:C3:44:00:07:D9:2A:20:CA:E5:2A:1E:7F\\r\\na=setup:actpass\\r\\na=mid:2\\r\\na=sctp-port:5000\\r\\na=max-message-size:262144\\r\\n\"}" session=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED
    
    2020-02-11 21:56:40,163 DEBG 'neko' stdout output:
    9:56PM INF signaling state changed to have-remote-offer module=webrtc subsystem=pc
    
    2020-02-11 21:56:40,164 DEBG 'neko' stdout output:
    9:56PM DBG Started agent: isControlling? false, remoteUfrag: "y0tk", remotePwd: "DL58OfZVjAm92CjYNkWR+mO5" module=webrtc subsystem=ice
    9:56PM INF Setting new connection state: Checking module=webrtc subsystem=ice
    9:56PM INF ICE connection state changed: checking module=webrtc subsystem=pc
    
    2020-02-11 21:56:40,164 DEBG 'neko' stdout output:
    9:56PM INF signaling state changed to stable module=webrtc subsystem=pc
    
    2020-02-11 21:56:55,279 DEBG 'neko' stdout output:
    9:56PM WRN read message error error="websocket: close 1005 (no status)" module=websocket
    9:56PM DBG handle socket ending address=192.168.1.47:55701 module=websocket
    
    2020-02-11 21:56:55,279 DEBG 'neko' stdout output:
    9:56PM DBG session destroyed id=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED module=webrtc
    9:56PM DBG session destroyed id=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED module=websocket
    9:56PM DBG session ended address=192.168.1.47:55701 module=websocket session=Hn2d3rm8h02JeDax1EPmfy5gVHYD2wED
    9:56PM DBG request complete (0) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55701","scheme":"http","uri":"http://192.168.1.11/ws?password=neko"} res={"bytes":0,"elapsed":15281.160841,"status":0,"time":"Tue, 11 Feb 2020 21:56:55 UTC"}
    
    2020-02-11 21:56:55,311 DEBG 'neko' stdout output:
    9:56PM DBG request complete (200) module=http req={"agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","method":"GET","proto":"HTTP/1.1","remote":"192.168.1.47:55696","scheme":"http","uri":"http://192.168.1.11/fonts/whitney-600.be0060da.woff"} res={"bytes":82688,"elapsed":0.160748,"status":200,"time":"Tue, 11 Feb 2020 21:56:55 UTC"}
    
    
    bug networking webrtc 
    opened by redge76 9
  • [Feature Request] Add Neko variant using custom Chromium build from Woolyss

    [Feature Request] Add Neko variant using custom Chromium build from Woolyss

    Is your feature request related to a problem? Please describe. If a user wants to watch a media file that has been encoded in HEVC/x265 in the currently available builds of Neko, the video playback will either outright fail or cause the origin server to first transcode the video before serving it, a process which greatly reduces the quality of the video. HEVC is burdened by its patents and licensing fees which is why it currently isn't supported by the two big browsers Firefox and Chrome and likely never will be.

    Describe the solution you'd like Since Chrome is based on the open-source project Chromium, people have developed custom variants of the latter with support for HEVC/x265. These are available for all major platforms, including Linux, and can be downloaded on Woolyss' website. The build that would have be used for Neko is this one (since it is marked with all-codecs+).

    Describe alternatives you've considered N/A

    Additional context N/A

    opened by whalehub 9
  • Fresh install - timeout

    Fresh install - timeout

    Making a fresh install using the provided instructions results in neko running, but when trying to log in, you get a time out error.

    opened by Cupcake911 9
  • Added docs explaining how to use the Caddy HTTPd as a reverse proxy.

    Added docs explaining how to use the Caddy HTTPd as a reverse proxy.

    I wrote up some notes on how to get Caddy and Neko working together. It was pretty straight forward, just had to do a bit of Googling.

    opened by ccallahan 1
  • English

    English

    opened by LOKSTED 0
  • Uncaught exception - load.c(181) : Module not found : -v

    Uncaught exception - load.c(181) : Module not found : -v

    I followed everything I installed

    But finally the neko not working. I got under error message at the end Uncaught exception - load.c(181) : Module not found

    Please help me how can I fix it

    opened by alexnadezhda 0
  • [FEATURE] 2160p (4K) Support?

    [FEATURE] 2160p (4K) Support?

    Screen Shot 2021-01-29 at 3 37 00 PM This is what my docker compose looks like. However I can't seem to get it to render at 2160p. It seems to max out at [email protected]

    I am using a sufficiently powerful VM. I'm using an 8 core with 16gigs of ram on AWS. This is mostly for movie nights so a buck or two per stream is not a huge problem.

    Thanks!

    opened by mog3n 10
  • New image source for avatars

    New image source for avatars

    Using the DiceBear Avatars API for avatar images, since adorable.io is dead

    I'm using the grindy style because its unisex and its cute. Avatar examples:

    1 1

    opened by metehus 0
  • neko process uses ~80% CPU while idling

    neko process uses ~80% CPU while idling

    Is your feature request related to a problem? Please describe. Running the container (nurdism/neko:firefox) on my server, I realize it always uses about 85-90% of one CPU core, even if there is no one connected to the session.

    Describe the solution you'd like I guess the load is that high because video / audio encoding is permanently active. So as long as no one has logged in or after the last person has logged out, the encoding should automatically be paused.

    Describe alternatives you've considered

    opened by djmaze 16
  • [FEATURE] persistent cookies

    [FEATURE] persistent cookies

    I LOVE IT! <3

    Is your feature request related to a problem? Please describe. I don't want to log in on youtube/etc. every time the container is restarted.

    Describe the solution you'd like make the browser cookies persistent (by saving them outside of the container and pointing the container to there?)

    Describe alternatives you've considered logging in anew.

    opened by Alistair1231 1
  • [FEATURE]

    [FEATURE]

    Can neko support Chinese input method? now if i install fcitx, all server start error

    opened by jason000zhang 0
  • [FEATURE] Documentation: Attach a

    [FEATURE] Documentation: Attach a "most optional" reverse proxy settings example

    Is your feature request related to a problem? Please describe. I don't know how many would do it that way, but I run neko behind a NGINX reverse proxy. Unfortunately, I don't know if my settings are apropriate, considering I keep getting disconnects every few moments. My guess is that my revproxy settings aren't proper.

    Describe the solution you'd like There might be people who don't have a lot of experience with NGINX and friends - adding a piece of documentary with some recommended reverse proxy settings would be helpful for those.

    Additional context Here's mine:

    server {
      listen *:80;
      listen [::]:80;
      server_name (...);
    
      # enforce https
      location / {
        return 301 https://$server_name$request_uri;
      }
    }
    
    server {
      listen *:443 ssl;
      listen [::]:443 ssl;
      server_name (...);
      keepalive_timeout 1000;
    
      ssl_certificate (...); # managed by Certbot
      ssl_certificate_key (...); # managed by Certbot
    
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH';
      ssl_prefer_server_ciphers on;
      ssl_dhparam /etc/nginx/dh4096.pem;
      ssl_stapling off;
      #ssl_stapling_verify on;
    
      # Add headers to serve security related headers
      # Before enabling Strict-Transport-Security headers please read into this topic first.
      add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
      add_header X-Content-Type-Options nosniff;
      add_header X-Frame-Options "SAMEORIGIN";
      add_header X-XSS-Protection "1; mode=block";
      add_header X-Robots-Tag none;
      add_header X-Download-Options noopen;
      add_header X-Permitted-Cross-Domain-Policies none;
    
      client_max_body_size 0;
      gzip off;
    
      location / {
            proxy_pass http://127.0.0.1:9090;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_buffering off;
            client_max_body_size 0;
            proxy_read_timeout 36000s;
            proxy_redirect off;
        }
    
        location /ws {
            proxy_pass http://127.0.0.1:9090;
            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 $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host $http_host;
        }
    }
    

    (The (...) are just me removing information I'd rather not share. ^^ )

    opened by IngwiePhoenix 2
  • [Question] Why is the entry binary itself zapping all that CPU?

    [Question] Why is the entry binary itself zapping all that CPU?

    For context, a snippet from htop:

      PID  PPID USER       VIRT   RES   SHR S CPU% MEM% Command
     9075  8976 nagios    2283M 46720  6064 S 95.9  0.6 /usr/bin/neko serve -d --static /var/www
    

    (ignore "nagios" as the user - htop is being stupid. It matched the docker UID to a local UID...)

    I just would like to know why it's zapping away sll of that CPU runtime? I mean, technically, it should only need to watch over a few processes - xorg, firefox-esr, ... - but yet it's needing all this CPU. Also - nobody is connected.

    This is just a question of curiosity :)

    question 
    opened by IngwiePhoenix 6
Releases(2.0.0)
  • 2.0.0(Apr 5, 2020)

    Breaking Changes

    • NEKO_ADMIN is now NEKO_PASSOWRD_ADMIN
    • NEKO_EPR is now base ten (was base 16)

    New Features and Enhancements

    • Lock Controls, toggle input to browser image
    • Tool tip for room lock image
    • i18n for client
    • "Username" was renamed to "Display Name" to avoid confusion #52 #44
    • Server will now check for reverse proxy headers #46

    Bugs & Fixes

    • Fixed issue with NEKO_EPR config option (thanks @m1k1o) #56 #49
    • Fixed #51 ([BUG] Can't type certain keys in Firefox)
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Feb 11, 2020)

    Fixed:

    • #25 Network issues
    • #26 Can't type in Firefox
    • #27 panic: concurrent write to websocket connection
    • #28 [xcb] Unknown request in queue while dequeuing

    Client:

    • Added new emotes
    • Added chat emojis
    • Added admins can change resolution and frame rate while neko is running
    • Added automatic login

    Server:

    Docker:

    • New image for chromium
    • New image for firefox

    I've built the base image (nurdism/neko:base) to be flexible, you can use this image to build your own docker image with your own browser/app, nurdism/neko:firefox and nurdism/neko:chromium are good examples on how to do that. Will be adding more documentation on this at a later date.

    WIP:

    • Documentation

    Note: I'm terrible at following stemver versioning. Going to make more of an effort to put that in and make actual releases. Oh also neko has a website now n.eko.moe

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jan 28, 2020)

Owner
Nurdism
Hobbyist in many languages and full stack JavaScript developer. I like to mess with new and neat things.
Nurdism
Source Codeoneye - Cloud software to access your data from everywhere with any browser. (Demo, ) AGPL-3.0 PHP

 ___ _ __ ___ _ _ ___ / _ \| '_ \ / _ \ | | |/ _ \ | (_) | | | | __/ |_| | __/ \___/|_| |_|\___|\__, |\___| |___/ oneye

oneye project 86 May 4, 2021
Web SSH & Telnet (WebSSH & WebTelnet client) 🔮

Sshwifty Web SSH & Telnet Client Sshwifty is a SSH and Telnet connector made for the Web. It can be deployed on your computer or server to provide SSH

R+ 568 Jun 6, 2021
OS.js - JavaScript Web Desktop Platform

OS.js OS.js is an open-source web desktop platform with a window manager, application APIs, GUI toolkit, filesystem abstractions and much more. Backin

OS.js 5.7k Jun 6, 2021
Gate One is an HTML5-powered terminal emulator and SSH client

About Gate One Gate One is an HTML5 web-based terminal emulator and SSH client. Top features: No browser plugins required! Say goodbye to the security

Dan McDougall 6k Jun 4, 2021
Web app for hosting asciicasts

asciinema web app asciinema is a free and open source solution for recording terminal sessions and sharing them on the web. This repository contains t

asciinema 1.8k Jun 1, 2021
The Guacamole project is now Apache Guacamole (http://guacamole.apache.org/). This repository has been repurposed as the base for the Apache Guacamole packages built for Glyptodon Enterprise.

------------------------------------------------------------ About this README ------------------------------------------------------------ This REA

Glyptodon, Inc. 1000 Jun 2, 2021