mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
240 lines
9.9 KiB
Markdown
240 lines
9.9 KiB
Markdown
# Configuration
|
|
|
|
Config values can be set using three methods, sorted on this page by priority.
|
|
|
|
Example, setting `nat1to1` variable:
|
|
- As env variable: `NEKO_NAT1TO1=<ip>`
|
|
- As argument: `--nat1to1=<ip>`
|
|
- In YAML config file:
|
|
```yaml
|
|
nat1to1: <ip>
|
|
```
|
|
|
|
## 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 needd to request control.
|
|
- e.g. `false`
|
|
#### `NEKO_LOCKS`:
|
|
- Resources, that will be locked when starting, separated by whitespace.
|
|
- Currently supported:
|
|
- `control`
|
|
- `login`
|
|
- 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://<your-server>:1935/ingest/<stream-key>`
|
|
|
|
### 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/`
|
|
|
|
### File Transfer
|
|
|
|
#### `NEKO_FILE_TRANSFER`:
|
|
- Enable file transfer for admins at start
|
|
- e.g. `1`
|
|
#### `NEKO_UNPRIV_FILE_TRANSFER`:
|
|
- Enable file transfer for all users at start. Ignored if NEKO_FILE_TRANSFER not enabled.
|
|
- e.g. `1`
|
|
#### `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
|
|
--device string audio device to capture (default "auto_null.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 allow file transfer for admins
|
|
--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
|
|
--unpriv_file_transfer allow file transfer for non admins
|
|
--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"
|
|
```
|