Vivoh OnTime Server
mkdir docker
mkdir docker/certs
mv nec-dev.pem docker/certs/all.pem
sudo apt update && sudo apt install -y docker.io docker-compose postgresql-client unzip
cd docker
sudo mkdir -p $HOME/docker/media && sudo chmod 777 $HOME/docker/media && sudo mount -t tmpfs -o size=4096m videoramdisk $HOME/docker/media
mkdir -p pb_data
mkdir -p docker-models
wget https://releases.vivoh.com/binaries/ontime/2023_03/ontime-docker-compose-release-2.3.0.13-d251d09.zip
unzip ontime-docker-compose-release-2.3.0.13-d251d09.zip
mv env/* .
perl -pi.bak -e 's/zzz/nec-dev/g' *.env
vi shared.env
openssl genrsa -out private-key.pem 2048
openssl rsa -in private-key.pem -out public-key.pem -outform PEM -pubout
echo "JWT_NAME=a" >> shared.env
echo "JWT_SECRET="$(tr -dc A-Za-z0-9 > shared.env
echo 'PRIVATE_KEY='$(cat private-key.pem | base64 -w 0) >> shared.env
echo 'PUBLIC_KEY='$(cat public-key.pem | base64 -w 0) >> shared.env
echo 'JWT_PRIVATE_KEYS={"a": "'$(cat private-key.pem | base64 -w 0)'"}' >> auth.env
echo 'JWT_PUBLIC_KEYS={"a": "'$(cat public-key.pem | base64 -w 0)'"}' >> auth.env
cat shared.env
vi scheduler.env
vi admin.env
vi ai.env
sudo docker-compose up -d postgres
POSTGRES_IP=172.18.0.2 ./migrate-scheduler-1.sh
OPTIONAL:
sudo docker exec -it DOCKER_ID bash -c 'psql postgres://postgres:PASSWORD@postgres/postgres'
update mrbs_area set timezone = 'America/New_York';
update mrbs_area set morningstarts = 0, eveningends=23;
vi docker-compse.yml (replace /home/ubuntu/ with your $HOME)
sudo docker-compose up -d
POSTGRES_IP=172.18.0.2 ./migrate-scheduler-2.sh
* Edits to shared.env:
ADMIN_HOSTNAME=ontime-scheduler.nec-dev.vivoh.com
USE_MRBS=1
OPENSSL_CONF=/dev/null
* Edits to scheduler.env:
ONTIME_SUPERADMINS=erik@vivoh.com
UPDATED ALL SMTP settings (We need to set this up for Giovanni but we can use Demo)
ONTIME_SECRET= [INSERT JWT SECRET FROM SHARED.ENV - SEE MY CAT COMMAND ABOVE]
ONTIME_STREAMING_SERVER=ontime-stream.nec-dev.vivoh.com
ONTIME_PROXY_SERVER_HOST=ontime.nec-dev.vivoh.com
* Edits to admin.env
DESTINATION=https://ontime-scheduler.nec-dev.vivoh.com
* Edits to ai.env
DISABLED=1
Vivoh Webinar Manager Server
Download:
https://releases.vivoh.com/binaries/vwm/2023_03/vivoh-webinar-manager__6b5fd029__3.8.1.0_amd64.deb
ADMINISTRATOR = admin:!1Abc8888888,erik:!1Abc888888E
CERTIFICATES = /etc/vivoh/vwm/privkey.pem,/etc/vivoh/vwm/fullchain.pem,/etc/vivoh/vwm/chain.pem
WEBCAST_FALLBACK_URL = https://vivoh.com
Vivoh Video Server
Download:
https://releases.vivoh.com/assets/vivoh-video-server-apr-6-2023
to /usr/local/vivoh/vivoh-video-server
Create: /etc/vivoh/vvs/vvs.json as:
{
"player": 4040,
"auth": {
"api" : true,
"api_user": "admin",
"api_pass": "vivoh"
},
"rtmp": {
"port": 1935,
"chunk_size": 60000,
"gop_cache": true,
"ping": 30,
"ping_timeout": 60
},
"http": {
"port": 7777,
"mediaroot": "/home/vivoh",
"allow_origin": "*"
},
"relay": {
"ffmpeg": "/usr/bin/ffmpeg",
"tasks": [ {
"app": "live",
"mode": "pull",
"change-me-edge": "rtmps://vvs2.vivoh.io:443"
} ]
},
"trans": {
"ffmpeg": "/usr/bin/ffmpeg",
"tasks": [
{
"app": "live",
"hls": "true",
"hlsFlags": "[hls_time=2:hls_list_size=3:hls_flags=delete_segments]",
"hlsKeep": "false"
}
]
}
}
Create Vivoh Video Server systemctrl script at /etc/systemd/system/vvs.service
[Unit]
Description=Vivoh Video Server
[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/local/vivoh/vivoh-video-server /etc/vivoh/vvs/vvs.json
[Install]
WantedBy=multi-user.target
Enable Vivoh Video Server via: systemctl enable vvs then systemctl start vvs
Create CERT
certbot certonly -d vvs.vivoh.io
sudo touch /etc/haproxy/all.pem
sudo chmod 777 /etc/haproxy/all.pem
sudo cat /etc/letsencrypt/live/vvs.vivoh.io/fullchain.pem /etc/letsencrypt/live/vvs.vivoh.io/privkey.pem >> /etc/haproxy/all.pem
sudo chmod 600 /etc/haproxy/all.pem
/etc/letsencrypt/live/vvs.vivoh.io/privkey.pem >> /etc/haproxy/all.pem
HAProxy configuration (expected at /etc/haproxy/haproxy.cfg)
frontend rtmps
mode tcp
timeout client 50000
bind *:8443 ssl crt /etc/haproxy/all.pem
default_backend rtmp
frontend https_admin
mode tcp
timeout client 50000
bind *:1111 ssl crt /etc/haproxy/all.pem
default_backend http_admin
frontend https_player
mode tcp
timeout client 50000
bind *:8080 ssl crt /etc/haproxy/all.pem
default_backend http_player
backend rtmp
mode tcp
timeout connect 60
timeout server 50000
server self *:1935
backend http_admin
mode tcp
timeout connect 60
timeout server 50000
server self *:8080
backend http_player
mode tcp
timeout connect 60
timeout server 50000
server self *:4040
Restart: sudo systemctl restart haproxy
https://vvs.vivoh.io:1111/live/test/index.m3u8
https://vvs.vivoh.io:1111/admin (admin,vivoh)
http://vvs.vivoh.io:8080/player
ffmpeg -stream_loop -1 -re -i /tmp/adena.mp4 -c:a aac -ar 48000 -b:a 128k -c:v h264 -profile:v main -crf 20 -g 48 -keyint_min 48 -sc_threshold 0 -b:v 2500k -maxrate 2675k -bufsize 3750k -f flv rtmp://vivoh-origin.vivoh.io/live/test
Vivoh eCDN Cache Server
- Install prerequisites (sudo apt install -y docker.io docker-compose)
- Determine desired cache hostname supplied start .env (e.g., cache-01.demo.vivoh.net)
https://releases.vivoh.com/binaries/cache/vcache-0.3.0.run
"cd vivoh-cache; /tmp/vcache-0.2.2.run --target ."
curl -v "https://cache-01.demo.vivoh.net/cache/releases.vivoh.com/videos/adena.mp4" -o /dev/null 2>&1 | grep "^[\<\>]" | grep -i vivoh-cache
curl -v "https://cache-01.demo.vivoh.net/cache/vvs.vivoh.io:4040/player/" -o /dev/null 2>&1 | grep "^[\<\>]" | grep -i vivoh-cache
curl -v "https://cache-01.demo.vivoh.net/cache/vvs.vivoh.io/player/" -o /dev/null 2>&1 | grep "^[\<\>]" | grep -i vivoh-cache