Compare commits

...

26 Commits

Author SHA1 Message Date
Aiden McClelland
22b2ee01d7 feat: make version optional in registry package remove, add --force flag
When version is omitted, removes the entire package entry. Requires
--force if the package has any existing versions.
2026-04-01 17:06:51 -06:00
Aiden McClelland
de7fbeff2c chore: add remove-signer command, fix bugs, and update release notes
- Add registry admin remove-signer command to remove a signer and all their authorizations
- Fix remove_package_signer condition (is_some -> is_none) for correct not-found error
- Use log_err() instead of silently swallowing asset fetch errors
- Trim leading '#' from version in s9pk publish path
- Add --delete-removed to s3 sync in publish-deb.sh
- Expand v0.4.0 release notes with additional features
- Regenerate man pages and add i18n entries
2026-04-01 16:09:32 -06:00
Aiden McClelland
0eedcf58f5 feat: support data URLs, http(s) URLs, and file:// URLs in registry set-icon CLI 2026-04-01 08:50:59 -06:00
Aiden McClelland
208e9a5e3a feat: add registry os promote command for cross-registry OS version promotion
Batch promotes an entire OS version (metadata + all iso/squashfs/img assets
across all platforms) from one registry to another, mirroring the existing
package promote command.
2026-03-31 22:12:35 -06:00
Aiden McClelland
7c304eef02 chore: regenerate SDK TypeScript bindings for metrics types 2026-03-31 20:52:41 -06:00
Aiden McClelland
3de91687f1 chore: fix formatting in v0_3_6_alpha_0 migration logging 2026-03-31 20:52:00 -06:00
Aiden McClelland
0d80a1c0b1 fix: handle null value in list_service_interfaces
Return an empty map instead of failing when the watched value is null.
2026-03-31 20:51:33 -06:00
Aiden McClelland
48f50e3c6c feat: add package promote command for cross-registry promotion
Allows promoting a package version from one registry to another by
fetching package info from the source and re-signing/publishing each
s9pk variant to the destination.
2026-03-31 20:51:22 -06:00
Aiden McClelland
3e0bbe47ad fix: skip btrfs readonly check on preen to avoid false failures
The btrfs check --readonly command can produce false positives. Skip it
for the preen strategy and only run the repair path when aggressive
repair is requested.
2026-03-31 20:51:02 -06:00
Aiden McClelland
a3575cf9a3 chore: remove arch and platform fields from ServerInfo
These are static platform constants and don't need to be stored in the
database or exposed in the public model. Use crate::ARCH directly where
needed.
2026-03-31 20:50:48 -06:00
Aiden McClelland
5443f8dab1 chore: bump startos to 0.4.0-beta.0 and start-sdk to 1.0.0 2026-03-31 20:03:03 -06:00
Aiden McClelland
c6fd58f714 feat: rename ghost and synapse packages to legacy variants
Add ghost→ghost-legacy and synapse→synapse-legacy ID renames in v1
manifest compat, container runtime, and v0.3.6 migration (volume
renames).
2026-03-31 19:57:16 -06:00
Aiden McClelland
40ac974a0c feat: replace PostgreSQL metrics with SQLite and add metrics query API
Migrate registry metrics from PostgreSQL/sqlx to embedded SQLite via
rusqlite. Add new metrics CLI subcommands (summary, users, downloads)
with i18n support. Record os_version in user activity and package
download requests. Remove old PostgreSQL schema and setup script.
2026-03-31 19:56:49 -06:00
Aiden McClelland
cbcff17ebc chore: refactor release scripts to download OS images from registry
Replace GitHub Actions artifact downloads with registry-based OS image
retrieval via start-cli. Add publish-tunnel subcommand, registry_url
helper, and remove old S3/RUN_ID workflows. Also clean up old deb
versions in publish-deb.sh before copying new ones.
2026-03-31 19:56:33 -06:00
Matt Hill
8e8f457393 fix locale bug with postgres for 0351 migration 2026-03-31 16:12:32 -06:00
Matt Hill
886aa5d7db remove unnecessary warnings 2026-03-31 13:47:20 -06:00
Aiden McClelland
653a0a1428 Merge pull request #2867 from Start9Labs/next/major
StartOS 0.4.0
2026-03-30 19:29:39 -06:00
Matt Hill
0b004a19ae wrap text in release notes 2026-03-30 14:59:20 -06:00
Aiden McClelland
ce1da028ce fix: extract hairpin check into platform-conditional function
The hairpin NAT check uses Linux-specific APIs (bind_device, raw fd
conversion). Extract it into a separate function with #[cfg(target_os)]
so the entire block is excluded on non-Linux platforms, rather than
guarding only the unsafe block.
2026-03-30 14:38:13 -06:00
Aiden McClelland
0d4dcf6c61 fix: correct platform extraction in ISO deploy and re-enable raspberrypi
The sed-based platform extraction was greedy, turning "x86_64" into "64".
Replace with explicit platform list iteration. Exclude raspberrypi from
deploy. Re-enable raspberrypi as a platform choice for builds.
2026-03-30 12:11:22 -06:00
crissuper20
8359712cd9 Fix/startos UI empty interface (#3143)
fix: give StartOS UI interface a non-empty id

The iface object in StartOsUiComponent had id: '' (empty string).
Any plugin whose action calls sdk.serviceInterface.get() with
that id triggers an RPC to the host with an empty
serviceInterfaceId, which Rust's ServiceInterfaceId type rejects
via its ID regex (^[a-z0-9]+(-[a-z0-9]+)*$).

The container runtime appends the method name to every error
message as "${msg}@${method}", so the empty-string failure
surfaces in the UI as:

  Action Failed: Deserialization Error: Invalid ID: @get-service-interface

Setting id: 'startos-ui' makes it a valid, stable identifier
that passes the regex and accurately names the interface.
2026-03-30 12:00:14 -06:00
Aiden McClelland
f46cdc6ee5 fix: correct hairpin NAT rules and bind hairpin check to gateway interface
The POSTROUTING MASQUERADE rules in forward-port failed to handle two
hairpin scenarios:

1. Host-to-target hairpin (OUTPUT DNAT): when sip is a WAN IP (tunnel
   case), the old rule matched `-s sip` but the actual source of
   locally-originated packets is a local interface IP, not the WAN IP.
   Fix: use `-m addrtype --src-type LOCAL -m conntrack --ctorigdst sip`
   to match any local source while tying the rule to the specific sip.

2. Same-subnet self-hairpin (PREROUTING DNAT): when a WireGuard peer
   connects to itself via the tunnel's public IP, traffic is DNAT'd back
   to the peer. Without MASQUERADE the response takes a loopback shortcut,
   bypassing the tunnel server's conntrack and breaking NAT reversal.
   Fix: add `-s dip/dprefix -d dip` to masquerade same-subnet traffic,
   which also subsumes the old bridge_subnet rule.

Also bind the hairpin detection socket to the gateway interface and local
IP for consistency with the echoip client.
2026-03-30 11:52:53 -06:00
Aiden McClelland
c96b38f915 fix: bind echoip client to gateway's specific IPv4 to avoid EADDRINUSE
Using Ipv4Addr::UNSPECIFIED (0.0.0.0) as the local address with
SO_BINDTODEVICE caused bind(0.0.0.0:0) to fail with "Address in use"
on interfaces where port 443 was already in use. Binding to the
gateway's actual IPv4 address instead still forces IPv4 DNS filtering
while avoiding the kernel-level conflict.
2026-03-30 08:12:21 -06:00
Matt Hill
c1c8dc8f9c fixes #3150 2026-03-29 20:48:30 -06:00
Matt Hill
e3b7277ccd fix: correct false breakage detection for flavored packages and confi… (#3149)
fix: correct false breakage detection for flavored packages and config changes

Two bugs caused the UI to incorrectly warn about dependency breakages:

1. dryUpdate (version path): Flavored package versions (e.g. #knots:27.0.0:0)
   failed exver.satisfies() against flavorless ranges (e.g. >=26.0.0) due to
   flavor mismatch. Now checks the manifest's `satisfies` declarations,
   matching the pattern already used in DepErrorService. Added `satisfies`
   field to PackageVersionInfo so it's available from registry data.

2. checkConflicts (config path): fast-json-patch's compare() treated missing
   keys as conflicts (add ops) and used positional array comparison, diverging
   from the backend's conflicts() semantics. Replaced with a conflicts()
   function that mirrors core/src/service/action.rs — missing keys are not
   conflicts, and arrays use set-based comparison.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 13:07:52 -06:00
Matt Hill
b0b4b41c42 feat: unified restart notification with reason-specific messaging (#3147)
* feat: unified restart notification with reason-specific messaging

Replace statusInfo.updated (bool) with serverInfo.restart (nullable enum)
to unify all restart-needed scenarios under a single PatchDB field.

Backend sets the restart reason in RPC handlers for hostname change (mdns),
language change, kiosk toggle, and OS update download. Init clears it on
boot. The update flow checks this field to prevent updates when a restart
is already pending.

Frontend shows a persistent action bar with reason-specific i18n messages
instead of per-feature restart dialogs. For .local hostname changes, the
existing "open new address" dialog is preserved — the restart toast
appears after the user logs in on the new address.

Also includes migration in v0_4_0_alpha_23 to remove statusInfo.updated
and initialize serverInfo.restart.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix broken styling and improve settings layout

* refactor: move restart field from ServerInfo to ServerStatus

The restart reason belongs with other server state (shutting_down,
restarting, update_progress) rather than on the top-level ServerInfo.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix PR comment

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Aiden McClelland <me@drbonez.dev>
2026-03-29 02:23:59 -06:00
173 changed files with 2595 additions and 1693 deletions

View File

@@ -29,7 +29,7 @@ on:
- aarch64
- aarch64-nonfree
- aarch64-nvidia
# - raspberrypi
- raspberrypi
- riscv64
- riscv64-nonfree
deploy:
@@ -296,6 +296,18 @@ jobs:
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Version: $VERSION"
- name: Determine platforms
id: platforms
run: |
INPUT="${{ github.event.inputs.platform }}"
if [ "$INPUT" = "ALL" ]; then
PLATFORMS="x86_64 x86_64-nonfree x86_64-nvidia aarch64 aarch64-nonfree aarch64-nvidia riscv64 riscv64-nonfree"
else
PLATFORMS="$INPUT"
fi
echo "list=$PLATFORMS" >> "$GITHUB_OUTPUT"
echo "Platforms: $PLATFORMS"
- name: Download squashfs artifacts
uses: actions/download-artifact@v8
with:
@@ -347,10 +359,12 @@ jobs:
run: |
VERSION="${{ steps.version.outputs.version }}"
cd artifacts
for file in *.iso *.squashfs; do
[ -f "$file" ] || continue
echo "Uploading $file..."
s3cmd put -P "$file" "${{ env.S3_BUCKET }}/v${VERSION}/$file"
for PLATFORM in ${{ steps.platforms.outputs.list }}; do
for file in *_${PLATFORM}.squashfs *_${PLATFORM}.iso; do
[ -f "$file" ] || continue
echo "Uploading $file..."
s3cmd put -P "$file" "${{ env.S3_BUCKET }}/v${VERSION}/$file"
done
done
- name: Register OS version
@@ -363,13 +377,14 @@ jobs:
run: |
VERSION="${{ steps.version.outputs.version }}"
cd artifacts
for file in *.squashfs *.iso; do
[ -f "$file" ] || continue
PLATFORM=$(echo "$file" | sed 's/.*_\([^.]*\)\.\(squashfs\|iso\)$/\1/')
echo "Indexing $file for platform $PLATFORM..."
start-cli --registry="${{ env.REGISTRY }}" registry os asset add \
--platform="$PLATFORM" \
--version="$VERSION" \
"$file" \
"${{ env.S3_CDN }}/v${VERSION}/$file"
for PLATFORM in ${{ steps.platforms.outputs.list }}; do
for file in *_${PLATFORM}.squashfs *_${PLATFORM}.iso; do
[ -f "$file" ] || continue
echo "Indexing $file for platform $PLATFORM..."
start-cli --registry="${{ env.REGISTRY }}" registry os asset add \
--platform="$PLATFORM" \
--version="$VERSION" \
"$file" \
"${{ env.S3_CDN }}/v${VERSION}/$file"
done
done

View File

@@ -83,11 +83,16 @@ if [ ${#DEB_FILES[@]} -eq 0 ]; then
exit 1
fi
# Copy each deb to the pool, renaming to standard format
# Copy each deb to the pool, removing old versions of the same package+arch
for deb in "${DEB_FILES[@]}"; do
PKG_NAME="$(dpkg-deb --field "$deb" Package)"
PKG_ARCH="$(dpkg-deb --field "$deb" Architecture)"
POOL_DIR="$REPO_DIR/pool/${COMPONENT}/${PKG_NAME:0:1}/${PKG_NAME}"
mkdir -p "$POOL_DIR"
# Remove old versions for the same architecture
for old in "$POOL_DIR"/${PKG_NAME}_*_${PKG_ARCH}.deb; do
[ -f "$old" ] && rm -v "$old"
done
cp "$deb" "$POOL_DIR/"
dpkg-name -o "$POOL_DIR/$(basename "$deb")" 2>/dev/null || true
echo "Added: $(basename "$deb") -> pool/${COMPONENT}/${PKG_NAME:0:1}/${PKG_NAME}/"
@@ -133,7 +138,7 @@ fi
# Upload to S3
echo "Uploading to s3://${BUCKET}/ ..."
s3 sync --acl-public --no-mime-magic "$REPO_DIR/" "s3://${BUCKET}/"
s3 sync --acl-public --no-mime-magic --delete-removed "$REPO_DIR/" "s3://${BUCKET}/"
[ -n "$S3CMD_CONFIG" ] && rm -f "$S3CMD_CONFIG"
echo "Done."

View File

@@ -58,15 +58,18 @@ iptables -t nat -A ${NAME}_OUTPUT -d "$sip" -p udp --dport "$sport" -j DNAT --to
iptables -A ${NAME}_FORWARD -d $dip -p tcp --dport $dport -m state --state NEW -j ACCEPT
iptables -A ${NAME}_FORWARD -d $dip -p udp --dport $dport -m state --state NEW -j ACCEPT
# NAT hairpin: masquerade traffic from the bridge subnet or host to the DNAT
# target, so replies route back through the host for proper NAT reversal.
# Container-to-container hairpin (source is on the bridge subnet)
if [ -n "$bridge_subnet" ]; then
iptables -t nat -A ${NAME}_POSTROUTING -s "$bridge_subnet" -d "$dip" -p tcp --dport "$dport" -j MASQUERADE
iptables -t nat -A ${NAME}_POSTROUTING -s "$bridge_subnet" -d "$dip" -p udp --dport "$dport" -j MASQUERADE
fi
# Host-to-container hairpin (host connects to its own gateway IP, source is sip)
iptables -t nat -A ${NAME}_POSTROUTING -s "$sip" -d "$dip" -p tcp --dport "$dport" -j MASQUERADE
iptables -t nat -A ${NAME}_POSTROUTING -s "$sip" -d "$dip" -p udp --dport "$dport" -j MASQUERADE
# NAT hairpin: masquerade so replies route back through this host for proper
# NAT reversal instead of taking a direct path that bypasses conntrack.
# Host-to-target hairpin: locally-originated packets whose original destination
# was sip (before OUTPUT DNAT rewrote it to dip). Using --ctorigdst ties the
# rule to this specific sip, so multiple WAN IPs forwarding the same port to
# different targets each get their own masquerade.
iptables -t nat -A ${NAME}_POSTROUTING -m addrtype --src-type LOCAL -m conntrack --ctorigdst "$sip" -d "$dip" -p tcp --dport "$dport" -j MASQUERADE
iptables -t nat -A ${NAME}_POSTROUTING -m addrtype --src-type LOCAL -m conntrack --ctorigdst "$sip" -d "$dip" -p udp --dport "$dport" -j MASQUERADE
# Same-subnet hairpin: when traffic originates from the same subnet as the DNAT
# target (e.g. a container reaching another container, or a WireGuard peer
# connecting to itself via the tunnel's public IP).
iptables -t nat -A ${NAME}_POSTROUTING -s "$dip/$dprefix" -d "$dip" -p tcp --dport "$dport" -j MASQUERADE
iptables -t nat -A ${NAME}_POSTROUTING -s "$dip/$dprefix" -d "$dip" -p udp --dport "$dport" -j MASQUERADE
exit $err

View File

@@ -8,6 +8,7 @@ S3_BUCKET="s3://startos-images"
S3_CDN="https://startos-images.nyc3.cdn.digitaloceanspaces.com"
START9_GPG_KEY="2D63C217"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ARCHES="aarch64 aarch64-nonfree aarch64-nvidia riscv64 riscv64-nonfree x86_64 x86_64-nonfree x86_64-nvidia"
CLI_ARCHES="aarch64 riscv64 x86_64"
@@ -83,16 +84,21 @@ resolve_gh_user() {
GH_GPG_KEY=$(git config user.signingkey 2>/dev/null || true)
}
# Fetch the URL for an OS asset from the registry index.
# Usage: registry_url <iso|squashfs|img> <platform>
registry_url() {
local ext=$1 platform=$2
if [ -z "${_REGISTRY_INDEX:-}" ]; then
_REGISTRY_INDEX=$(start-cli --registry=$REGISTRY registry os index)
fi
echo "$_REGISTRY_INDEX" | jq -r ".versions[\"$VERSION\"].$ext[\"$platform\"].urls[0]"
}
# --- Subcommands ---
cmd_download() {
require_version
if [ -z "${RUN_ID:-}" ]; then
read -rp "RUN_ID (OS images, leave blank to skip): " RUN_ID
fi
RUN_ID=$(parse_run_id "${RUN_ID:-}")
if [ -z "${ST_RUN_ID:-}" ]; then
read -rp "ST_RUN_ID (start-tunnel, leave blank to skip): " ST_RUN_ID
fi
@@ -105,14 +111,14 @@ cmd_download() {
ensure_release_dir
if [ -n "$RUN_ID" ]; then
for arch in $ARCHES; do
while ! gh run download -R $REPO "$RUN_ID" -n "$arch.squashfs" -D "$(pwd)"; do sleep 1; done
# Download OS images from registry (deployed by GitHub workflow)
echo "Downloading OS images from registry..."
for arch in $ARCHES; do
for ext in squashfs iso; do
echo " $ext $arch"
start-cli --registry=$REGISTRY registry os asset get "$ext" "$VERSION" "$arch" -d "$(pwd)"
done
for arch in $ARCHES; do
while ! gh run download -R $REPO "$RUN_ID" -n "$arch.iso" -D "$(pwd)"; do sleep 1; done
done
fi
done
if [ -n "$ST_RUN_ID" ]; then
for arch in $CLI_ARCHES; do
@@ -143,19 +149,12 @@ cmd_pull() {
gh release download -R $REPO "v$VERSION" -p "$file" -D "$(pwd)" --clobber
done
# Download ISOs and squashfs from S3 CDN
# Download ISOs and squashfs from registry
echo "Downloading OS images from registry..."
for arch in $ARCHES; do
for ext in squashfs iso; do
# Get the actual filename from the GH release asset list or body
local filename
filename=$(gh release view -R $REPO "v$VERSION" --json assets -q ".assets[].name" | grep "_${arch}\\.${ext}$" || true)
if [ -z "$filename" ]; then
filename=$(gh release view -R $REPO "v$VERSION" --json body -q .body | grep -oP "[^ ]*_${arch}\\.${ext}" | head -1 || true)
fi
if [ -n "$filename" ]; then
echo "Downloading $filename from S3..."
curl -fSL -o "$filename" "$S3_CDN/v$VERSION/$filename"
fi
echo " $ext $arch"
start-cli --registry=$REGISTRY registry os asset get "$ext" "$VERSION" "$arch" -d "$(pwd)"
done
done
}
@@ -170,14 +169,12 @@ cmd_upload() {
require_version
enter_release_dir
# OS images (iso/squashfs) are already on S3 via the GitHub workflow.
# Upload only debs and CLI binaries to the GitHub Release.
for file in $(release_files); do
case "$file" in
*.iso|*.squashfs)
s3cmd put -P "$file" "$S3_BUCKET/v$VERSION/$file"
;;
*)
gh release upload -R $REPO "v$VERSION" "$file"
;;
*.iso|*.squashfs) ;;
*) gh release upload -R $REPO "v$VERSION" "$file" ;;
esac
done
}
@@ -248,6 +245,24 @@ cmd_cosign() {
echo "Done. Personal signatures for $GH_USER added to v$VERSION."
}
cmd_publish_tunnel() {
require_version
enter_release_dir
local tunnel_debs=()
for file in start-tunnel*.deb; do
[ -f "$file" ] && tunnel_debs+=("$file")
done
if [ ${#tunnel_debs[@]} -eq 0 ]; then
>&2 echo "No start-tunnel .deb files found in release directory"
exit 1
fi
echo "Publishing start-tunnel debs to apt repository..."
"$SCRIPT_DIR/apt/publish-deb.sh" "${tunnel_debs[@]}"
}
cmd_notes() {
require_version
enter_release_dir
@@ -255,14 +270,14 @@ cmd_notes() {
cat << EOF
# ISO Downloads
- [x86_64/AMD64]($S3_CDN/v$VERSION/$(ls *_x86_64-nonfree.iso))
- [x86_64/AMD64 + NVIDIA]($S3_CDN/v$VERSION/$(ls *_x86_64-nvidia.iso))
- [x86_64/AMD64-slim (FOSS-only)]($S3_CDN/v$VERSION/$(ls *_x86_64.iso) "Without proprietary software or drivers")
- [aarch64/ARM64]($S3_CDN/v$VERSION/$(ls *_aarch64-nonfree.iso))
- [aarch64/ARM64 + NVIDIA]($S3_CDN/v$VERSION/$(ls *_aarch64-nvidia.iso))
- [aarch64/ARM64-slim (FOSS-Only)]($S3_CDN/v$VERSION/$(ls *_aarch64.iso) "Without proprietary software or drivers")
- [RISCV64 (RVA23)]($S3_CDN/v$VERSION/$(ls *_riscv64-nonfree.iso))
- [RISCV64 (RVA23)-slim (FOSS-only)]($S3_CDN/v$VERSION/$(ls *_riscv64.iso) "Without proprietary software or drivers")
- [x86_64/AMD64]($(registry_url iso x86_64-nonfree))
- [x86_64/AMD64 + NVIDIA]($(registry_url iso x86_64-nvidia))
- [x86_64/AMD64-slim (FOSS-only)]($(registry_url iso x86_64) "Without proprietary software or drivers")
- [aarch64/ARM64]($(registry_url iso aarch64-nonfree))
- [aarch64/ARM64 + NVIDIA]($(registry_url iso aarch64-nvidia))
- [aarch64/ARM64-slim (FOSS-Only)]($(registry_url iso aarch64) "Without proprietary software or drivers")
- [RISCV64 (RVA23)]($(registry_url iso riscv64-nonfree))
- [RISCV64 (RVA23)-slim (FOSS-only)]($(registry_url iso riscv64) "Without proprietary software or drivers")
EOF
cat << 'EOF'
@@ -318,9 +333,8 @@ EOF
cmd_full_release() {
cmd_download
cmd_register
cmd_upload
cmd_index
cmd_publish_tunnel
cmd_sign
cmd_notes
}
@@ -330,22 +344,23 @@ usage() {
Usage: manage-release.sh <subcommand>
Subcommands:
download Download artifacts from GitHub Actions runs
Requires: RUN_ID, ST_RUN_ID, CLI_RUN_ID (any combination)
pull Download an existing release from the GH tag and S3
register Register the version in the Start9 registry
upload Upload artifacts to GitHub Releases and S3
index Add assets to the registry index
sign Sign all artifacts with Start9 org key (+ personal key if available)
and upload signatures.tar.gz
cosign Add personal GPG signature to an existing release's signatures
(requires 'pull' first so you can verify assets before signing)
notes Print release notes with download links and checksums
full-release Run: download → register → upload → index → sign → notes
download Download OS images from registry + other artifacts from GH Actions
OS images are pulled via start-cli from the registry (deployed by GH workflow)
Requires: ST_RUN_ID, CLI_RUN_ID (any combination)
pull Download an existing release from the GH tag and S3
register Register the version in the Start9 registry
upload Upload artifacts to GitHub Releases and S3
index Add assets to the registry index
publish-tunnel Publish start-tunnel .deb files to the apt repository
sign Sign all artifacts with Start9 org key (+ personal key if available)
and upload signatures.tar.gz
cosign Add personal GPG signature to an existing release's signatures
(requires 'pull' first so you can verify assets before signing)
notes Print release notes with download links and checksums
full-release Run: download → register → upload → publish-tunnel → sign → notes
Environment variables:
VERSION (required) Release version
RUN_ID GitHub Actions run ID for OS images (download subcommand)
ST_RUN_ID GitHub Actions run ID for start-tunnel (download subcommand)
CLI_RUN_ID GitHub Actions run ID for start-cli (download subcommand)
GH_USER Override GitHub username (default: autodetected via gh cli)
@@ -354,14 +369,15 @@ EOF
}
case "${1:-}" in
download) cmd_download ;;
pull) cmd_pull ;;
register) cmd_register ;;
upload) cmd_upload ;;
index) cmd_index ;;
sign) cmd_sign ;;
cosign) cmd_cosign ;;
notes) cmd_notes ;;
full-release) cmd_full_release ;;
*) usage; exit 1 ;;
download) cmd_download ;;
pull) cmd_pull ;;
register) cmd_register ;;
upload) cmd_upload ;;
index) cmd_index ;;
publish-tunnel) cmd_publish_tunnel ;;
sign) cmd_sign ;;
cosign) cmd_cosign ;;
notes) cmd_notes ;;
full-release) cmd_full_release ;;
*) usage; exit 1 ;;
esac

View File

@@ -37,7 +37,7 @@
},
"../sdk/dist": {
"name": "@start9labs/start-sdk",
"version": "0.4.0-beta.66",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@iarna/toml": "^3.0.0",

View File

@@ -396,6 +396,12 @@ export class SystemForEmbassy implements System {
if (this.manifest.id === "nostr") {
this.manifest.id = "nostr-rs-relay"
}
if (this.manifest.id === "ghost") {
this.manifest.id = "ghost-legacy"
}
if (this.manifest.id === "synapse") {
this.manifest.id = "synapse-legacy"
}
}
async init(

40
core/Cargo.lock generated
View File

@@ -1967,6 +1967,18 @@ dependencies = [
"once_cell",
]
[[package]]
name = "fallible-iterator"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
[[package]]
name = "fallible-streaming-iterator"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
[[package]]
name = "fastrand"
version = "2.3.0"
@@ -3562,6 +3574,17 @@ dependencies = [
"redox_syscall 0.7.3",
]
[[package]]
name = "libsqlite3-sys"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbb8270bb4060bd76c6e96f20c52d80620f1d82a3470885694e41e0f81ef6fe7"
dependencies = [
"cc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "libyml"
version = "0.0.5"
@@ -5444,6 +5467,20 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "rusqlite"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37e34486da88d8e051c7c0e23c3f15fd806ea8546260aa2fec247e97242ec143"
dependencies = [
"bitflags 2.11.0",
"fallible-iterator",
"fallible-streaming-iterator",
"hashlink",
"libsqlite3-sys",
"smallvec",
]
[[package]]
name = "rust-argon2"
version = "3.0.0"
@@ -6439,7 +6476,7 @@ dependencies = [
[[package]]
name = "start-os"
version = "0.4.0-alpha.23"
version = "0.4.0-beta.0"
dependencies = [
"aes",
"async-acme",
@@ -6536,6 +6573,7 @@ dependencies = [
"reqwest_cookie_store",
"rpassword",
"rpc-toolkit",
"rusqlite",
"rust-argon2",
"rust-i18n",
"semver",

View File

@@ -15,7 +15,7 @@ license = "MIT"
name = "start-os"
readme = "README.md"
repository = "https://github.com/Start9Labs/start-os"
version = "0.4.0-alpha.23" # VERSION_BUMP
version = "0.4.0-beta.0" # VERSION_BUMP
[lib]
name = "startos"
@@ -182,6 +182,7 @@ qrcode = "0.14.1"
r3bl_tui = "0.7.6"
rand = "0.9.2"
regex = "1.10.2"
rusqlite = { version = "0.34", features = ["bundled"] }
reqwest = { version = "0.12.25", features = [
"http2",
"json",
@@ -250,5 +251,3 @@ opt-level = 3
[profile.dev.package.backtrace]
opt-level = 3
[profile.dev.package.sqlx-macros]
opt-level = 3

View File

@@ -1826,13 +1826,28 @@ registry.os.version.signer-not-authorized:
fr_FR: "Le signataire %{signer} n'est pas autorisé à signer pour v%{version}"
pl_PL: "Sygnatariusz %{signer} nie jest autoryzowany do podpisywania v%{version}"
# registry/os/promote.rs
registry.os.promote.need-from-or-to:
en_US: "At least one of --from or --to must be specified"
de_DE: "Mindestens --from oder --to muss angegeben werden"
es_ES: "Se debe especificar al menos --from o --to"
fr_FR: "Au moins --from ou --to doit être spécifié"
pl_PL: "Należy podać przynajmniej --from lub --to"
registry.os.promote.version-not-found:
en_US: "OS version %{version} not found on source registry"
de_DE: "OS-Version %{version} nicht in der Quell-Registry gefunden"
es_ES: "Versión del SO %{version} no encontrada en el registro de origen"
fr_FR: "Version OS %{version} introuvable dans le registre source"
pl_PL: "Wersja OS %{version} nie znaleziona w rejestrze źródłowym"
# registry/package/mod.rs
registry.package.remove-not-exist:
en_US: "%{id}@%{version}%{sighash} does not exist, so not removed"
de_DE: "%{id}@%{version}%{sighash} existiert nicht, daher nicht entfernt"
es_ES: "%{id}@%{version}%{sighash} no existe, por lo que no se eliminó"
fr_FR: "%{id}@%{version}%{sighash} n'existe pas, donc non supprimé"
pl_PL: "%{id}@%{version}%{sighash} nie istnieje, więc nie usunięto"
en_US: "%{id}%{version}%{sighash} does not exist, so not removed"
de_DE: "%{id}%{version}%{sighash} existiert nicht, daher nicht entfernt"
es_ES: "%{id}%{version}%{sighash} no existe, por lo que no se eliminó"
fr_FR: "%{id}%{version}%{sighash} n'existe pas, donc non supprimé"
pl_PL: "%{id}%{version}%{sighash} nie istnieje, więc nie usunięto"
# registry/package/add.rs
registry.package.add.must-specify-url:
@@ -1856,6 +1871,13 @@ registry.package.missing-signer:
fr_FR: "Signataire manquant"
pl_PL: "Brak sygnatariusza"
registry.package.remove-has-versions:
en_US: "Package %{id} has versions; use --force to remove"
de_DE: "Paket %{id} hat Versionen; verwenden Sie --force zum Entfernen"
es_ES: "El paquete %{id} tiene versiones; use --force para eliminar"
fr_FR: "Le paquet %{id} a des versions ; utilisez --force pour supprimer"
pl_PL: "Pakiet %{id} ma wersje; użyj --force aby usunąć"
registry.package.unauthorized:
en_US: "Unauthorized"
de_DE: "Nicht autorisiert"
@@ -1870,6 +1892,20 @@ registry.package.add-mirror.unauthorized:
fr_FR: "Non autorisé"
pl_PL: "Brak autoryzacji"
registry.package.promote.need-from-or-to:
en_US: "At least one of --from or --to must be specified"
de_DE: "Mindestens --from oder --to muss angegeben werden"
es_ES: "Se debe especificar al menos --from o --to"
fr_FR: "Au moins --from ou --to doit être spécifié"
pl_PL: "Należy podać przynajmniej --from lub --to"
registry.package.promote.version-not-found:
en_US: "Version %{version} of %{id} not found on source registry"
de_DE: "Version %{version} von %{id} nicht in der Quell-Registry gefunden"
es_ES: "Versión %{version} de %{id} no encontrada en el registro de origen"
fr_FR: "Version %{version} de %{id} introuvable dans le registre source"
pl_PL: "Wersja %{version} pakietu %{id} nie znaleziona w rejestrze źródłowym"
registry.package.cannot-remove-last-mirror:
en_US: "Cannot remove last mirror from an s9pk"
de_DE: "Letzter Spiegel kann nicht aus einem s9pk entfernt werden"
@@ -2881,6 +2917,13 @@ help.arg.force-clear-task:
fr_FR: "Forcer la suppression de la tâche même si elle est en cours"
pl_PL: "Wymuś wyczyszczenie zadania nawet jeśli jest uruchomione"
help.arg.force-remove-package:
en_US: "Force removal even if the package has versions"
de_DE: "Entfernung erzwingen, auch wenn das Paket Versionen hat"
es_ES: "Forzar la eliminación aunque el paquete tenga versiones"
fr_FR: "Forcer la suppression même si le paquet a des versions"
pl_PL: "Wymuś usunięcie nawet jeśli pakiet ma wersje"
help.arg.force-stderr-tty:
en_US: "Force stderr to be treated as a TTY"
de_DE: "stderr als TTY behandeln erzwingen"
@@ -2902,6 +2945,13 @@ help.arg.force-uninstall:
fr_FR: "Ignorer les erreurs dans le script de désinitialisation du service"
pl_PL: "Ignoruj błędy w skrypcie deinicjalizacji usługi"
help.arg.from-registry-url:
en_US: "Source registry URL to promote from"
de_DE: "Quell-Registry-URL zum Heraufstufen"
es_ES: "URL del registro de origen para promover"
fr_FR: "URL du registre source pour la promotion"
pl_PL: "URL rejestru źródłowego do promowania"
help.arg.host-url:
en_US: "URL of the StartOS server"
de_DE: "URL des StartOS-Servers"
@@ -2923,6 +2973,13 @@ help.arg.icon-path:
fr_FR: "Chemin vers le fichier d'icône du service"
pl_PL: "Ścieżka do pliku ikony usługi"
help.arg.icon-source:
en_US: "Icon source: file path, file:// URL, http(s):// URL, or data: URL"
de_DE: "Icon-Quelle: Dateipfad, file://-URL, http(s)://-URL oder data:-URL"
es_ES: "Fuente del icono: ruta de archivo, URL file://, URL http(s):// o URL data:"
fr_FR: "Source de l'icône : chemin de fichier, URL file://, URL http(s):// ou URL data:"
pl_PL: "Źródło ikony: ścieżka pliku, URL file://, URL http(s):// lub URL data:"
help.arg.image-id:
en_US: "Docker image identifier"
de_DE: "Docker-Image-Kennung"
@@ -3007,6 +3064,34 @@ help.arg.merge:
fr_FR: "Fusionner avec la plage de versions existante au lieu de remplacer"
pl_PL: "Połącz z istniejącym zakresem wersji zamiast zastępować"
help.arg.metrics-after:
en_US: "Start of time range (RFC 3339 timestamp)"
de_DE: "Beginn des Zeitraums (RFC 3339 Zeitstempel)"
es_ES: "Inicio del rango de tiempo (marca de tiempo RFC 3339)"
fr_FR: "Début de la plage temporelle (horodatage RFC 3339)"
pl_PL: "Początek zakresu czasu (znacznik czasu RFC 3339)"
help.arg.metrics-before:
en_US: "End of time range (RFC 3339 timestamp)"
de_DE: "Ende des Zeitraums (RFC 3339 Zeitstempel)"
es_ES: "Fin del rango de tiempo (marca de tiempo RFC 3339)"
fr_FR: "Fin de la plage temporelle (horodatage RFC 3339)"
pl_PL: "Koniec zakresu czasu (znacznik czasu RFC 3339)"
help.arg.metrics-pkg-id:
en_US: "Filter by package ID"
de_DE: "Nach Paket-ID filtern"
es_ES: "Filtrar por ID de paquete"
fr_FR: "Filtrer par identifiant de paquet"
pl_PL: "Filtruj według identyfikatora pakietu"
help.arg.metrics-version:
en_US: "Filter by version"
de_DE: "Nach Version filtern"
es_ES: "Filtrar por versión"
fr_FR: "Filtrer par version"
pl_PL: "Filtruj według wersji"
help.arg.mirror-url:
en_US: "URL of the mirror"
de_DE: "URL des Spiegels"
@@ -3126,13 +3211,6 @@ help.arg.port:
fr_FR: "Numéro de port"
pl_PL: "Numer portu"
help.arg.postgres-connection-url:
en_US: "PostgreSQL connection URL"
de_DE: "PostgreSQL-Verbindungs-URL"
es_ES: "URL de conexión PostgreSQL"
fr_FR: "URL de connexion PostgreSQL"
pl_PL: "URL połączenia PostgreSQL"
help.arg.proxy-url:
en_US: "HTTP/SOCKS proxy URL"
de_DE: "HTTP/SOCKS-Proxy-URL"
@@ -3357,6 +3435,13 @@ help.arg.target-version-range:
fr_FR: "Contrainte de plage de version cible"
pl_PL: "Ograniczenie zakresu wersji docelowej"
help.arg.to-registry-url:
en_US: "Destination registry URL to promote to"
de_DE: "Ziel-Registry-URL zum Heraufstufen"
es_ES: "URL del registro de destino para promover"
fr_FR: "URL du registre de destination pour la promotion"
pl_PL: "URL rejestru docelowego do promowania"
help.arg.tor-proxy-url:
en_US: "Tor SOCKS proxy URL"
de_DE: "Tor-SOCKS-Proxy-URL"
@@ -4457,6 +4542,13 @@ about.commands-registry-db:
fr_FR: "Commandes pour interagir avec la base de données, comme dump et apply"
pl_PL: "Polecenia interakcji z bazą danych, np. dump i apply"
about.commands-registry-metrics:
en_US: "Query registry usage metrics"
de_DE: "Registry-Nutzungsmetriken abfragen"
es_ES: "Consultar métricas de uso del registro"
fr_FR: "Consulter les métriques d'utilisation du registre"
pl_PL: "Zapytaj o metryki użycia rejestru"
about.commands-registry-info:
en_US: "View or edit registry information"
de_DE: "Registry-Informationen anzeigen oder bearbeiten"
@@ -4898,6 +4990,27 @@ about.get-listen-address-for-webserver:
fr_FR: "Obtenir l'adresse d'écoute du serveur web"
pl_PL: "Pobierz adres nasłuchiwania serwera internetowego"
about.get-metrics-downloads:
en_US: "Count package download requests with optional filters"
de_DE: "Paket-Download-Anfragen mit optionalen Filtern zählen"
es_ES: "Contar solicitudes de descarga de paquetes con filtros opcionales"
fr_FR: "Compter les demandes de téléchargement de paquets avec filtres optionnels"
pl_PL: "Zlicz żądania pobrania pakietów z opcjonalnymi filtrami"
about.get-metrics-summary:
en_US: "Get a summary of registry usage metrics"
de_DE: "Zusammenfassung der Registry-Nutzungsmetriken abrufen"
es_ES: "Obtener un resumen de las métricas de uso del registro"
fr_FR: "Obtenir un résumé des métriques d'utilisation du registre"
pl_PL: "Pobierz podsumowanie metryk użycia rejestru"
about.get-metrics-users:
en_US: "Count unique active users within a time range"
de_DE: "Eindeutige aktive Benutzer in einem Zeitraum zählen"
es_ES: "Contar usuarios activos únicos dentro de un rango de tiempo"
fr_FR: "Compter les utilisateurs actifs uniques dans un intervalle de temps"
pl_PL: "Zlicz unikalnych aktywnych użytkowników w zakresie czasu"
about.get-os-versions-info:
en_US: "Get OS versions info"
de_DE: "Informationen zu Betriebssystemversionen abrufen"
@@ -5234,6 +5347,20 @@ about.persist-new-notification:
fr_FR: "Persister une nouvelle notification"
pl_PL: "Utrwal nowe powiadomienie"
about.promote-os-registry:
en_US: "Promote an OS version from one registry to another"
de_DE: "Eine OS-Version von einer Registry in eine andere heraufstufen"
es_ES: "Promover una versión del SO de un registro a otro"
fr_FR: "Promouvoir une version OS d'un registre à un autre"
pl_PL: "Promuj wersję OS z jednego rejestru do drugiego"
about.promote-package-registry:
en_US: "Promote a package from one registry to another"
de_DE: "Ein Paket von einer Registry in eine andere heraufstufen"
es_ES: "Promover un paquete de un registro a otro"
fr_FR: "Promouvoir un paquet d'un registre à un autre"
pl_PL: "Promuj pakiet z jednego rejestru do drugiego"
about.publish-s9pk:
en_US: "Publish s9pk to S3 bucket and index on registry"
de_DE: "S9pk in S3-Bucket veröffentlichen und in Registry indizieren"
@@ -5367,6 +5494,13 @@ about.remove-package-signer:
fr_FR: "Supprimer le signataire du package"
pl_PL: "Usuń sygnatariusza pakietu"
about.remove-signer:
en_US: "Remove signer and all their authorizations"
de_DE: "Unterzeichner und alle Autorisierungen entfernen"
es_ES: "Eliminar firmante y todas sus autorizaciones"
fr_FR: "Supprimer le signataire et toutes ses autorisations"
pl_PL: "Usuń sygnatariusza i wszystkie jego autoryzacje"
about.remove-port-forward:
en_US: "Remove port forward"
de_DE: "Portweiterleitung entfernen"

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-net-forward-dump-table 1 "dump-table "
.SH NAME
start\-cli\-net\-forward\-dump\-table
start\-cli\-net\-forward\-dump\-table \- Dump port forward table
.SH SYNOPSIS
\fBstart\-cli net forward dump\-table\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Dump port forward table
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -14,3 +14,4 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-net\-forward\-dump\-table(1)
Dump port forward table

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-net-gateway-check-port 1 "check-port "
.SH NAME
start\-cli\-net\-gateway\-check\-port \- about.check\-port\-reachability
start\-cli\-net\-gateway\-check\-port \- Check if a port is reachable from the WAN
.SH SYNOPSIS
\fBstart\-cli net gateway check\-port\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIPORT\fR> <\fIGATEWAY\fR>
.SH DESCRIPTION
about.check\-port\-reachability
Check if a port is reachable from the WAN
.SH OPTIONS
.TP
\fB\-\-format\fR
@@ -16,7 +16,7 @@ about.check\-port\-reachability
Print help
.TP
<\fIPORT\fR>
help.arg.port
Port number
.TP
<\fIGATEWAY\fR>
Gateway identifier

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-net-gateway-set-default-outbound 1 "set-default-outbound "
.SH NAME
start\-cli\-net\-gateway\-set\-default\-outbound \- about.set\-default\-outbound\-gateway
start\-cli\-net\-gateway\-set\-default\-outbound \- Set the default outbound gateway
.SH SYNOPSIS
\fBstart\-cli net gateway set\-default\-outbound\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIGATEWAY\fR]
.SH DESCRIPTION
about.set\-default\-outbound\-gateway
Set the default outbound gateway
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -17,7 +17,7 @@ start\-cli\-net\-gateway\-check\-dns(1)
Check DNS configuration for a gateway
.TP
start\-cli\-net\-gateway\-check\-port(1)
about.check\-port\-reachability
Check if a port is reachable from the WAN
.TP
start\-cli\-net\-gateway\-forget(1)
Forget a disconnected gateway
@@ -26,7 +26,7 @@ start\-cli\-net\-gateway\-list(1)
Show gateways StartOS can listen on
.TP
start\-cli\-net\-gateway\-set\-default\-outbound(1)
about.set\-default\-outbound\-gateway
Set the default outbound gateway
.TP
start\-cli\-net\-gateway\-set\-name(1)
Rename a gateway

View File

@@ -0,0 +1,22 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-net-ssl-generate-certificate 1 "generate-certificate "
.SH NAME
start\-cli\-net\-ssl\-generate\-certificate \- Generate an SSL certificate from the system root CA
.SH SYNOPSIS
\fBstart\-cli net ssl generate\-certificate\fR [\fB\-\-ed25519\fR] [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIHOSTNAMES\fR]
.SH DESCRIPTION
Generate an SSL certificate from the system root CA
.SH OPTIONS
.TP
\fB\-\-ed25519\fR
Use Ed25519 instead of NIST P\-256
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
[\fIHOSTNAMES\fR]
Hostnames to include in the certificate

View File

@@ -0,0 +1,17 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-net-ssl 1 "ssl "
.SH NAME
start\-cli\-net\-ssl \- Manage SSL certificates
.SH SYNOPSIS
\fBstart\-cli net ssl\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Manage SSL certificates
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.SH SUBCOMMANDS
.TP
start\-cli\-net\-ssl\-generate\-certificate(1)
Generate an SSL certificate from the system root CA

View File

@@ -10,7 +10,7 @@ Add a new tunnel
.SH OPTIONS
.TP
\fB\-\-set\-as\-default\-outbound\fR
help.arg.set\-as\-default\-outbound
Set as the default outbound gateway
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
@@ -22,7 +22,7 @@ Tunnel name
WireGuard configuration
.TP
[\fIGATEWAY_TYPE\fR]
help.arg.gateway\-type
Type of gateway
.br
.br

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-net-vhost-add-passthrough 1 "add-passthrough "
.SH NAME
start\-cli\-net\-vhost\-add\-passthrough
start\-cli\-net\-vhost\-add\-passthrough \- Add vhost passthrough
.SH SYNOPSIS
\fBstart\-cli net vhost add\-passthrough\fR <\fB\-\-hostname\fR> <\fB\-\-listen\-port\fR> <\fB\-\-backend\fR> [\fB\-\-public\-gateway\fR] [\fB\-\-private\-ip\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Add vhost passthrough
.SH OPTIONS
.TP
\fB\-\-hostname\fR \fI<HOSTNAME>\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-net-vhost-dump-table 1 "dump-table "
.SH NAME
start\-cli\-net\-vhost\-dump\-table
start\-cli\-net\-vhost\-dump\-table \- Dump vhost proxy table
.SH SYNOPSIS
\fBstart\-cli net vhost dump\-table\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Dump vhost proxy table
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-net-vhost-list-passthrough 1 "list-passthrough "
.SH NAME
start\-cli\-net\-vhost\-list\-passthrough
start\-cli\-net\-vhost\-list\-passthrough \- List vhost passthroughs
.SH SYNOPSIS
\fBstart\-cli net vhost list\-passthrough\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
List vhost passthroughs
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-net-vhost-remove-passthrough 1 "remove-passthrough "
.SH NAME
start\-cli\-net\-vhost\-remove\-passthrough
start\-cli\-net\-vhost\-remove\-passthrough \- Remove vhost passthrough
.SH SYNOPSIS
\fBstart\-cli net vhost remove\-passthrough\fR <\fB\-\-hostname\fR> <\fB\-\-listen\-port\fR> [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Remove vhost passthrough
.SH OPTIONS
.TP
\fB\-\-hostname\fR \fI<HOSTNAME>\fR

View File

@@ -14,9 +14,13 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-net\-vhost\-add\-passthrough(1)
Add vhost passthrough
.TP
start\-cli\-net\-vhost\-dump\-table(1)
Dump vhost proxy table
.TP
start\-cli\-net\-vhost\-list\-passthrough(1)
List vhost passthroughs
.TP
start\-cli\-net\-vhost\-remove\-passthrough(1)
Remove vhost passthrough

View File

@@ -25,6 +25,9 @@ Manage port forwards
start\-cli\-net\-gateway(1)
View and edit gateway configurations
.TP
start\-cli\-net\-ssl(1)
Manage SSL certificates
.TP
start\-cli\-net\-tunnel(1)
Manage tunnels
.TP

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-attach 1 "attach "
.SH NAME
start\-cli\-package\-attach
start\-cli\-package\-attach \- Execute commands in container
.SH SYNOPSIS
\fBstart\-cli package attach\fR [\fB\-\-force\-tty\fR] [\fB\-s\fR|\fB\-\-subcontainer\fR] [\fB\-n\fR|\fB\-\-name\fR] [\fB\-u\fR|\fB\-\-user\fR] [\fB\-i\fR|\fB\-\-image\-id\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> [\fICOMMAND\fR]
.SH DESCRIPTION
Execute commands in container
.SH OPTIONS
.TP
\fB\-\-force\-tty\fR

View File

@@ -4,11 +4,14 @@
.SH NAME
start\-cli\-package\-backup\-restore \- Restore packages from backup
.SH SYNOPSIS
\fBstart\-cli package backup restore\fR [\fB\-h\fR|\fB\-\-help\fR] <\fITARGET_ID\fR> <\fIPASSWORD\fR> [\fIIDS\fR]
\fBstart\-cli package backup restore\fR [\fB\-\-server\-id\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fITARGET_ID\fR> <\fIPASSWORD\fR> [\fIIDS\fR]
.SH DESCRIPTION
Restore packages from backup
.SH OPTIONS
.TP
\fB\-\-server\-id\fR \fI<SERVER_ID>\fR
Unique server identifier
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-host-address-domain-private 1 "private "
.SH NAME
start\-cli\-package\-host\-address\-domain\-private
start\-cli\-package\-host\-address\-domain\-private \- Commands for managing private domains for a host
.SH SYNOPSIS
\fBstart\-cli package host address domain private\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing private domains for a host
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-host-address-domain-public 1 "public "
.SH NAME
start\-cli\-package\-host\-address\-domain\-public
start\-cli\-package\-host\-address\-domain\-public \- Commands for managing public domains for a host
.SH SYNOPSIS
\fBstart\-cli package host address domain public\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing public domains for a host
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-host-address-domain 1 "domain "
.SH NAME
start\-cli\-package\-host\-address\-domain
start\-cli\-package\-host\-address\-domain \- Commands for managing host address domains
.SH SYNOPSIS
\fBstart\-cli package host address domain\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host address domains
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -13,5 +14,7 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-package\-host\-address\-domain\-private(1)
Commands for managing private domains for a host
.TP
start\-cli\-package\-host\-address\-domain\-public(1)
Commands for managing public domains for a host

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-host-address 1 "address "
.SH NAME
start\-cli\-package\-host\-address
start\-cli\-package\-host\-address \- Commands for managing host addresses
.SH SYNOPSIS
\fBstart\-cli package host address\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIHOST\fR> <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host addresses
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -16,6 +17,7 @@ Host identifier
.SH SUBCOMMANDS
.TP
start\-cli\-package\-host\-address\-domain(1)
Commands for managing host address domains
.TP
start\-cli\-package\-host\-address\-list(1)
List addresses for a host

View File

@@ -2,15 +2,15 @@
.el .ds Aq '
.TH start-cli-package-host-binding-set-address-enabled 1 "set-address-enabled "
.SH NAME
start\-cli\-package\-host\-binding\-set\-address\-enabled \- about.set\-address\-enabled\-for\-binding
start\-cli\-package\-host\-binding\-set\-address\-enabled \- Set a gateway address enabled for a binding
.SH SYNOPSIS
\fBstart\-cli package host binding set\-address\-enabled\fR <\fB\-\-address\fR> [\fB\-\-enabled\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIINTERNAL_PORT\fR>
.SH DESCRIPTION
about.set\-address\-enabled\-for\-binding
Set a gateway address enabled for a binding
.SH OPTIONS
.TP
\fB\-\-address\fR \fI<ADDRESS>\fR
help.arg.address
Network address
.TP
\fB\-\-enabled\fR \fI<ENABLED>\fR
Enable or disable this binding

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-package-host-binding 1 "binding "
.SH NAME
start\-cli\-package\-host\-binding
start\-cli\-package\-host\-binding \- Commands for managing host bindings
.SH SYNOPSIS
\fBstart\-cli package host binding\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIHOST\fR> <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host bindings
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -19,4 +20,4 @@ start\-cli\-package\-host\-binding\-list(1)
List bindings for a host
.TP
start\-cli\-package\-host\-binding\-set\-address\-enabled(1)
about.set\-address\-enabled\-for\-binding
Set a gateway address enabled for a binding

View File

@@ -17,5 +17,7 @@ Package identifier
.SH SUBCOMMANDS
.TP
start\-cli\-package\-host\-address(1)
Commands for managing host addresses
.TP
start\-cli\-package\-host\-binding(1)
Commands for managing host bindings

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-package-set-outbound-gateway 1 "set-outbound-gateway "
.SH NAME
start\-cli\-package\-set\-outbound\-gateway \- about.set\-outbound\-gateway\-package
start\-cli\-package\-set\-outbound\-gateway \- Set the outbound gateway for a package
.SH SYNOPSIS
\fBstart\-cli package set\-outbound\-gateway\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIPACKAGE\fR> [\fIGATEWAY\fR]
.SH DESCRIPTION
about.set\-outbound\-gateway\-package
Set the outbound gateway for a package
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -17,6 +17,7 @@ start\-cli\-package\-action(1)
Commands to get action input or run an action
.TP
start\-cli\-package\-attach(1)
Execute commands in container
.TP
start\-cli\-package\-backup(1)
Commands for restoring package(s) from backup
@@ -46,7 +47,7 @@ start\-cli\-package\-restart(1)
Restart a service
.TP
start\-cli\-package\-set\-outbound\-gateway(1)
about.set\-outbound\-gateway\-package
Set the outbound gateway for a package
.TP
start\-cli\-package\-start(1)
Start a service

View File

@@ -0,0 +1,16 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-admin-signer-remove 1 "remove "
.SH NAME
start\-cli\-registry\-admin\-signer\-remove \- Remove signer and all their authorizations
.SH SYNOPSIS
\fBstart\-cli registry admin signer remove\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
.SH DESCRIPTION
Remove signer and all their authorizations
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Signer identifier

View File

@@ -21,3 +21,6 @@ Edit signer information
.TP
start\-cli\-registry\-admin\-signer\-list(1)
List signers
.TP
start\-cli\-registry\-admin\-signer\-remove(1)
Remove signer and all their authorizations

View File

@@ -13,4 +13,4 @@ Set the registry icon
Print help
.TP
<\fIICON\fR>
Path to service icon file
Icon source: file path, file:// URL, http(s):// URL, or data: URL

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-registry-info 1 "info "
.SH NAME
start\-cli\-registry\-info \- Display registry info
start\-cli\-registry\-info \- View or edit registry information
.SH SYNOPSIS
\fBstart\-cli registry info\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIsubcommands\fR]
.SH DESCRIPTION
Display registry info
View or edit registry information
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -0,0 +1,28 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-metrics-downloads 1 "downloads "
.SH NAME
start\-cli\-registry\-metrics\-downloads \- Count package download requests with optional filters
.SH SYNOPSIS
\fBstart\-cli registry metrics downloads\fR [\fB\-\-pkg\-id\fR] [\fB\-\-version\fR] [\fB\-\-after\fR] [\fB\-\-before\fR] [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Count package download requests with optional filters
.SH OPTIONS
.TP
\fB\-\-pkg\-id\fR \fI<PKG_ID>\fR
Filter by package ID
.TP
\fB\-\-version\fR \fI<VERSION>\fR
Filter by version
.TP
\fB\-\-after\fR \fI<AFTER>\fR
Start of time range (RFC 3339 timestamp)
.TP
\fB\-\-before\fR \fI<BEFORE>\fR
End of time range (RFC 3339 timestamp)
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,16 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-metrics-summary 1 "summary "
.SH NAME
start\-cli\-registry\-metrics\-summary \- Get a summary of registry usage metrics
.SH SYNOPSIS
\fBstart\-cli registry metrics summary\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Get a summary of registry usage metrics
.SH OPTIONS
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,22 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-metrics-users 1 "users "
.SH NAME
start\-cli\-registry\-metrics\-users \- Count unique active users within a time range
.SH SYNOPSIS
\fBstart\-cli registry metrics users\fR [\fB\-\-after\fR] [\fB\-\-before\fR] [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Count unique active users within a time range
.SH OPTIONS
.TP
\fB\-\-after\fR \fI<AFTER>\fR
Start of time range (RFC 3339 timestamp)
.TP
\fB\-\-before\fR \fI<BEFORE>\fR
End of time range (RFC 3339 timestamp)
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,23 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-metrics 1 "metrics "
.SH NAME
start\-cli\-registry\-metrics \- Query registry usage metrics
.SH SYNOPSIS
\fBstart\-cli registry metrics\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Query registry usage metrics
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.SH SUBCOMMANDS
.TP
start\-cli\-registry\-metrics\-downloads(1)
Count package download requests with optional filters
.TP
start\-cli\-registry\-metrics\-summary(1)
Get a summary of registry usage metrics
.TP
start\-cli\-registry\-metrics\-users(1)
Count unique active users within a time range

View File

@@ -0,0 +1,22 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-os-promote 1 "promote "
.SH NAME
start\-cli\-registry\-os\-promote \- Promote an OS version from one registry to another
.SH SYNOPSIS
\fBstart\-cli registry os promote\fR [\fB\-\-from\fR] [\fB\-\-to\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIVERSION\fR>
.SH DESCRIPTION
Promote an OS version from one registry to another
.SH OPTIONS
.TP
\fB\-\-from\fR \fI<FROM>\fR
Source registry URL to promote from
.TP
\fB\-\-to\fR \fI<TO>\fR
Destination registry URL to promote to
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIVERSION\fR>
StartOS version number

View File

@@ -19,5 +19,8 @@ Commands to add, sign, or get registry assets
start\-cli\-registry\-os\-index(1)
List OS versions index
.TP
start\-cli\-registry\-os\-promote(1)
Promote an OS version from one registry to another
.TP
start\-cli\-registry\-os\-version(1)
Commands to add, remove, or list versions or version signers

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-registry-package-category-list 1 "list "
.SH NAME
start\-cli\-registry\-package\-category\-list
start\-cli\-registry\-package\-category\-list \- List registry categories
.SH SYNOPSIS
\fBstart\-cli registry package category list\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
List registry categories
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -20,6 +20,7 @@ start\-cli\-registry\-package\-category\-add\-package(1)
Add a package to a category
.TP
start\-cli\-registry\-package\-category\-list(1)
List registry categories
.TP
start\-cli\-registry\-package\-category\-remove(1)
Remove category from registry

View File

@@ -4,7 +4,7 @@
.SH NAME
start\-cli\-registry\-package\-download \- Download s9pk package
.SH SYNOPSIS
\fBstart\-cli registry package download\fR [\fB\-v\fR|\fB\-\-target\-version\fR] [\fB\-d\fR|\fB\-\-dest\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
\fBstart\-cli registry package download\fR [\fB\-v\fR|\fB\-\-target\-version\fR] [\fB\-d\fR|\fB\-\-dest\fR] [\fB\-a\fR|\fB\-\-arch\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
.SH DESCRIPTION
Download s9pk package
.SH OPTIONS
@@ -15,6 +15,9 @@ Target version range constraint
\fB\-d\fR, \fB\-\-dest\fR \fI<DEST>\fR
Destination path for download
.TP
\fB\-a\fR, \fB\-\-arch\fR \fI<ARCH>\fR
Target CPU architecture (e.g. x86_64, aarch64)
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP

View File

@@ -0,0 +1,25 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli-registry-package-promote 1 "promote "
.SH NAME
start\-cli\-registry\-package\-promote \- Promote a package from one registry to another
.SH SYNOPSIS
\fBstart\-cli registry package promote\fR [\fB\-\-from\fR] [\fB\-\-to\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> <\fIVERSION\fR>
.SH DESCRIPTION
Promote a package from one registry to another
.SH OPTIONS
.TP
\fB\-\-from\fR \fI<FROM>\fR
Source registry URL to promote from
.TP
\fB\-\-to\fR \fI<TO>\fR
Destination registry URL to promote to
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Package identifier
.TP
<\fIVERSION\fR>
Package version

View File

@@ -4,7 +4,7 @@
.SH NAME
start\-cli\-registry\-package\-remove \- Remove package from registry
.SH SYNOPSIS
\fBstart\-cli registry package remove\fR [\fB\-\-sighash\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> <\fIVERSION\fR>
\fBstart\-cli registry package remove\fR [\fB\-\-sighash\fR] [\fB\-\-force\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> [\fIVERSION\fR]
.SH DESCRIPTION
Remove package from registry
.SH OPTIONS
@@ -12,11 +12,14 @@ Remove package from registry
\fB\-\-sighash\fR \fI<SIGHASH>\fR
Hash for signature verification
.TP
\fB\-\-force\fR
Force removal even if the package has versions
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Package identifier
.TP
<\fIVERSION\fR>
[\fIVERSION\fR]
Package version

View File

@@ -31,6 +31,9 @@ List installation candidates
start\-cli\-registry\-package\-index(1)
List packages and categories
.TP
start\-cli\-registry\-package\-promote(1)
Promote a package from one registry to another
.TP
start\-cli\-registry\-package\-remove(1)
Remove package from registry
.TP

View File

@@ -23,7 +23,10 @@ start\-cli\-registry\-index(1)
List registry info and packages
.TP
start\-cli\-registry\-info(1)
Display registry info
View or edit registry information
.TP
start\-cli\-registry\-metrics(1)
Query registry usage metrics
.TP
start\-cli\-registry\-os(1)
Commands related to OS assets and versions

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-s9pk-inspect-commitment 1 "commitment "
.SH NAME
start\-cli\-s9pk\-inspect\-commitment \- about.display\-s9pk\-root\-sighash\-and\-maxsize
start\-cli\-s9pk\-inspect\-commitment \- Display the s9pk root signature hash and max size
.SH SYNOPSIS
\fBstart\-cli s9pk inspect commitment\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
about.display\-s9pk\-root\-sighash\-and\-maxsize
Display the s9pk root signature hash and max size
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -20,7 +20,7 @@ start\-cli\-s9pk\-inspect\-cat(1)
Display file contents from s9pk
.TP
start\-cli\-s9pk\-inspect\-commitment(1)
about.display\-s9pk\-root\-sighash\-and\-maxsize
Display the s9pk root signature hash and max size
.TP
start\-cli\-s9pk\-inspect\-file\-tree(1)
Display list of paths in s9pk

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-server-device-info 1 "device-info "
.SH NAME
start\-cli\-server\-device\-info \- about.get\-device\-info
start\-cli\-server\-device\-info \- Display device information
.SH SYNOPSIS
\fBstart\-cli server device\-info\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
about.get\-device\-info
Display device information
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-server-host-address-domain-private 1 "private "
.SH NAME
start\-cli\-server\-host\-address\-domain\-private
start\-cli\-server\-host\-address\-domain\-private \- Commands for managing private domains for a host
.SH SYNOPSIS
\fBstart\-cli server host address domain private\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing private domains for a host
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-server-host-address-domain-public 1 "public "
.SH NAME
start\-cli\-server\-host\-address\-domain\-public
start\-cli\-server\-host\-address\-domain\-public \- Commands for managing public domains for a host
.SH SYNOPSIS
\fBstart\-cli server host address domain public\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing public domains for a host
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-server-host-address-domain 1 "domain "
.SH NAME
start\-cli\-server\-host\-address\-domain
start\-cli\-server\-host\-address\-domain \- Commands for managing host address domains
.SH SYNOPSIS
\fBstart\-cli server host address domain\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host address domains
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -13,5 +14,7 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-server\-host\-address\-domain\-private(1)
Commands for managing private domains for a host
.TP
start\-cli\-server\-host\-address\-domain\-public(1)
Commands for managing public domains for a host

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-server-host-address 1 "address "
.SH NAME
start\-cli\-server\-host\-address
start\-cli\-server\-host\-address \- Commands for managing host addresses
.SH SYNOPSIS
\fBstart\-cli server host address\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host addresses
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -13,6 +14,7 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-server\-host\-address\-domain(1)
Commands for managing host address domains
.TP
start\-cli\-server\-host\-address\-list(1)
List addresses for a host

View File

@@ -2,15 +2,15 @@
.el .ds Aq '
.TH start-cli-server-host-binding-set-address-enabled 1 "set-address-enabled "
.SH NAME
start\-cli\-server\-host\-binding\-set\-address\-enabled \- about.set\-address\-enabled\-for\-binding
start\-cli\-server\-host\-binding\-set\-address\-enabled \- Set a gateway address enabled for a binding
.SH SYNOPSIS
\fBstart\-cli server host binding set\-address\-enabled\fR <\fB\-\-address\fR> [\fB\-\-enabled\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIINTERNAL_PORT\fR>
.SH DESCRIPTION
about.set\-address\-enabled\-for\-binding
Set a gateway address enabled for a binding
.SH OPTIONS
.TP
\fB\-\-address\fR \fI<ADDRESS>\fR
help.arg.address
Network address
.TP
\fB\-\-enabled\fR \fI<ENABLED>\fR
Enable or disable this binding

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-server-host-binding 1 "binding "
.SH NAME
start\-cli\-server\-host\-binding
start\-cli\-server\-host\-binding \- Commands for managing host bindings
.SH SYNOPSIS
\fBstart\-cli server host binding\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing host bindings
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -16,4 +17,4 @@ start\-cli\-server\-host\-binding\-list(1)
List bindings for a host
.TP
start\-cli\-server\-host\-binding\-set\-address\-enabled(1)
about.set\-address\-enabled\-for\-binding
Set a gateway address enabled for a binding

View File

@@ -14,5 +14,7 @@ Print help
.SH SUBCOMMANDS
.TP
start\-cli\-server\-host\-address(1)
Commands for managing host addresses
.TP
start\-cli\-server\-host\-binding(1)
Commands for managing host bindings

View File

@@ -17,7 +17,7 @@ start\-cli\-server\-clear\-smtp(1)
Remove system smtp server and credentials
.TP
start\-cli\-server\-device\-info(1)
about.get\-device\-info
Display device information
.TP
start\-cli\-server\-experimental(1)
Commands related to configuring experimental options such as zram and cpu governor

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-auth-key 1 "key "
.SH NAME
start\-cli\-tunnel\-auth\-key
start\-cli\-tunnel\-auth\-key \- Commands for managing authorized keys
.SH SYNOPSIS
\fBstart\-cli tunnel auth key\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing authorized keys
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -17,6 +17,7 @@ start\-cli\-tunnel\-auth\-get\-pubkey(1)
Get the public key from the server
.TP
start\-cli\-tunnel\-auth\-key(1)
Commands for managing authorized keys
.TP
start\-cli\-tunnel\-auth\-login(1)
Login to a new auth session

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-port-forward-set-enabled 1 "set-enabled "
.SH NAME
start\-cli\-tunnel\-port\-forward\-set\-enabled \- about.enable\-or\-disable\-port\-forward
start\-cli\-tunnel\-port\-forward\-set\-enabled \- Enable or disable a port forward
.SH SYNOPSIS
\fBstart\-cli tunnel port\-forward set\-enabled\fR [\fB\-\-enabled\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fISOURCE\fR>
.SH DESCRIPTION
about.enable\-or\-disable\-port\-forward
Enable or disable a port forward
.SH OPTIONS
.TP
\fB\-\-enabled\fR

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-port-forward-update-label 1 "update-label "
.SH NAME
start\-cli\-tunnel\-port\-forward\-update\-label \- about.update\-port\-forward\-label
start\-cli\-tunnel\-port\-forward\-update\-label \- Update the label of a port forward
.SH SYNOPSIS
\fBstart\-cli tunnel port\-forward update\-label\fR [\fB\-h\fR|\fB\-\-help\fR] <\fISOURCE\fR> [\fILABEL\fR]
.SH DESCRIPTION
about.update\-port\-forward\-label
Update the label of a port forward
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-port-forward 1 "port-forward "
.SH NAME
start\-cli\-tunnel\-port\-forward
start\-cli\-tunnel\-port\-forward \- Commands for managing port forwards
.SH SYNOPSIS
\fBstart\-cli tunnel port\-forward\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing port forwards
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -19,7 +20,7 @@ start\-cli\-tunnel\-port\-forward\-remove(1)
Remove port forward
.TP
start\-cli\-tunnel\-port\-forward\-set\-enabled(1)
about.enable\-or\-disable\-port\-forward
Enable or disable a port forward
.TP
start\-cli\-tunnel\-port\-forward\-update\-label(1)
about.update\-port\-forward\-label
Update the label of a port forward

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-update 1 "update "
.SH NAME
start\-cli\-tunnel\-update
start\-cli\-tunnel\-update \- Commands for checking and applying tunnel updates
.SH SYNOPSIS
\fBstart\-cli tunnel update\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for checking and applying tunnel updates
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-cli-tunnel-web 1 "web "
.SH NAME
start\-cli\-tunnel\-web
start\-cli\-tunnel\-web \- Commands for managing the tunnel web interface
.SH SYNOPSIS
\fBstart\-cli tunnel web\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing the tunnel web interface
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -23,6 +23,7 @@ start\-cli\-tunnel\-device(1)
Add, remove, or list devices in subnets
.TP
start\-cli\-tunnel\-port\-forward(1)
Commands for managing port forwards
.TP
start\-cli\-tunnel\-restart(1)
Reboot the tunnel server
@@ -31,5 +32,7 @@ start\-cli\-tunnel\-subnet(1)
Add, remove, or modify subnets
.TP
start\-cli\-tunnel\-update(1)
Commands for checking and applying tunnel updates
.TP
start\-cli\-tunnel\-web(1)
Commands for managing the tunnel web interface

View File

@@ -1,6 +1,6 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-cli 1 "start-cli 0.4.0-alpha.21"
.TH start-cli 1 "start-cli 0.4.0-beta.0"
.SH NAME
start\-cli
.SH SYNOPSIS
@@ -117,4 +117,4 @@ Command for calculating the blake3 hash of a file
start\-cli\-wifi(1)
Commands related to wifi networks i.e. add, connect, delete
.SH VERSION
v0.4.0\-alpha.21
v0.4.0\-beta.0

View File

@@ -0,0 +1,15 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-container-pipe-wrap 1 "pipe-wrap "
.SH NAME
start\-container\-pipe\-wrap
.SH SYNOPSIS
\fBstart\-container pipe\-wrap\fR [\fB\-h\fR|\fB\-\-help\fR] [\fICOMMAND\fR]
.SH DESCRIPTION
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
[\fICOMMAND\fR]
Command to execute in the container

View File

@@ -1,6 +1,6 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-container 1 "start-container 0.4.0-alpha.21"
.TH start-container 1 "start-container 0.4.0-beta.0"
.SH NAME
start\-container
.SH SYNOPSIS
@@ -34,6 +34,8 @@ start\-container\-get\-status(1)
.TP
start\-container\-git\-info(1)
.TP
start\-container\-pipe\-wrap(1)
.TP
start\-container\-plugin(1)
.TP
start\-container\-rebuild(1)
@@ -50,4 +52,4 @@ start\-container\-shutdown(1)
.TP
start\-container\-subcontainer(1)
.SH VERSION
v0.4.0\-alpha.21
v0.4.0\-beta.0

View File

@@ -0,0 +1,16 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-admin-signer-remove 1 "remove "
.SH NAME
start\-registry\-admin\-signer\-remove \- Remove signer and all their authorizations
.SH SYNOPSIS
\fBstart\-registry admin signer remove\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
.SH DESCRIPTION
Remove signer and all their authorizations
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Signer identifier

View File

@@ -21,3 +21,6 @@ Edit signer information
.TP
start\-registry\-admin\-signer\-list(1)
List signers
.TP
start\-registry\-admin\-signer\-remove(1)
Remove signer and all their authorizations

View File

@@ -13,4 +13,4 @@ Set the registry icon
Print help
.TP
<\fIICON\fR>
Path to service icon file
Icon source: file path, file:// URL, http(s):// URL, or data: URL

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-registry-info 1 "info "
.SH NAME
start\-registry\-info \- Display registry info
start\-registry\-info \- View or edit registry information
.SH SYNOPSIS
\fBstart\-registry info\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIsubcommands\fR]
.SH DESCRIPTION
Display registry info
View or edit registry information
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -0,0 +1,28 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-metrics-downloads 1 "downloads "
.SH NAME
start\-registry\-metrics\-downloads \- Count package download requests with optional filters
.SH SYNOPSIS
\fBstart\-registry metrics downloads\fR [\fB\-\-pkg\-id\fR] [\fB\-\-version\fR] [\fB\-\-after\fR] [\fB\-\-before\fR] [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Count package download requests with optional filters
.SH OPTIONS
.TP
\fB\-\-pkg\-id\fR \fI<PKG_ID>\fR
Filter by package ID
.TP
\fB\-\-version\fR \fI<VERSION>\fR
Filter by version
.TP
\fB\-\-after\fR \fI<AFTER>\fR
Start of time range (RFC 3339 timestamp)
.TP
\fB\-\-before\fR \fI<BEFORE>\fR
End of time range (RFC 3339 timestamp)
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,16 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-metrics-summary 1 "summary "
.SH NAME
start\-registry\-metrics\-summary \- Get a summary of registry usage metrics
.SH SYNOPSIS
\fBstart\-registry metrics summary\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Get a summary of registry usage metrics
.SH OPTIONS
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,22 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-metrics-users 1 "users "
.SH NAME
start\-registry\-metrics\-users \- Count unique active users within a time range
.SH SYNOPSIS
\fBstart\-registry metrics users\fR [\fB\-\-after\fR] [\fB\-\-before\fR] [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
Count unique active users within a time range
.SH OPTIONS
.TP
\fB\-\-after\fR \fI<AFTER>\fR
Start of time range (RFC 3339 timestamp)
.TP
\fB\-\-before\fR \fI<BEFORE>\fR
End of time range (RFC 3339 timestamp)
.TP
\fB\-\-format\fR
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help

View File

@@ -0,0 +1,23 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-metrics 1 "metrics "
.SH NAME
start\-registry\-metrics \- Query registry usage metrics
.SH SYNOPSIS
\fBstart\-registry metrics\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Query registry usage metrics
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.SH SUBCOMMANDS
.TP
start\-registry\-metrics\-downloads(1)
Count package download requests with optional filters
.TP
start\-registry\-metrics\-summary(1)
Get a summary of registry usage metrics
.TP
start\-registry\-metrics\-users(1)
Count unique active users within a time range

View File

@@ -0,0 +1,22 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-os-promote 1 "promote "
.SH NAME
start\-registry\-os\-promote \- Promote an OS version from one registry to another
.SH SYNOPSIS
\fBstart\-registry os promote\fR [\fB\-\-from\fR] [\fB\-\-to\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIVERSION\fR>
.SH DESCRIPTION
Promote an OS version from one registry to another
.SH OPTIONS
.TP
\fB\-\-from\fR \fI<FROM>\fR
Source registry URL to promote from
.TP
\fB\-\-to\fR \fI<TO>\fR
Destination registry URL to promote to
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIVERSION\fR>
StartOS version number

View File

@@ -19,5 +19,8 @@ Commands to add, sign, or get registry assets
start\-registry\-os\-index(1)
List OS versions index
.TP
start\-registry\-os\-promote(1)
Promote an OS version from one registry to another
.TP
start\-registry\-os\-version(1)
Commands to add, remove, or list versions or version signers

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-registry-package-category-list 1 "list "
.SH NAME
start\-registry\-package\-category\-list
start\-registry\-package\-category\-list \- List registry categories
.SH SYNOPSIS
\fBstart\-registry package category list\fR [\fB\-\-format\fR] [\fB\-h\fR|\fB\-\-help\fR]
.SH DESCRIPTION
List registry categories
.SH OPTIONS
.TP
\fB\-\-format\fR

View File

@@ -20,6 +20,7 @@ start\-registry\-package\-category\-add\-package(1)
Add a package to a category
.TP
start\-registry\-package\-category\-list(1)
List registry categories
.TP
start\-registry\-package\-category\-remove(1)
Remove category from registry

View File

@@ -4,7 +4,7 @@
.SH NAME
start\-registry\-package\-download \- Download s9pk package
.SH SYNOPSIS
\fBstart\-registry package download\fR [\fB\-v\fR|\fB\-\-target\-version\fR] [\fB\-d\fR|\fB\-\-dest\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
\fBstart\-registry package download\fR [\fB\-v\fR|\fB\-\-target\-version\fR] [\fB\-d\fR|\fB\-\-dest\fR] [\fB\-a\fR|\fB\-\-arch\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR>
.SH DESCRIPTION
Download s9pk package
.SH OPTIONS
@@ -15,6 +15,9 @@ Target version range constraint
\fB\-d\fR, \fB\-\-dest\fR \fI<DEST>\fR
Destination path for download
.TP
\fB\-a\fR, \fB\-\-arch\fR \fI<ARCH>\fR
Target CPU architecture (e.g. x86_64, aarch64)
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP

View File

@@ -0,0 +1,25 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry-package-promote 1 "promote "
.SH NAME
start\-registry\-package\-promote \- Promote a package from one registry to another
.SH SYNOPSIS
\fBstart\-registry package promote\fR [\fB\-\-from\fR] [\fB\-\-to\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> <\fIVERSION\fR>
.SH DESCRIPTION
Promote a package from one registry to another
.SH OPTIONS
.TP
\fB\-\-from\fR \fI<FROM>\fR
Source registry URL to promote from
.TP
\fB\-\-to\fR \fI<TO>\fR
Destination registry URL to promote to
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Package identifier
.TP
<\fIVERSION\fR>
Package version

View File

@@ -4,7 +4,7 @@
.SH NAME
start\-registry\-package\-remove \- Remove package from registry
.SH SYNOPSIS
\fBstart\-registry package remove\fR [\fB\-\-sighash\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> <\fIVERSION\fR>
\fBstart\-registry package remove\fR [\fB\-\-sighash\fR] [\fB\-\-force\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIID\fR> [\fIVERSION\fR]
.SH DESCRIPTION
Remove package from registry
.SH OPTIONS
@@ -12,11 +12,14 @@ Remove package from registry
\fB\-\-sighash\fR \fI<SIGHASH>\fR
Hash for signature verification
.TP
\fB\-\-force\fR
Force removal even if the package has versions
.TP
\fB\-h\fR, \fB\-\-help\fR
Print help
.TP
<\fIID\fR>
Package identifier
.TP
<\fIVERSION\fR>
[\fIVERSION\fR]
Package version

View File

@@ -31,6 +31,9 @@ List installation candidates
start\-registry\-package\-index(1)
List packages and categories
.TP
start\-registry\-package\-promote(1)
Promote a package from one registry to another
.TP
start\-registry\-package\-remove(1)
Remove package from registry
.TP

View File

@@ -1,6 +1,6 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-registry 1 "start-registry 0.4.0-alpha.21"
.TH start-registry 1 "start-registry 0.4.0-beta.0"
.SH NAME
start\-registry
.SH SYNOPSIS
@@ -55,7 +55,10 @@ start\-registry\-index(1)
List registry info and packages
.TP
start\-registry\-info(1)
Display registry info
View or edit registry information
.TP
start\-registry\-metrics(1)
Query registry usage metrics
.TP
start\-registry\-os(1)
Commands related to OS assets and versions
@@ -63,4 +66,4 @@ Commands related to OS assets and versions
start\-registry\-package(1)
Commands to index, add, or get packages
.SH VERSION
v0.4.0\-alpha.21
v0.4.0\-beta.0

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-tunnel-auth-key 1 "key "
.SH NAME
start\-tunnel\-auth\-key
start\-tunnel\-auth\-key \- Commands for managing authorized keys
.SH SYNOPSIS
\fBstart\-tunnel auth key\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing authorized keys
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -17,6 +17,7 @@ start\-tunnel\-auth\-get\-pubkey(1)
Get the public key from the server
.TP
start\-tunnel\-auth\-key(1)
Commands for managing authorized keys
.TP
start\-tunnel\-auth\-login(1)
Login to a new auth session

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-tunnel-port-forward-set-enabled 1 "set-enabled "
.SH NAME
start\-tunnel\-port\-forward\-set\-enabled \- about.enable\-or\-disable\-port\-forward
start\-tunnel\-port\-forward\-set\-enabled \- Enable or disable a port forward
.SH SYNOPSIS
\fBstart\-tunnel port\-forward set\-enabled\fR [\fB\-\-enabled\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fISOURCE\fR>
.SH DESCRIPTION
about.enable\-or\-disable\-port\-forward
Enable or disable a port forward
.SH OPTIONS
.TP
\fB\-\-enabled\fR

View File

@@ -2,11 +2,11 @@
.el .ds Aq '
.TH start-tunnel-port-forward-update-label 1 "update-label "
.SH NAME
start\-tunnel\-port\-forward\-update\-label \- about.update\-port\-forward\-label
start\-tunnel\-port\-forward\-update\-label \- Update the label of a port forward
.SH SYNOPSIS
\fBstart\-tunnel port\-forward update\-label\fR [\fB\-h\fR|\fB\-\-help\fR] <\fISOURCE\fR> [\fILABEL\fR]
.SH DESCRIPTION
about.update\-port\-forward\-label
Update the label of a port forward
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-tunnel-port-forward 1 "port-forward "
.SH NAME
start\-tunnel\-port\-forward
start\-tunnel\-port\-forward \- Commands for managing port forwards
.SH SYNOPSIS
\fBstart\-tunnel port\-forward\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing port forwards
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
@@ -19,7 +20,7 @@ start\-tunnel\-port\-forward\-remove(1)
Remove port forward
.TP
start\-tunnel\-port\-forward\-set\-enabled(1)
about.enable\-or\-disable\-port\-forward
Enable or disable a port forward
.TP
start\-tunnel\-port\-forward\-update\-label(1)
about.update\-port\-forward\-label
Update the label of a port forward

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-tunnel-update 1 "update "
.SH NAME
start\-tunnel\-update
start\-tunnel\-update \- Commands for checking and applying tunnel updates
.SH SYNOPSIS
\fBstart\-tunnel update\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for checking and applying tunnel updates
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -2,10 +2,11 @@
.el .ds Aq '
.TH start-tunnel-web 1 "web "
.SH NAME
start\-tunnel\-web
start\-tunnel\-web \- Commands for managing the tunnel web interface
.SH SYNOPSIS
\fBstart\-tunnel web\fR [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
.SH DESCRIPTION
Commands for managing the tunnel web interface
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR

View File

@@ -1,6 +1,6 @@
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.TH start-tunnel 1 "start-tunnel 0.4.0-alpha.21"
.TH start-tunnel 1 "start-tunnel 0.4.0-beta.0"
.SH NAME
start\-tunnel
.SH SYNOPSIS
@@ -55,6 +55,7 @@ start\-tunnel\-device(1)
Add, remove, or list devices in subnets
.TP
start\-tunnel\-port\-forward(1)
Commands for managing port forwards
.TP
start\-tunnel\-restart(1)
Reboot the tunnel server
@@ -63,7 +64,9 @@ start\-tunnel\-subnet(1)
Add, remove, or modify subnets
.TP
start\-tunnel\-update(1)
Commands for checking and applying tunnel updates
.TP
start\-tunnel\-web(1)
Commands for managing the tunnel web interface
.SH VERSION
v0.4.0\-alpha.21
v0.4.0\-beta.0

View File

@@ -55,8 +55,6 @@ impl Public {
) -> Result<Self, Error> {
Ok(Self {
server_info: ServerInfo {
arch: get_arch(),
platform: get_platform(),
id: account.server_id.clone(),
version: Current::default().semver(),
name: account.hostname.name.clone(),
@@ -125,10 +123,10 @@ impl Public {
},
status_info: ServerStatus {
backup_progress: None,
updated: false,
update_progress: None,
shutting_down: false,
restarting: false,
restart: None,
},
unread_notification_count: 0,
password_hash: account.password.clone(),
@@ -160,14 +158,6 @@ impl Public {
}
}
fn get_arch() -> InternedString {
(*ARCH).into()
}
fn get_platform() -> InternedString {
(&*PLATFORM).into()
}
pub fn default_echoip_urls() -> Vec<Url> {
vec![
"https://ipconfig.io".parse().unwrap(),
@@ -180,10 +170,6 @@ pub fn default_echoip_urls() -> Vec<Url> {
#[model = "Model<Self>"]
#[ts(export)]
pub struct ServerInfo {
#[serde(default = "get_arch")]
pub arch: InternedString,
#[serde(default = "get_platform")]
pub platform: InternedString,
pub id: String,
pub name: InternedString,
pub hostname: InternedString,
@@ -220,6 +206,16 @@ pub struct ServerInfo {
pub keyboard: Option<KeyboardOptions>,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize, TS)]
#[serde(rename_all = "lowercase")]
#[ts(export)]
pub enum RestartReason {
Mdns,
Language,
Kiosk,
Update,
}
#[derive(Debug, Default, Deserialize, Serialize, HasModel, TS)]
#[serde(rename_all = "camelCase")]
#[model = "Model<Self>"]
@@ -364,12 +360,13 @@ pub struct BackupProgress {
#[ts(export)]
pub struct ServerStatus {
pub backup_progress: Option<BTreeMap<PackageId, BackupProgress>>,
pub updated: bool,
pub update_progress: Option<FullProgress>,
#[serde(default)]
pub shutting_down: bool,
#[serde(default)]
pub restarting: bool,
#[serde(default)]
pub restart: Option<RestartReason>,
}
#[derive(Debug, Default, Deserialize, Serialize, HasModel, TS)]

View File

@@ -2,24 +2,11 @@ use std::io::Cursor;
use std::path::Path;
use tokio::process::Command;
use tracing::instrument;
use crate::Error;
use crate::disk::fsck::RequiresReboot;
use crate::util::Invoke;
#[instrument(skip_all)]
pub async fn btrfs_check_readonly(logicalname: impl AsRef<Path>) -> Result<RequiresReboot, Error> {
Command::new("btrfs")
.arg("check")
.arg("--readonly")
.arg(logicalname.as_ref())
.invoke(crate::ErrorKind::DiskManagement)
.await?;
Ok(RequiresReboot(false))
}
pub async fn btrfs_check_repair(logicalname: impl AsRef<Path>) -> Result<RequiresReboot, Error> {
Command::new("btrfs")
.arg("check")

Some files were not shown because too many files have changed in this diff Show More