Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/syhily/yufan.me/llms.txt

Use this file to discover all available pages before exploring further.

The advanced settings sections control Redis caching behaviour, request rate limiting, search mode, outgoing mail, and scheduled backups — all configurable from the admin console without redeployment.

Cache (blog.cache)

Path: /admin/settings/cache The Cache section exposes six independently configurable Redis buckets. Each bucket has a prefix (used as the Redis key namespace) and a TTL in seconds.
BucketDefault prefixDefault TTL
OG imageog:86400 s (24 h)
Calendar SVGcalendar:86400 s (24 h)
Avataravatar:86400 s (24 h)
Image metadataimage-meta:3600 s (1 h)
Embedding searchembedding-search:604800 s (7 days)
Search resultsearch-result:3600 s (1 h)
TTL bounds: minimum 3600 s (1 h), maximum 2592000 s (30 days). Prefixes must match the pattern [a-z0-9_-]+: — only letters, digits, underscores, and hyphens, ending with a colon.
Cache prefixes must be unique across all buckets and must not conflict with the reserved prefixes session:, rate-limit:, and avatar-status:. Each prefix must end with :. The server rejects any save that would cause two buckets to share a prefix or for a bucket prefix to be a prefix-of or equal-to a reserved key — this prevents SCAN operations from spilling into a neighbouring bucket’s namespace.
You can clear any cache bucket from the same settings page without touching Redis directly.

Rate limits (blog.rateLimit)

Path: /admin/settings/rate-limit The Rate limits section lets you tune the per-surface request caps. Each bucket has a max attempts count and a window in seconds.
BucketDefault max attemptsDefault window
Sign-in by IP51800 s (30 min)
Comment post by IP123600 s (1 h)
Comment post by email83600 s (1 h)
Like increase by IP303600 s (1 h)
Invite by IP53600 s (1 h)
Invite by email13600 s (1 h)
Password reset by IP31800 s (30 min)
Password reset by email1300 s (5 min)
Password reset by target160 s (1 min)
Bounds: window 60 – 86400 s; max attempts 1 – 1000. The defaults mirror the historical hard-coded values, so an existing deployment that upgrades picks up the same behaviour automatically until you choose to tune the caps. Path: /admin/settings/search The Search section controls whether search is available on the public site and which search engine is used.
FieldDefaultDescription
EnabledOffShow the search UI and activate the search endpoint
Modelikelike for SQL LIKE search; vector for OpenAI vector search
OpenAI endpointCustom OpenAI-compatible API endpoint (leave empty for the official OpenAI endpoint)
API keyOpenAI API key (send empty to keep the existing value)
Modeltext-embedding-3-smallEmbedding model name
Similarity threshold0.5Minimum cosine similarity score for a result to be returned (0 – 1)
Embedding search requires the pgvector extension to be installed in your Postgres database. The system falls back to SQL LIKE search automatically if the extension is unavailable.
In like mode, no external API calls are made — search runs a SQL LIKE query directly against your Postgres database and has no external dependencies.

Mail (blog.mail)

Path: /admin/settings/mail The Mail section configures outgoing email through Zeabur ZSend. Mail is disabled by default.
FieldDefaultDescription
EnabledOffEnable outgoing email delivery
Hostapi.zeabur.comZSend API hostname (no scheme — https:// is always used)
API keyZeabur ZSend API key (send empty to keep the existing value)
Sender addressFrom address for outgoing mail (must be a valid email)
Mail is used for comment notification emails. The sender address must be verified with Zeabur ZSend before outgoing mail will be delivered. An unverified sender will cause the ZSend API to reject the request with a 4xx error.
Use the Send test email button on the settings page to verify your configuration before enabling live notifications.

Backup (blog.backup)

Path: /admin/settings/backup The Backup section schedules automated Postgres database dumps and configures how long backup files are retained.

Scheduled backups

FieldDefaultDescription
EnabledOffEnable the backup scheduler
Frequencydailydaily, weekly, or monthly
Hour (UTC)3Hour of day to run the backup (0 – 23)
Minute (UTC)0Minute within the hour (0 or 30)
Day of weekRequired when frequency is weekly (1 = Monday, 7 = Sunday)
Day of monthRequired when frequency is monthly (1 – 28)

Retention

FieldDefaultDescription
EnabledOnAutomatically delete old backups
Keep for30 daysNumber of days to retain backup files (1 – 365)
Backups are stored as gzipped pg_dump files in the S3 bucket configured in Settings → Assets. S3 must be enabled for backups to run.
The audit_log table is excluded from database backups. Audit log data has its own S3 archival pipeline: rows older than the configured DB retention period (default 30 days) are archived daily to audit-log/archive/YYYY-MM-DD.jsonl.gz in S3 and then deleted from Postgres. Archive files are kept for the configured archive retention period (default 180 days). Both values are configurable in Settings → Limits.

Build docs developers (and LLMs) love