Skip to content

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:

kotlin
System.getProperty("pano.configFile", "config.conf")

This means you can specify a custom configuration path using the JVM parameter -Dpano.configFile, like this:

bash
java -Dpano.configFile=/path/to/custom.conf -jar Pano-1.0.0.jar

If 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

jsonc
# 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 like en-US or tr (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

jsonc
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 prefix after setup may cause corruption — a reinstallation could be required.

👤 Pano Account (Optional)

jsonc
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

jsonc
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)

jsonc
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

jsonc
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

jsonc
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 keydo not modify manually.
  • update-period: defines update-check frequency.
  • ui-address: used for links in system emails, like password resets.

📁 File Uploads and Paths

jsonc
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:
    • favicon
    • websiteLogo
  • Manual edits are overwritten on updates or change of settings.

🔗 Pano Service URLs (Do Not Modify)

jsonc
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)

jsonc
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

jsonc
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.