# Configuration Config values can be set using three methods, sorted on this page by priority. Example, setting `nat1to1` variable: - As env variable: `NEKO_NAT1TO1=` - As argument: `--nat1to1=` - In YAML config file: ```yaml nat1to1: ``` ## Environment variables #### `NEKO_SCREEN`: - Resolution after startup. Only Admins can change this later. - e.g. `1920x1080@30` #### `NEKO_PASSWORD`: - Password for the user login. - e.g. `user_password` #### `NEKO_PASSWORD_ADMIN`: - Password for the admin login. - e.g. `admin_password` #### `NEKO_CONTROL_PROTECTION`: - Control protection means, users can gain control only if at least one admin is in the room. - e.g. `false` #### `NEKO_IMPLICIT_CONTROL`: - If enabled members can gain control implicitly, they don't need to request control. - e.g. `false` #### `NEKO_LOCKS`: - Resources, that will be locked when starting, separated by whitespace. - Currently supported: - `control` - `login` - `file_transfer` - e.g. `control` ### WebRTC #### `NEKO_EPR`: - For WebRTC needed range of UDP ports. - e.g. `52000-52099` #### `NEKO_UDPMUX`: - Alternative to epr with only one UDP port. - e.g. `52100` #### `NEKO_TCPMUX`: - Use TCP connection, meant as fallback for UDP. - e.g. `52100` #### `NEKO_NAT1TO1`: - IP of the server that will be sent to client, if not specified, public IP is automatically resolved. - e.g. `10.0.0.1` #### `NEKO_IPFETCH`: - Automatically fetch IP address from given URL when `nat1to1` is not specified. - e.g. `http://checkip.amazonaws.com` #### `NEKO_ICELITE`: - Use the ice lite protocol. - e.g. `false` #### `NEKO_ICESERVER`: - Describes a single STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer (simple usage for server without authentication). - e.g. `stun:stun.l.google.com:19302` #### `NEKO_ICESERVERS`: - Describes multiple STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer. - e.g. `[{"urls": ["turn:turn.example.com:19302", "stun:stun.example.com:19302"], "username": "name", "credential": "password"}, {"urls": ["stun:stun.example2.com:19302"]}]` - [More information](https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer) ### Video #### `NEKO_VIDEO_CODEC`: - vp8 *(default encoder)* - vp9 *(parameter not optimized yet)* - h264 *(second best option)* #### `NEKO_VIDEO_BITRATE`: - Bitrate of the video stream in kb/s. - e.g. 3500 #### `NEKO_VIDEO`: - Makes it possible to create custom gstreamer video pipeline. With this you could find the best quality for your CPU. - Installed are - `gstreamer1.0-plugins-base` - `gstreamer1.0-plugins-good` - `gstreamer1.0-plugins-bad` - `gstreamer1.0-plugins-ugly` - e.g. `ximagesrc display-name=%s show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! video/x-raw,format=NV12 ! x264enc threads=4 bitrate=3500 key-int-max=60 vbv-buf-capacity=4000 byte-stream=true tune=zerolatency speed-preset=veryfast ! video/x-h264,stream-format=byte-stream` #### `NEKO_MAX_FPS`: - The resulting stream frames per seconds should be capped *(0 for uncapped)*. - e.g. `0` #### `NEKO_HWENC`: - Use hardware accelerated encoding, for now supported only `VAAPI`. - e.g. `VAAPI` ### Audio #### `NEKO_AUDIO_CODEC`: - opus *(default encoder)* - g722 - pcmu - pcma #### `NEKO_AUDIO_BITRATE`: - Bitrate of the audio stream in kb/s. - e.g. `196` #### `NEKO_AUDIO`: - Makes it possible to create custom gstreamer audio pipeline, same as for video. e.g. `pulsesrc device=%s ! audio/x-raw,channels=2 ! audioconvert ! opusenc bitrate=128000` ### Broadcast #### `NEKO_BROADCAST_PIPELINE`: - Makes it possible to create custom gstreamer pipeline used for broadcasting, strings `{url}`, `{device}` and `{display}` will be replaced. #### `NEKO_BROADCAST_URL`: - Set a default URL for broadcast streams. Setting this value will automatically enable broadcasting when n.eko starts. It can be disabled/changed later by admins in the GUI. - e.g. `rtmp://:1935/ingest/` ### Server #### `NEKO_BIND`: - Address/port/socket where neko binds to *(default 127.0.0.1:8080)*. - e.g. `:8080` #### `NEKO_CERT`: - Path to the SSL-Certificate. - e.g. `/certs/cert.pem` #### `NEKO_KEY`: - Path to the SSL-Certificate private key. - e.g. `/certs/key.pem` #### `NEKO_PROXY`: - Enable reverse proxy mode, so that neko trusts `X-Forwarded-For` headers. - e.g. `false` #### `NEKO_PATH_PREFIX`: - Path prefix for HTTP requests. - e.g. `/neko/` #### `NEKO_CORS`: - Cross origin request sharing, whitespace separated list of allowed hosts, `*` for all. - e.g. `127.0.0.1 neko.example.com` ### File Transfer #### `NEKO_FILE_TRANSFER_ENABLED`: - Enable file transfer feature. - e.g. `true` #### `NEKO_FILE_TRANSFER_PATH`: - Path where files will be transferred between the host and users. By default, this is `/home/neko/Downloads`. If the path doesn't exist, it will be created. - e.g. `/home/neko/Desktop` ### Expert settings #### `NEKO_DISPLAY`: - XDisplay to capture. #### `NEKO_DEVICE`: - Audio device be to captured. #### `NEKO_STATIC`: - Path to neko client files to serve. ## Arguments You can execute `neko serve --help` to see available arguments. ``` Usage: neko serve [flags] Flags: --audio string audio codec parameters to use for streaming --audio_bitrate int audio bitrate in kbit/s (default 128) --audio_codec string audio codec to be used (default "opus") --bind string address/port/socket to serve neko (default "127.0.0.1:8080") --broadcast_pipeline string custom gst pipeline used for broadcasting, strings {url} {device} {display} will be replaced --broadcast_url string URL for broadcasting, setting this value will automatically enable broadcasting --cert string path to the SSL cert used to secure the neko server --control_protection control protection means, users can gain control only if at least one admin is in the room --cors strings list of allowed origins for CORS (default [*]) --device string audio device to capture (default "audio_output.monitor") --display string XDisplay to capture (default ":99.0") --epr string limits the pool of ephemeral ports that ICE UDP connections can allocate from (default "59000-59100") --file_transfer_enabled enable file transfer feature (default false) --file_transfer_path string path to use for file transfer (default "/home/neko/Downloads") --g722 DEPRECATED: use audio_codec --h264 DEPRECATED: use video_codec -h, --help help for serve --hwenc string use hardware accelerated encoding --icelite configures whether or not the ice agent should be a lite agent --iceserver strings describes a single STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer (default [stun:stun.l.google.com:19302]) --iceservers string describes a single STUN and TURN server that can be used by the ICEAgent to establish a connection with a peer --implicit_control if enabled members can gain control implicitly --ipfetch string automatically fetch IP address from given URL when nat1to1 is not present (default "http://checkip.amazonaws.com") --key string path to the SSL key used to secure the neko server --locks strings resources, that will be locked when starting (control, login) --max_fps int maximum fps delivered via WebRTC, 0 is for no maximum (default 25) --nat1to1 strings sets a list of external IP addresses of 1:1 (D)NAT and a candidate type for which the external IP address is used --opus DEPRECATED: use audio_codec --password string password for connecting to stream (default "neko") --password_admin string admin password for connecting to stream (default "admin") --path_prefix string path prefix for HTTP requests (default "/") --pcma DEPRECATED: use audio_codec --pcmu DEPRECATED: use audio_codec --proxy enable reverse proxy mode --screen string default screen resolution and framerate (default "1280x720@30") --static string path to neko client files to serve (default "./www") --tcpmux int single TCP mux port for all peers --udpmux int single UDP mux port for all peers --video string video codec parameters to use for streaming --video_bitrate int video bitrate in kbit/s (default 3072) --video_codec string video codec to be used (default "vp8") --vp8 DEPRECATED: use video_codec --vp9 DEPRECATED: use video_codec Global Flags: --config string configuration file path -d, --debug enable debug mode -l, --logs save logs to file ``` ## Config file You can mount YAML config file to docker container on this path `/etc/neko/neko.yaml` and store your configuration there. Config uses the keys from arguments, that can be viewed in program's help output. Example (with just some of the available arguments): ```yaml # audio bitrate in kbit/s audio_bitrate: 128 # video bitrate in kbit/s video_bitrate: 3072 # maximum fps delivered via WebRTC, 0 is for no maximum max_fps: 25 # password for connecting to stream password: "neko" # admin password for connecting to stream password_admin: "admin" # default screen resolution and framerate screen: "1280x720@30" # limits the pool of ephemeral ports that ICE UDP connections can allocate from epr: "59000-59100" ```