From ea3abad792e26dace94a68bbbeab88a593cac443 Mon Sep 17 00:00:00 2001 From: lxien Date: Sun, 16 Aug 2026 10:09:27 +0800 Subject: [PATCH] feat: Add full configuration examples and Makefile --- Makefile | 36 +++++++++----- Makefile.md | 20 ++++++++ conf/orbien-full.toml | 96 ++++++++++++++++++++++++++++++++++++ conf/orbien-server-full.toml | 39 +++++++++++++++ conf/orbien-server.toml | 13 +++++ conf/orbien.toml | 10 ++++ 6 files changed, 202 insertions(+), 12 deletions(-) create mode 100644 Makefile.md create mode 100644 conf/orbien-full.toml create mode 100644 conf/orbien-server-full.toml create mode 100644 conf/orbien-server.toml create mode 100644 conf/orbien.toml diff --git a/Makefile b/Makefile index 6740346..f6b0677 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/Makefile.md b/Makefile.md new file mode 100644 index 0000000..e4d7fb6 --- /dev/null +++ b/Makefile.md @@ -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 | diff --git a/conf/orbien-full.toml b/conf/orbien-full.toml new file mode 100644 index 0000000..9496ac9 --- /dev/null +++ b/conf/orbien-full.toml @@ -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" diff --git a/conf/orbien-server-full.toml b/conf/orbien-server-full.toml new file mode 100644 index 0000000..5539b51 --- /dev/null +++ b/conf/orbien-server-full.toml @@ -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 = "" diff --git a/conf/orbien-server.toml b/conf/orbien-server.toml new file mode 100644 index 0000000..4a57a69 --- /dev/null +++ b/conf/orbien-server.toml @@ -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" diff --git a/conf/orbien.toml b/conf/orbien.toml new file mode 100644 index 0000000..eee1f69 --- /dev/null +++ b/conf/orbien.toml @@ -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