2.2 KiB
Docker Chrome Streamer
Docker image to run Chrome on a linux VPS and stream it on wherever you want. (Default is YouTube)
Disclaimer
Code is based on https://github.com/siedi/docker-xvfb-twitch.
Features
Runs xvfb with the window manager fluxbox, vnc so you can connect from remote and then chrome. It includes a separate script to start the stream on YouTube by launching ffmpeg.
It also records system audio, which docker-xvfb-twitch was lacking, and is the reason for this project.
Build image
Just as every other image: docker build . -t chrome-streamer, or just ./build.sh
Launch Container
docker run -p 127.0.0.1:5900:5900 --rm -v /etc/localtime:/etc/localtime:ro -v /dev/shm/:/dev/shm/ -e TZ=Europe/Berlin -e VNC_SERVER_PASSWORD=<password> -e SERVER_KEY=<your streaming key from youtube> --user chrome --name chrome-streamer --privileged chrome-streamer
Note: The MacOS VNC client will not be able to login unless you set a password for the VNC server.
Once the container is running, you can VNC into it at 127.0.0.1 (if you are running the container on a VPS, you might have to start a ssh tunnel first using ssh -L 5900:localhost:5900 my_vps)
Launch Chrome from a terminal window by running.
google-chrome
You can also start Google Chrome by right-clicking the Desktop and selecting:
Applications > Network > Web Browsing > Google Chrome
Launch stream
Once everything is set up, you can launch the stream
docker exec -ti chrome-streamer bash /stream.sh
If you want to stop it, just press CTRL-C
Changing the streaming service
Edit the stream.sh and change the stream URL to your streaming service, then rebuild. You may also change some quality settings or change the ffmpeg command directly.
Security concerns
This image starts a X11 VNC server which spawns a framebuffer. Google Chrome
also requires that the image be run with the --privileged flag set. This flag
disables security labeling for the resulting container. Be very careful if you
run the container on a non-firewalled host.
Some applications (such as Google Chrome) will not run under the root user. A
non-root user named chrome is included for such scenarios.