mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-03 15:06:36 +08:00
docs(i18n): 恢复并补齐英文版 vitepress,README 默认改为英文
- README 默认英文:README.en.md → README.md(英文为默认),中文移至 README.zh-CN.md,语言切换链接同步 - 恢复被删除的 docs/en/ 英文文档(git 历史 cc5e53c5^),删除 4 篇已废弃文件 - 英文导航 config.ts 对齐中文结构(新增 Deployment/Changelog 侧栏,同步 Guide/Design 条目) - 翻译 15 篇中文新增文档:guide 5 篇(certificates/pages-usage/proxy-config/uptime-kuma/zone-domain-migration)+ design 10 篇(zone-design/cloudflare-pointing/waf-orchestration/origin-error-page/edge-cache-design/pages-design/logstore/kuma-design/login-captcha/observability 三篇) - en 首页更新(新增 Pages 特性、tagline 同步);changelog 英文入口指向中文版 - vitepress 构建验证:43 个英文页面全部渲染 注意:29 篇旧英文文档为恢复版,部分内容(如 deployment/server、reference/configuration)可能落后于中文,需后续逐篇同步
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
# CLI Commands
|
||||
|
||||
You will learn: Common commands for starting, building, testing, installing, and uninstalling the OpenFlare Server, Admin Frontend, Agent, Swagger, and Documentation site.
|
||||
|
||||
## Server
|
||||
|
||||
Start from source:
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
export SESSION_SECRET='replace-with-random-string'
|
||||
export SQLITE_PATH='./openflare.db'
|
||||
export LOG_LEVEL='info'
|
||||
go run .
|
||||
```
|
||||
|
||||
Specify listening port and logging directory:
|
||||
|
||||
```bash
|
||||
go run . --port 3000 --log-dir ./logs
|
||||
```
|
||||
|
||||
Run tests:
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
GOCACHE=/tmp/openflare-go-cache go test ./...
|
||||
```
|
||||
|
||||
## Frontend
|
||||
|
||||
Development:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Build static assets:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
pnpm build
|
||||
```
|
||||
|
||||
Linting and testing checks:
|
||||
|
||||
```bash
|
||||
cd openflare-server/web
|
||||
pnpm lint
|
||||
pnpm typecheck
|
||||
pnpm test
|
||||
```
|
||||
|
||||
## Agent
|
||||
|
||||
Run from source:
|
||||
|
||||
```bash
|
||||
cd openflare-agent
|
||||
go run ./cmd/agent -config /path/to/agent.json
|
||||
```
|
||||
|
||||
Compile:
|
||||
|
||||
```bash
|
||||
cd openflare-agent
|
||||
go build -o openflare-agent ./cmd/agent
|
||||
```
|
||||
|
||||
Run tests:
|
||||
|
||||
```bash
|
||||
cd openflare-agent
|
||||
GOCACHE=/tmp/openflare-go-cache go test ./...
|
||||
```
|
||||
|
||||
## Relay (Server-side)
|
||||
|
||||
Run from source:
|
||||
|
||||
```bash
|
||||
cd openflare-relay
|
||||
go run ./cmd -config /path/to/relay.json
|
||||
```
|
||||
|
||||
Compile:
|
||||
|
||||
```bash
|
||||
cd openflare-relay
|
||||
go build -o openflare-relay ./cmd
|
||||
```
|
||||
|
||||
## OpenFlared (Client-side)
|
||||
|
||||
Run from source:
|
||||
|
||||
```bash
|
||||
cd openflared
|
||||
go run ./cmd -config /path/to/flared.json
|
||||
```
|
||||
|
||||
Compile:
|
||||
|
||||
```bash
|
||||
cd openflared
|
||||
go build -o openflared ./cmd
|
||||
```
|
||||
|
||||
## Install Agent
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/Rain-kl/OpenFlare/main/scripts/install-agent.sh | bash -s -- \
|
||||
--server-url http://your-server:3000 \
|
||||
--agent-token YOUR_AGENT_TOKEN
|
||||
```
|
||||
|
||||
## Uninstall Agent
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/Rain-kl/OpenFlare/main/scripts/uninstall-agent.sh | bash
|
||||
```
|
||||
|
||||
## Swagger
|
||||
|
||||
Regenerate Swagger documentation:
|
||||
|
||||
```bash
|
||||
go install github.com/swaggo/swag/cmd/swag@v1.16.4
|
||||
cd openflare-server
|
||||
swag init -g main.go -o docs
|
||||
```
|
||||
|
||||
## Docs
|
||||
|
||||
Local preview:
|
||||
|
||||
```bash
|
||||
cd docs
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Build:
|
||||
|
||||
```bash
|
||||
cd docs
|
||||
pnpm build
|
||||
```
|
||||
@@ -0,0 +1,370 @@
|
||||
# Configuration Options
|
||||
|
||||
You will learn: What configuration sources are supported by OpenFlare Server, frontend builds, and Agents; what the default configuration values are; and how to configure common deployment combinations.
|
||||
|
||||
This document aggregates the currently supported configuration options for OpenFlare Server and Agent in version `1.0.0`, keeping only running parameters that are currently active.
|
||||
|
||||
## Configuration Sources
|
||||
|
||||
The Server supports three types of configuration sources:
|
||||
|
||||
1. CLI arguments.
|
||||
2. Environment variables.
|
||||
3. Runtime configurations in the database `options` table.
|
||||
|
||||
The Agent supports:
|
||||
|
||||
1. The `-config` CLI argument.
|
||||
2. The `agent.json` configuration file.
|
||||
3. A small set of environment variables for overriding logs and settings.
|
||||
|
||||
The Relay (Server-side) supports:
|
||||
|
||||
1. The `-config` CLI argument.
|
||||
2. The `relay.json` configuration file.
|
||||
3. Persistent environment variables for overriding runtime flags.
|
||||
|
||||
The Client (Intranet Client) supports:
|
||||
|
||||
1. The `-config` CLI argument.
|
||||
2. The `flared.json` configuration file.
|
||||
3. Startup overrides and logging environment variables.
|
||||
|
||||
## Configuration File Locations
|
||||
|
||||
| Component | Default Location | Description |
|
||||
| --- | --- | --- |
|
||||
| Server SQLite | `openflare.db` | Can be customized via `SQLITE_PATH` |
|
||||
| Agent Config | `./agent.json` | Can be specified via `-config` |
|
||||
| One-Click Agent | `/opt/openflare-agent/agent.json` | Generated by the installation script by default |
|
||||
| Agent Data Dir | `data` in the config folder | Can be customized via `data_dir` |
|
||||
| Relay Config | `./relay.json` | Can be specified via `-config` |
|
||||
| One-Click Relay | `/opt/openflare-relay/relay.json` | Generated by the installation script by default |
|
||||
| Client Config | `./flared.json` | Can be specified via `-config` |
|
||||
| One-Click Client | `/opt/openflared/flared.json` | Generated by the installation script by default |
|
||||
|
||||
## Server CLI Arguments
|
||||
|
||||
```bash
|
||||
cd openflare-server
|
||||
go run . --port 3000 --log-dir ./logs
|
||||
```
|
||||
|
||||
| Argument | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `--port` | Port the Server listens on | `3000` |
|
||||
| `--log-dir` | Directory to output logs | Empty (stdout) |
|
||||
| `--version` | Outputs current version and exits | `false` |
|
||||
| `--help` | Outputs help information and exits | `false` |
|
||||
|
||||
## Server Environment Variables
|
||||
|
||||
| Environment Variable | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `PORT` | Port the Server listens on | `3000` |
|
||||
| `GIN_MODE` | Gin framework running mode | Defaults to release unless `debug` |
|
||||
| `LOG_LEVEL` | Logging level | `info` |
|
||||
| `SESSION_SECRET` | Session signing key | Randomly generated on startup |
|
||||
| `SQLITE_PATH` | SQLite database file path | `openflare.db` |
|
||||
| `DSN` | PostgreSQL DSN (takes precedence over SQLite) | Empty |
|
||||
| `SQL_DSN` | Legacy PostgreSQL DSN (lower priority than `DSN`) | Empty |
|
||||
| `REDIS_CONN_STRING` | Redis connection string | Empty |
|
||||
| `AGENT_TOKEN` | Legacy global Agent Token | Empty |
|
||||
|
||||
Notes:
|
||||
|
||||
* If both `DSN` and `SQL_DSN` exist, `DSN` is prioritized.
|
||||
* If either `DSN` or `SQL_DSN` coexist with `SQLITE_PATH`, PostgreSQL is prioritized.
|
||||
* If the target PostgreSQL database is empty and a local SQLite file exists at `SQLITE_PATH`, the Server automatically migrates SQLite data table-by-table on startup.
|
||||
* `SESSION_SECRET` must be explicitly configured in production.
|
||||
* If `REDIS_CONN_STRING` is unconfigured, co-located features fall back to in-memory implementations.
|
||||
|
||||
## Runtime Options
|
||||
|
||||
The following options are maintained in the admin settings page and support hot reloading:
|
||||
|
||||
| Parameter | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `AgentHeartbeatInterval` | Heartbeat interval for Agents (ms) | `10000` |
|
||||
| `AgentWebsocketUpgradeEnabled` | Toggles WebSocket upgrades after successful HTTP heartbeat | `true` |
|
||||
| `NodeOfflineThreshold` | Threshold duration to mark a node offline (ms) | `120000` |
|
||||
| `AgentUpdateRepo` | GitHub repository for Agent self-updates | `Rain-kl/OpenFlare` |
|
||||
| `GeoIPProvider` | Geolocation resolution provider | `ipinfo` |
|
||||
| `DatabaseAutoCleanupEnabled` | Toggles daily automatic cleanup of observability logs | `false` |
|
||||
| `DatabaseAutoCleanupRetentionDays` | Data retention duration in days, minimum 1 day | `30` |
|
||||
| `GlobalApiRateLimitNum` / `GlobalApiRateLimitDuration` | Global API rate limit count / window | `300` / `180` |
|
||||
| `GlobalWebRateLimitNum` / `GlobalWebRateLimitDuration` | Global Web rate limit count / window | `300` / `180` |
|
||||
| `CriticalRateLimitNum` / `CriticalRateLimitDuration` | Sensitive API rate limit count / window | `100` / `1200` |
|
||||
|
||||
Notes:
|
||||
|
||||
* When `DatabaseAutoCleanupEnabled` is enabled, the Server deletes `node_access_logs`, `node_metric_snapshots`, and `node_request_reports` daily at 3:00 AM.
|
||||
* `DatabaseAutoCleanupRetentionDays` must be greater than or equal to 1.
|
||||
* Leaving retention days blank during a manual trigger in the console deletes all historic logs instantly.
|
||||
* The GitHub Release in `AgentUpdateRepo` must contain a matching `.sha256` checksum file for every Agent binary (e.g., `openflare-agent-linux-amd64.sha256`); the Agent validates this checksum before replacing the local executable.
|
||||
* Third-party logins no longer use `GitHubOAuthEnabled`, `GitHubClientId`, and `GitHubClientSecret` as main configuration entrypoints; these legacy options are used only for migrating default GitHub credentials during upgrades.
|
||||
* The legacy WeChat login options are kept for backward compatibility, but the option page no longer edits them.
|
||||
* Legacy Cloudflare Turnstile options and validation logic are retained and will work normally.
|
||||
|
||||
## OpenResty Parameters
|
||||
|
||||
OpenResty performance and caching parameters are managed in the `options` table, including:
|
||||
|
||||
* `OpenRestyWorkerProcesses`
|
||||
* `OpenRestyWorkerConnections`
|
||||
* `OpenRestyWorkerRlimitNofile`
|
||||
* `OpenRestyKeepaliveTimeout`
|
||||
* `OpenRestyProxyConnectTimeout`
|
||||
* `OpenRestyProxySendTimeout`
|
||||
* `OpenRestyProxyReadTimeout`
|
||||
* `OpenRestyProxyBufferingEnabled`
|
||||
* `OpenRestyGzipEnabled`
|
||||
* `OpenRestyCacheEnabled`
|
||||
* `OpenRestyCachePath`
|
||||
* `OpenRestyCacheMaxSize`
|
||||
|
||||
These parameters must be validated, saved, and rendered structurally.
|
||||
|
||||
Constraints:
|
||||
|
||||
* The console no longer exposes `resolver` settings.
|
||||
* Upstreams are rendered uniformly as named `upstream` blocks with keepalive enabled.
|
||||
* Single upstreams carrying a base path or query have their URI correctly appended in `proxy_pass`.
|
||||
* Multi-upstreams must be pure `scheme://host[:port]` using the same protocol within a single rule.
|
||||
* `OpenRestyCacheEnabled` enables cache infrastructure and global defaults; the actual caching matching policies (by URL, suffix, or path) are configured per `proxy_routes`.
|
||||
* The default cache key is `$scheme$host$request_uri`.
|
||||
* Default `keepalive_timeout` is `20` seconds; default `proxy_connect_timeout` is `3` seconds.
|
||||
* The default event model is `epoll` with `multi_accept` enabled.
|
||||
* HTTPS listeners use the independent `http2 on;` directive to avoid deprecation warnings for `listen ... http2` in newer Nginx/OpenResty versions.
|
||||
|
||||
## Frontend Build Environment Variables
|
||||
|
||||
| Environment Variable | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `NEXT_PUBLIC_API_BASE_URL` | Base path for frontend API calls | `/api` |
|
||||
| `NEXT_PUBLIC_APP_VERSION` | Application version shown in the UI | `dev` |
|
||||
| `NEXT_DEV_BACKEND_URL` | Target backend proxied by the local dev server | `http://127.0.0.1:3000` |
|
||||
|
||||
## Agent Environment Variables
|
||||
|
||||
| Environment Variable | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `LOG_LEVEL` | Logging level for the Agent | `info` |
|
||||
| `OPENFLARE_SERVER_URL` | Server URL; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_AGENT_TOKEN` | Node-specific Token; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_DISCOVERY_TOKEN` | Auto-registration Token; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_NODE_NAME` | Node name; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_NODE_IP` | Node IP; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_DATA_DIR` | Agent data directory; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_OPENRESTY_PATH` | Path to OpenResty binary; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_HEARTBEAT_INTERVAL` | Heartbeat interval; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_REQUEST_TIMEOUT` | Request timeout; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_OPENRESTY_OBSERVABILITY_PORT` | Local observability port; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_MMDB_PATH` | WAF GeoIP mmdb path; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_MMDB_UPDATE_INTERVAL` | GeoIP mmdb update interval; overrides `agent.json` | Empty |
|
||||
| `OPENFLARE_MMDB_DOWNLOAD_URL` | GeoIP mmdb download link; overrides `agent.json` | Empty |
|
||||
|
||||
## Agent CLI Arguments
|
||||
|
||||
| Argument | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `-config` | Path to the Agent configuration file | `./agent.json` |
|
||||
|
||||
## Agent Configurations Fields
|
||||
|
||||
| Field | Description | Required | Default Value / Behavior |
|
||||
| --- | --- | --- | --- |
|
||||
| `server_url` | Control plane URL | Yes | None |
|
||||
| `agent_token` | Node-specific access Token | Mutually exclusive with discovery_token | Empty |
|
||||
| `discovery_token` | Global auto-registration Token | Mutually exclusive with agent_token | Empty |
|
||||
| `node_name` | Node name | No | Hostname |
|
||||
| `node_ip` | Node IP | No | Auto-detect, resolves outbound public IP via realip.cc first, falls back to local adapters |
|
||||
| `openresty_path` | Path to the OpenResty binary | No | `"openresty"` |
|
||||
| `openresty_observability_port` | Observability port for health checks | No | `18081` |
|
||||
| `data_dir` | Agent data directory | No | `data` in the config folder |
|
||||
| `main_config_path` | Write path for Nginx main configuration | No | `data_dir/etc/nginx/nginx.conf` |
|
||||
| `route_config_path` | Write path for route configurations | No | `data_dir/etc/nginx/conf.d/openflare_routes.conf` |
|
||||
| `access_log_path` | Write path for OpenResty access logs | No | `data_dir/var/log/openflare/access.log` |
|
||||
| `cert_dir` | Write directory for SSL certificates | No | `data_dir/etc/nginx/certs` |
|
||||
| `openresty_cert_dir` | Read directory for certificates in Nginx | No | Same as `cert_dir` |
|
||||
| `lua_dir` | Write directory for Lua scripts and assets | No | `data_dir/etc/nginx/lua` |
|
||||
| `openresty_lua_dir` | Read directory for Lua scripts in Nginx | No | Same as `lua_dir` |
|
||||
| `runtime_config_dir` | Write directory for Agent runtime configs | No | `data_dir/etc/openflare` |
|
||||
| `mmdb_path` | WAF GeoIP database file path | No | `data_dir/etc/openflare/GeoLite2-Country.mmdb` |
|
||||
| `mmdb_update_interval` | WAF GeoIP database check interval | No | `86400000` milliseconds |
|
||||
| `mmdb_download_url` | WAF GeoIP database download URL | No | Built-in GeoLite2 Country URL |
|
||||
| `observability_buffer_path` | Buffer path for retry metrics logs | No | `data_dir/var/lib/openflare/observability-buffer.json` |
|
||||
| `observability_replay_minutes` | Lookback window for metric retries | No | `15` |
|
||||
| `state_path` | Path to store local state JSON file | No | `data_dir/var/lib/openflare/agent-state.json` |
|
||||
| `heartbeat_interval` | Heartbeat polling interval | No | `10000` milliseconds |
|
||||
| `request_timeout` | HTTP request timeout duration | No | `10000` milliseconds |
|
||||
|
||||
Notes:
|
||||
|
||||
* `agent_token` and `discovery_token` cannot both be empty.
|
||||
* `heartbeat_interval` and `request_timeout` support integer milliseconds or Go duration strings.
|
||||
* If `AgentWebsocketUpgradeEnabled` is enabled on the Server, the Agent upgrades the HTTP heartbeat to WebSocket; it automatically falls back to HTTP heartbeats if it fails or disconnects.
|
||||
* If `openresty_path` is left blank, the Agent calls `openresty` on the host.
|
||||
* Periodic health checks query `http://127.0.0.1:<openresty_observability_port>/openflare/stub_status` instead of executing `openresty -t`; validation prior to reloads, starts, or rollbacks still runs `openresty -t -c <main_config_path>`.
|
||||
* The Agent initializes and periodically updates `mmdb_path` to support GeoIP region checks; failures to update write warnings and do not disrupt configuration synchronizations.
|
||||
* The Agent boots normally if `agent.json` is missing but environment variables (`OPENFLARE_SERVER_URL` and a Token) are available; environment variables override JSON settings.
|
||||
* If `node_ip` is left blank, the Agent resolves its outbound IP via `https://realip.cc` first, which is suitable for Docker/NAT networks.
|
||||
* If the Agent registers a private `node_ip`, the Server prioritizes saving the public TCP connection IP, preventing NAT adapters from registering internal IPs.
|
||||
* Enabling "Lock Node IP" in the console retains the manual IP; subsequent Agent registration or heartbeats do not overwrite it.
|
||||
|
||||
## Relay Environment Variables
|
||||
|
||||
| Environment Variable | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `LOG_LEVEL` | Logging level for the Relay | `info` |
|
||||
| `OPENFLARE_SERVER_URL` | Server URL; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_AGENT_TOKEN` | Node-specific Token; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_DISCOVERY_TOKEN` | Auto-registration Token; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_NODE_NAME` | Node name; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_NODE_IP` | Node IP; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_DATA_DIR` | Relay data directory; overrides `relay.json` | Empty |
|
||||
| `OPENFLARE_FRPS_PATH` | frps binary path; overrides `relay.json` | Empty |
|
||||
|
||||
## Relay CLI Arguments
|
||||
|
||||
| Argument | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `-config` | Path to the Relay configuration file | `./relay.json` |
|
||||
|
||||
## Relay Configuration Fields
|
||||
|
||||
| Field | Description | Required | Default Value / Behavior |
|
||||
| --- | --- | --- | --- |
|
||||
| `server_url` | Control plane URL | Yes | None |
|
||||
| `agent_token` | Node-specific access Token | Mutually exclusive with discovery_token | Empty |
|
||||
| `discovery_token` | Global auto-registration Token | Mutually exclusive with agent_token | Empty |
|
||||
| `node_name` | Node name | No | Hostname |
|
||||
| `node_ip` | Relay listening IP for tunnel traffic | No | Auto-detect, prioritizes outbound public IP |
|
||||
| `frps_path` | Path to the `frps` binary | No | `frps` (system PATH) |
|
||||
| `data_dir` | Relay runtime data directory | No | `data` in the config folder |
|
||||
| `state_path` | Path to store local state JSON file | No | `data_dir/relay-state.json` |
|
||||
| `heartbeat_interval` | Heartbeat polling interval | No | `10000` milliseconds, supports Go duration strings |
|
||||
| `request_timeout` | HTTP request timeout duration | No | `10000` milliseconds, supports Go duration strings |
|
||||
|
||||
## OpenFlared (Client) Environment Variables
|
||||
|
||||
| Environment Variable | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `LOG_LEVEL` | Logging level for the client | `info` |
|
||||
| `OPENFLARE_SERVER_URL` | Server URL; overrides `flared.json` | Empty |
|
||||
| `OPENFLARE_TUNNEL_TOKEN` | Tunnel access Token; overrides `flared.json` | Empty |
|
||||
| `OPENFLARE_DATA_DIR` | Client data directory; overrides `flared.json` | Empty |
|
||||
| `OPENFLARE_FRPC_PATH` | frpc binary path; overrides `flared.json` | Empty |
|
||||
|
||||
## OpenFlared (Client) CLI Arguments
|
||||
|
||||
| Argument | Description | Default Value |
|
||||
| --- | --- | --- |
|
||||
| `-config` | Path to the client configuration file | `./flared.json` |
|
||||
|
||||
## OpenFlared (Client) Configuration Fields
|
||||
|
||||
| Field | Description | Required | Default Value / Behavior |
|
||||
| --- | --- | --- | --- |
|
||||
| `server_url` | Control plane URL | Yes | None |
|
||||
| `tunnel_token` | Tunnel dedicated access Token | Yes | None |
|
||||
| `frpc_path` | Path to the `frpc` binary | No | `frpc` (system PATH) |
|
||||
| `data_dir` | Client runtime data directory | No | `data` in the config folder |
|
||||
| `state_path` | Path to store local state JSON file | No | `data_dir/flared-state.json` |
|
||||
| `heartbeat_interval` | Heartbeat polling interval | No | `10000` milliseconds, supports Go duration strings |
|
||||
| `sync_interval` | Configuration sync interval | No | `30000` milliseconds, supports Go duration strings |
|
||||
| `request_timeout` | HTTP request timeout duration | No | `10000` milliseconds, supports Go duration strings |
|
||||
|
||||
## Common Configuration Combos
|
||||
|
||||
### Production Server + PostgreSQL
|
||||
|
||||
```bash
|
||||
export SESSION_SECRET='replace-with-a-long-random-string'
|
||||
export DSN='postgres://openflare:replace-with-strong-password@postgres:5432/openflare?sslmode=disable'
|
||||
export GIN_MODE='release'
|
||||
export LOG_LEVEL='info'
|
||||
```
|
||||
|
||||
### Local Server + SQLite
|
||||
|
||||
```bash
|
||||
export SESSION_SECRET='dev-session-secret'
|
||||
export SQLITE_PATH='./openflare-dev.db'
|
||||
export LOG_LEVEL='debug'
|
||||
go run .
|
||||
```
|
||||
|
||||
### Agent + Default OpenResty
|
||||
|
||||
```json
|
||||
{
|
||||
"server_url": "http://your-server:3000",
|
||||
"agent_token": "replace-with-node-auth-token",
|
||||
"data_dir": "/opt/openflare-agent/data",
|
||||
"openresty_path": "openresty",
|
||||
"heartbeat_interval": 10000,
|
||||
"request_timeout": 10000
|
||||
}
|
||||
```
|
||||
|
||||
### Agent + Customized OpenResty Paths
|
||||
|
||||
```json
|
||||
{
|
||||
"server_url": "http://your-server:3000",
|
||||
"agent_token": "replace-with-node-auth-token",
|
||||
"data_dir": "/var/lib/openflare-agent",
|
||||
"openresty_path": "/usr/local/openresty/nginx/sbin/openresty",
|
||||
"main_config_path": "/var/lib/openflare-agent/etc/nginx/nginx.conf",
|
||||
"route_config_path": "/var/lib/openflare-agent/etc/nginx/conf.d/openflare_routes.conf",
|
||||
"access_log_path": "/var/lib/openflare-agent/var/log/openflare/access.log",
|
||||
"cert_dir": "/var/lib/openflare-agent/etc/nginx/certs",
|
||||
"lua_dir": "/var/lib/openflare-agent/etc/nginx/lua",
|
||||
"runtime_config_dir": "/var/lib/openflare-agent/etc/openflare",
|
||||
"heartbeat_interval": 10000,
|
||||
"request_timeout": 10000
|
||||
}
|
||||
```
|
||||
|
||||
### Relay (Server-side) Default Configuration
|
||||
|
||||
`relay.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"server_url": "http://your-server:3000",
|
||||
"agent_token": "replace-with-relay-auth-token",
|
||||
"frps_path": "frps",
|
||||
"data_dir": "/opt/openflare-relay/data",
|
||||
"heartbeat_interval": 10000,
|
||||
"request_timeout": 10000
|
||||
}
|
||||
```
|
||||
|
||||
### OpenFlared (Client-side) Default Configuration
|
||||
|
||||
`flared.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"server_url": "http://your-server:3000",
|
||||
"tunnel_token": "replace-with-tunnel-token",
|
||||
"frpc_path": "frpc",
|
||||
"data_dir": "/opt/openflared/data",
|
||||
"heartbeat_interval": 10000,
|
||||
"sync_interval": 30000,
|
||||
"request_timeout": 10000
|
||||
}
|
||||
```
|
||||
|
||||
## Maintenance Rules
|
||||
|
||||
This document must be updated in sync when any of the following change:
|
||||
|
||||
* Server CLI arguments.
|
||||
* Server environment variables.
|
||||
* Agent CLI arguments and configuration parameters.
|
||||
* Relay CLI arguments and configuration parameters.
|
||||
* Client CLI arguments and configuration parameters.
|
||||
* Default values, scopes, or examples of any configuration items.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Reference Manuals
|
||||
|
||||
You will learn: Which information belongs to stable reference manuals, and where to look up configurations, commands, APIs, and repository structures.
|
||||
|
||||
This section collects stable information at the runtime, API, and repository layers, suitable for rapid lookup during deployment, integration, and troubleshooting.
|
||||
|
||||
| Page | Content |
|
||||
| --- | --- |
|
||||
| [Configuration Options](./configuration.md) | Server environment variables, CLI arguments, runtime Options, and Agent configuration parameters |
|
||||
| [CLI Commands](./cli.md) | Common CLI commands for starting, building, testing, installing, and uninstalling |
|
||||
| [API Conventions](./api.md) | Response structures, authentication, and routing paths for Admin and Agent APIs |
|
||||
| [Repository Structure](../design/repository.md) | Scope of responsibilities and folder layering of the Server, Agent, Relay, and Client |
|
||||
| [Deployment & Upgrade](../deployment/) | Server and Agent deployment, configuration, and upgrade guides (dedicated section) |
|
||||
Reference in New Issue
Block a user