Install

Install logship-backend

The logship database is available as an OCI container image or as a standalone binary for native deployment.

Docker

Images are published to the Logship container registry:

RegistryImage
Logship Container Registrycr.logship.io/logship-database

Pull the image

docker pull cr.logship.io/logship-database:latest

Run a local container

docker run -d --name logship-db \
  -p 5000:5000 -p 6000:6000 \
  -v $PWD/logship:/logship \
  cr.logship.io/logship-database:latest
  • API/UI: http://localhost:5000
  • Cluster port: 6000
  • Data persisted under ./logship on the host

Docker Compose

services:
  logship-database:
    image: cr.logship.io/logship-database:latest
    ports:
      - "5000:5000"
      - "6000:6000"
    volumes:
      - ./logship:/logship
    environment:
      ASPNETCORE_URLS: http://+:5000
    restart: unless-stopped

Start and stop:

docker compose up -d
docker compose down

Production deployment

For production, mount a custom configuration file and use a .env file for paths:

.env:

LS_ROOT_DATA_PATH=/logship

docker compose.yml:

services:
  logship-database:
    container_name: logship-database
    image: cr.logship.io/logship-database:latest
    network_mode: host
    restart: always
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
    volumes:
      - ./config/logship-database/appsettings.Production.json:/app/appsettings.json:ro
      - ${LS_ROOT_DATA_PATH}:/logship

Version pinning

Pin to a specific version instead of latest:

docker pull cr.logship.io/logship-database:0.1.0
TagDescription
latestLatest stable release
x.y.zSpecific version

Native install by sh

For native single-host installs, use the deployment installer from logship-deployments:

curl -fsSL https://raw.githubusercontent.com/logship-io/logship-deployments/main/src/shell/install.sh | sh -s -- --database

By default this installs under /opt/logship/database, writes appsettings.json, and creates a systemd service on Linux. Add --frontend and --agent to provision the whole stack together.

Health checks

EndpointReady responseNot-ready responsePurpose
GET /health/live200 liveLiveness — the process is up and accepting HTTP. No dependencies.
GET /health/ready200 ready503 not readyReadiness — the backend can serve database-backed requests.

Both endpoints are anonymous. /health/ready round-trips the database RPC channel, so it returns 503 during startup until the backend can actually serve auth/data requests — gate traffic on it rather than on /health/live.

curl http://localhost:5000/health/live
curl -i http://localhost:5000/health/ready

Configuration

The database reads configuration from multiple sources (in priority order):

  1. Command line arguments
  2. Environment variables prefixed with LS_
  3. Config file specified via LS_CONFIG_PATH
  4. appsettings.json (default)

Mount a custom config into the container:

docker run -d --name logship-db \
  -p 5000:5000 -p 6000:6000 \
  -v $PWD/logship:/logship \
  -v $PWD/appsettings.json:/app/appsettings.json:ro \
  cr.logship.io/logship-database:latest

See the Configuration page for full details.

Upgrades

  • Container: Pull the new tag and restart. Data volumes are preserved automatically.
  • Native: Re-run the shell installer with --database (and --overwrite if you want to regenerate config), then restart or let systemd restart the service.