Skip to content

Commit f0f99c3

Browse files
authored
Merge pull request #111 from trydirect/dev
Dev
2 parents 136553f + caf668c commit f0f99c3

31 files changed

Lines changed: 1102 additions & 23 deletions

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ COMMAND_TIMEOUT_SECS=300
2424
STATUS_PANEL_USERNAME=admin
2525
STATUS_PANEL_PASSWORD=admin
2626

27+
# HTTP bind address. Defaults to 127.0.0.1 (loopback) for bare-metal safety.
28+
# In containers with port mapping, must be 0.0.0.0 to be reachable from the host.
29+
STATUS_PANEL_BIND=0.0.0.0
30+
2731
# Backup signer / verification
2832
DEPLOYMENT_HASH=replace-with-secret
2933
TRYDIRECT_IP=127.0.0.1
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{
2+
"version": 1,
3+
"selector": {
4+
"mode": "remote",
5+
"selector_kind": "app",
6+
"selector": "status-panel-web",
7+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
8+
"container": null
9+
},
10+
"protocols_requested": [
11+
"html_forms"
12+
],
13+
"capture_samples": true,
14+
"cached_at": "2026-05-22T07:55:49.388248+00:00",
15+
"report": {
16+
"type": "probe_endpoints",
17+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
18+
"app_code": "status-panel-web",
19+
"protocols_detected": [
20+
"html_forms"
21+
],
22+
"protocols_requested": [
23+
"html_forms"
24+
],
25+
"containers": [],
26+
"endpoints": [],
27+
"resources": [],
28+
"forms": [
29+
{
30+
"container": "project-status-panel-web-1",
31+
"id": "form_contact",
32+
"action": "",
33+
"method": "POST",
34+
"fields": [
35+
"name",
36+
"email",
37+
"subject",
38+
"message"
39+
]
40+
}
41+
],
42+
"probe_attempts": [
43+
{
44+
"scope": "remote_app",
45+
"selector": "status-panel-web",
46+
"container": null,
47+
"protocols": [
48+
"html_forms"
49+
],
50+
"outcome": "detected"
51+
}
52+
],
53+
"target_kind": "html_form",
54+
"probed_at": "2026-05-22T07:55:48Z"
55+
}
56+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"version": 1,
3+
"selector": {
4+
"mode": "remote",
5+
"selector_kind": "app",
6+
"selector": "status-panel-web",
7+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
8+
"container": null
9+
},
10+
"protocols_requested": [
11+
"html_forms",
12+
"openapi",
13+
"rest"
14+
],
15+
"capture_samples": true,
16+
"cached_at": "2026-05-22T07:55:51.452961+00:00",
17+
"report": {
18+
"type": "probe_endpoints",
19+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
20+
"app_code": "status-panel-web",
21+
"protocols_detected": [
22+
"html_forms"
23+
],
24+
"protocols_requested": [
25+
"html_forms",
26+
"openapi",
27+
"rest"
28+
],
29+
"containers": [],
30+
"endpoints": [],
31+
"resources": [],
32+
"forms": [
33+
{
34+
"container": "project-status-panel-web-1",
35+
"id": "form_contact",
36+
"action": "",
37+
"method": "POST",
38+
"fields": [
39+
"name",
40+
"email",
41+
"subject",
42+
"message"
43+
]
44+
}
45+
],
46+
"probe_attempts": [
47+
{
48+
"scope": "remote_app",
49+
"selector": "status-panel-web",
50+
"container": null,
51+
"protocols": [
52+
"html_forms",
53+
"openapi",
54+
"rest"
55+
],
56+
"outcome": "detected"
57+
}
58+
],
59+
"target_kind": "html_form",
60+
"probed_at": "2026-05-22T07:55:50Z"
61+
}
62+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"version": 1,
3+
"selector": {
4+
"mode": "remote",
5+
"selector_kind": "app",
6+
"selector": "status-panel-web",
7+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
8+
"container": null
9+
},
10+
"protocols_requested": [
11+
"html_forms",
12+
"openapi",
13+
"rest"
14+
],
15+
"capture_samples": true,
16+
"cached_at": "2026-05-22T07:55:51.452961+00:00",
17+
"report": {
18+
"type": "probe_endpoints",
19+
"deployment_hash": "deployment_a631cf66-a224-440b-9871-12b63548671c",
20+
"app_code": "status-panel-web",
21+
"protocols_detected": [
22+
"html_forms"
23+
],
24+
"protocols_requested": [
25+
"html_forms",
26+
"openapi",
27+
"rest"
28+
],
29+
"containers": [],
30+
"endpoints": [],
31+
"resources": [],
32+
"forms": [
33+
{
34+
"container": "project-status-panel-web-1",
35+
"id": "form_contact",
36+
"action": "",
37+
"method": "POST",
38+
"fields": [
39+
"name",
40+
"email",
41+
"subject",
42+
"message"
43+
]
44+
}
45+
],
46+
"probe_attempts": [
47+
{
48+
"scope": "remote_app",
49+
"selector": "status-panel-web",
50+
"container": null,
51+
"protocols": [
52+
"html_forms",
53+
"openapi",
54+
"rest"
55+
],
56+
"outcome": "detected"
57+
}
58+
],
59+
"target_kind": "html_form",
60+
"probed_at": "2026-05-22T07:55:50Z"
61+
}
62+
}

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "status-panel"
3-
version = "0.1.9"
3+
version = "0.2.0"
44
edition = "2021"
55

66
[features]

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
<img width="200" src="https://raw.githubusercontent.com/trydirect/status/testing/assets/logo/status.png">
44

5-
# Status Panel
65

76
**A lightweight infrastructure agent for server and container management.**
87

9-
Monitors health, collects metrics, manages Docker containers, and executes commands all from a single statically-linked binary.
8+
Monitors health, collects metrics, manages Docker containers, and executes commands - all from a single statically-linked binary.
109

1110
[![CI](https://github.com/trydirect/status/actions/workflows/ci.yml/badge.svg)](https://github.com/trydirect/status/actions/workflows/ci.yml)
1211
[![Docker Pulls](https://img.shields.io/docker/pulls/trydirect/status.svg)](https://hub.docker.com/r/trydirect/status)
@@ -172,7 +171,12 @@ The local `/api/v1/commands/*` endpoints are the agent's own Axum API surface. W
172171
| `POST` | `/api/self/update/deploy` | Deploy prepared binary |
173172
| `POST` | `/api/self/update/rollback` | Restore previous version |
174173

175-
### Stacker Commands (Remote)
174+
175+
### Integrations
176+
177+
[Stacker](https://stacker.my)
178+
179+
Server Commands (Remote)
176180

177181
The agent accepts signed commands from the Stacker dashboard covering the full lifecycle:
178182

development.md.bak

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## Docker buildx quick reference
2+
3+
Use this to publish the same multi-platform image variants that CI builds for the
4+
`dev` branch:
5+
6+
```bash
7+
docker buildx build \
8+
--platform linux/amd64,linux/arm64 \
9+
--build-context stacker=../stacker \
10+
-f Dockerfile.prod \
11+
-t trydirect/status:unstable \
12+
-t trydirect/status:latest \
13+
--push \
14+
.
15+
```
16+
17+
This requires a sibling checkout at `../stacker` because `Cargo.toml` includes
18+
local path dependencies from that repository.
19+
20+
If you only want to validate the multi-platform build locally without pushing,
21+
replace `--push` with `--output=type=oci,dest=./status-multiarch.tar`.

docker-compose-dev.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ version: '2.2'
22

33
services:
44
statuspanel:
5-
image: status
5+
image: trydirect/status:dev
66
container_name: statuspanel
77
ports:
88
- "5000:5000"
99
volumes:
10-
- .:/app
10+
#- .:/app
1111
- /var/run/docker.sock:/var/run/docker.sock
12-
- /data/encrypted:/data/encrypted
12+
#- /data/encrypted:/data/encrypted
1313
# Mount docker CLI from host for deploy_app/remove_app commands
1414
- /usr/bin/docker:/usr/bin/docker:ro
1515
- /usr/libexec/docker/cli-plugins:/usr/libexec/docker/cli-plugins:ro

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ services:
1717
environment:
1818
- NGINX_CONTAINER=nginx
1919
- COMPOSE_AGENT_ENABLED=true
20+
# Container port mapping requires binding all interfaces.
21+
- STATUS_PANEL_BIND=0.0.0.0
2022
# Default: serve with UI
2123
command: ["serve", "--port", "5000", "--with-ui"]
2224

0 commit comments

Comments
 (0)