Skip to content

Commit 0e8748a

Browse files
authored
Merge pull request #108 from trydirect/mTLS
Update DEFAULT_VAULT_URL to :8443 for mTLS
2 parents 07bd121 + 70d71fc commit 0e8748a

23 files changed

Lines changed: 928 additions & 1 deletion
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+
}

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`.

stacker/stacker/src/cli/stacker_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub const DEFAULT_STACKER_URL: &str = "https://stacker.try.direct";
2525
/// The Install Service Ansible role uses this to configure the agent's VAULT_ADDRESS
2626
/// environment variable on the remote server. Must be a publicly reachable address
2727
/// (not a Docker-internal IP) so deployed agents can connect to Vault.
28-
pub const DEFAULT_VAULT_URL: &str = "https://vault.try.direct";
28+
pub const DEFAULT_VAULT_URL: &str = "https://vault.try.direct:8443";
2929

3030
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3131
// Response types (matching Stacker server JSON envelope)

web/.stacker/Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM node:20-alpine
2+
3+
WORKDIR /app
4+
5+
ENV NEXT_TELEMETRY_DISABLED=1
6+
7+
COPY package*.json ./
8+
COPY . .
9+
10+
RUN npm ci
11+
RUN npm run build
12+
13+
EXPOSE 3000
14+
15+
CMD ["npm", "run", "start"]

web/.stacker/active-target

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cloud
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": 1,
3+
"environment": "production",
4+
"files": [
5+
{
6+
"source_path": ".env",
7+
"destination_path": ".env",
8+
"mode": "0644",
9+
"size": 215,
10+
"sha256": "fac5fd4c950c34233bcf7d4ad1750539c2234290846630e4e6edd35029a44bc6"
11+
}
12+
]
13+
}
223 Bytes
Binary file not shown.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
services:
2+
status-panel-web:
3+
build:
4+
context: .
5+
dockerfile: Dockerfile
6+
image: trydirect/status-panel-web:latest
7+
container_name: status-panel-web
8+
ports:
9+
- 3000:3000
10+
env_file:
11+
- .env
12+
environment:
13+
NODE_ENV: production
14+
NEXT_PUBLIC_SITE_URL: https://status.stacker.my
15+
restart: unless-stopped
16+
smtp:
17+
image: trydirect/smtp
18+
ports:
19+
- 1025:1025
20+
- 8025:8025
21+
volumes:
22+
- smtp_data:/data
23+
restart: unless-stopped
24+
volumes:
25+
smtp_data:
26+
name: smtp_data

0 commit comments

Comments
 (0)