Documentation
Configuration reference
Everlock uses namespaced module configuration instead of one giant undifferentiated settings surface.
Public mental model
- the binary starts from CLI and environment configuration
- modules own their own config surfaces
- frontends and backends are enabled explicitly
- HTTP routing is vhost-driven
- content sites have both admin-managed site config and repo-local
site.toml frontend-httppersists its runtime config ineverlock-system/config/frontend-http.toml- public hosts can become ACME-managed automatically when an HTTPS listener is configured
Current CLI shape
Everlock already uses explicit server mode and includes local site actions:
everlock serve ...
everlock server ...
everlock site preview --path ./website
everlock site build --path ./website --out ./dist
serve is the canonical runtime command. server remains accepted as an alias to catch the common variant without forcing users to remember the exact spelling.
Useful examples from the docs
Site creation
/site create my-site vhost=docs.everlock.sh mode=markdown
Per-site access log
Each site can opt into a JSONL access log persisted in a dedicated git
store (<site-store>-logs). The log section is absent for sites that have
never enabled it.
[backend.site-http.sites.my-wiki.log]
enabled = true
flush_interval = "5m"
flush_max_bytes = 262144
flush_max_entries = 1000
buffer_hard_cap = 1048576
channel_capacity = 8192
Enable, disable, and tune via /site log enable|disable|set. See the
access log page for the schema and operational
behaviour.
Site repository config
title = "My site"
description = "Docs published from git"
[nav]
links = [
{ label = "Home", url = "/" },
{ label = "Search", url = "/search" },
]
HTTP vhost model
Everlock's HTTP transport routes first by host, then by path mount. That means backend instances stay independent and the route table stays explicit.
HTTP frontend config
The HTTP frontend keeps its persisted settings in config/frontend-http.toml.
That file can describe:
listen_httplisten_httpsacme_emailacme_directoryacme_renew_before_daysredirect_http_to_httpsvhosts.<name>certs."<hostname>"
Example:
enabled = true
listen_http = "0.0.0.0:80"
listen_https = "0.0.0.0:443"
acme_email = "ops@everlock.sh"
acme_directory = "https://acme-v02.api.letsencrypt.org/directory"
acme_renew_before_days = 30
redirect_http_to_https = true
[vhosts.main]
host = "everlock.sh"
backend = "site-http"
[vhosts.admin]
host = "admin.everlock.sh"
backend = "admin-http"
[certs."everlock.sh"]
not_after = "2026-08-01T12:00:00Z"
renew_after = "2026-07-02T12:00:00Z"
fullchain = "config/everlock.sh/fullchain.pem"
privkey = "config/everlock.sh/privkey.pem"
Local hosts such as localhost, *.local, and raw IPs stay plain HTTP.
Public hosts become ACME-managed when listen_https is configured. The actual
PEM files live under config/<host>/fullchain.pem and config/<host>/privkey.pem.
Where to read in the repository
docs/module-system.mddocs/module-design-principles.mddocs/system-store.mddocs/site/config.md