2e32db2794
Try to customize the MakeFile in order to be able to build an binary for any target system. |
||
---|---|---|
common | ||
docker | ||
static | ||
wasm | ||
.dockerignore | ||
.gitignore | ||
.travis.yml | ||
chatclient_test.go | ||
chatclient.go | ||
chatcommands.go | ||
chatroom.go | ||
connection.go | ||
Dockerfile | ||
emotes.go | ||
errors.go | ||
favicon.png | ||
go.mod | ||
go.sum | ||
handlers.go | ||
license.md | ||
main.go | ||
Makefile | ||
notes.txt | ||
readme.md | ||
settings_example.json | ||
settings.go | ||
stats.go |
Table of Contents
MovieNight stream server
This is a single-instance streaming server with chat. Originally written to replace Rabbit as the platform for watching movies with a group of people online.
Build requirements
- Go 1.13 or newer
- GNU Make
Older Go Versions
You can install a newer version of Go alongside your OS's distribution by following the guide here: https://golang.org/doc/manage-install
Once you have that setup add an enviromnent variable named GO_VERSION
and
set it to the version you installed (eg, 1.14.1
). The Makefile will now use
the newer version.
Compile and install
You have to :
- download ;
- choose your TARGET
"android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows"
;
- choose your ARCH
"386 amd64 amd64p32 arm arm64 ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32leppc s390 s390x sparc sparc64"
;
- and run ;
$ git clone https://github.com/zorchenhimer/MovieNight
$ cd MovieNight
$ make TARGET=windows ARCH=386
$ ./MovieNight
Docker build
MovieNight provides a Dockerfile and a docker-compose file to run MovieNight using Docker.
Building the Container
Install Docker, clone the repository and build:
docker build -t movienight .
Running the Container
Run the image once it's built:
docker run -d -p 8089:8089 -p 1935:1935 [-v ./settings.json:/config/settings.json] movienight
Explanation:
- -d runs the container in the background.
- -p 8089:8089 maps the MovieNight web interface to port 8089 on the server.
- -p 1935:1935 maps the RTMP port for OBS to port 1935 (default RTMP port) on the server.
- -v ./settings.json:/config/settings.json maps the file settings.json into the container. [OPTIONAL]
docker-compose
docker-compose will automatically build the image, no need to build it manually.
Install Docker and docker-compose, clone the repository and change into the directory ./docker. Then run:
docker-compose up -d
This docker-compose file will create a volume called movienight-config and automatically add the standard settings.json file to it. It also maps port 8089 and 1935 to the same ports of the host.
Notes for Running Using docker-compose
The container needs to be restarted to apply any changes you make to settings.json.
Usage
Now you can use OBS to push a stream to the server. Set the stream URL to
rtmp://your.domain.host/live
and enter the stream key.
Now you can view the stream at
http://your.domain.host:8089/
There is a video only version at
http://your.domain.host:8089/video
and a chat only version at
http://your.domain.host:8089/chat
The default listen port is :8089
. It can be changed by providing a new port
at startup:
Usage of .\MovieNight.exe:
-e bool
Whether or not to download approved emotes on startup (default "false")
-k string
Stream key, to protect your stream (default: "")
-l string
host:port of the MovieNight (default ":8089")
-r string
host:port of the RTMP server (default ":1935")
Configuration
MovieNight’s configuration is controlled by settings.json
:
AdminPassword
: users can enter/auth <value>
into chat to grant themselves admin privileges. This value is automatically regenerated unlessRegenAdminPass
is false.ApprovedEmotes
: list of Twitch users whose emotes can be imported into MovieNight. Using/addemotes <username>
in chat will add to this list.Bans
: list of banned users.LetThemLurk
: if false, announces when a user enters and leaves chat.ListenAddress
: the port that MovieNight listens on, formatted as:8089
.LogFile
: the path of the MovieNight logfile, relative to the executable.LogLevel
: the log level, defaults todebug
.MaxMessageCount
: the number of messages displayed in the chat window.NewPin
: if true, regeneratesRoomAccessPin
when the server starts.PageTitle
: The base string used in the<title>
element of the page. When the stream title is set with/playing
, it is appended; e.g.,Movie Night | The Man Who Killed Hitler and Then the Bigfoot
RegenAdminPass
: if true, regeneratesAdminPassword
when the server starts.RoomAccess
: the access policy of the chat room; this is managed by the application and should not be edited manually.RoomAccessPin
: if set, serves as the password required to enter the chatroom.SessionKey
: key used for storing session data (cookies etc.)StreamKey
: the key that OBS will use to connect to MovieNight.StreamStats
: if true, prints statistics for the stream on server shutdown.TitleLength
: the maximum allowed length for the stream title (set with/playing
).TwitchClientID
: OAuth client ID for the Twitch API, used for fetching emotesTwitchClientSecret
: OAuth client secret for the Twitch API; can be generated locally with curl.WrappedEmotesOnly
: if true, requires that emote codes be wrapped in colons or brackets; e.g.,:PogChamp:
RateLimitChat
: the number of seconds between each message a non-privileged user can post in chat.RateLimitNick
: the number of seconds before a user can change their nick again.RakeLimitColor
: the number of seconds before a user can change their color again.RateLimitAuth
: the number of seconds between each allowed auth attemptRateLimitDuplicate
: the numeber of seconds before a user can post a duplicate message.NoCache
: if true, setCache-Control: no-cache, must-revalidate
in the HTTP header, to prevent caching responses.
License
flv.js
is Licensed under the Apache 2.0 license. This project is licened under the MIT license.