Initial commit: standalone Sova jam server setup
This commit is contained in:
1
.env.example
Normal file
1
.env.example
Normal file
@@ -0,0 +1 @@
|
|||||||
|
SOVA_PASSWORD=changeme
|
||||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.env
|
||||||
40
Dockerfile
Normal file
40
Dockerfile
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Stage 1: Build sova-server
|
||||||
|
FROM rustlang/rust:nightly-bookworm AS builder
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
cmake \
|
||||||
|
pkg-config \
|
||||||
|
libclang-dev \
|
||||||
|
libasound2-dev \
|
||||||
|
libdbus-1-dev \
|
||||||
|
build-essential \
|
||||||
|
git \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN git clone --depth 1 https://github.com/sova-org/Sova.git /sova
|
||||||
|
|
||||||
|
WORKDIR /sova
|
||||||
|
|
||||||
|
# Remove the [patch] section that references a local ../doux/ path
|
||||||
|
RUN sed -i '/^\[patch\."https:\/\/github.com\/sova-org\/doux"\]/,/^$/d' Cargo.toml
|
||||||
|
|
||||||
|
# Force re-resolution without the doux patch
|
||||||
|
RUN rm -f Cargo.lock
|
||||||
|
|
||||||
|
RUN cargo build -p sova-server --release --no-default-features
|
||||||
|
|
||||||
|
# Verify the binary name
|
||||||
|
RUN ls -la target/release/sova*
|
||||||
|
|
||||||
|
# Stage 2: Minimal runtime image
|
||||||
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
libasound2 \
|
||||||
|
libdbus-1-3 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY --from=builder /sova/target/release/sova_server /usr/local/bin/sova-server
|
||||||
|
|
||||||
|
ENTRYPOINT ["sova-server"]
|
||||||
|
CMD ["-i", "0.0.0.0", "-p", "8080"]
|
||||||
34
README.md
Normal file
34
README.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Sova Jam Server
|
||||||
|
|
||||||
|
A standalone Docker setup for [Sova](https://github.com/sova-org/Sova), a live coding jam server that lets multiple performers collaborate in real-time over a shared session.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Docker
|
||||||
|
- Docker Compose
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
# Edit .env and set a strong password
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
The server will be available on port **8080**.
|
||||||
|
|
||||||
|
## Connecting
|
||||||
|
|
||||||
|
Point your Sova-compatible client to `<your-host>:8080` and enter the password you configured in `.env`.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
| Variable | Description | Default |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `SOVA_PASSWORD` | Password required to join the jam session | `changeme` |
|
||||||
|
|
||||||
|
The server listens on `0.0.0.0:8080` inside the container. To change the exposed port, edit the `ports` mapping in `docker-compose.yml`.
|
||||||
|
|
||||||
|
## Upstream
|
||||||
|
|
||||||
|
Sova is developed at https://github.com/sova-org/Sova
|
||||||
24
docker-compose.yml
Normal file
24
docker-compose.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
sova-server:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
shm_size: 512m
|
||||||
|
container_name: sova-server
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
command: ["-i", "0.0.0.0", "-p", "8080", "--password", "${SOVA_PASSWORD}"]
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 256M
|
||||||
|
cpus: '0.5'
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
|
cpus: '0.1'
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
Reference in New Issue
Block a user