148 lines
3.4 KiB
Markdown
148 lines
3.4 KiB
Markdown
# OSC-Docker
|
|
|
|
Docker image for the Open Stage Control node-only release.
|
|
|
|
This image uses the upstream release artifact instead of building Electron from source. I verified on May 10, 2026 that Framagit's current release is `v1.30.3`, and that it publishes a `Node.js` package at:
|
|
|
|
`https://openstagecontrol.ammd.net/packages/open-stage-control_1.30.3_node.zip`
|
|
|
|
Source project:
|
|
|
|
`https://framagit.org/jean-emmanuel/open-stage-control`
|
|
|
|
## Getting Started
|
|
|
|
If you just want to run Open Stage Control, use the prebuilt image:
|
|
|
|
`git.f-40.com/aiden/osc-docker:latest`
|
|
|
|
### Option 1: Docker Run
|
|
|
|
1. Create folders for config and session files:
|
|
|
|
```bash
|
|
mkdir config data
|
|
```
|
|
|
|
2. Start the container:
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--name open-stage-control \
|
|
-p 8080:8080/tcp \
|
|
-p 8080:8080/udp \
|
|
-v "${PWD}/config:/config" \
|
|
-v "${PWD}/data:/data" \
|
|
git.f-40.com/aiden/osc-docker:latest
|
|
```
|
|
|
|
3. Open this in your browser:
|
|
|
|
`http://localhost:8080`
|
|
|
|
### Option 2: Docker Compose
|
|
|
|
1. Make sure `compose.yaml` is in the folder you are working from.
|
|
|
|
2. Create folders for persistent data:
|
|
|
|
```bash
|
|
mkdir config data
|
|
```
|
|
|
|
3. Start it:
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
4. Open:
|
|
|
|
`http://localhost:8080`
|
|
|
|
### Where Your Files Go
|
|
|
|
- `./config`: Open Stage Control config and cache data
|
|
- `./data`: sessions, themes, and other files you want Open Stage Control to access
|
|
|
|
## Build
|
|
|
|
```bash
|
|
docker build -t open-stage-control .
|
|
```
|
|
|
|
To target a different upstream release:
|
|
|
|
```bash
|
|
docker build \
|
|
--build-arg OPEN_STAGE_CONTROL_VERSION=1.30.3 \
|
|
-t open-stage-control .
|
|
```
|
|
|
|
## Run From Source Image
|
|
|
|
```bash
|
|
docker run --rm \
|
|
-p 8080:8080/tcp \
|
|
-p 8080:8080/udp \
|
|
-v "${PWD}/config:/config" \
|
|
-v "${PWD}/data:/data" \
|
|
open-stage-control
|
|
```
|
|
|
|
Then open:
|
|
|
|
`http://localhost:8080`
|
|
|
|
## Docker Compose
|
|
|
|
```bash
|
|
docker compose up
|
|
```
|
|
|
|
The included compose file uses the published image directly:
|
|
|
|
`git.f-40.com/aiden/osc-docker:latest`
|
|
|
|
## Gitea Actions
|
|
|
|
The repo includes a Gitea Actions workflow at `.gitea/workflows/docker-publish.yml`.
|
|
|
|
It will:
|
|
|
|
- build on pushes to `main`
|
|
- allow manual runs with `workflow_dispatch`
|
|
- poll the upstream Open Stage Control releases API once a week
|
|
- build and push a new image only when a new upstream release tag is found
|
|
|
|
Required repository secrets:
|
|
|
|
- `USER`: registry username
|
|
- `TOKEN`: registry token or PAT for `git.f-40.com`
|
|
|
|
## Environment Variables
|
|
|
|
- `OSC_PORT`: HTTP port. Default `8080`.
|
|
- `OSC_OSC_PORT`: OSC UDP input port. Default `8080`.
|
|
- `OSC_TCP_PORT`: Optional OSC TCP input port.
|
|
- `OSC_CACHE_DIR`: Config/cache path inside the container. Default `/config`.
|
|
- `OSC_REMOTE_ROOT`: File browser root inside the container. Default `/data`.
|
|
- `OSC_LOAD`: Optional session file to auto-load.
|
|
- `OSC_STATE`: Optional state file to auto-load.
|
|
- `OSC_CUSTOM_MODULE`: Optional custom module path.
|
|
- `OSC_THEME`: Optional theme path or theme name.
|
|
- `OSC_AUTHENTICATION`: Optional `user:password`.
|
|
- `OSC_CLIENT_OPTIONS`: Optional single `key=value` client option. For multiple client options, pass extra CLI args after the image name.
|
|
- `OSC_READ_ONLY`: Set to `true` to disable editing/saving.
|
|
- `OSC_USE_SSL`: Set to `true` to enable HTTPS.
|
|
- `OSC_DEBUG`: Set to `true` to log OSC traffic.
|
|
- `OSC_NO_QRCODE`: Set to `true` to suppress QR output.
|
|
|
|
## Extra CLI Arguments
|
|
|
|
You can still pass native Open Stage Control arguments after the image name:
|
|
|
|
```bash
|
|
docker run --rm -p 8080:8080/tcp -p 8080:8080/udp open-stage-control --send 192.168.1.50:9000
|
|
```
|