https://github.com/bcambl/rtmpauthbot
A simple publish authentication API for nginx rtmp module
https://github.com/bcambl/rtmpauthbot
authentication hacktoberfest nginx-rtmp
Last synced: 10 months ago
JSON representation
A simple publish authentication API for nginx rtmp module
- Host: GitHub
- URL: https://github.com/bcambl/rtmpauthbot
- Owner: bcambl
- License: bsd-2-clause
- Created: 2020-05-16T18:19:43.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-10-30T01:04:06.000Z (over 4 years ago)
- Last Synced: 2025-08-23T05:37:23.699Z (10 months ago)
- Topics: authentication, hacktoberfest, nginx-rtmp
- Language: Go
- Homepage:
- Size: 132 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
rtmpauthbot
===========
`rtmpauthbot` is an authentication & notification system to be used along side the nginx rtmp module.
## Background
`rtmpauthbot` was built to provide a small Discord community with a private rtmp server with a simple authentication mechanism and basic notifications for when members start and stop streaming.
Each member may also have a twitch channel configured which differs from their discord/publisher user name. When a twitch channel is defined for a member, notifications will be posted when the twitch stream is live/off-line. This functionality can also serve as general twitch notifications for favorite streamers of the discord community.
## Features
- Authentication system for NGiNX RTMP module
- Discord channel notifications
- Twitch stream notifications
- HTTP REST user management
- Embedded database
- Single binary deployment
## Configuration
The project is configured with environment variables.
1. Create a local copy of the environment variable file
```
mkdir /etc/rtmpauthbot
rtmpauthbot -environment > /etc/rtmpauthbot/rtmpauthbot.env
```
2. Update the variables to suit your needs
## Install Service
Installation documentation WIP
TL;DR - compile project to a binary and either setup as a service with `systemd` or deploy the project in a container. Ensure all environment variables are configured from the previous section of this document.
A basic systemd unit-file can be generated with the following command
```
rtmpauthbot -unitfile > /etc/systemd/system/rtmpauthbot.service
systemctl daemon-reload
```
## Managing RTMP Publishers
User management can be performed with some basic REST calls. You can either interact with `rtmpauthbot` using your favorite REST client or build a custom application around the API. For the sake of simplicity, the following examples will be demonstrated using the `curl` command.
### Adding/Updating a publisher
```
curl -X POST -d '{"name": "discord_username", "key": "private_rtmp_stream_key"}' http://127.0.0.1:9090/api/publisher
```
expected response status code: `204`
Optionally, If a user would also like to provide notifications for their public twitch stream:
```
curl -X POST -d '{"name": "discord_username", "key": "private_rtmp_stream_key", "twitch_stream": "twitch_username"}' http://127.0.0.1:9090/api/publisher
```
expected response status code: `204`
### Retrieve all publishers
```
curl http://127.0.0.1:9090/api/publisher
```
expected response status code: `200`
```
[
{
"name": "discord_username",
"key": "abcdefghijklmnopqrstuvwxyz0123456789",
"twitch_stream": "twitch_username"
}
]
```
### Retrieve a single publisher
```
curl http://127.0.0.1:9090/api/publisher?name=discord_username
```
expected response status code: `200`
```
{
"name": "discord_username",
"key": "abcdefghijklmnopqrstuvwxyz0123456789",
"twitch_stream": "twitch_username"
}
```
### Deleting a publisher
```
curl -X DELETE -d '{"name": "discord_username"}' http://127.0.0.1:9090/api/publisher
```
expected response status code: `204`
## Build From Source
If you would rather compile the project from source, please install the latest version of the Go programming language [here](https://golang.org/dl/).
```
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o rtmpauthbot main.go
```
## Security considerations
While it is possible to run this service on a different host, it is intended to run on the same host/container pod as nginx and communicate via localhost. Due to this assumption, the `rtmpauthbot` service should NOT be publicly accessible or firewall rules should be configured to only allow connection from the nginx host/container.