feat: Add full configuration examples and Makefile

This commit is contained in:
lxien
2026-08-16 10:09:27 +08:00
parent 864e805eb8
commit ea3abad792
6 changed files with 202 additions and 12 deletions
+24 -12
View File
@@ -1,10 +1,7 @@
.PHONY: build release orbien-server orbien web test clean fmt package desktop-sidecar desktop-dev desktop-build
ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
export CARGO_TARGET_DIR := $(ROOT)/target
WEB_DIR := server-ui
DESKTOP_DIR := desktop
web:
cd $(WEB_DIR) && npm install && npm run build
@@ -19,20 +16,36 @@ release: web
@echo "artifacts:"
@ls -lh target/release/orbien-server target/release/orbien
orbien-server:
./docs/scripts/build-server.sh
orbien-server: web
cargo build --release -p orbien-server
@echo ""
@echo "artifact:"
@ls -lh target/release/orbien-server
orbien:
cargo build --release -p orbien-client
desktop-sidecar:
./scripts/prepare-desktop-sidecar.sh
desktop-dev:
cargo run -p orbien-desktop
desktop-dev: desktop-sidecar
cd $(DESKTOP_DIR) && npm install && npm run tauri dev
desktop-build:
cargo build --release -p orbien-desktop
desktop-build: desktop-sidecar
cd $(DESKTOP_DIR) && npm install && npm run tauri build
desktop-app desktop-dmg: desktop-build
chmod +x scripts/pack-desktop-macos.sh
./scripts/pack-desktop-macos.sh
@echo "app → dist/Orbien Desktop.app"
@echo "dmg → dist/orbien-desktop_*_darwin_*.dmg"
desktop-windows: desktop-build
chmod +x scripts/pack-desktop-windows.sh
./scripts/pack-desktop-windows.sh
@echo "exe/zip → dist/orbien-desktop_*_windows_*"
desktop-deb: desktop-build
chmod +x scripts/pack-desktop-linux-deb.sh
./scripts/pack-desktop-linux-deb.sh
@echo "deb → dist/orbien-desktop_*_linux_*.deb"
test:
cargo test --workspace
@@ -43,7 +56,6 @@ fmt:
clean:
cargo clean
rm -rf $(WEB_DIR)/node_modules $(WEB_DIR)/dist
rm -rf $(DESKTOP_DIR)/node_modules $(DESKTOP_DIR)/dist
package: release
mkdir -p dist
+20
View File
@@ -0,0 +1,20 @@
# Makefile
Run from the repository root. Build artifacts go to `target/`; packages go to `dist/`.
| Command | Description |
|---------|-------------|
| `make web` | Build the dashboard UI into `server/assets` |
| `make build` | Debug-build `orbien-server` and `orbien` |
| `make release` | Run `web`, then release-build server and client |
| `make orbien-server` | Run `web`, then release-build the server |
| `make orbien` | Release-build the client |
| `make desktop-dev` | Run the desktop app (dev) |
| `make desktop-build` | Release-build the desktop app |
| `make desktop-app` / `make desktop-dmg` | Package macOS `.app` / `.dmg` |
| `make desktop-windows` | Package Windows exe / zip (run on Windows) |
| `make desktop-deb` | Package Linux `.deb` (run on Debian/Ubuntu) |
| `make package` | Run `release`, then copy binaries and `conf/` to `dist/` |
| `make test` | Run workspace tests |
| `make fmt` | Format Rust code |
| `make clean` | Clean `target/` and frontend install/build outputs |
+96
View File
@@ -0,0 +1,96 @@
server = "127.0.0.1:9527"
user = "lxien"
udpPacketSize = 1500
[auth]
type = "token"
token = "YOUR_TOKEN"
[transport]
protocol = "tcp"
poolCount = 5
tcpMux = true
muxKeepaliveSecs = 30
heartbeatInterval = 30
heartbeatTimeout = 90
[transport.quic]
keepalivePeriod = 10
maxIdleTimeout = 30
maxIncomingStreams = 100000
[transport.tls]
enable = true
serverName = "orbien.example.com"
trustedCaFile = "./certs/ca.crt"
certFile = "./certs/client.crt"
keyFile = "./certs/client.key"
[[tunnels]]
name = "ssh"
protocol = "tcp"
service = "127.0.0.1:22"
remotePort = 9000
[tunnels.transport]
bandwidth = 10
bandwidthLimitSide = "client"
proxyProtocolVersion = "v2"
[[tunnels]]
name = "dns"
protocol = "udp"
service = "127.0.0.1:53"
remotePort = 5353
[tunnels.transport]
bandwidth = 10
bandwidthLimitSide = "server"
proxyProtocolVersion = "v1"
[[tunnels]]
name = "web"
protocol = "http"
service = "127.0.0.1:8080"
domains = ["web", "app.example.com"]
locations = ["/", "/api"]
basicAuthUser = "admin"
basicAuthPassword = "123456"
hostHeaderRewrite = "127.0.0.1:8080"
routeByHTTPUser = "lxien"
[tunnels.transport]
bandwidth = 10
bandwidthLimitSide = "client"
proxyProtocolVersion = "v2"
[[tunnels]]
name = "api-tls"
protocol = "https"
service = "127.0.0.1:8080"
domains = ["api.example.com"]
[tunnels.transport]
bandwidth = 10
bandwidthLimitSide = "client"
proxyProtocolVersion = "v2"
[[tunnels]]
name = "portal"
protocol = "https"
domains = ["portal.example.com"]
[tunnels.transport]
bandwidth = 10
bandwidthLimitSide = "client"
[tunnels.plugin]
type = "tls-term"
service = "127.0.0.1:8080"
certFile = "./certs/portal.crt"
keyFile = "./certs/portal.key"
hostHeaderRewrite = "127.0.0.1"
[tunnels.plugin.requestHeaders.set]
X-Forwarded-Proto = "https"
X-Orbien-Tunnel = "portal"
+39
View File
@@ -0,0 +1,39 @@
listen = "0.0.0.0:9527"
quicPort = 9528
kcpPort = 9529
httpGwPort = 80
httpsGwPort = 443
rootDomain = "example.com"
proxyAddr = "0.0.0.0"
udpPacketSize = 1500
[auth]
type = "token"
token = "YOUR_TOKEN"
[transport]
tcpMux = true
muxKeepaliveSecs = 30
maxConnPool = 10
heartbeatTimeout = 90
[transport.quic]
keepalivePeriod = 10
maxIdleTimeout = 30
maxIncomingStreams = 100000
[transport.tls]
force = true
certFile = "./certs/server.crt"
keyFile = "./certs/server.key"
trustedCaFile = "./certs/ca.crt"
[dashboard]
addr = "0.0.0.0"
port = 8020
user = "admin"
password = "123456"
staticDir = ""
+13
View File
@@ -0,0 +1,13 @@
listen = "0.0.0.0:9527"
# httpGwPort = 80
# httpsGwPort = 443
# rootDomain = "example.com"
#auth.token = "YOUR_TOKEN"
#[dashboard]
#addr = "0.0.0.0"
#port = 8020
#user = "admin"
#password = "123456"
+10
View File
@@ -0,0 +1,10 @@
server = "127.0.0.1:9527"
#[auth]
#token = "YOUR_TOKEN"
[[tunnels]]
name = "ssh"
protocol = "tcp"
service = "127.0.0.1:22"
remotePort = 9000