diff --git a/content/post/owncast.md b/content/post/owncast.md new file mode 100644 index 0000000..630fecf --- /dev/null +++ b/content/post/owncast.md @@ -0,0 +1,139 @@ +--- +title: "Owncast & Streaming a talk" +date: 2021-05-20T22:08:55+02:00 +draft: false +image: "uploads/owncast.png" +tags: [FOSS] +categories: [Projects, English] +--- + +I recently installed an Owncast server and wanted to share my experience. Here it is: + +# What is owncast? + +Owncast is a streaming server that you can selfhost, a *Twicht in a box* as the developers call it. +You host owncast on your server (a small VM with good downlink is enough) and can stream your own own content like you would do on Twicht, YouTube etc... + +It has a chat, a admin panel for customization and thats it! You don't need more to e.g. stream while you are playing minecraft or want to share a talk. + +# Getting started + +Get the latest release on [GitHub](https://github.com/owncast/owncast/releases) by using +``` +$ mkdir owncast +$ cd owncast +$ wget https://github.com/owncast/owncast/releases/download/v0.0.7/owncast-0.0.7-linux-64bit.zip +$ unzip owncast-0.0.7-linux-64bit.zip +$ rm owncast-0.0.7-linux-64bit.zip +``` + +And move the webroot to your document root and make sure the permissions fit + +``` +$ cd .. +$ mv owncast /var/www/owncast +$ cd /var/www/ +$ chown -R www-data:www-data owncast +``` + +Now create a new NGINX site e.g. `/etc/nginx/sites-enabled/owncast` with the following content +``` + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + + + listen [::]:443 ssl ipv6only=on; # managed by Certbot + listen 443 ssl; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/stream.hyteck.de/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/stream.hyteck.de/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + + server_name stream.hyteck.de; + + + # Set header + add_header X-Clacks-Overhead "GNU Terry Pratchett"; + add_header Permissions-Policy interest-cohort=(); #Anti FLoC + + + location / { + proxy_set_header Host $host; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Server $host; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_pass http://127.0.0.1:8080; + + } + +} + +server { + listen 80; + listen [::]:80; + server_name stream.hyteck.de; + return 301 https://$server_name$request_uri; +} +``` + +Make sure to adjust the server name and SSL certificats (I will not go into detail on how to obtain them, but [feel free to ask me!](https://hyteck.de/about/)). + +# Start server + +Now start owncast to test +``` +$ cd /var/www/owncast +$ ./owncast/owncast +``` + +and visit https://yourdomain.org! If everything works you should see your site now. By visiting https://yourdomain.org/admin you can configure your server. The default credentials are `admin` and your stream key which is `abc123`. Change this immediately! + +Before you configure, let's make sure this runs whenever your server starts. Goback in the terminal and cancel with `Ctrl+C`. + +# Run as system service + +You want to install owncast as a system service. Therfore create `/etc/systemd/system/owncast.service` with the following content: +``` +[Unit] +Description=Owncast +After=network.target + +[Service] +Type=simple +Restart=always +RestartSec=1 +WorkingDirectory=/var/www/owncast +ExecStart=/var/www/owncast/owncast + +[Install] +WantedBy=multi-user.target +``` + +Update the daemon with `systemctl daemon-reload` enable `systemctl enable owncast``and start with `systemctl start owncast`. Make sure everything is correct with `systemctl status owncast`. + + +# Configuration + +You can now change back to yourdoiman.org/admin and configure, title, logo and more. + +## Directory + +If you start a stream and have directory enabled, Owncas will publish your activity, e.g. in the owncast RocketChat, on Twitter (by mentioning you if you gave Owncast your Twitter Handle) and in the Fediverse. Turn this of for testing! + +# Streaming + +You can now use [OBS](https://obsproject.com/) or similar software to start streaming. Got to settings and configure your server. + +![Configuration in the OBS streaming tab. The service is set to Custom.. and the server to rtmp://stream.hyteck.de/live. The stream key is hidden](uploads/stream_config.png) + +