Requirements
Badger has three primary components: Server, Jobrunner, and Desktop.
Server must be accessible from the internet or your local network. Jobrunner runs as a stand-alone service and does not need to be accessible from the internet.
Server and Jobrunner are distributed as Docker images and must be run in a Docker environment. Desktop is distributed as a Windows installer.
Desktop must be installed on the same computer as OBS/vMix, and currently only officially supports Windows (it can be built for macOS and Linux, but official builds are not provided).
Badger also requires a few other services to function:
- A PostgreSQL database
- Minio (or other S3-compatible) file storage (which could be S3 itself)
- Tusd (or other Tus-compatible) file upload server
Docker Installation
Badger Server and Jobrunner are distributed as Docker images. You can run them using Docker Compose. Here is an example docker-compose.yml
file:
version: "3.8"
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: postgres
POSTGRES_DB: badger_test
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "root", "-d", "badger_test"]
interval: 5s
timeout: 5s
retries: 5
minio:
image: quay.io/minio/minio:latest
ports:
- "9000:9000"
- "9090:9090"
volumes:
- minio_data:/data
environment:
MINIO_ROOT_USER: root
MINIO_ROOT_PASSWORD: rootroot
command: ["server", "/data", "--console-address", ":9090"]
minio_init:
image: quay.io/minio/minio:latest
depends_on:
- minio
entrypoint: |
/bin/sh -c "
chmod +x /opt/bin/mc;
mc alias set docker http://minio:9000 root rootroot;
mc mb docker/badger;
mc mb docker/uploads;
exit 0
"
tusd:
image: tusproject/tusd:sha-b4ffdf4
depends_on:
- minio
ports:
- "1080:1080"
environment:
AWS_ACCESS_KEY_ID: root
AWS_SECRET_ACCESS_KEY: rootroot
AWS_REGION: us-east-1
command:
[
"-s3-bucket=uploads",
"-s3-endpoint=http://minio:9000",
"-s3-object-prefix=/uploads",
"-port=1080",
]
ontime:
image: getontime/ontime:v2.28.17
ports:
- "4001:4001"
volumes:
- ontime_data:/server/preloaded-db
server:
image: ghcr.io/badger-media/badger/server:latest
platform: linux/amd64
ports:
- "3000:3000"
environment: &badger_env
DATABASE_URL: "postgres://root:postgres@postgres:5432/badger_test?sslmode=disable"
TUS_ENDPOINT: "http://tusd:1080/files"
PUBLIC_TUS_ENDPOINT: "http://localhost:1080/files"
S3_ENDPOINT: "http://minio:9000"
AWS_ACCESS_KEY_ID: "root"
AWS_SECRET_ACCESS_KEY: "rootroot"
AWS_REGION: "us-east-1"
STORAGE_BUCKET: "badger"
API_SHARED_SECRET: "password"
PUBLIC_URL: "http://localhost:3000"
JWT_SIGNING_KEY: "somesecret"
jobrunner:
image: ghcr.io/badger-media/badger/jobrunner:latest
platform: linux/amd64
command: ["--watch"]
environment: *badger_env
volumes:
postgres_data: {}
minio_data: {}
ontime_data: {}
Access
Once you have Badger running, you can access the web interface at http://localhost:3000
(or the IP address of the server if you are running it remotely).
Desktop
The Badger Desktop app is distributed as a Windows installer. You can download it from the Badger releases page.
On the releases page you will see ystv
in some of the build names.
These are builds of Badger Desktop that are connected to YSTV's Sentry instance.
We'd suggest you only use these if you are a member of YSTV, otherwise use the non-ystv
builds.
Configuration
When running Badger Desktop, you will be asked for a server URL and a password.
The server URL is the address of your Badger Server, and the password is the value of the API_SHARED_SECRET
environment variable.