Installation¶
This guide covers installing HoloMUSH using Docker or pre-built binaries.
Docker Installation (Recommended)¶
Docker provides the simplest deployment method with automatic dependency management.
Prerequisites¶
| Requirement | Minimum Version |
|---|---|
| Docker | 20.10+ |
| Docker Compose | 2.0+ |
Using Docker Compose¶
Clone the repository and start all services:
This starts three services:
| Service | Description | Port |
|---|---|---|
postgres |
PostgreSQL database | 5432 |
core |
Game engine and plugin runtime | 9000 |
gateway |
Telnet and WebSocket servers | 4201 |
Verify the services are running:
Connect to the server:
Container Images¶
HoloMUSH publishes container images to GitHub Container Registry:
Available tags:
| Tag | Description |
|---|---|
latest |
Most recent stable release |
v1.x.x |
Specific version |
main |
Latest development build |
Custom Docker Compose¶
For production deployments, customize the compose file:
services:
postgres:
image: postgres:18-alpine
environment:
POSTGRES_DB: holomush
POSTGRES_USER: holomush
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U holomush"]
interval: 2s
timeout: 5s
retries: 5
core:
image: ghcr.io/holomush/holomush:latest
command: ["core", "--grpc-addr=0.0.0.0:9000", "--metrics-addr=0.0.0.0:9100"]
environment:
DATABASE_URL: postgres://holomush:${POSTGRES_PASSWORD}@postgres:5432/holomush?sslmode=disable
HOME: /home/holomush
volumes:
- holomush_config:/home/holomush/.config/holomush
depends_on:
postgres:
condition: service_healthy
gateway:
image: ghcr.io/holomush/holomush:latest
command: ["gateway", "--core-addr=core:9000", "--metrics-addr=0.0.0.0:9101"]
environment:
HOME: /home/holomush
volumes:
- holomush_config:/home/holomush/.config/holomush
ports:
- "4201:4201"
- "8080:8080"
depends_on:
- core
volumes:
postgres_data:
holomush_config:
Binary Installation¶
Download pre-built binaries for your platform.
Download¶
Download the latest release from GitHub:
# Linux (amd64)
curl -LO https://github.com/holomush/holomush/releases/latest/download/holomush-linux-amd64.tar.gz
tar xzf holomush-linux-amd64.tar.gz
# macOS (arm64)
curl -LO https://github.com/holomush/holomush/releases/latest/download/holomush-darwin-arm64.tar.gz
tar xzf holomush-darwin-arm64.tar.gz
Move the binary to your PATH:
PostgreSQL Setup¶
HoloMUSH requires PostgreSQL 18 or later.
Quick start with Docker:
docker run -d --name holomush-db \
-e POSTGRES_DB=holomush \
-e POSTGRES_USER=holomush \
-e POSTGRES_PASSWORD=secret \
-p 5432:5432 \
postgres:18-alpine
Or install natively:
Create the database:
Run Database Migrations¶
Before first run, apply database migrations:
DATABASE_URL="postgres://holomush:secret@localhost:5432/holomush?sslmode=disable" \
holomush migrate
Start the Server¶
HoloMUSH uses a two-process architecture. Start both processes:
Terminal 1 - Core:
Terminal 2 - Gateway:
Verify Installation¶
Check server health:
Connect via telnet:
Build from Source¶
For development or customization, build from source.
Prerequisites¶
| Requirement | Version |
|---|---|
| Go | 1.24+ |
| Task | Latest |
Build¶
The binary is created at ./holomush.
Install Development Tools¶
For development, install additional tooling:
Systemd Service¶
For production Linux deployments, create systemd unit files.
Core service (/etc/systemd/system/holomush-core.service):
[Unit]
Description=HoloMUSH Core
After=network.target postgresql.service
Requires=postgresql.service
[Service]
Type=simple
User=holomush
Group=holomush
Environment=DATABASE_URL=postgres://holomush:secret@localhost:5432/holomush?sslmode=disable
ExecStart=/usr/local/bin/holomush core
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Gateway service (/etc/systemd/system/holomush-gateway.service):
[Unit]
Description=HoloMUSH Gateway
After=network.target holomush-core.service
Requires=holomush-core.service
[Service]
Type=simple
User=holomush
Group=holomush
ExecStart=/usr/local/bin/holomush gateway
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable holomush-core holomush-gateway
sudo systemctl start holomush-core holomush-gateway
Next Steps¶
- Configuration - Customize server behavior
- Operations - Monitor and maintain your server