Skip to content

Commit 1b8080b

Browse files
authored
Merge pull request #7 from q1ngyang/codex/patch-v1.3.1-fastmedia-pairing
release: Starry patch-v1.3.1 preview
2 parents abf1dbc + f27846f commit 1b8080b

96 files changed

Lines changed: 14255 additions & 883 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 110 additions & 17 deletions
Large diffs are not rendered by default.

.gitleaksignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Deterministic public Ed25519 key used only by the isolated package smoke test.
2+
# Keep this exception pinned to the reviewed historical commit, path, rule, and line.
3+
e7fe43142f1602612ca118f241ae84087b5cb461:.github/workflows/build.yml:generic-api-key:667
4+
# The same public fixture in the uncommitted candidate working-tree scan.
5+
.github/workflows/build.yml:generic-api-key:667

PATCH_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.0
1+
1.3.1

README.md

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,19 @@ Starry extends **HBBS** with:
2929
- certificate-verified `/ws/relay` health filtering;
3030
- Akari-only candidate Relay active probing with dual-end RTT/jitter/loss and
3131
trusted HBBR load scoring, prefix-cache hysteresis, and a legacy single-Relay fallback;
32-
- default-off, short-lived Ed25519 authorization for Akari P2P fast mode's
33-
FastCompat path after exact auth allow and final Relay selection; the first
34-
v1 release explicitly keeps FastMedia Relay UDP disabled;
32+
- default-off, short-lived Ed25519 authorization for Akari FastCompat and
33+
role-bound FastMediaV1 after exact auth allow and the final server-selected
34+
Relay, with a separately supervised HBBR AKR1 UDP data plane;
3535
- generation-safe Profile Activation Leases for Akari, including a matching
3636
Ready ACK, explicit current-lease deactivation, bounded verified rapid
3737
re-registration, and official-client-compatible defaults;
38-
- schema v4 last-known-good activation with generation, digest, and synchronous
38+
- schema v5 last-known-good activation with generation, digest, and synchronous
3939
subsystem acknowledgements;
4040
- optional strict Ed25519 connection JWT audit/enforcement for both
4141
`PunchHoleRequest` and direct `RequestRelay` on native TCP, Secure TCP, and
4242
WSS, with UDP initiation explicitly unsupported; and
43+
- SP1 Control-Agent/Relay bootstrap, bounded Relay enrollment, persistent
44+
identities, and a no-side-effect v5-to-v4 downgrade export; and
4345
- immutable Relay snapshots, side-effect-free allocation simulation, plus a
4446
separate Linux Control Agent protected by mTLS, scoped service JWTs, and
4547
atomic configuration transactions.
@@ -49,24 +51,28 @@ The project deliberately keeps the component boundary narrow:
4951
| Component | Starry scope | Deployment responsibility |
5052
| --- | --- | --- |
5153
| HBBS | Modified by the overlay | Run the Starry `hbbs` binary or image command. |
52-
| HBBR | Public probe plus authenticated telemetry | Keeps the upstream byte-forwarding data path, answers the additive Akari probe envelope without load details, and exposes bounded session/bandwidth telemetry only to authenticated HBBS pulls. Use the HBBR bundled in the same pinned Starry image/artifact. |
54+
| HBBR | Reliable Relay plus optional AKR1 UDP | Keeps the upstream TCP/WS byte-forwarding path, answers public quality probes without load, exposes detailed state only through authenticated telemetry, and optionally routes encrypted Akari AKF1 datagrams after role-bound grants. |
5355
| Control Agent | Optional Starry component; Linux only in v1.3 | Keep HBBS local control on loopback. Expose the Agent only on a private management path with mTLS and scoped service JWTs. Configuration writes are disabled by default. |
5456
| Account/API server | Not included | Account login, address books, device data, and administration require a separately selected API implementation. |
5557

5658
An account API login, the HBBS signalling connection, the optional Starry
5759
Control API, and the HBBR data path are separate protocol layers. Starry does
58-
not turn a third-party API into a Relay, does not alter the HBBR relay data
59-
path, and does not replace the RustDesk client.
60+
not turn a third-party API into a Relay and does not replace the RustDesk
61+
client. The optional FastMedia UDP listener is independent from the ordinary
62+
HBBR stream, which always remains the reliable fallback.
6063

61-
Current development release: **patch-v1.3.0**. See the
62-
[`patch-v1.3.0` release notes](docs/releases/RELEASE-NOTES-patch-v1.3.0.md) and
64+
Current development release: **patch-v1.3.1 preview**. See
65+
the [`patch-v1.3.1` release notes](docs/releases/RELEASE-NOTES-patch-v1.3.1.md) and
6366
[`changelog`](docs/releases/CHANGELOG.md). Docker images are published at
6467
[`ghcr.io/q1ngyang/rustdesk-server-starry`](https://github.com/q1ngyang/rustdesk-server-starry/pkgs/container/rustdesk-server-starry).
6568

66-
The patch-v1.3.0 supported release matrix is Docker `linux/amd64` plus Linux
69+
The patch-v1.3.1 candidate matrix is Docker `linux/amd64` plus Linux
6770
x86_64 binaries and amd64 DEB packages. ARM is best-effort source
6871
compatibility; Windows is an experimental non-blocking build. Neither is a
69-
promised v1.3.0 artifact.
72+
promised v1.3.1 artifact. The preview is opt-in, keeps both Fast switches off
73+
by default, and is published only as a GitHub prerelease and the rolling
74+
`preview` image. Stable approval still requires the end-to-end FastMedia and
75+
real-device release gates.
7076

7177
> This is an unofficial community project and is not affiliated with or
7278
> endorsed by RustDesk, MaxMind, any MMDB mirror provider, or any AI service
@@ -99,6 +105,9 @@ sources, container manual, release notes, and technical references.
99105
| [Connection authentication](https://github.com/q1ngyang/rustdesk-server-starry/wiki/Connection-Authentication) | JWT profile, audit-to-enforce rollout, transport coverage, failure handling, and rollback. |
100106
| [Control Agent](https://github.com/q1ngyang/rustdesk-server-starry/wiki/Control-Agent) | Linux deployment, mTLS/service-JWT authorization, read-only mode, transactions, recovery, and API contracts. |
101107
| [Profile Activation Lease v1](docs/reference/PROFILE-ACTIVATION-LEASE-v1.md) | Akari matching-ACK switch rule, current-route deactivation, multi-node leases, observability, rollout, and rollback. |
108+
| [Fast Relay authorization v1](docs/reference/FAST-RELAY-AUTHORIZATION-v1.md) | Server-selected Relay grants, additive fields 1–12, compatibility, privacy, and issuance gates. |
109+
| [FastMedia Relay UDP v1](docs/reference/FAST-MEDIA-RELAY-UDP-v1.md) | AKR1 cookie/bind/forward/rebind wire and resource contract. |
110+
| [Starry Pairing v1](docs/reference/STARRY-PAIRING-v1.md) | SP1 Control Agent/Relay bootstrap, persistence, manual compatibility, and downgrade. |
102111
| [GEO rules: basics](https://github.com/q1ngyang/rustdesk-server-starry/wiki/GEO-Rules-Basics) | Country rules, priority, symmetry, fallback, and `test-geo`. |
103112
| [GEO rules: advanced](https://github.com/q1ngyang/rustdesk-server-starry/wiki/GEO-Rules-Advanced) | City, ASN, ISP, nested expressions, quoting, and design patterns. |
104113
| [Operations and verification](https://github.com/q1ngyang/rustdesk-server-starry/wiki/Operations-and-Verification) | Layered checks from static validation to real desktop sessions. |

RELEASE_STATUS

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
# patch-v1.3.0 was approved for publication on 2026-09-02 after the reviewed
2-
# candidate passed every blocking compatibility, security, and release gate.
3-
status: APPROVED
4-
patch_version: 1.3.0
1+
# The frozen wire/Control contract remains bound to commit
2+
# 6f5a31008ab7761d8557c8cf9fefcb5be11c49e6. Source and protocol-level
3+
# validation permit an opt-in preview release. Stable publication remains
4+
# blocked until the real two-client/device/network and production PKI matrices
5+
# pass. PREVIEW_APPROVED publishes a GitHub prerelease and the rolling
6+
# `preview` image only; it never replaces `latest`.
7+
status: PREVIEW_APPROVED
8+
patch_version: 1.3.1
59

6-
# Publication remains fail-closed until every required workflow job succeeds
7-
# again for the exact source commit that receives the immutable release tag.
10+
# Do not change this to APPROVED from preview or diagnostic validation alone.

config/config.example.yaml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copy the required sections to config.yaml. An empty or invalid config.yaml
33
# keeps the exact upstream rustdesk-server behavior on first start. A rejected
44
# reload retains the last-known-good active generation.
5-
version: 4
5+
version: 5
66

77
# The complete HBBS relay pool. Keep one relay server on each line.
88
relay_servers:
@@ -55,12 +55,15 @@ websocket_signal:
5555
- relay: jp-relay-1.example.com:21117
5656
url: wss://jp-relay-1.example.com/ws/telemetry
5757
telemetry_secret_file: /run/secrets/starry-relay-telemetry
58+
fast_media_udp_port: 21119
5859
- relay: jp-relay-2.example.com:21117
5960
url: wss://jp-relay-2.example.com/ws/telemetry
6061
telemetry_secret_file: /run/secrets/starry-relay-telemetry
62+
fast_media_udp_port: 21119
6163
- relay: us-relay-1.example.com:21117
6264
url: wss://us-relay-1.example.com/ws/telemetry
6365
telemetry_secret_file: /run/secrets/starry-relay-telemetry
66+
fast_media_udp_port: 21119
6467

6568
# Connection authentication requires schema v3 or newer and defaults to off. Move to
6669
# audit before enforce, and do not enable either mode until Kessoku (or another
@@ -125,14 +128,19 @@ relay_quality:
125128
loss: 2500
126129
load: 1500
127130

128-
# FastCompat authorization for Akari over the existing reliable HBBR stream.
129-
# Keep this disabled until connection authentication and Relay quality are both
130-
# enabled and verified. FastMediaV1 Relay UDP is deliberately not advertised.
131+
# FastCompat authorization keeps using the reliable HBBR stream. FastMediaV1
132+
# uses an optional AKR1 UDP path while the reliable stream remains connected.
133+
# Both switches are independent and default to false. Relay Quality remains
134+
# authoritative when it produces a final decision; otherwise HBBS signs only
135+
# the Relay it selected itself. FastMedia grants additionally require fresh,
136+
# authenticated schema-v2 telemetry from that selected HBBR.
131137
fast_mode:
132138
relay:
133139
fast_compat_enabled: false
140+
fast_media_v1_enabled: false
134141
authorization_ttl_seconds: 90
135142
max_bitrate_kbps: 50000
143+
relay_max_datagram: 1200
136144

137145
mmdb:
138146
update_interval_hours: 168

config/control-agent.example.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
# Starry Control Agent v1. Keep this listener on a Kessoku-only private
22
# interface. HBBS itself is reached exclusively through loopback local control.
33
version: 1
4-
instance_id_file: /var/lib/rustdesk-server-starry/control-agent-instance-id
4+
instance_id_file: /var/lib/rustdesk-server-starry/control/state/instance-id
55
listen: 127.0.0.1:21120
66

77
tls:
8-
ca_file: /etc/rustdesk-server-starry/control-tls/client-ca.pem
9-
cert_file: /etc/rustdesk-server-starry/control-tls/server.pem
10-
key_file: /etc/rustdesk-server-starry/control-tls/server-key.pem
8+
ca_file: /etc/rustdesk-server-starry/control-identity/client-ca.pem
9+
cert_file: /etc/rustdesk-server-starry/control-identity/server-cert.pem
10+
key_file: /etc/rustdesk-server-starry/control-identity/server-key.pem
1111
allowed_client_uri_sans:
1212
- spiffe://kessoku.example/starry-control
1313

1414
# This keyring is separate from connection_auth.jwks. It verifies short-lived
1515
# Kessoku service tokens, never RustDesk client connection tokens.
1616
service_jwt:
1717
issuer: https://kessoku.example
18-
jwks_file: /etc/rustdesk-server-starry/control-auth/jwks.json
18+
jwks_file: /etc/rustdesk-server-starry/control-identity/service-jwks.json
1919
audience_prefix: "urn:starry-control:"
2020

2121
local_control:
2222
address: 127.0.0.1:21115
23-
token_file: /etc/rustdesk-server-starry/local-control.token
23+
token_file: /var/lib/rustdesk-server-starry/control/shared/local-control.token
2424

2525
config:
2626
# Safe default. Set true only after apply/rollback recovery has been tested.

0 commit comments

Comments
 (0)