Add RPi install docs, GHCR support, push-docker-all script
All checks were successful
CI / test (push) Successful in 2m10s

- README: Raspberry Pi install section with auto-detect architecture
- README: pre-built binary download section for all platforms
- Docker docs: dual registry (Gitea + GHCR)
- scripts/push-docker-all.sh: push to both registries in one command

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Siavash Sameni
2026-04-01 11:29:48 +04:00
parent f0a48092ed
commit 3af40cb275
3 changed files with 95 additions and 7 deletions

View File

@@ -42,14 +42,51 @@ On wired gigabit links, expect line-rate performance in both TCP and UDP modes.
cargo install --path . cargo install --path .
``` ```
### Pre-built binary (Linux x86_64) ### Pre-built binaries
Download from [releases](https://git.manko.yoga/manawenuz/btest-rs/releases) or [GitHub releases](https://github.com/manawenuz/btest-rs/releases):
```bash ```bash
# Cross-compile from macOS (requires Docker) # Linux x86_64
scripts/build-linux.sh curl -L <release-url>/btest-linux-x86_64.tar.gz | tar xz
sudo mv btest /usr/local/bin/
# Copy to server # Raspberry Pi 4/5 (64-bit OS)
scp dist/btest root@yourserver:/usr/local/bin/btest curl -L <release-url>/btest-linux-aarch64.tar.gz | tar xz
sudo mv btest /usr/local/bin/
# Raspberry Pi 3/Zero 2 (32-bit OS)
curl -L <release-url>/btest-linux-armv7.tar.gz | tar xz
sudo mv btest /usr/local/bin/
# Windows
# Download btest-windows-x86_64.zip from releases
```
### Raspberry Pi
The static musl binaries run on any Raspberry Pi without dependencies:
```bash
# On the Pi — detect architecture and install
ARCH=$(uname -m)
case $ARCH in
aarch64) FILE=btest-linux-aarch64.tar.gz ;;
armv7l) FILE=btest-linux-armv7.tar.gz ;;
*) echo "Unsupported: $ARCH"; exit 1 ;;
esac
curl -LO "https://github.com/manawenuz/btest-rs/releases/latest/download/$FILE"
tar xzf "$FILE"
sudo mv btest /usr/local/bin/
rm "$FILE"
# Run as server
btest -s -a admin -p password --ecsrp5
# Or install as systemd service
curl -LO https://raw.githubusercontent.com/manawenuz/btest-rs/main/scripts/install-service.sh
sudo bash install-service.sh --auth-user admin --auth-pass password
``` ```
### Docker ### Docker

View File

@@ -1,11 +1,12 @@
# Docker and Deployment Guide # Docker and Deployment Guide
## Container Registry ## Container Registries
Images are published to: Images are published to:
``` ```
git.manko.yoga/manawenuz/btest-rs git.manko.yoga/manawenuz/btest-rs # Gitea registry
ghcr.io/manawenuz/btest-rs # GitHub Container Registry
``` ```
## Quick Start ## Quick Start

50
scripts/push-docker-all.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# Build and push Docker image to both Gitea and GitHub Container Registry.
#
# Prerequisites:
# docker login git.manko.yoga (Gitea — your username + token)
# docker login ghcr.io (GitHub — your username + PAT with packages:write)
#
# Usage:
# ./scripts/push-docker-all.sh v0.6.0
set -euo pipefail
cd "$(dirname "$0")/.."
if [[ -f .env ]]; then
set -a; source .env; set +a
fi
TAG="${1:?Usage: $0 <tag> (e.g. v0.6.0)}"
GITEA_IMAGE="git.manko.yoga/manawenuz/btest-rs"
GHCR_IMAGE="ghcr.io/manawenuz/btest-rs"
echo "=== Building Docker image ==="
docker build \
-t "${GITEA_IMAGE}:${TAG}" \
-t "${GITEA_IMAGE}:latest" \
-t "${GHCR_IMAGE}:${TAG}" \
-t "${GHCR_IMAGE}:latest" \
.
echo ""
echo "=== Pushing to Gitea ==="
docker push "${GITEA_IMAGE}:${TAG}"
docker push "${GITEA_IMAGE}:latest"
echo ""
echo "=== Pushing to GitHub Container Registry ==="
docker push "${GHCR_IMAGE}:${TAG}"
docker push "${GHCR_IMAGE}:latest"
echo ""
echo "Done! Images pushed:"
echo " ${GITEA_IMAGE}:${TAG}"
echo " ${GITEA_IMAGE}:latest"
echo " ${GHCR_IMAGE}:${TAG}"
echo " ${GHCR_IMAGE}:latest"
echo ""
echo "Pull with:"
echo " docker pull ${GHCR_IMAGE}:${TAG}"
echo " docker run --rm -p 2000:2000 -p 2001-2100:2001-2100/udp ${GHCR_IMAGE}:${TAG} -s -v"