mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
79 lines
4.3 KiB
Markdown
79 lines
4.3 KiB
Markdown
# Configuration
|
|
|
|
## Server CLI Flags
|
|
|
|
| Flag | Purpose | Default |
|
|
| --- | --- | --- |
|
|
| `--port` | Server listen port | `3000` |
|
|
| `--log-dir` | Log directory | empty |
|
|
| `--version` | Print version and exit | `false` |
|
|
| `--help` | Print help and exit | `false` |
|
|
|
|
## Server Environment Variables
|
|
|
|
| Variable | Purpose | Default |
|
|
| --- | --- | --- |
|
|
| `PORT` | Server listen port | `3000` |
|
|
| `GIN_MODE` | Gin mode | release unless `debug` |
|
|
| `LOG_LEVEL` | Log level | `info` |
|
|
| `SESSION_SECRET` | Session signing secret | random on startup |
|
|
| `SQLITE_PATH` | SQLite database path | `openflare.db` |
|
|
| `DSN` | PostgreSQL DSN, preferred over SQLite | empty |
|
|
| `SQL_DSN` | Legacy PostgreSQL DSN, lower priority than `DSN` | empty |
|
|
| `REDIS_CONN_STRING` | Redis connection string | empty |
|
|
| `UPLOAD_PATH` | Upload directory | `upload` |
|
|
| `AGENT_TOKEN` | Legacy global Agent token | empty |
|
|
|
|
When `DSN` and `SQL_DSN` both exist, `DSN` wins. PostgreSQL is preferred when configured. If PostgreSQL is empty and a local SQLite file exists, Server migrates SQLite data at startup.
|
|
|
|
## Frontend Build Variables
|
|
|
|
| Variable | Purpose | Default |
|
|
| --- | --- | --- |
|
|
| `NEXT_PUBLIC_API_BASE_URL` | Frontend API base path | `/api` |
|
|
| `NEXT_PUBLIC_APP_VERSION` | Displayed frontend version | `dev` |
|
|
| `NEXT_DEV_BACKEND_URL` | Local dev backend proxy target | `http://127.0.0.1:3000` |
|
|
|
|
## Runtime Options
|
|
|
|
The settings page maintains these hot-updatable options:
|
|
|
|
| Option | Purpose | Default |
|
|
| --- | --- | --- |
|
|
| `AgentHeartbeatInterval` | Agent heartbeat interval in milliseconds | `10000` |
|
|
| `NodeOfflineThreshold` | Node offline threshold in milliseconds | `120000` |
|
|
| `AgentUpdateRepo` | Agent update repository | `Rain-kl/OpenFlare` |
|
|
| `GeoIPProvider` | Node/IP region provider | `ipinfo` |
|
|
| `DatabaseAutoCleanupEnabled` | Enable daily observability cleanup | `false` |
|
|
| `DatabaseAutoCleanupRetentionDays` | Retention days | `30` |
|
|
|
|
OpenResty performance and cache options are also stored in the Option table, including `OpenRestyWorkerProcesses`, `OpenRestyWorkerConnections`, `OpenRestyProxyConnectTimeout`, `OpenRestyProxyReadTimeout`, `OpenRestyCacheEnabled`, `OpenRestyCachePath`, and `OpenRestyCacheMaxSize`.
|
|
|
|
`AgentUpdateRepo` releases must publish a matching `.sha256` file for each Agent binary, such as `openflare-agent-linux-amd64.sha256`. Agent self-update verifies the SHA-256 digest before replacing the executable.
|
|
|
|
## Agent Configuration
|
|
|
|
Agent supports the `-config` CLI flag, an `agent.json` file, and the `LOG_LEVEL` environment variable.
|
|
|
|
| Field | Purpose | Required | Default / behavior |
|
|
| --- | --- | --- | --- |
|
|
| `server_url` | Control plane URL | yes | none |
|
|
| `agent_token` | Node-specific auth token | one of `agent_token` / `discovery_token` | empty |
|
|
| `discovery_token` | Global token for first registration | one of `agent_token` / `discovery_token` | empty |
|
|
| `node_name` | Node name | no | host name |
|
|
| `node_ip` | Node IP | no | auto-detected; Agent first queries the public egress IP through a third-party API, then falls back to local interfaces |
|
|
| `openresty_path` | OpenResty binary path | no | `openresty` |
|
|
| `openresty_container_name` | Deprecated Docker-control field, read for compatibility only | no | empty |
|
|
| `openresty_docker_image` | Deprecated Docker-control field, read for compatibility only | no | empty |
|
|
| `openresty_observability_port` | Local observability and OpenResty health-check port | no | `18081` |
|
|
| `docker_binary` | Deprecated Docker-control field, read for compatibility only | no | empty |
|
|
| `data_dir` | Agent data directory | no | `data` under config directory |
|
|
| `access_log_path` | OpenResty access log path | no | `data_dir/var/log/openflare/access.log` |
|
|
| `runtime_config_dir` | Runtime config directory, including `pow_config.json` | no | `data_dir/etc/openflare` |
|
|
| `heartbeat_interval` | Heartbeat interval | no | `10000` ms |
|
|
| `request_timeout` | HTTP timeout | no | `10000` ms |
|
|
|
|
`heartbeat_interval` and `request_timeout` accept milliseconds or Go duration strings.
|
|
|
|
When `node_ip` is not configured, Agent first queries `https://realip.cc` for the real public egress IP, which avoids recording a Docker bridge address in container deployments. If that lookup fails, Agent falls back to local interface detection and prefers a public IPv4 address.
|