Install

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 </dev/urandom | head -c 32 ; echo '') >> 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

  1. Install prerequisites (sudo apt install -y docker.io docker-compose)
  2. 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