feat(local-mode): run as is, without sign-in or SMTP authentication, when no public URL is set #10

Merged
SebastienDenooz merged 1 commit from develop into main 2026-09-28 12:44:50 +00:00

docker run -p 127.0.0.1:1125:1125 -p 127.0.0.1:3025:3000 alchemicstudiohq/trapbox
is enough on a developer's machine (docs/specifications-v1.md §4.6). While
TRAPBOX_PUBLIC_URL is unset (TRAPBOX_AUTH=none|required overrides it):

  • the first start creates the local administrator (no password to
    change) and a "Local" environment, recreated if removed, and says so
    in the logs;
  • requests without credentials act as the local administrator through
    one shared session, for local host names only (localhost, IP
    addresses, single-label names, TRAPBOX_LOCAL_HOSTS), which keeps DNS
    rebinding out; browser changes still need a same-origin request;
  • SMTP authentication is optional: messages without it, or with
    unknown credentials, land in "Local"; credentials still route to
    their environment;
  • the Mailpit-compatible API reads "Local" without a token;
  • links, the HTML frame and its policies follow the address of each
    request, so any host port works; webhook links follow the last
    address a browser used.

The interface shows a "Local mode" badge and no sign-out, the sign-in
page explains a refused host, and the connection panel says where
messages without credentials go. Web setup and single sign-on are
refused without authentication. Deployments that set a public URL keep
full authentication.

`docker run -p 127.0.0.1:1125:1125 -p 127.0.0.1:3025:3000 alchemicstudiohq/trapbox` is enough on a developer's machine (docs/specifications-v1.md §4.6). While TRAPBOX_PUBLIC_URL is unset (TRAPBOX_AUTH=none|required overrides it): - the first start creates the local administrator (no password to change) and a "Local" environment, recreated if removed, and says so in the logs; - requests without credentials act as the local administrator through one shared session, for local host names only (localhost, IP addresses, single-label names, TRAPBOX_LOCAL_HOSTS), which keeps DNS rebinding out; browser changes still need a same-origin request; - SMTP authentication is optional: messages without it, or with unknown credentials, land in "Local"; credentials still route to their environment; - the Mailpit-compatible API reads "Local" without a token; - links, the HTML frame and its policies follow the address of each request, so any host port works; webhook links follow the last address a browser used. The interface shows a "Local mode" badge and no sign-out, the sign-in page explains a refused host, and the connection panel says where messages without credentials go. Web setup and single sign-on are refused without authentication. Deployments that set a public URL keep full authentication.
feat(local-mode): run as is, without sign-in or SMTP authentication, when no public URL is set
All checks were successful
CI / quality (pull_request) Successful in 1m37s
CI / docker (pull_request) Successful in 53s
CI / e2e (chromium) (pull_request) Successful in 2m8s
CI / e2e (firefox) (pull_request) Successful in 3m1s
CI / e2e (webkit) (pull_request) Successful in 4m11s
CI / quality (push) Successful in 1m36s
CI / docker (push) Successful in 29s
CI / e2e (chromium) (push) Successful in 2m11s
CI / e2e (firefox) (push) Successful in 3m1s
CI / e2e (webkit) (push) Successful in 4m9s
Release / quality (push) Successful in 1m34s
Release / docker (push) Successful in 28s
Release / e2e (webkit) (push) Successful in 4m7s
Release / test (push) Successful in 0s
Release / e2e (chromium) (push) Successful in 2m3s
Release / e2e (firefox) (push) Successful in 2m58s
Release / release (push) Successful in 2m27s
ab21ee599a
`docker run -p 127.0.0.1:1125:1125 -p 127.0.0.1:3025:3000 alchemicstudiohq/trapbox`
is enough on a developer's machine (docs/specifications-v1.md §4.6). While
TRAPBOX_PUBLIC_URL is unset (TRAPBOX_AUTH=none|required overrides it):

- the first start creates the local administrator (no password to
  change) and a "Local" environment, recreated if removed, and says so
  in the logs;
- requests without credentials act as the local administrator through
  one shared session, for local host names only (localhost, IP
  addresses, single-label names, TRAPBOX_LOCAL_HOSTS), which keeps DNS
  rebinding out; browser changes still need a same-origin request;
- SMTP authentication is optional: messages without it, or with
  unknown credentials, land in "Local"; credentials still route to
  their environment;
- the Mailpit-compatible API reads "Local" without a token;
- links, the HTML frame and its policies follow the address of each
  request, so any host port works; webhook links follow the last
  address a browser used.

The interface shows a "Local mode" badge and no sign-out, the sign-in
page explains a refused host, and the connection panel says where
messages without credentials go. Web setup and single sign-on are
refused without authentication. Deployments that set a public URL keep
full authentication.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Alchemic.Studio/Trapbox!10
No description provided.