generated from CubeCraft-Creations/Tracehound
81f168e8a46190e2aa670fb0a6c2d883fab3e81e
RemoteRig Central Hub
A central hub for managing remote camera rigs, designed for Raspberry Pi Zero 2 W.
Overview
RemoteRig Central Hub is the control plane for remote camera setups. It connects to camera rigs over MQTT, stores configuration and state in SQLite, and exposes a management API — all from a lightweight Go binary optimized for resource-constrained devices like the Raspberry Pi Zero 2 W.
Tech Stack
| Component | Technology |
|---|---|
| Language | Go 1.24+ |
| Database | SQLite |
| Messaging | MQTT |
| Configuration | YAML (gopkg.in/yaml.v3) |
| Target Platform | Raspberry Pi Zero 2 W (ARMv6) |
Project Structure
remote-rig/
├── cmd/
│ └── server/
│ └── main.go # Application entry point
├── internal/
│ └── db/
│ └── db.go # SQLite database initialization and schema
├── config.yaml # Application configuration
├── go.mod # Go module definition
├── go.sum # Dependency checksums
└── README.md
Prerequisites
- Go 1.24+ — Download and install
- MQTT Broker — e.g., Mosquitto (default:
localhost:1883) - Raspberry Pi Zero 2 W (or any Linux system — macOS and Windows also work for development)
- Git — for cloning the repository
Setup
1. Clone the Repository
git clone https://code.cubecraftcreations.com/CubeCraft-Creations/remote-rig.git
cd remote-rig
2. Install Go Dependencies
go mod download
3. Configure
Edit config.yaml to match your environment:
# Database file path (SQLite)
db_path: "remoterig.db"
# API key for endpoint authentication — CHANGE THIS
api_key: "your-secure-api-key-here"
# HTTP server settings
port: 8080
read_timeout: 5s
write_timeout: 10s
idle_timeout: 120s
# MQTT broker connection
mqtt:
broker: "localhost:1883"
client_id: "remoterig-hub"
# Target platform
platform:
type: "pi-zero-2w"
max_cameras: 16
Key settings to review:
| Setting | Description | Default |
|---|---|---|
api_key |
API key for authenticating requests | changeme (must change) |
port |
HTTP server listen port | 8080 |
mqtt.broker |
MQTT broker address | localhost:1883 |
mqtt.client_id |
MQTT client identifier | remoterig-hub |
platform.type |
Target platform identifier | pi-zero-2w |
platform.max_cameras |
Maximum number of camera rigs | 16 |
db_path |
SQLite database file path | remoterig.db |
read_timeout |
HTTP read timeout | 5s |
write_timeout |
HTTP write timeout | 10s |
idle_timeout |
HTTP idle connection timeout | 120s |
Running Locally
Start the hub with:
go run ./cmd/server/
You should see output similar to:
RemoteRig hub starting...
Database: remoterig.db
API key set: true
Server port: 8080
MQTT broker: localhost:1883
Platform: pi-zero-2w (max 16 cameras)
RemoteRig hub ready
Building for Raspberry Pi Zero 2 W
Cross-compile from your development machine:
GOOS=linux GOARCH=arm GOARM=6 go build -o remoterig-hub ./cmd/server/
Copy the binary and config.yaml to your Pi:
scp remoterig-hub config.yaml pi@raspberrypi:/home/pi/remoterig/
Then run on the Pi:
./remoterig-hub
Build Matrix
| Target | Command |
|---|---|
| Raspberry Pi Zero 2 W | GOOS=linux GOARCH=arm GOARM=6 go build -o remoterig-hub ./cmd/server/ |
| Local (same arch) | go build -o remoterig-hub ./cmd/server/ |
| Linux amd64 | GOOS=linux GOARCH=amd64 go build -o remoterig-hub ./cmd/server/ |
Running Tests
go test ./...
License
Proprietary — CubeCraft Creations.
Description
Languages
Go
35.3%
TypeScript
24.9%
C++
15.9%
Shell
14.4%
OpenSCAD
7%
Other
2.5%