Configuration Overview
Configuration
Section titled “Configuration”All Courier config lives in config/courier/. Here’s what you’ll find:
config/courier/├── config.conf # Main settings (rate limits, expiry, economy)├── messages.conf # All player-facing text (MiniMessage format)├── courier_tooltips.conf # GUI tooltip templates and fragments├── guis/│ ├── inbox.conf # Inbox GUI layout│ ├── view.conf # Mail view GUI layout│ └── send.conf # Compose GUI layout└── presets/ ├── starter_kit.conf # Each preset is a separate file └── ...Everything’s auto-generated with sensible defaults on first launch — you only need to edit what you want to change.
HOCON Format
Section titled “HOCON Format”Everything’s HOCON format — think JSON but more relaxed. No commas needed, comments with #.
If you’ve worked with JSON, HOCON will feel familiar. It’s a relaxed superset with a few quality-of-life wins:
- Comments with
#or// - Nesting with
{}(same as JSON) - Lists with
[](same as JSON) - Substitutions with
${}to reference other values - No commas needed between fields
- Unquoted strings work for simple values
# This is a commentmail { dailyLimit = 100 hourlyLimit = 30
# Substitution example greeting = "Welcome, ${player.name}!"}Full spec: HOCON on GitHub.
Reloading
Section titled “Reloading”All config files and presets reload without a server restart:
/mailadmin reloadThat reloads config.conf, messages.conf, courier_tooltips.conf, all GUI layouts, and all presets. Changes take effect immediately.
Storage Setup
Section titled “Storage Setup”Courier stores mail data through Ceremony’s storage system, not its own. You configure storage in Ceremony’s config.
File: config/ceremony/config.conf
Storage Types
Section titled “Storage Types”| Type | Best For | Notes |
|---|---|---|
SQLITE | Single server, small communities | Default. Zero setup — stores in a local file |
MONGO_DB | Production, multi-server networks | Recommended for any serious deployment |
MARIA_DB | MySQL-compatible environments | Full SQL support, MariaDB or MySQL |
JSON | Development and testing only | Flat files, not suitable for production |
MongoDB Example
Section titled “MongoDB Example”storageType = MONGO_DBmongoDb { uri = "mongodb://localhost:27017" database = "courier"}SQLite Example
Section titled “SQLite Example”storageType = SQLITEThat’s it. No extra config needed — SQLite stores everything in a local file automatically.
Next Steps
Section titled “Next Steps”- Main Config — rate limits, expiry, economy, and all core settings
- Messages — customize every player-facing string
- Tooltips — control GUI hover text with templates and fragments