Coder Social home page Coder Social logo

m1k1o / neko Goto Github PK

View Code? Open in Web Editor NEW
5.5K 48.0 420.0 85 MB

A self hosted virtual browser that runs in docker and uses WebRTC.

Home Page: https://neko.m1k1o.net/

License: Apache License 2.0

Dockerfile 3.51% Shell 1.71% HTML 0.23% Vue 24.11% TypeScript 25.44% JavaScript 9.37% Go 30.35% C 3.73% SCSS 1.55%
docker virtual-browser golang webrtc self-hosted remote-control remote-desktop vue media-streaming

neko's People

Contributors

alecdusheck avatar alectrocute avatar comradekingu avatar darkreaper231 avatar dx37 avatar emyarod avatar frozenfoxx avatar gbrian avatar hendersonreed avatar jcbird1012 avatar konsti avatar leewardbound avatar lowne avatar m1k1o avatar mbattista avatar mooons avatar nurdism avatar olle-mineur avatar pmohanj avatar prophetofxenu avatar risedsky avatar robert-scheck avatar sad avatar sniffingsugar avatar testwill avatar toriato avatar tt2468 avatar uhidontkno avatar xeddius avatar yesbad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neko's Issues

[Feature Request] Hibernate

Considering, if it would be interensting, to have some kind of hibernate feature. It has already been discussed, that browser does not need to be running always, when neko is idle. It could "sleep" or just be hibernating. Meaning, Go serwer would run but all the pipelines (maybe xorg & pulseaudio) and browser would be shut down.

There would be a button (only for admins) that can "wake it up". Others could connect to neko, but they would be notified about it is "sleeping".

This would introduce much refactoring on the connectionl logic on client / server. Considering, if it is worth it.

Bad key map for <

When writing < on US keyboard (shift + ,) it writes > instead. In Guacamole (their keyboard is being used) it works without issues.

Future autobuilds

As one of the users of Docker Hub’s Autobuild service, we wanted to reach out and let you know that from June 18th, 2021 users on the free plan will no longer have access to the Autobuild feature. This means that any of your currently configured Autobuild will fail to run and you will need to upgrade to a Pro or Team account to restore functionality.

Need to find a way how to keep autobuilds work.

[Feature Request] AV1 (aomenc) Support

With chrome 90 I did some tests with the AV1 real time encoder and it should be fine on most systems. (Screenshare 1600x900 with ~30 fps on an 4500U was possible)

Would you be fine with an PR where aomenc is used?
The main problem would be that even a change to an "unstable" apt to install gtreamer 1.18 instead of 1.16 would not be enough, since the deadline / realtime flags are not available (yet).

This would propably add a lot of extra code and changes, since I think about using https://aomedia.googlesource.com/aom/+/webm_nextgenv2/aomenc.c directly. Hence why I ask beforehand if you think this is something you would approve.

[BUG] iOS doesn't play audio

On iPhone devices, you cannot play or enable audio
Would be good if we have a fullscreen mode to unmute and play using iOS default controls

Using external ICE server stun/turn

Hello,

I don't know if it's the right place to ask the question or if I should ask in the original repo.

I would like to install neko in my home lab and expose it on internet. The issue is that I have only a single public IP and multiple services are currently using ICE/stun/turn. I can't therefore forward those port to Neko.

I've however a coturn installed and it works well with my other apps. The question now is how to tell Neko to use that server and not the one built-in

I've configured the reverse proxy on my web server. - That part works well

I've tried on nurdism build to add in the docker-compose the following

- NEKO_ICELITE: 0
- NEKO_ICESERVER: 'stun:<my-stun.tld:port> turn:<my-turn.tld:port:secret>'
- NEKO_IP: <my public ip>
- NEKO_NAT1TO1: <private ip of neko>

but I have no clue how to specify the turn server, how should I put the secret, etc...
It works if I connect from another machine from inside, but doesn't works from outside.

I'm now running m1k1o/neko:latest but still don't know how to use an external turn.

Thanks for your help !

[Question] How to use RTMP feature

I've been trying to look for documentation on it but was unable to figure it out. How do you use the RTMP broadcast feature for Neko?

Too fast too furious scroll on mac

Hi,

Scrolling with my mac + chrome is terrible it causes browser to scroll too fast.
After some debugging seems that we receive 36 wheel messegas for a single event.

Here's a quick test to make it smoother:

const _sd = $client.sendData
let stdtout = null
$client.sendData = (a, b) => {
 if (a === 'wheel') {
     if (!stdtout) {
         stdtout = setTimeout(() => {
            _sd.apply($client, [a, b])
            console.log(a, b)
            stdtout = null
         }, 100)
     }
 } else {
   _sd.apply($client, [a, b])
 }
}

Should we consider adding "smooth scroll" setting? 0 - 1000

[Lowest priority] Chromium not working properly

Getting the WebRTC, tried with Firefox, working well, changed to Chromium, not working :
image

Working with Ungoogled-chromium, so i assume the chromium one is having some issue,
Do you need some log files ?

(Also, when will you release in the stable branch the french i18n ? 😄 )

Mac keyboard mapping

Hi,

Having issues with key combinations using mac, specially annoying the copy&paste
Opening the ticket for discussion.
https://github.com/novnc/noVNC/blob/master/core/input/keyboard.js#L129-L148 (from previous conversation on Discord)

And a dirty hack:

const isMacLike = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)
function macKeyMap (a, b) {
  // Alt behaves more like AltGraph on macOS, so shuffle the
  // keys around a bit to make things more sane for the remote
  // server. This method is used by RealVNC and TigerVNC (and
  // possibly others).
  let { key: keysym } = b
  if (isMacLike) {
    switch (keysym) {
      case KeyTable.XK_Meta_L:
        keysym = KeyTable.XK_Control_L
        break
      case KeyTable.XK_Super_L:
        keysym = KeyTable.XK_Alt_L
        break
      case KeyTable.XK_Super_R:
        keysym = KeyTable.XK_Super_L
        break
      case KeyTable.XK_Alt_L:
        keysym = KeyTable.XK_Mode_switch
        break
      case KeyTable.XK_Alt_R:
        keysym = KeyTable.XK_ISO_Level3_Shift
        break
    }
  }
  const c = { key: keysym }
  console.log(a, b, c)
  _sd.apply(window.$client, [a, c])
}

[Feature Request] Mouse - implicit control gain

I'd be willing to support developing the ability to allow admin and user to share control of the mouse without clicking the control switching button.

It could be as simple as click a button to enable share control (implicit control gain).

When the mouse is not being pressed, the other user can take control.

[Feature Request] Browser extensions

When attempting to install extensions the following occurs:

this plugin is essential to my workflow

Looks like this is probably a result of the following lines. There may be a good reason for disabling it but the commit message doesn't have any hints.

I may remove those lines and test it out to see what happens. I expect plugins will be wiped on container restart which is fine for my purposes, but there might be another feature request for storing the firefox user profile in a volume to make them persist.

[Feature Request] One Man Show option

Description

As an admin of a n.eko m1k1o/neko:vlc station/instance,
I want to be the only person with controls over content being distributed to vieweing parties, by using a "flag" or "mode" in the runtime configuration.
So that I can provide an exclusive experience, in order to disable user interaction within the UI and signal listeners in the API for requesting controls or modifications from regular members.

Technical

  • Variant example of use case instance — Admin Control: EVENT.ADMIN.CONTROL
    Not to be disabled. This can force a user with ADMIN role to steal or take controls by force, however, it should also be possible for an admin to use the regular control event EVENT.CONTROL.LOCKED as an ideal use case interaction, but NOT for regular members.

  • Global setting
    Viper flag/mode called "NEKO_ADMIN_MODE", when set to true, the introduced feature being requested will make sure several things happen. In the websocket, by using session.Admin() and the flag, it can make sure to notify the user connection through the SessionConnected method to disallow control features. Thus, making sure this.$accessor.remote webrtc action requests as limited to be used only by admin roles.

  • Additional presentation factors
    We make sure to disable the corresponding logic behind presentation. i.e: video component, controls component, remote store additional logic.

  • Backend securing
    Then, we make sure controls are only enabled to admins in websocket control only if the flag feature is enabled. This can be done by a condition in the beginning of each method and then returning false. Or, alternatively, only enabling these events for admin roles.

Result

Admins can now host a session where users are limited to watching, interacting with each other, controlling local settings such as volume and play/pause-ability, but not admin features, such as broadcasting or screen, as well as internal control features. This will allow admins to have the sole control of what is being seen on demand.

Conclusion

Let me know if I missed anything, I can get started on this PR and submit it some time soon if others approve of the need for this feature and would like to see it implemented.

Not an issue but please read.

This fork is amazing!! I'm not sure if its the stereo audio or the bitrate is increased but music sounds amazing compared to the main neko project!

Please keep this up!!!!!!

[Feature Request] Switch between multiple softwares (without desktop)

Heyo! First, let me say thank you for all the hard work you've put into this. I have a ton of appreciation for someone willing to fork a project, improve it, update it, and keep it active. I was able to get neko up and running yesterday with only a couple missteps or dead ends, and it's exactly as advertised. So again, thank you.

I am wondering if there's any way to set up neko so that you could switch between it showing a browser and VLC. I've got a group where it would be advantageous to be able to share both local content and online content, and right now - unless I've missed something - I'd need to have two instances of neko to support that. It'd be great to be able to do it without having to jump instances.

I understand that this is probably a fairly hefty feature request, but it would really go a long way toward making neko a true kosmi/kast/rabb.it replacement.

[BUG] Firefox not working on ARM64

Hello
I'm using docker-compose to deploy it
I can see the cursor
but seems like Browser is unable to Start
Environment : OracleLinux 8 on ARM64@OracleCloud

image

neko-neko-1  | 2021-12-04 20:25:46,153 DEBG 'neko' stdout output:
neko-neko-1  | 8:25PM INF webrtc starting ephemeral_port_range=52000-52100 ice_lite=true ice_servers="[{URLs:[stun:stun.l.google.com:19302] Username: Credential:<nil> CredentialType:password}]" module=webrtc nat_ips=*.*.*.*                                            
neko-neko-1  |
neko-neko-1  | 2021-12-04 20:25:46,153 DEBG 'neko' stdout output:
neko-neko-1  | 8:25PM WRN http listening on :8080 module=http
neko-neko-1  | 8:25PM INF neko ready service=neko
neko-neko-1  |
neko-neko-1  | 2021-12-04 20:25:47,155 INFO success: dbus entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)  
neko-neko-1  | 2021-12-04 20:25:47,155 INFO success: openbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1  | 2021-12-04 20:25:47,155 INFO success: pulseaudio entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1  | 2021-12-04 20:25:47,155 INFO success: x-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
neko-neko-1  | 2021-12-04 20:25:47,156 INFO spawned: 'firefox' with pid 40
neko-neko-1  | 2021-12-04 20:25:47,156 INFO success: neko entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)  
neko-neko-1  | 2021-12-04 20:25:47,160 DEBG 'firefox' stdout output:
neko-neko-1  | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1  |
neko-neko-1  | 2021-12-04 20:25:47,215 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1  | 2021-12-04 20:25:47,215 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)                          
neko-neko-1  | 2021-12-04 20:25:47,215 DEBG received SIGCLD indicating a child quit
neko-neko-1  | 2021-12-04 20:25:49,219 INFO spawned: 'firefox' with pid 42
neko-neko-1  | 2021-12-04 20:25:49,224 DEBG 'firefox' stdout output:
neko-neko-1  | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1  |
neko-neko-1  | 2021-12-04 20:25:49,280 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1  | 2021-12-04 20:25:49,280 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)                          
neko-neko-1  | 2021-12-04 20:25:49,281 DEBG received SIGCLD indicating a child quit
neko-neko-1  | 2021-12-04 20:25:52,285 INFO spawned: 'firefox' with pid 44
neko-neko-1  | 2021-12-04 20:25:52,289 DEBG 'firefox' stdout output:
neko-neko-1  | <jemalloc>Compile-time page size does not divide the runtime one.
neko-neko-1  | 
neko-neko-1  | 2021-12-04 20:25:52,349 DEBG fd 19 closed, stopped monitoring <POutputDispatcher at 4022202976 for <Subprocess at 4022758816 with name firefox in state STARTING> (stdout)>
neko-neko-1  | 2021-12-04 20:25:52,349 INFO exited: firefox (terminated by SIGSEGV (core dumped); not expected)
neko-neko-1  | 2021-12-04 20:25:52,349 DEBG received SIGCLD indicating a child quit
neko-neko-1  | 2021-12-04 20:25:53,350 INFO gave up: firefox entered FATAL state, too many start retries too quickly

Issues from parent repo

Since parent repository has been archived, this issue tracks all issues that were left open there.

Bugs

  • 67 Minor problems spotted
    • Automatically distributes public IP in SDP (if it fails to get some, then it reaches out to local). Maybe I want to run my container in local environment, where I don't have open ports to outside.
      • Tracked here: #47
    • Add option, if X-Forwarded-Headers should be trusted. (also 85)
    • Password should not be visible in console, or in network tab - at least hashed.
    • Lock room and get disconnected - can't join.
      • Admins can join even locked room.
    • Admins, kick, mute & ban controls are displayed - should be hidden.
    • Usage of adorable avatars - optional.
      • Adorable avatars are not being used.
    • After user is kicked, he joins back with empty name.
  • 115, 110 neko process uses ~80% CPU while idling
    • Because of old images, fixed in new versions.
  • 122 Uncaught exception - load.c(181) : Module not found : -v
    • Not enough information, closed.
  • 37 [BUG]disconnected peer disconnect
    • Not an issue, was just open as discussion.

Features

  • 47, 113, 82 [FEATURE] (i18n) asian language support in browser
  • 118 [FEATURE] 2160p (4K) Support?
  • 114 [FEATURE] persistent cookies
    • Tracked here: #76
  • 103 [FEATURE] ARM64v8 support.
  • 74 [FEATURE] Rich Previews/Image Fetching
  • 69 [FEATURE] disable emotes server wide
  • 77 [FEATURE] Higher quality HLS stream for 'viewers' only
    • Tracked here: #90
  • 54 [FEATURE] RTMP output (publish browser feed to Twitch/Youtube)
    • Implemented as Broadcast function.
  • 48 [ENHANCEMENT] Better/Smoother playback from rtc stream
    • Fixed in #21.
  • 70 [ENHANCEMENT] have the requested controls popup only show once

Questions / Docs

  • 111 [FEATURE] Documentation: Attach a "most optional" reverse proxy settings example
    • Available in readme.
  • 102 [FEATURE] Automatic hcloud Hetzner Deployment Script
    • User was deleted, script is not available anymore.
  • 73 [FEATURE] Detailed instructions on how to add clipboard sync to neko
  • 126 how to make multiuser login
    • Multiple users explained in docs.
  • 87 [Discuss] Restricting what neko can access/host safety discuss
  • 84 [Docs] Missing instruction for docker-compose documentation
    • Added to docs.

[Feature] Allow only supervised access

That means, room can be used only if at least one admin joined. Why? Because of security. Users should not be allowed to control if no admin is present. Of course, this setting should be optional.

If admin leaves the room, it will be locked immediately.

  • Nobody (except admins) can log in.
  • Nobody can take control.

If admin doesn't log in after 5 minutes:

  • All users will be kicked out.

If admin doesn't even come after 10 minutes, neko-rooms will shut down room m1k1o/neko-rooms#28.

[Feature] Kick message

Sometimes you just want to kindy disconnect user. If he sees "you have been kicked" message, that is not really friendly.

[Question] How is setup the project natively rather than inside the docker container ?

Amazing work on this fork !

I have built the client and server successfully.

Client

   ┌────────────────────────────────────────┐
   │                                        │
   │   Serving!                             │
   │                                        │
   │   Local:  http://localhost:5000        │
   │                                        │
   │   Copied local address to clipboard!   │
   │                                        │
   └────────────────────────────────────────┘

Server

   / | / /__  / /______   \    /\
  /  |/ / _ \/ //_/ __ \   )  ( ')
 / /|  /  __/ ,< / /_/ /  (  /  )
/_/ |_/\___/_/|_|\____/    \(__)|
 nurdism/m1k1o server v2.3.0 4410956
10:13PM WRN preflight complete without config file config= debug=false logging=false
10:13PM INF starting neko server service=neko
10:13PM WRN invalid screen option 1280x720@30 module=remote
10:13PM INF webrtc starting ephemeral_port_range=59000-59100 ice_lite=false ice_servers="[{URLs:[stun:stun.l.google.com:19302] Username: Credential:<nil> CredentialType:password}]" module=webrtc nat_ips=2.49.230.55
10:13PM WRN http listening on 127.0.0.1:8080 module=http
10:13PM INF neko ready service=neko

I am unable to login as I am unaware if there is any default screenname and password.

[Feature Request] Retain control after reconnect

If reconnect happens while you are controlling, you loose control. Although, there should be some grace period when user disconnects and his control is taken back.

But since our user diappears on server completly on reconnect, and will be created when he joins again, it would be lot of refactoring (after #48 is finished).

It could be done purely on client, simply storing that information and requesting control again. It could happen, that someone "steals" control while another user is experiencing disconnects. But admin can take his control anyway, so it should not be an issue.

pingAllCandidates called with no candidate pairs

Hi there,

Sorry can't connect to neko.
Running neko from https://hub.docker.com/r/m1k1o/neko

Container output:

neko_1        | 2021-12-03 12:03:04,986 DEBG 'neko' stdout output:
neko_1        | 12:03PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice

docker-compose.yaml

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:latest"
    restart: "unless-stopped"
    shm_size: "2gb"
    ports:
      - "1080:8080"
      - "62000-62100:52000-52100/udp"
    environment:
      NEKO_SCREEN: '1920x1080@30'
      NEKO_PASSWORD: neko
      NEKO_PASSWORD_ADMIN: admin
      NEKO_EPR: 52000-52100
      NEKO_NAT1TO1: 192.168.0.13

Any idea?

Handle better reconnects

Reconnects are annoying. It happens often with weak/instable connections. After reconnect it works again, however, when watching video you miss 3 - 6 seconds.

Reconnects should be better understood, why they happen and what could be done to prevent them. Since I watch video without any visible problems, and after reconnect that video works again, network must be good enough. Maybe some timers are there, that expire or kick user out in some weird edge case scenarios.

Temporary network problems should be handled gracefully. If possible (in Pion).

Move files around

Since original repository got archived, there is no need in preserving original branch and files to be merged:

  • detach fork, make it as standalone repository.
  • change default branch from dev to master.
  • remove folder .docker.
  • rename .m1k1o folder to .docker.
  • remove .devcontainer, since it is not up-to-date anymore.
  • remove .examples, since they are not up-to-date too.
  • refactor docs and put them on some server
    • change references to m1k1o
    • put it on neko.m1k1o.net
    • update content of pages
  • update readme.

Console Interview

Hey Miroslav!

I run a newsletter about open source software and I like to put an interview with one of the developers in each email. Would you be interested in answering a few questions about software development and Neko?

If so, you can send me an email at console . substack @ gmail . com, or just respond to this thread 😀

Disable Chat

Not really an issue but is there a way to disable/lock the chat?

I can't seem to find any doco on any fork to do this.

Thanks

Could not open main display!fatal error

I've just installed this container through Docker on a headless Debian VPS. Every time I start it up I get this error.

It doesn't seem at first glance to have anything to do with my network configuration, but if I'm incorrect to assume this, let me know and I'll provide more information.

[Question] Can't use H264

Hey, thanks for the container. Running into some issues though. I get a pretty annoying stutter with videos, both with VLC and firefox, and can't seem to figure out settings to get completely smooth playback. I figured I'd try x264 encoding to see if that would make it better.

Getting this error:

2021-07-06 22:22:18,848 DEBG 'neko' stdout output:
�[90m2:22AM�[0m �[1m�[31mERR�[0m�[0m message handler has failed �[31merror=�[0m�[31m"signal/answer failed: unable to start track, codec is not supported by remote"�[0m �[36mmodule=�[0mwebsocket

2021-07-06 22:22:34,161 DEBG 'neko' stdout output:
�[90m2:22AM�[0m �[31mWRN�[0m read message error �[31merror=�[0m�[31m"websocket: close 1005 (no status)"�[0m �[36mmodule=�[0mwebsocket

2021-07-06 22:22:34,161 DEBG 'neko' stdout output:
�[90m2:22AM�[0m �[32mINF�[0m Setting new connection state: Closed �[36mmodule=�[0mwebrtc �[36msubsystem=�[0mice
�[90m2:22AM�[0m �[32mINF�[0m peer connection state changed: closed �[36mmodule=�[0mwebrtc �[36msubsystem=�[0mpc
�[90m2:22AM�[0m �[32mINF�[0m Pipelines shutting down... �[36mmodule=�[0mremote
�[90m2:22AM�[0m �[32mINF�[0m peer closed �[36mid=�[0mKK1GCXVq2aktaM-AjmlktKhz5gyAzAvB �[36mmodule=�[0mwebrtc

2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
D: [pulseaudio] source.c: auto_null.monitor: state: RUNNING -> IDLE

2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.

2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
I: [pulseaudio] source-output.c: Freeing output 0 "Record Stream"

2021-07-06 22:22:34,168 DEBG 'pulseaudio' stdout output:
I: [pulseaudio] client.c: Freed 1 "neko"
I: [pulseaudio] protocol-native.c: Connection died.

this is my docker compose:
docker run -d --name='stream' --net='proxynet' -e TZ="America/New_York" -e HOST_OS="Unraid" -e 'NEKO_PASSWORD'='stream' -e 'NEKO_PASSWORD_ADMIN'='&puMS29yJ#uv%d' -e 'NEKO_ICELITE'='true' -e 'NEKO_H264'='true' -e 'NEKO_VP8'='false' -e 'NEKO_VP9'='false' -e 'NEKO_MAX_FPS'='25' -e 'NEKO_EPR'='52000-52100' -e 'NEKO_SCREEN'='1920x1080@30' -p '8080:8080/tcp' -p '52000-52100:52000-52100/udp' -v '/mnt/user/downloads/hardlinks':'/home/neko/archive/':'rw' -v '/mnt/user/temp/hardlinks/':'/home/neko/temp':'rw' --shm-size="2gb" 'm1k1o/neko:vlc'

Any ideas?

A way to have new users unmuted by default?

This would be fantastic because if a user is joining, I'd like to have the option of having the music/show or whatever not being muted by default.

This would also help because sometimes my internet glitches and Neko reloads, which resets it back to muted, requiring me to go to the window and unmute the music again. :/

Custom IP fetching URL

Right now, we use AWS. If I want to use proxy for the whole container, even that request is proxied and as my WebRTC IP is my proxy's IP. There should be ability to set own URL, that can provide current IP.

Blank screen on ARM-based server

Problem: The part where browser should appear is completely blank on arm-chromium and arm-firefox
Operating System: Linux 5.11.0-1019-oracle #20~20.04.1-Ubuntu SMP aarch64
GPU: No
Tested browsers: Google Chrome, Microsoft Edge, Firefox

I also tried different codecs (VP8, VP9, H264) and tried to change STUN server but that didn't help
Tried with and without nginx - still no luck

mbattista's neko behaves the same way

docker-compose.yaml

version: "3.4"
services:
  neko:
    image: "m1k1o/neko:arm-firefox"
    restart: "unless-stopped"
    # increase on rpi's with more then 1gb ram.
    shm_size: "2gb"
    ports:
      - "15824:15824"
      - "59000-59100:59000-59100/udp"
    # this is important since we need a GPU for hardware acceleration alternatively mount the devices into the docker.
    privileged: true
    environment:
      NEKO_SCREEN: '1280x720@30'
      NEKO_PASSWORD: 'neko'
      NEKO_PASSWORD_ADMIN: 'admin'
      NEKO_BIND: :15824
      NEKO_EPR: 59000-59100
      NEKO_ICELITE: 'true' # changing this didnt help

some logs from neko:
https://gist.github.com/Mayzol/f646e37bf7a837795faa3086ed5c4749

oogoogaga

No clipboard

So I have the container succesfully reverse proxy using "Swag/Cloudflare" and I am able to access it at its subdomain "neko.my.domain" and everything works except the clipboard. At first login it does ask for clipboard permission and I allow but it still does not show up only if I access it with internal ip and port.

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name neko.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    # enable for ldap auth, fill in ldap details in ldap.conf
    #include /config/nginx/ldap.conf;

    # enable for Authelia
    #include /config/nginx/authelia-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable the next two lines for ldap auth
        #auth_request /auth;
        #error_page 401 =200 /ldaplogin;

        # enable for Authelia
        #include /config/nginx/authelia-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app 10.1.3.10;
        set $upstream_port 6530;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

    }
}

[BUG] Using HAProxy to reverse-proxy is disconnecting user after some time

Hey, i'm using HAProxy to redirect neko.domain to my neko server.

After a while, it reconnect me,
image

My server is accessible from anywhere, if you want to go deeper and test by yourself, ask me in Discord : RisedSky#4841

Logs:

6:31PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=connected module=webrtc
6:31PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:31PM INF peer connected id=UV0F6et3-SymJCCqoNPWNvd5inrjr0Kk module=webrtc
6:31PM WRN Failed to accept RTP stream is already closed module=webrtc subsystem=pc
6:31PM WRN Failed to accept RTCP stream is already closed module=webrtc subsystem=pc
6:31PM INF Setting new connection state: Closed module=webrtc subsystem=ice
6:31PM INF peer connection state changed: closed module=webrtc subsystem=pc
6:31PM INF Pipelines shutting down... module=remote
6:31PM INF ICE connection state changed: closed module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=closed module=webrtc
6:31PM INF peer closed id=UV0F6et3-SymJCCqoNPWNvd5inrjr0Kk module=webrtc
6:31PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=128000 ! appsink name=appsink" module=remote screen_resolution=1280x720@30 video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! vp8enc target-bitrate=3072000 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=18432 buffer-initial-size=12288 buffer-optimal-size=15360 keyframe-max-dist=180 min-quantizer=3 max-quantizer=40 ! appsink name=appsink"
6:31PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
6:31PM INF signaling state changed to stable module=webrtc subsystem=pc
6:31PM INF Setting new connection state: Checking module=webrtc subsystem=ice
6:31PM INF ICE connection state changed: checking module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=checking module=webrtc
6:31PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
6:31PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:52023->[2a00:1450:400c:c0a::7f]:19302: sendto: cannot assign requested address
 module=webrtc subsystem=ice
6:31PM INF sent all ICECandidates module=webrtc
6:31PM INF Setting new connection state: Connected module=webrtc subsystem=ice
6:31PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:31PM INF connection state has changed connection_state=connected module=webrtc
6:31PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:31PM INF peer connected id=lGgiyDtqyEvMuOqh8JVUgvAbas9c4cPF module=webrtc
6:33PM WRN Failed to accept RTP stream is already closed module=webrtc subsystem=pc
6:33PM WRN Failed to accept RTCP stream is already closed module=webrtc subsystem=pc
6:33PM INF Setting new connection state: Closed module=webrtc subsystem=ice
6:33PM INF peer connection state changed: closed module=webrtc subsystem=pc
6:33PM INF Pipelines shutting down... module=remote
6:33PM INF ICE connection state changed: closed module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=closed module=webrtc
6:33PM INF peer closed id=lGgiyDtqyEvMuOqh8JVUgvAbas9c4cPF module=webrtc
6:33PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=128000 ! appsink name=appsink" module=remote screen_resolution=1280x720@30 video_codec=VP8 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=25/1 ! videoconvert ! queue ! vp8enc target-bitrate=3072000 cpu-used=4 end-usage=cbr threads=4 deadline=1 undershoot=95 buffer-size=18432 buffer-initial-size=12288 buffer-optimal-size=15360 keyframe-max-dist=180 min-quantizer=3 max-quantizer=40 ! appsink name=appsink"
6:33PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
6:33PM INF signaling state changed to stable module=webrtc subsystem=pc
6:33PM INF Setting new connection state: Checking module=webrtc subsystem=ice
6:33PM INF ICE connection state changed: checking module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=checking module=webrtc
6:33PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
6:33PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:52074->[2a00:1450:400c:c0a::7f]:19302: sendto: cannot assign requested address
 module=webrtc subsystem=ice
6:33PM INF sent all ICECandidates module=webrtc
6:33PM INF Setting new connection state: Connected module=webrtc subsystem=ice
6:33PM INF ICE connection state changed: connected module=webrtc subsystem=pc
6:33PM INF connection state has changed connection_state=connected module=webrtc
6:33PM INF peer connection state changed: connected module=webrtc subsystem=pc
6:33PM INF peer connected id=CJcEYMeyTFMPsVyWTlH81GaRtGQI3lpa module=webrtc

My docker-compose file :

root@debian-ptero:~/neko# cat docker-compose.yaml
version: "3.4"
services:
  neko:
#    image: "m1k1o/neko:google-chrome"
#marche
#    image: "m1k1o/neko:chromium"
#marche
    image: "m1k1o/neko:ungoogled-chromium"
#marche
    restart: "unless-stopped"
    shm_size: "2gb"
    ports:
      - "9090:8080"
      - "52000-52100:52000-52100/udp"
    cap_add:
      - SYS_ADMIN
    environment:
      NEKO_SCREEN: '1280x720@30'
      NEKO_PASSWORD: XYZ
      NEKO_PASSWORD_ADMIN: XYZ
      NEKO_EPR: 52000-52100
      NEKO_NAT1TO1: CLASS C ADRESS

[Issue] disconnected: Error: peer disconnected

Hi, I recently hosted Neko on my personal VPS using docker-compose and Nginx as a reverse proxy. But whenever I try to log in using my admin/user password I get an error saying Error: peer disconnected.

I am using m1k1o/neko:latest as my docker image

Upstream Neko has no issues connecting. I tried connecting directly to Neko using the VPS IP address and port but that didn't work either, which means that the problem isn't with my Nginx config (I am anyway still attaching my conf below)

I tried connecting from Google Chrome on macOS Big Sur. One of my friends tried connecting from Windows and faced the same problem.

Neko frontend console: log

docker-compose.yml :

version: "3"
services:
  neko:
    image: m1k1o/neko:latest
    ports:
      - '8003:8080'
      - '59000-60000:59000-60000'
    shm_size: "4gb"
    environment:
      DISPLAY: :99.0
      NEKO_SCREEN: '1920x1080@30'
      NEKO_PASSWORD: userPassword
      NEKO_PASSWORD_ADMIN: adminPassword
      NEKO_BIND: :8080
      NEKO_EPR: 59000-60000
      NEKO_VP9: 'true'
      NEKO_MAX_FPS: 0
      NEKO_AUDIO_BITRATE: 256

/etc/nginx/sites-available/reverse-proxy.conf:

server {
	listen 443 ssl http2;

	server_name				something.example.com www.something.example.com;
	location / {
		proxy_http_version 		1.1;
		proxy_set_header		Upgrade $http_upgrade;
		proxy_set_header		Connection "upgrade";
		proxy_set_header		Host $host;
		proxy_set_header		X-Real-IP $remote_addr;
		proxy_set_header		X-Forwarded-For $remote_addr;
		proxy_set_header		X-Forwarded-Host $host;
		proxy_set_header		X-Forwarded-Port $server_port;
		proxy_set_header         	X-Forwarded-Protocol $scheme;

		proxy_connect_timeout 		36000s;
		proxy_read_timeout		36000s;
		proxy_send_timeout		36000s;

		send_timeout			36000s;
		proxy_request_buffering		off;
		proxy_pass			http://127.0.0.1:8003;
	}
	client_max_body_size			0;
}

Neko logs (when trying to connect):

neko_1  | 2021-05-22 16:13:42,365 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF Pipelines starting... audio_codec=Opus audio_device=auto_null.monitor audio_pipeline_src="pulsesrc device=auto_null.monitor ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=256000 ! appsink name=appsink" module=remote screen_resolution=1920x1080@30 video_codec=VP9 video_display=:99.0 video_pipeline_src="ximagesrc display-name=:99.0 show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! vp9enc target-bitrate=3072000 cpu-used=-5 threads=4 deadline=1 keyframe-max-dist=30 auto-alt-ref=true ! appsink name=appsink"
neko_1  |
neko_1  | 2021-05-22 16:13:42,368 DEBG 'pulseaudio' stdout output:
neko_1  | I: [pulseaudio] client.c: Created 2 "Native client (UNIX socket client)"
neko_1  | I: [pulseaudio] protocol-native.c: Client authenticated anonymously.
neko_1  |
neko_1  | 2021-05-22 16:13:42,369 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] protocol-native.c: Protocol version: remote 32, local 32
neko_1  | D: [pulseaudio] protocol-native.c: SHM possible: yes
neko_1  | D: [pulseaudio] protocol-native.c: Negotiated SHM: yes
neko_1  | D: [pulseaudio] protocol-native.c: Memfd possible: yes
neko_1  | D: [pulseaudio] protocol-native.c: Negotiated SHM type: shared memfd
neko_1  | D: [pulseaudio] memblock.c: Using shared memfd memory pool with 1024 slots of size 64.0 KiB each, total size is 64.0 MiB, maximum usable slot size is 65472
neko_1  | D: [pulseaudio] srbchannel.c: SHM block is 65472 bytes, ringbuffer capacity is 2 * 32712 bytes
neko_1  | D: [pulseaudio] protocol-native.c: Enabling srbchannel...
neko_1  |
neko_1  | 2021-05-22 16:13:42,369 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] protocol-native.c: Client enabled srbchannel.
neko_1  |
neko_1  | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] source-output.c: Negotiated format: pcm, format.sample_format = "\"s16le\""  format.rate = "48000"  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
neko_1  | I: [pulseaudio] source-output.c: Trying to change sample rate
neko_1  | D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
neko_1  | D: [pulseaudio] resampler.c: Resampler:
neko_1  |
neko_1  | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] resampler.c:   rate 44100 -> 48000 (method speex-float-1)
neko_1  | D: [pulseaudio] resampler.c:   format s16le -> s16le (intermediate float32le)
neko_1  | D: [pulseaudio] resampler.c:   channels 2 -> 2 (resampling 2)
neko_1  | I: [pulseaudio] speex.c: Choosing speex quality setting 1.
neko_1  | D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
neko_1  | D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
neko_1  | I: [pulseaudio] source-output.c: Created output 2 "Record Stream" on auto_null.monitor with sample spec s16le 2ch 48000Hz and channel map front-left,front-right
neko_1  | I: [pulseaudio] source-output.c:     media.name = "Record Stream"
neko_1  | I: [pulseaudio] source-output.c:     application.name = "neko"
neko_1  | I: [pulseaudio] source-output.c:     native-protocol.peer = "UNIX socket client"
neko_1  | I: [pulseaudio] source-output.c:     native-protocol.version = "32"
neko_1  | I: [pulseaudio] source-output.c:     application.process.id = "15"
neko_1  | I: [pulseaudio] source-output.c:     application.process.user = "neko"
neko_1  | I: [pulseaudio] source-output.c:     application.process.host = "d571df658252"
neko_1  | I: [pulseaudio] source-output.c:     application.process.binary = "neko"
neko_1  | I: [pulseaudio] source-output.c:     application.language = "C"
neko_1  | I: [pulseaudio] source-output.c:     window.x11.display = ":99.0"
neko_1  | I: [pulseaudio] source-output.c:     application.process.machine_id = "16d0468f31e32cbbc5e3e0e1e1a942bf"
neko_1  |
neko_1  | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] memblockq.c: memblockq requested: maxlength=38400, tlength=0, base=4, prebuf=1, minreq=0 maxrewind=0
neko_1  | D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=38400, tlength=38400, base=4, prebuf=4, minreq=4 maxrewind=0
neko_1  |
neko_1  | 2021-05-22 16:13:42,372 DEBG 'pulseaudio' stdout output:
neko_1  | I: [pulseaudio] protocol-native.c: Final latency 20.00 ms = 10.00 ms + 10.00 ms
neko_1  |
neko_1  | 2021-05-22 16:13:42,373 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] source.c: Suspending source auto_null.monitor due to changing the sample rate.
neko_1  | D: [pulseaudio] source.c: auto_null.monitor: state: IDLE -> RUNNING
neko_1  |
neko_1  | 2021-05-22 16:13:42,375 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF signaling state changed to have-local-offer module=webrtc subsystem=pc
neko_1  |
neko_1  | 2021-05-22 16:13:42,377 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN could not get server reflexive address udp6 stun:stun.l.google.com:19302: write udp6 [::]:59150->[2607:f8b0:400d:c0e::7f]:19302: sendto: cannot assign requested address
neko_1  |  module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:42,391 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF sent all ICECandidates module=webrtc
neko_1  |
neko_1  | 2021-05-22 16:13:42,692 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF signaling state changed to stable module=webrtc subsystem=pc
neko_1  |
neko_1  | 2021-05-22 16:13:42,692 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF Setting new connection state: Checking module=webrtc subsystem=ice
neko_1  | 4:13PM INF ICE connection state changed: checking module=webrtc subsystem=pc
neko_1  | 4:13PM INF connection state has changed connection_state=checking module=webrtc
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:42,893 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:43,093 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:43,326 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:43,494 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:43,695 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:43,896 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:44,096 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:44,297 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:44,498 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:44,699 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:44,899 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:45,100 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:45,300 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:45,501 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:45,702 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:45,903 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:46,104 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:46,305 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:46,507 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:46,708 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:46,909 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:47,110 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:47,312 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:47,513 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:47,713 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:47,914 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:48,115 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:48,316 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:48,516 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:48,717 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:48,918 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:49,119 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:49,320 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:49,521 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:49,722 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:49,923 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:50,124 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:50,326 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:50,527 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:50,728 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:50,929 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:51,130 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:51,331 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:51,532 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:51,733 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:51,933 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:52,133 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:52,334 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:52,534 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:52,735 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:52,936 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:53,136 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:53,337 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:53,602 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:53,739 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:53,940 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:54,140 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:54,341 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:54,542 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN pingAllCandidates called with no candidate pairs. Connection is not possible yet. module=webrtc subsystem=ice
neko_1  |
neko_1  | 2021-05-22 16:13:54,744 DEBG 'neko' stdout output:
neko_1  | 4:13PM INF Setting new connection state: Failed module=webrtc subsystem=ice
neko_1  | 4:13PM INF ICE connection state changed: failed module=webrtc subsystem=pc
neko_1  | 4:13PM INF peer connection state changed: failed module=webrtc subsystem=pc
neko_1  |
neko_1  | 2021-05-22 16:13:54,744 DEBG 'neko' stdout output:
neko_1  | 4:13PM WRN peer failed id=3dtrdyPJ9dwvuDbtd_ApuP_NJr0FPVLF module=webrtc
neko_1  | 4:13PM INF connection state has changed connection_state=failed module=webrtc
neko_1  | 4:13PM INF Setting new connection state: Closed module=webrtc subsystem=ice
neko_1  | 4:13PM INF peer connection state changed: closed module=webrtc subsystem=pc
neko_1  | 4:13PM INF Pipelines shutting down... module=remote
neko_1  | 4:13PM WRN Failed to start manager: connecting canceled by caller module=webrtc subsystem=pc
neko_1  | 4:13PM INF peer closed id=3dtrdyPJ9dwvuDbtd_ApuP_NJr0FPVLF module=webrtc
neko_1  | 4:13PM INF ICE connection state changed: closed module=webrtc subsystem=pc
neko_1  | 4:13PM WRN Failed to start SCTP: DTLS not established module=webrtc subsystem=pc
neko_1  | 4:13PM INF connection state has changed connection_state=closed module=webrtc
neko_1  | 4:13PM WRN undeclaredMediaProcessor failed to open SrtcpSession: the DTLS transport has not started yet module=webrtc subsystem=pc
neko_1  | 4:13PM WRN undeclaredMediaProcessor failed to open SrtpSession: the DTLS transport has not started yet module=webrtc subsystem=pc
neko_1  |
neko_1  | 2021-05-22 16:13:54,767 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] source.c: auto_null.monitor: state: RUNNING -> IDLE
neko_1  |
neko_1  | 2021-05-22 16:13:54,768 DEBG 'pulseaudio' stdout output:
neko_1  | D: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
neko_1  | I: [pulseaudio] source-output.c: Freeing output 2 "Record Stream"
neko_1  |
neko_1  | 2021-05-22 16:13:54,768 DEBG 'pulseaudio' stdout output:
neko_1  | I: [pulseaudio] client.c: Freed 2 "neko"
neko_1  | I: [pulseaudio] protocol-native.c: Connection died.
neko_1  |

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.