Autizmo Movie Night https://movie-night.autizmo.xyz
Go to file
Bertrand Moreau 745bb322a3 Multi-target build
Try to customize the MakeFile in order to be able to build an binary for
any target system.
2020-08-18 17:18:45 +02:00
common colors: remove colors that aren't AA accessible 2020-06-03 22:30:45 -07:00
docker added docker-compose file 2020-03-19 12:55:17 +01:00
static Merge pull request #124 from dunn/emote-grid 2020-06-08 11:00:07 -04:00
wasm Don't wrap name highlights with colons 2020-04-27 12:50:29 -04:00
.dockerignore add dockerignore file 2020-06-08 22:19:09 -07:00
.gitignore Multi-target build 2020-08-18 17:18:45 +02:00
.travis.yml Enable module support for Travis 2019-04-04 10:38:14 -04:00
chatclient_test.go Fix name highlighting breaking emotes 2019-09-22 15:42:48 -04:00
chatclient.go Fix name highlighting breaking emotes 2019-09-22 15:42:48 -04:00
chatcommands.go Prepend @ symbol to names shown in user list, so they highlight 2020-05-28 16:41:28 -04:00
chatroom.go add new setting to suppress join/leave announcements 2020-06-03 19:47:57 -07:00
connection.go Add some logging 2019-03-24 18:58:59 -04:00
Dockerfile added Dockerfile 2020-03-19 11:49:42 +01:00
emotes.go emotes: send OAuth secret token to Twitch when fetching emotes 2020-06-04 00:32:01 -07:00
errors.go Add more information to error output 2019-03-15 18:57:12 -04:00
favicon.png Replace favicon with something else 2019-03-18 11:21:17 -04:00
go.mod Removed dependency of dennwc\dom\js 2019-09-22 14:31:04 -04:00
go.sum commiting so zorch can do my work 2019-06-01 19:41:28 -04:00
handlers.go allow customization of <title> 2020-06-03 12:24:07 -07:00
license.md Add MIT license 2020-07-09 18:48:08 -04:00
main.go Add option to change the RTMP listen address 2020-06-12 23:58:45 -04:00
Makefile Multi-target build 2020-08-18 17:18:45 +02:00
notes.txt
readme.md Multi-target build 2020-08-18 17:18:45 +02:00
settings_example.json Add option to change the RTMP listen address 2020-06-12 23:58:45 -04:00
settings.go Changed settings.go to allow disabling the ratelimits. 2020-08-09 19:36:22 -04:00
stats.go Add some more stats 2019-04-14 00:25:49 -04:00

Table of Contents

MovieNight stream server

Build status

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/install#extra_versions

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 you 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

MovieNights configuration is controlled by settings.json:

  • AdminPassword: users can enter /auth <value> into chat to grant themselves admin privileges. This value is automatically regenerated unless RegenAdminPass 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 to debug.
  • MaxMessageCount: the number of messages displayed in the chat window.
  • NewPin: if true, regenerates RoomAccessPin 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, regenerates AdminPassword 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 emotes
  • TwitchClientSecret: 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 attempt
  • RateLimitDuplicate: the numeber of seconds before a user can post a duplicate message.
  • NoCache: if true, set Cache-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.