How to Deploy ReplyForge using Uncloud

In this guide, I'll show you how to deploy ReplyForge usingUncloud, which is an amazing tool for deploying containers.

After buying a server and installing Uncloud on your computer, run theuc initcommand against it, for exampleuc init --name mymachine [email protected]to initialize Uncloud on the server.

Then, create a directory to hold your config files:

Terminal
mkdir replyforge

Inside that directory, create adocker-compose.ymlfile:

docker-compose.yml
name: replyforge

volumes:
  comments_data:

services:
  comments:
    image: dockershepherd/replyforge:<version>
    env_file:
      - path: ./.env.production
        required: true
    volumes:
      - comments_data:/app/data
    x-ports:
      - comments.example.com:8080/https
    x-machines:
      - mymachine

Replace<version>with the latest version available on theDockerHub tags page.

Also replacecomments.example.comwith your own domain name, andmymachinewith the machine name you chose when you ranuc init.

Next, you need to create.env.productionto configure ReplyForge:

.env.production
PORT=8080
DATABASE_PATH=data/comments.db
LOG_LEVEL=info
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
ALLOWED_ORIGINS=https://exampleblog.com
RATE_LIMIT_RPM=10
RATE_LIMIT_BURST=15
READ_TIMEOUT=10s
WRITE_TIMEOUT=10s
IDLE_TIMEOUT=60s
SHUTDOWN_TIMEOUT=30s

# Admin interface password hash (Argon2id PHC format).
# Generate with: docker run -it dockershepherd/replyforge:latest hash-password
# Leave empty to disable admin login.
# Wrap with single quotes (') to avoid interpolation when loaded from Docker Compose
ADMIN_PASSWORD_HASH=
# Admin session TTL (default: 24h)
ADMIN_SESSION_TTL=24h
# Set to false to allow admin session cookies over plain HTTP (e.g., local dev)
ADMIN_SESSION_SECURE=true

# SMTP configuration for admin email notifications.
# Leave SMTP_HOST empty to disable email notifications.
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
[email protected]
[email protected]

You will need to get your Turnstile secret key from Cloudflare, and generate a password hash for logging into the Admin interface usingdocker run -it dockershepherd/replyforge:latest hash-password.


Deploying

Next, runuc volume create -m mymachine comments_datato create the volume that will hold the SQLite database.

Once you have all these files populated, runuc deployand ReplyForge should be available at the domain you chose (https://comments.example.com).