Configuration Guide
Pano uses a HOCON (Human-Optimized Config Object Notation) configuration file to manage its settings.
HOCON is similar to JSON but easier to read — it supports comments, unquoted strings, and trailing commas.
Learn more about it here:
👉 Lightbend HOCON Documentation
When Pano starts for the first time, it automatically generates a configuration file named config.conf in the same directory as your Pano-<version>.jar.
By default, Pano looks for this file using:
System.getProperty("pano.configFile", "config.conf")This means you can specify a custom configuration path using the JVM parameter -Dpano.configFile, like this:
java -Dpano.configFile=/path/to/custom.conf -jar Pano-1.0.0.jarIf not specified, Pano will use the default config.conf in the same folder as the JAR file.
During the installation process, some values such as database information, admin credentials, and URLs are automatically written or overridden.
If you modify them manually, Pano may overwrite them during startup or future updates.
Only edit what you understand and always make a backup before changing anything.
🔤 General Settings
# Configuration version used for migrations (DO NOT manually change)
config-version = <int>
# Enable or disable development mode (default: false)
development-mode = false
# Interface language code (added/edited through the admin panel)
locale = "en-US"
# Website name and description
website-name = ""
website-description = ""
# Support email used for notifications and password resets
support-email = ""
# Minecraft server information shown to players
server-ip-address = "play.ipadress.com"
server-game-version = "1.8.x"
# SEO keywords
keywords = []Tips
config-version: used internally for migrations — do not rename or edit it.development-mode: default is false for performance; set true only for debugging.locale: use short codes likeen-USortr(languages can be added in the panel).server-ip-address: visible in your theme — players can copy and use it to join your Minecraft server.
🗄️ Database Configuration
database {
host = "" # e.g., "127.0.0.1:3306"
name = "" # database name
username = ""
password = "" # can be empty if your database has no password
prefix = "pano_" # table prefix (do not change after installation)
}Notes
- Supports MySQL 5.5+ and MariaDB.
- Password can be blank if authentication is disabled.
- Changing
prefixafter setup may cause corruption — a reinstallation could be required.
👤 Pano Account (Optional)
pano-account {
username = ""
email = ""
access-token = "" # secure token for your Pano account
platform-id = "" # account ID
connect {
public-key = ""
private-key = ""
state = ""
}
}Important
- If unsure what this does, do not edit manually.
- Manage linking in Panel → Settings → Platform.
- Required for Marketplace features (updates, store installs).
- See Connect Your Pano Account → for more info.
🎨 Theme
current-theme = "vanilla-theme"Details
- Defines which theme is active.
- If an invalid theme ID is used, Pano falls back to
vanilla-theme. - Can be changed via Panel → View → Themes.
✉️ Email (SMTP)
email {
enabled = false
sender = "" # e.g., "Pano <[email protected]>" - mostly must be same with username
hostname = "" # e.g., "smtp.gmail.com"
port = 465
username = "" # e.g., "[email protected]"
password = ""
ssl = true
starttls = "" # "DISABLED" or "OPTIONAL" or "REQUIRED
authMethods = "" # optional, mostly "PLAIN"
}Info
- Optional during setup; configurable later via Panel → Settings → Platform.
- Without SMTP, password recovery and verification emails will not work.
🌐 Server Settings
server {
host = "0.0.0.0"
port = 80
}Explanation
127.0.0.1: only accessible locally (not external).0.0.0.0: makes the panel accessible to external networks.- Default port is 80 (TCP) — ensure it’s open and available.
- For HTTPS, use a reverse proxy (like Nginx), or Cloudflare.
🧩 Initialization, UI, and Updates
init-ui = true
jwt-key = "<auto-generated-base64>"
update-period = "ONCE_PER_DAY" # "ONCE_PER_DAY" or "ONCE_PER_WEEK" or "ONCE_PER_MONTH"
ui-address = "http://localhost:3000"Details
init-ui: launches the setup wizard, panel, and theme engine at startup.jwt-key: auto-generated Base64 authentication key — do not modify manually.update-period: defines update-check frequency.ui-address: used for links in system emails, like password resets.
📁 File Uploads and Paths
file-uploads-folder = "file-uploads"
file-paths = {
favicon = "path/to/favicon"
websiteLogo = "path/to/logo"
}Notes
- Controlled by Panel → Settings → Website.
- Only supports two entries:
faviconwebsiteLogo
- Manual edits are overwritten on updates or change of settings.
🔗 Pano Service URLs (Do Not Modify)
pano-api-url = "..." # auto-set based on environment
pano-website-url = "..."- These are managed by Pano automatically.
- Changing them can break connectivity with the Pano ecosystem.
🧱 Setup Progress (Internal)
setup {
step = 0
}Usage
- Tracks installation progress.
- Always stop Pano before editing.
step = 0: restarts the setup wizard.step = 5: marks setup as complete.- Only modify if instructed by support; improper edits may cause broken installations.
✅ Production Checklist
development-mode = false- Port 80 (TCP) open and reachable
- Reverse proxy set up for HTTPS (optional)
- Secure and private
jwt-key - Valid SMTP credentials configured
- Database prefix unchanged post-install
- Correct theme ID set or falls back to Vanilla Theme
- Regular backups for database and uploads
🧪 Example Minimal Configuration
development-mode = false
locale = "en-US"
website-name = "My Awesome Server"
website-description = "Survival • Events • Friendly Community"
support-email = "[email protected]"
server-ip-address = "mc.myserver.com"
server-game-version = "1.20.x"
database {
host = "127.0.0.1:3306"
name = "pano_prod"
username = "pano_user"
password = ""
prefix = "pano_"
}
current-theme = "vanilla-theme"
email {
enabled = true
sender = "Pano <[email protected]>"
hostname = "smtp.myserver.com"
port = 465
username = "[email protected]"
password = "REPLACE_ME"
ssl = true
}
server {
host = "0.0.0.0"
port = 80
}🔄 After Editing
- Save and restart Pano after editing.
- Avoid changing auto-generated fields (e.g.,
jwt-key,config-version). - Check for syntax issues if startup fails.
- Always back up before upgrading or reinstalling.
Need help? Visit the FAQ, join our Discord community, or report issues on GitHub.