Liveman (Live777 Manager)
Live777 Cluster manager.
If I have so many servers (live777 core cluster), I need this manage them all. Liveman also provides centralized recording index management and playback proxy services for the entire cluster.
Database Configuration
Liveman stores the recording index (mapping stream + date → mpd_path) in a database. Migrations run automatically at startup.
- Default driver: SQLite (embedded)
- Supported drivers: SQLite, PostgreSQL (via SeaORM
DATABASE_URL)
[database]
# Default database URL (SQLite)
# Environment variable: DATABASE_URL
# Default value if not set: sqlite://./liveman.db
url = "sqlite://./liveman.db?mode=rwc"
# Maximum number of database connections
# Default: 10
max_connections = 10
# Connection timeout in seconds
# Default: 30
connect_timeout = 30Example for PostgreSQL
[database]
url = "postgresql://user:password@localhost:5432/live777"
max_connections = 10
connect_timeout = 30Recording Index and Storage
The recording system stores the index (date-based manifest location) in the database while keeping the actual media files in the configured storage backend (filesystem or S3).
Liveman also exposes a storage API used by Liveion's async upload queue (S3 only):
POST /api/storage/presignwith{ "method": "PUT", "path": "object", "ttl_seconds": 300 }— generates a presigned URL; requires S3GET /api/storage/ping— checks storage availability
Recording Index Schema
Table: recordings (auto-created by migrations)
- id: UUID, primary key
- stream: String, stream identifier
- year: Integer
- month: Integer
- day: Integer
- mpd_path: String, path to the manifest within storage
- created_at: Timestamp with time zone
- updated_at: Timestamp with time zone
Unique index: (stream, year, month, day)
Authentication
No Authentication
References: live777#Authentication/No Authentication
Bearer token
References: live777#Authentication/Bearer token
JWT(JSON Web Token)
References: live777#Authentication/JWT(JSON Web Token)
Username/password
Login to dashboard, manager cluster and stream using username/password
[auth]
Admin Dashboard Accounts
[[auth.accounts]]
username = "live777"
password = "live777"
[[auth.accounts]]
username = "live777-2"
password = "live777-2"Extra IceServers
This merge all iceServers in WHIP/WHEP
NOTE:
This only work WHIP/WHEP Client
The WHIP/WHEP Server don't support trickle ICE. If Server use a lot ice is to slow
If don't need upstream ice_servers, You can use override_upstream_ice_servers = true for drop
[extra_ice]
# When WHIP/WHEP use liveman proxy
# liveman override upstream liveion http header link ice_servers
override_upstream_ice_servers = falseStatic
Look like live777 config [ice_servers]
[[extra_ice.ice_servers]]
urls = [
"stun:stun.22333.fun",
"stun:cn.22333.fun",
"stun:stun.l.google.com:19302",
]
[[extra_ice.ice_servers]]
urls = [ "turn:turn.22333.fun", "turn:cn.22333.fun" ]
username = "live777"
credential = "live777"Coturn
In production environment, We for each session use different turn username / password
NOTE:
Coturn --use-auth-secret and --lt-cred-mech is conflict
[extra_ice.coturn]
# Coturn must use: --use-auth-secret
# The secret is: --static-auth-secret=live777
secret = "live777"
urls = [
"stun:coturn.22333.fun:3478",
"turn:coturn.22333.fun:3478?transport=udp",
"turn:coturn.22333.fun:3478?transport=tcp",
]
ttl = 3600Cloudflare
Use Cloudflare turn servers
[extra_ice.cloudflare]
# https://developers.cloudflare.com/realtime/turn/generate-credentials/
key_id = ""
api_token = ""
ttl = 3600Node Status Updates
Liveman can receive Liveion stream status via push instead of relying solely on polling.
SSE (for static/manual nodes)
For every node configured under [[nodes]], Liveman automatically opens an SSE connection to the Liveion /api/sse/streams endpoint and updates its local storage when stream state changes.
net4mqtt xdata (for net4mqtt-discovered nodes)
When net4mqtt is enabled, each Liveion node periodically pushes a stream snapshot through xdata with key streams. Liveman decodes it and updates the corresponding node entry.
Cluster
Cluster mode must liveman. We can use net4mqtt extra network
Verge
We support cloud and verge mix cluster