Skip to content

Latest commit

 

History

History
90 lines (82 loc) · 3.7 KB

README.md

File metadata and controls

90 lines (82 loc) · 3.7 KB

streamupload

Upload videos to be re-encoded and scheduled for streaming

Install

Manual

  • Prepare a Linux server, set its timezone to the users' timezone (on deb-based systems: dpkg-reconfigure tzdata). the webserver user (often www-data) has access to the location!).
  • Make sure the packages git php-fpm ffmpeg are installed (on deb-based systems: apt install git php-fpm ffmpeg).
  • Clone repo: git clone https://gitlab.com/pepa65/streamupload.
  • Move the streamupload directory to a place that is accessible to the web server, like: mv streamupload /var/www and cd to that place. Now the output of pwd is the value for $repopath.
  • do mkdir "$repopath/uploadpage/streams" and chmod 777 "$repopath/uploadpage/streams".
  • Copy _vars to vars, _mailhash to mailhash and _countdown to countdown and set the variables in vars (webserver, SMTP-server), mailhash (usernames, emails and bcrypt-password-hashes) and countdown (if any countdown-files can be used).
  • Make a crontab-entry: "* * * * * $repopath/encode" (replace $repopath!).
  • Install the mailer binary by downloading it from the repo at https://https://github.com/pepa65/mailer/releases/latest and moving it to /usr/local/bin and make it executable: chmod +x /usr/local/bin/mailer. If it's not installed, everything (except the emails) will still work.
  • Run a php/webserver on $repopath/uploadpage:
    • Get it to restart on reboot.
    • Change the relevant php.ini to allow large file uploads:
      • post_max_size - Upper limit of uploaded video sizes, say 10G.
      • upload_max_filesize - same value as post_max_size.

Webserver

If no webserver has been installed, an easy way to get going is to use Caddy from https://caddyserver.com/download and place the caddy binary in /usr/local/bin and make it executable: chmod +x /usr/local/bin/caddy. Make the config file /root/Caddyfile like:

{
	email $email
}

:80 {
	log {
		output file $repopath/web.log
	}
	php_fastcgi unix//run/php/php-fpm.sock
	root * $repopath/uploadpage
	file_server
}
  • If the server IP has an DNS A record pointing to it, :80 can be replaced by the domainname with the A record, and it will be SSL-encrypted.
  • Replace $email with an email for the SSL-certificates.
  • Replace $repopath in both places (see above in Install).
  • The value of /run/php/php-fpm.sock might need to be adjusted, depending on the system used, it needs to be the unix socket for php.
  • Caddy can be started at boottime by including @reboot /root/Caddy as a line in root's crontab: crontab -e and make the file /root/Caddy with:
#!/usr/bin/env bash

# Make sure internet is reachable
while ! ping -q -c 1 1.1.1.1 &>/dev/null
do sleep 1
done

cd /root
/usr/local/bin/caddy stop &>/dev/null
sleep 1
killall -9 caddy &>/dev/null
/usr/local/bin/caddy start &>/root/caddy.log

and make it executable: chmod +x /root/Caddy.

Docker

After cloning this repo, cd streamupload, and setting the variables in vars and mailhash, a docker image can be built from the included Dockerfile by: docker build -t streamupload .. In the case of running on a LAN and not having a DNS A record, start it with: docker run -d -p 8080:80 -v $PWD/uploadpage:/var/www/uploadpage streamupload. In case of a domainname, replace 8080:80 by 443:443.

Usage

  • Get a streamkey for the target by scheduling a stream (supported are: Restream.io, YouTube.com, Facebook.com).
  • Go to the server's URL in the browser: http://$ipaddress:80 or for docker: http://$ipaddress:80 or in case of a domainname: https://$domainname.
  • Log in with the username and passwors as prepared in mailhash.
  • Fill in the form, and click "Schedule Stream".