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
- 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
- Generate secrets
npm run secrets:generate
This writes random passwords to
.env. SetPUBLIC_URLthere to your forum’s address, andWEB_PORTif port 3000 is taken. - Start Silkroad
docker compose up -d --build
The first build takes a few minutes.
- 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.
- Register straight away
The first account that registers becomes the administrator, so create yours before sharing the address.
- 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:4000Upgrading
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
pgdataanduploadsvolumes - Keep
.envprivate (permissions 600)