diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd203e0 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# 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](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= -e SERVER_KEY= --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. +