164 lines
6.8 KiB
Markdown
164 lines
6.8 KiB
Markdown
# PPanel Configuration Guide
|
|
|
|
This document provides a comprehensive guide to the configuration file for the PPanel application. The configuration
|
|
file is in YAML format and defines settings for the server, logging, database, Redis, and admin access.
|
|
|
|
## 1. Configuration File Overview
|
|
|
|
- **Default Path**: `./etc/ppanel.yaml`
|
|
- **Custom Path**: Specify a custom path using the `--config` startup parameter.
|
|
- **Format**: YAML, supports comments, and must be named with a `.yaml` extension.
|
|
|
|
## 2. Configuration File Structure
|
|
|
|
Below is an example of the configuration file with default values and explanations:
|
|
|
|
```yaml
|
|
# PPanel Configuration
|
|
Host: "0.0.0.0" # Server listening address
|
|
Port: 8080 # Server listening port
|
|
Debug: false # Enable debug mode (disables background logging)
|
|
JwtAuth: # JWT authentication settings
|
|
AccessSecret: "" # Access token secret (randomly generated if empty)
|
|
AccessExpire: 604800 # Access token expiration (seconds)
|
|
Logger: # Logging configuration
|
|
ServiceName: "" # Service name for log identification
|
|
Mode: "console" # Log output mode (console, file, volume)
|
|
Encoding: "json" # Log format (json, plain)
|
|
TimeFormat: "2006-01-02T15:04:05.000Z07:00" # Custom time format
|
|
Path: "logs" # Log file directory
|
|
Level: "info" # Log level (info, error, severe)
|
|
Compress: false # Enable log compression
|
|
KeepDays: 7 # Log retention period (days)
|
|
StackCooldownMillis: 100 # Stack trace cooldown (milliseconds)
|
|
MaxBackups: 3 # Maximum number of log backups
|
|
MaxSize: 50 # Maximum log file size (MB)
|
|
Rotation: "daily" # Log rotation strategy (daily, size)
|
|
MySQL: # MySQL database configuration
|
|
Addr: "" # MySQL address (required)
|
|
Username: "" # MySQL username (required)
|
|
Password: "" # MySQL password (required)
|
|
Dbname: "" # MySQL database name (required)
|
|
Config: "charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai" # MySQL connection parameters
|
|
MaxIdleConns: 10 # Maximum idle connections
|
|
MaxOpenConns: 100 # Maximum open connections
|
|
LogMode: "info" # Log level (debug, error, warn, info)
|
|
LogZap: true # Enable Zap logging for SQL
|
|
SlowThreshold: 1000 # Slow query threshold (milliseconds)
|
|
Redis: # Redis configuration
|
|
Host: "localhost:6379" # Redis address
|
|
Pass: "" # Redis password
|
|
DB: 0 # Redis database index
|
|
Administer: # Admin login configuration
|
|
Email: "admin@ppanel.dev" # Admin login email
|
|
Password: "password" # Admin login password
|
|
```
|
|
|
|
## 3. Configuration Details
|
|
|
|
### 3.1 Server Settings
|
|
|
|
- **`Host`**: Address the server listens on.
|
|
- Default: `0.0.0.0` (all network interfaces).
|
|
- **`Port`**: Port the server listens on.
|
|
- Default: `8080`.
|
|
- **`Debug`**: Enables debug mode, disabling background logging.
|
|
- Default: `false`.
|
|
|
|
### 3.2 JWT Authentication (`JwtAuth`)
|
|
|
|
- **`AccessSecret`**: Secret key for access tokens.
|
|
- Default: Randomly generated if not specified.
|
|
- **`AccessExpire`**: Token expiration time in seconds.
|
|
- Default: `604800` (7 days).
|
|
|
|
### 3.3 Logging (`Logger`)
|
|
|
|
- **`ServiceName`**: Identifier for logs, used as the log filename in `volume` mode.
|
|
- Default: `""`.
|
|
- **`Mode`**: Log output destination.
|
|
- Options: `console` (stdout/stderr), `file` (to a directory), `volume` (Docker volume).
|
|
- Default: `console`.
|
|
- **`Encoding`**: Log format.
|
|
- Options: `json` (structured JSON), `plain` (plain text with colors).
|
|
- Default: `json`.
|
|
- **`TimeFormat`**: Custom time format for logs.
|
|
- Default: `2006-01-02T15:04:05.000Z07:00`.
|
|
- **`Path`**: Directory for log files.
|
|
- Default: `logs`.
|
|
- **`Level`**: Log filtering level.
|
|
- Options: `info` (all logs), `error` (error and severe), `severe` (severe only).
|
|
- Default: `info`.
|
|
- **`Compress`**: Enable compression for log files (only in `file` mode).
|
|
- Default: `false`.
|
|
- **`KeepDays`**: Retention period for log files (in days).
|
|
- Default: `7`.
|
|
- **`StackCooldownMillis`**: Cooldown for stack trace logging to prevent log flooding.
|
|
- Default: `100`.
|
|
- **`MaxBackups`**: Maximum number of log backups (for `size` rotation).
|
|
- Default: `3`.
|
|
- **`MaxSize`**: Maximum log file size in MB (for `size` rotation).
|
|
- Default: `50`.
|
|
- **`Rotation`**: Log rotation strategy.
|
|
- Options: `daily` (rotate daily), `size` (rotate by size).
|
|
- Default: `daily`.
|
|
|
|
### 3.4 MySQL Database (`MySQL`)
|
|
|
|
- **`Addr`**: MySQL server address.
|
|
- Required.
|
|
- **`Username`**: MySQL username.
|
|
- Required.
|
|
- **`Password`**: MySQL password.
|
|
- Required.
|
|
- **`Dbname`**: MySQL database name.
|
|
- Required.
|
|
- **`Config`**: MySQL connection parameters.
|
|
- Default: `charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai`.
|
|
- **`MaxIdleConns`**: Maximum idle connections.
|
|
- Default: `10`.
|
|
- **`MaxOpenConns`**: Maximum open connections.
|
|
- Default: `100`.
|
|
- **`LogMode`**: SQL logging level.
|
|
- Options: `debug`, `error`, `warn`, `info`.
|
|
- Default: `info`.
|
|
- **`LogZap`**: Enable Zap logging for SQL queries.
|
|
- Default: `true`.
|
|
- **`SlowThreshold`**: Threshold for slow query logging (in milliseconds).
|
|
- Default: `1000`.
|
|
|
|
### 3.5 Redis (`Redis`)
|
|
|
|
- **`Host`**: Redis server address.
|
|
- Default: `localhost:6379`.
|
|
- **`Pass`**: Redis password.
|
|
- Default: `""` (no password).
|
|
- **`DB`**: Redis database index.
|
|
- Default: `0`.
|
|
|
|
### 3.6 Admin Login (`Administer`)
|
|
|
|
- **`Email`**: Admin login email.
|
|
- Default: `admin@ppanel.dev`.
|
|
- **`Password`**: Admin login password.
|
|
- Default: `password`.
|
|
|
|
## 4. Environment Variables
|
|
|
|
The following environment variables can be used to override configuration settings:
|
|
|
|
| Environment Variable | Configuration Section | Example Value |
|
|
|----------------------|-----------------------|----------------------------------------------|
|
|
| `PPANEL_DB` | MySQL | `root:password@tcp(localhost:3306)/vpnboard` |
|
|
| `PPANEL_REDIS` | Redis | `redis://localhost:6379` |
|
|
|
|
## 5. Best Practices
|
|
|
|
- **Security**: Avoid using default `Administer` credentials in production. Update `Email` and `Password` to secure
|
|
values.
|
|
- **Logging**: Use `file` or `volume` mode for production to persist logs. Adjust `Level` to `error` or `severe` to
|
|
reduce log volume.
|
|
- **Database**: Ensure `MySQL` and `Redis` credentials are secure and not exposed in version control.
|
|
- **JWT**: Specify a strong `AccessSecret` for `JwtAuth` to enhance security.
|
|
|
|
For further assistance, refer to the official PPanel documentation or contact support. |