Controller
The Controller is best run through Docker.
The Docker container is built for amd64 and arm64, meaning that for single sounder systems it is possible to run your controller on a Raspberry Pi.
Docker Compose
There are 3 containers that need to be running for the controller. openschoolbell/controller
which runs the Remix app, openschoolbell/tts
which provides a text to speech endpoint and generation with Piper, and redis
for the background job scheduling.
x-shared:
osb-service: &osb-service
environment: &osb-environment
- DATABASE_URL=file:./data/db.db
- TTS_API=http://tts-api:8080/piper
- JWT_KEY=your-super-secret-key
- REDIS_URL=osb-redis:6379
volumes: &osb-volumes
- /path/to/data:/app/prisma/data
- /path/to/sounds:/app/public/sounds
image: openschoolbell/controller:1
restart: always
depends_on:
- osb-redis
services:
osb-controller:
<<: *osb-service
command: ['osb-remix']
ports:
- 3000:3000
osb-worker:
<<: *osb-service
command: ['osb-worker']
depends_on:
- osb-controller
tts-api:
image: openschoolbell/tts:1
osb-redis:
image: redis:7
restart: always
volumes:
- ./data/redis:/data
For volumes /app/prisma/data
stores the SQLite database, and /app/public/sounds
stores the uploaded audio files.
Paste the above yaml into docker-compose.yml
in a folder on your docker server. Typically the data
and sounds
folders would be in the same folder as the docker-compose.yml
.
Once edited with the correct paths, pull down the controller and tts images with docker compose pull
, and launch the controller with docker compose up -d
.
Initial Setup
Open a web browser and browse to http://CONTROLLER_IP:3000/
. The default password is bell
, once logged in you will be on the dashboard.