SILKROAD™Get a free keyDownload

Install guide

Silkroad™ runs as four containers: the web app, the API, Postgres and Redis. Docker Compose starts them together.

What you need

  • A Linux server or computer with Docker and the Compose plugin (docker compose version)
  • Node.js 22 or newer, only to generate secrets
  • A domain pointed at the server, with HTTPS from a reverse proxy or a panel such as Coolify

Install with Docker

  1. Download and unzip
    curl -LO https://silkroad.shvy.my/download/silkroad-1.0.0.zip
    unzip silkroad-1.0.0.zip -d silkroad && cd silkroad
  2. Generate secrets
    npm run secrets:generate

    This writes random passwords to .env. Set PUBLIC_URL there to your forum’s address, and WEB_PORT if port 3000 is taken.

  3. Start Silkroad
    docker compose up -d --build

    The first build takes a few minutes.

  4. Run the doctor
    docker compose exec api node dist/doctor.js

    Every line should say PASS. If one fails, it says how to fix it.

  5. Register straight away

    The first account that registers becomes the administrator, so create yours before sharing the address.

  6. Activate your license

    Get a free key, then paste it in Admin CP › License.

Install with an AI assistant

Paste this into the assistant that can run commands on your server. It follows the official steps, runs the doctor after each one, and never asks for your passwords.

Install Silkroad™ forum software for me. Follow this guide exactly and ask me before any step you are unsure about.

# Silkroad™ install guide for AI assistants

You are helping someone install Silkroad™ forum software on their own server or computer. Follow these rules exactly.

## Rules

1. Use only the official commands in this file. Do not invent configs, Dockerfiles or alternative setups.
2. Never ask the user to paste passwords or secrets into the chat, and never print them back. Secrets are generated by `npm run secrets:generate` and stay in `.env`.
3. After every step, run the doctor and fix only what it reports:
   `docker compose exec api node dist/doctor.js`
4. If the doctor reports a failure you cannot fix with these commands, stop and tell the user what failed. Do not guess.

## Step 1: Ask the user

- What operating system is the server or computer on?
- Is Docker with the Compose plugin installed? (`docker compose version`)
- Is Node.js 22+ installed? (`node -v`) It is only needed to generate secrets.
- Which domain or port should the forum use?

If Docker is missing, point the user to the official Docker install page for their operating system and wait until `docker compose version` works.

## Step 2: Get the code and generate secrets

In the Silkroad folder:

```bash
npm run secrets:generate
```

Without Node: copy `.env.example` to `.env` and ask the user to replace both `change-me` values with long random strings themselves.

Set `WEB_PORT` in `.env` if port 3000 is taken.

## Step 3: Start Silkroad

```bash
docker compose up -d --build
```

The first build takes a few minutes. Then run the doctor (rule 3).

## Step 4: Check it works

Open `http://<server>:<WEB_PORT>` in a browser. The forum home with demo categories should appear.

## Step 5: Security checklist

Go through each item with the user:

- [ ] Put the forum behind HTTPS (a reverse proxy such as Caddy, Traefik, Nginx, or a panel such as Coolify).
- [ ] Only ports 80 and 443 (and 22 for SSH) should be open in the firewall. Postgres and Redis must not be exposed.
- [ ] Set up backups of the `pgdata` Docker volume.
- [ ] Keep `.env` private (permissions 600).

## Upgrading later

```bash
docker compose up -d --build
```

Then run the doctor.

Coolify

Create a Docker Compose resource from the unzipped folder, set the domain on the web service (port 3000), and Coolify generates the database password. The full file is docker-compose.coolify.yml in the download; the important parts:

services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: silkroad
      POSTGRES_DB: silkroad
      POSTGRES_PASSWORD: ${SERVICE_PASSWORD_POSTGRES}
    volumes: [silkroad-pgdata:/var/lib/postgresql/data]
  redis:
    image: redis:7-alpine
  api:
    build: { context: ., dockerfile: apps/api/Dockerfile }
    environment:
      DATABASE_URL: postgres://silkroad:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/silkroad
      REDIS_URL: redis://redis:6379
      PUBLIC_URL: https://forum.example.com
    volumes: [silkroad-uploads:/data/uploads]
  web:
    build: { context: ., dockerfile: apps/web/Dockerfile }
    environment:
      SERVICE_FQDN_WEB_3000: ""
      API_INTERNAL_URL: http://api:4000

Upgrading

docker compose up -d --build
docker compose exec api node dist/doctor.js

Database changes apply automatically when the API starts. Uploads live in the uploads volume and survive upgrades.

Security checklist

  • Serve the forum over HTTPS only
  • Open only ports 80, 443 and 22; never expose Postgres or Redis
  • Back up the pgdata and uploads volumes
  • Keep .env private (permissions 600)