
Deploy Remark42 on Your Own Server
Self-hosted, lightweight, and simple (yet functional) comment engine, which doesn't spy on users. It can be embedded into blogs, articles or any other place where readers add comments.
Want to deploy Remark42 on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.
What is Remark42?
See description of the parameters below [in the documentation](https://remark42.com/docs/configuration/parameters/). _multi_ parameters separated by `,` in the environment, like `ADMIN_SHARED_EMAIL=admin@example.org,admin2@example.org`
Self-Host Remark42
Follow these steps to deploy on your own server.
Install Docker
Skip this step if Docker is already installed on your server.
curl -fsSL https://get.docker.com | sh
Configure
Customize the settings below. Defaults work for most cases.
General
Deploy
Copy the configuration and run it on your server.
services:
remark42:
image: umputun/remark42:v1.9.0
environment:
ADMIN_EDIT: "false"
ADMIN_PASSWD: ""
ADMIN_SHARED_EMAIL: ""
ADMIN_SHARED_ID: ""
ALLOWED_HOSTS: remark42.your-domain.com,
ANON_VOTE: "false"
AUTH_ANON: "false"
AUTH_DEV: "false"
AUTH_EMAIL_CONTENT_TYPE: text/html
AUTH_EMAIL_ENABLE: "false"
AUTH_EMAIL_FROM: ""
AUTH_EMAIL_SUBJ: remark42 confirmation
AUTH_FACEBOOK_CID: ""
AUTH_FACEBOOK_CSEC: ""
AUTH_GITHUB_CID: ""
AUTH_GITHUB_CSEC: ""
AUTH_GOOGLE_CID: ""
AUTH_GOOGLE_CSEC: ""
AUTH_MICROSOFT_CID: ""
AUTH_MICROSOFT_CSEC: ""
AUTH_PATREON_CID: ""
AUTH_PATREON_CSEC: ""
AUTH_SAME_SITE: default
AUTH_SEND_JWT_HEADER: ${auth_send}-jwt_header
AUTH_TELEGRAM: "false"
AUTH_TTL_COOKIE: 200h
AUTH_TTL_JWT: 5m
AUTH_TWITTER_CID: ""
AUTH_TWITTER_CSEC: ""
AUTH_YANDEX_CID: ""
AUTH_YANDEX_CSEC: ""
AVATAR_BOLT_FILE: ./var/avatars.db
AVATAR_FS_PATH: ./var/avatars
AVATAR_RSZ_LMT: 0 (disabled)
AVATAR_TYPE: fs
AVATAR_URI: ./var/avatars
BACKUP_PATH: ./var/backup
CACHE_MAX_ITEMS: "1000"
CACHE_MAX_SIZE: "50000000"
CACHE_MAX_VALUE: "65536"
CACHE_REDIS_ADDR: 127.0.0.1:6379
CACHE_TYPE: mem
CRITICAL_SCORE: "-10"
DEBUG: "false"
EDIT_TIME: 5m
EMOJI: "false"
IMAGE_BOLT_FILE: /var/pictures.db
IMAGE_FS_PARTITIONS: "100"
IMAGE_FS_PATH: ./var/pictures
IMAGE_FS_STAGING: ./var/pictures.staging
IMAGE_MAX_SIZE: "5000000"
IMAGE_PROXY_CACHE_EXTERNAL: ${image}-proxy_cache_external
IMAGE_PROXY_HTTP2HTTPS: "false"
IMAGE_RESIZE_HEIGHT: "900"
IMAGE_RESIZE_WIDTH: "2400"
IMAGE_TYPE: fs
LOW_SCORE: "-5"
MAX_BACKUP_FILES: "10"
MAX_COMMENT_SIZE: "2048"
MAX_VOTES: "-1"
NOTIFY_ADMINS: none
NOTIFY_EMAIL_FROM: ""
NOTIFY_EMAIL_VERIFICATION_SUBJ: Email verification
NOTIFY_QUEUE: "100"
NOTIFY_SLACK_CHAN: general
NOTIFY_SLACK_TOKEN: ""
NOTIFY_TELEGRAM_CHAN: ""
NOTIFY_USERS: none
NOTIFY_WEBHOOK_HEADERS: ""
NOTIFY_WEBHOOK_TIMEOUT: 5s
NOTIFY_WEBHOOK_URL: ""
POSITIVE_SCORE: "false"
PROXY_CORS: "false"
READONLY_AGE: ""
REMARK_ADDRESS: ""
REMARK_PORT: "8080"
REMARK_URL: https://remark42.your-domain.com
REMARK_WEB_ROOT: ./web
RESTRICTED_NAMES: ""
RESTRICTED_WORDS: ""
SECRET: 54bba0a9ae
SIMPLE_VIEW: "false"
SITE: remark
SMTP_HOST: ""
SMTP_PASSWORD: ""
SMTP_PORT: ""
SMTP_TIMEOUT: 10s
SMTP_TLS: "false"
SMTP_USERNAME: ""
SSL_ACME_EMAIL: ""
SSL_ACME_LOCATION: ./var/acme
SSL_CERT: ""
SSL_KEY: ""
SSL_PORT: "8443"
SSL_TYPE: none
STORE_BOLT_PATH: ./var
STORE_BOLT_TIMEOUT: 30s
STORE_TYPE: bolt
SUBSCRIBERS_ONLY: "false"
TELEGRAM_TIMEOUT: 5s
TELEGRAM_TOKEN: ""
UPDATE_LIMIT: "0.5"
VOTES_IP: "false"
VOTES_IP_TIME: ${votes}-ip_time
volumes:
- remark42-data:/srv/var
volumes:
remark42-data: {}
Then run:
docker compose up -d
Access
Once started, access your app at http://localhost:8080
Why Self-Host Remark42?
Full Data Ownership
Your data stays on your servers. No third-party access.
No Monthly Fees
Pay only for your server. No per-seat or usage charges.
Complete Control
Customize, backup, and scale on your own terms.
Privacy & Compliance
Meet GDPR, HIPAA, or internal security requirements.
Technical Details
Docker Image
umputun/remark42:${tag_version}Want to go faster?
Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.
Install on any Linux server:
sh -c "$(curl -sSL https://get.senate.sh)"