Skip to content

Commit 10e2d82

Browse files
committed
ci: add all platforms to release and docker workflows
1 parent d76dbf6 commit 10e2d82

5 files changed

Lines changed: 93 additions & 6 deletions

File tree

.github/workflows/docker.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ jobs:
7777
labels: ${{ steps.meta.outputs.labels }}
7878
cache-from: type=gha
7979
cache-to: type=gha,mode=max
80-
platforms: linux/amd64,linux/arm64
80+
platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6

.github/workflows/release.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,20 @@ jobs:
7979
- goos: linux
8080
goarch: amd64
8181
output: neutrinod-linux-amd64
82+
- goos: linux
83+
goarch: 386
84+
output: neutrinod-linux-386
8285
- goos: linux
8386
goarch: arm64
8487
output: neutrinod-linux-arm64
88+
- goos: linux
89+
goarch: arm
90+
goarm: 7
91+
output: neutrinod-linux-armv7
92+
- goos: linux
93+
goarch: arm
94+
goarm: 6
95+
output: neutrinod-linux-armv6
8596
- goos: darwin
8697
goarch: amd64
8798
output: neutrinod-darwin-amd64
@@ -91,6 +102,9 @@ jobs:
91102
- goos: windows
92103
goarch: amd64
93104
output: neutrinod-windows-amd64.exe
105+
- goos: windows
106+
goarch: arm64
107+
output: neutrinod-windows-arm64.exe
94108

95109
steps:
96110
- name: Checkout
@@ -115,6 +129,7 @@ jobs:
115129
env:
116130
GOOS: ${{ matrix.goos }}
117131
GOARCH: ${{ matrix.goarch }}
132+
GOARM: ${{ matrix.goarm }}
118133
CGO_ENABLED: 0
119134
SOURCE_DATE_EPOCH: ${{ steps.source_date.outputs.epoch }}
120135
run: |
@@ -174,7 +189,7 @@ jobs:
174189
with:
175190
context: ./neutrino_server
176191
file: ./neutrino_server/Dockerfile
177-
platforms: linux/amd64,linux/arm64
192+
platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,linux/arm/v6
178193
push: true
179194
tags: ${{ steps.meta.outputs.tags }}
180195
labels: ${{ steps.meta.outputs.labels }}

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- Add a production-ready `systemd` service example in README for running the
13+
`neutrinod` binary directly on Linux hosts (including Raspberry Pi), with a
14+
signet-oriented configuration example.
15+
16+
### Changed
17+
18+
- Docker image publishing now includes `linux/386`, `linux/arm/v7`, and
19+
`linux/arm/v6` in addition to `linux/amd64` and `linux/arm64`, expanding
20+
compatibility to 32-bit x86 and broader 32-bit ARM Linux systems.
21+
- Release binary matrix now includes `linux-386`, `linux-armv7`,
22+
`linux-armv6`, and `windows-arm64` artifacts in addition to the previous
23+
`linux-amd64`, `linux-arm64`, `darwin-amd64`, `darwin-arm64`, and
24+
`windows-amd64` outputs.
25+
- README now documents a signet Docker run example using
26+
`LISTEN_ADDR=0.0.0.0:38334` and host port mapping `38334:38334`.
27+
1028
## [1.2.0] - 2026-04-30
1129

1230
### Fixed

README.md

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ A standalone REST API server for [Neutrino](https://github.com/lightninglabs/neu
88
- **Lightweight**: No need to download full blockchain, only block headers and compact filters
99
- **REST API**: Simple HTTP endpoints for blockchain queries, transaction broadcasting, and UTXO scanning
1010
- **Multi-Network**: Support for mainnet, testnet, regtest, and signet
11-
- **Docker Support**: Easy deployment with Docker and docker-compose
11+
- **Docker Support**: Easy deployment with Docker and docker-compose (linux/amd64, linux/386, linux/arm64, linux/arm/v7, linux/arm/v6)
1212
- **Production Ready**: Includes health checks, graceful shutdown, and comprehensive logging
1313

1414
## Quick Start
@@ -47,6 +47,16 @@ docker run -d \
4747
-e LOG_LEVEL=debug \
4848
-e NO_AUTH=true \
4949
ghcr.io/m0wer/neutrino-api:1
50+
51+
# Run for signet (using conventional signet API port 38334)
52+
docker run -d \
53+
-p 38334:38334 \
54+
-v neutrino-signet-data:/data/neutrino \
55+
-e NETWORK=signet \
56+
-e LISTEN_ADDR=0.0.0.0:38334 \
57+
-e LOG_LEVEL=info \
58+
-e ADD_PEERS=bitcoin.sgn.space:38333 \
59+
ghcr.io/m0wer/neutrino-api:1
5060
```
5161

5262
### Building from Source
@@ -92,7 +102,7 @@ Anyone can reproduce and verify a release locally with one command:
92102
| Variable | Default | Description |
93103
|----------|---------|-------------|
94104
| `NETWORK` | `mainnet` | Bitcoin network (mainnet, testnet, regtest, signet) |
95-
| `LISTEN_ADDR` | `0.0.0.0:8334` | REST API listen address |
105+
| `LISTEN_ADDR` | `0.0.0.0:8334` | REST API listen address (for signet, `0.0.0.0:38334` is a common convention) |
96106
| `DATA_DIR` | `/data/neutrino` | Data directory for headers and filters |
97107
| `LOG_LEVEL` | `info` | Log level (trace, debug, info, warn, error) |
98108
| `ADD_PEERS` | | Comma-separated list of preferred peers (e.g., `node1:8333,node2:8333`) while still allowing peer discovery |
@@ -452,6 +462,47 @@ volumes:
452462
neutrino-data:
453463
```
454464
465+
### systemd Service Example (binary install)
466+
467+
If you run the standalone binary directly on a host (including Raspberry Pi),
468+
this unit file starts `neutrinod` at boot and restarts it on failures:
469+
470+
```ini
471+
# /etc/systemd/system/neutrinod.service
472+
[Unit]
473+
Description=Neutrino API daemon
474+
After=network-online.target
475+
Wants=network-online.target
476+
477+
[Service]
478+
Type=simple
479+
User=neutrino
480+
Group=neutrino
481+
Environment=NETWORK=signet
482+
Environment=LISTEN_ADDR=0.0.0.0:38334
483+
Environment=DATA_DIR=/var/lib/neutrinod
484+
Environment=LOG_LEVEL=info
485+
Environment=ADD_PEERS=bitcoin.sgn.space:38333
486+
ExecStart=/usr/local/bin/neutrinod --network=${NETWORK} --listen=${LISTEN_ADDR} --datadir=${DATA_DIR} --loglevel=${LOG_LEVEL} --addpeer=${ADD_PEERS}
487+
Restart=always
488+
RestartSec=5
489+
NoNewPrivileges=true
490+
ProtectSystem=full
491+
ProtectHome=true
492+
ReadWritePaths=/var/lib/neutrinod
493+
494+
[Install]
495+
WantedBy=multi-user.target
496+
```
497+
498+
```bash
499+
sudo useradd --system --home /var/lib/neutrinod --shell /usr/sbin/nologin neutrino
500+
sudo mkdir -p /var/lib/neutrinod
501+
sudo chown -R neutrino:neutrino /var/lib/neutrinod
502+
sudo systemctl daemon-reload
503+
sudo systemctl enable --now neutrinod
504+
```
505+
455506
**Note:** TLS and API token authentication are enabled by default. After first start, find the auth token in the data volume at `auth_token` and the TLS certificate at `tls.cert`. Clients must use HTTPS and include `Authorization: Bearer <token>`.
456507

457508
### Security Considerations

RELEASE.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,16 @@ git push origin v1.0.0
5757
The GitHub Actions workflow will automatically:
5858

5959
1. **Build Binaries** for:
60-
- Linux (amd64, arm64)
60+
- Linux (amd64, 386, arm64, armv7, armv6)
6161
- macOS (amd64, arm64)
62-
- Windows (amd64)
62+
- Windows (amd64, arm64)
6363

6464
2. **Build Docker Images** for:
6565
- linux/amd64
66+
- linux/386
6667
- linux/arm64
68+
- linux/arm/v7
69+
- linux/arm/v6
6770

6871
3. **Create GitHub Release** with:
6972
- All binaries

0 commit comments

Comments
 (0)