Service Configuration
Print
All configuration is done through /opt/o11/o11.cfg.
After making changes, restart the service:
systemctl restart o11
Top-Level Options
| Option |
Type |
Description |
Default |
Port |
number |
HTTP port to listen on |
80 |
Service |
object |
Engine options (see below) |
{} |
Server |
string |
License server address. Do not change unless instructed. |
— |
Users |
array |
Admin user accounts |
— |
Users
Each entry in the Users array has the following fields:
| Field |
Description |
Username |
Login name |
Password |
SHA-256 hash of the password |
IsAdmin |
Admin privileges (true/false) |
HasWebAccess |
Can access web UI (true/false) |
ProviderIds |
Array of provider IDs the user can access (empty = all) |
To generate a password hash: echo -n "yourpassword" | sha256sum
Service Options
The Service object passes options to the o11 engine. Values are mapped by type:
| Type |
Example |
Result |
| true |
"headless": true |
Flag enabled |
| false |
"keep": false |
Flag omitted |
| string |
"keys": "keys.txt" |
Option with value |
| number |
"v": 3 |
Option with numeric value |
| array |
"H": ["k:v", "k:v"] |
Option repeated per entry |
General
| Option |
Description |
Default |
b |
HTTP bind address |
0.0.0.0 |
baseurl |
HTTP base URL prefix |
— |
path |
Working directory (subdirectories created here) |
— |
headless |
Disable the web UI |
false |
legacyui |
Use the legacy web UI |
false |
https |
Use HTTPS (requires server.crt and server.key in /opt/o11/) |
false |
stdout |
Log to stdout instead of file |
false |
Authentication
| Option |
Description |
Default |
user |
Static admin username |
— |
password |
Static admin password |
— |
jwtsecret |
JWT signing secret (random if empty) |
— |
allow |
Comma-separated IPs that skip authentication |
— |
Streaming
| Option |
Description |
Default |
streambind |
Streaming bind address |
0.0.0.0 |
streamport |
Separate streaming port (0 = use HTTP port) |
0 |
noautostart |
Disable channel autostart on boot |
false |
noramfs |
Allow non-RAMFS for ./hls/live |
false |
pipeoutputcmd |
Pipe output command format |
tsplay -stdin %s |
plstreamname |
Playlist stream name format (%p = provider, %s = stream) |
[%p] %s |
defaultprovid |
Default provider ID for the UI |
— |
debugspeed |
Print fragment download queue info |
false |
EPG
| Option |
Description |
Default |
epgbind |
EPG bind address |
0.0.0.0 |
epgport |
EPG port (0 = disabled) |
0 |
Logging
| Option |
Description |
Default |
v |
Log level: 0=error, 1=warning, 2=info, 3=debug, 4=verbose, 5=trace |
2 |
V |
Enable special logs for modules (e.g. subtitles) |
— |
logsize |
Max log file size in MB |
100 |
logscount |
Number of log backups to keep |
7 |
logtomain |
Copy stream logs to main log |
false |
logtomainonly |
Only log streams to main log |
false |
VOD Downloader
| Option |
Description |
Default |
manifest |
Convert this manifest to MP4 then exit |
— |
audio |
Audio track indexes (comma-separated) |
— |
video |
Video track index |
— |
subs |
Subtitle indexes (all or comma-separated) |
— |
extrasubs |
Extra subtitle files (array) |
[] |
maxsegments |
Max segments to download (0 = all) |
0 |
dashperiod |
DASH period index (-1 = non-ad periods, -2 = auto) |
-2 |
H |
Custom HTTP headers (array) |
[] |
key |
kid:key decryption pairs (array) |
[] |
keys |
Path to kid:key list file |
keys.txt |
a |
Custom User-Agent string |
Chrome UA |
doh |
DNS-over-HTTPS URL |
— |
novodmetadata |
Disable VOD track metadata |
false |
keep |
Keep temporary media files (debug only) |
false |
VOD CDM
| Option |
Description |
Default |
usecdm |
Enable CDM script |
false |
cdmmode |
CDM mode: internal or external |
internal |
cdmtype |
DRM type: widevine, playready, or verimatrix |
widevine |
cdmparams |
Extra CDM script parameters |
— |
script |
CDM script name |
auto |
Paths
| Option |
Description |
Default |
f |
FFmpeg binary path |
ffmpeg |
tsplay |
tsplay binary path |
tsplay |
providers |
Providers directory |
providers/ |
rec |
Recordings config file |
o11-rec.cfg |
Advanced
| Option |
Description |
Default |
flushperiod |
Seconds between config flush to file (0 = disabled) |
300 |
replay |
Local stream path to replay |
— |
replaymode |
Replay mode: ffmpeg or internalremuxer |
internalremuxer |
Example Configuration
"Service": {
"headless": true,
"v": 3,
"b": "0.0.0.0",
"allow": "192.168.1.0/24",
"keys": "keys.txt",
"https": false,
"epgport": 8081,
"logsize": 200,
"logscount": 14,
"H": [
"X-Forwarded-For: 1.2.3.4",
"Authorization: Bearer mytoken"
]
}
Common Tasks
| Task |
Configuration |
| Change the port |
Set "Port": 8080 |
| Enable HTTPS |
Set "https": true in Service, place server.crt and server.key in /opt/o11/ |
| Run headless (no UI) |
Set "headless": true in Service |
| Increase log verbosity |
Set "v": 4 (debug) or "v": 5 (trace) in Service |
| Add custom HTTP headers |
"H": ["Authorization: Bearer token"] in Service |
| EPG on separate port |
Set "epgport": 8081 in Service |
| Allow IP to skip auth |
Set "allow": "10.0.0.5" in Service |
Was this answer helpful?