Skip to main content

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:15-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", "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:latest
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/ystv/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/ystv/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.

What's a YSTV build?

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.