Manual Setup
Deploy OpenJam without Docker by building the frontend and backend manually.
Prerequisites
- Go 1.22+
- Node.js 20+ or Bun
- PostgreSQL 14+
- Redis (optional)
- MinIO or S3-compatible storage (optional)
Build the Frontend
bash
cd app
bun install
bun run buildbash
cd app
npm install
npm run buildThis produces a dist/ directory with static files.
Build the Backend
bash
cd server
CGO_ENABLED=0 go build -ldflags="-s -w" -o openjam-server .Deploy
Copy the frontend build output:
bashcp -r app/dist server/staticConfigure environment variables (see Configuration)
Run the server:
bashcd server ./openjam-server
The server serves both the API and frontend on the configured port (default 8080).
Running with systemd
Create /etc/systemd/system/openjam.service:
ini
[Unit]
Description=OpenJam Whiteboard Server
After=network.target postgresql.service
[Service]
Type=simple
User=openjam
WorkingDirectory=/opt/openjam
ExecStart=/opt/openjam/openjam-server
EnvironmentFile=/opt/openjam/.env
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetbash
sudo systemctl enable --now openjam