Skip to main content

Onboarding a Colleague β€” how a collaborator reaches the apps

The platform has three access tiers. Which steps a colleague needs depends entirely on which apps they must reach. Figure out their tier first, then follow only that section.

TierAppsWhat the colleague needs
β‘  Internal / operator tools (Tailscale-only)ArgoCD, Grafana, Prometheus, Alertmanager, Harbor, Vault, Kargo, Backstage, Temporal, NATS, Loki, Hubble, Polaris, LiteLLM, Langfuse, Flowise, MLflow, Open WebUI, the agents, ktayl-policy-service, platform-demoTailscale + CA cert + Authentik (all 3)
β‘‘ Business / employee apps (public + SSO)Chat, Mail, Nextcloud, ERPNext, Plane, n8n, OnlyOffice, Jitsi Meet, Matrix/Element, Vaultwarden, DocusealAuthentik only β€” just a browser
β‘’ PublicHomer, the demo, retrieva.online, signnothing β€” open URLs

The rule: operator/infra tools are Tailscale-only (3-tier hardening, gitops#1180) β€” they have no public route, only *.10.0.0.200.nip.io. Business apps are public behind SSO at *.devandre.sbs.


The short version​

  • Colleague only needs business apps (tier β‘‘)? β†’ give them an Authentik account + MFA, send them the *.devandre.sbs URL. Done. No Tailscale, no CA.
  • Colleague needs internal tools (tier β‘ )? β†’ Tailscale (reach) β†’ CA cert (trust) β†’ Authentik (identity), in that order. The three steps below.

Tier β‘‘ β€” business apps (the easy path)​

  1. Create their Authentik account at https://auth.devandre.sbs (admin) or https://auth.10.0.0.200.nip.io (internal) β€” add them to the appropriate group, enroll TOTP/MFA.
  2. Send them the app URL, e.g. https://chat.devandre.sbs, https://cloud.devandre.sbs, https://erp.devandre.sbs. They log in with SSO from any browser, anywhere. That's it.

No VPN and no certificate install β€” the public edge (Cloudflare Tunnel) terminates a real Let's Encrypt cert and Authentik gates access.


Tier β‘  β€” internal / operator tools (the full path)​

Internal apps require three things: network reach, TLS trust, and identity. Skipping any one fails in a recognisable way (see Troubleshooting).

Step 1 β€” Network reach: add them to the Tailnet + approve the subnet route​

The internal apps live on the 10.0.0.0/24 cluster network, which the controller (100.88.123.8) advertises as a Tailscale subnet route. A colleague reaches it by joining your tailnet and being granted that route.

  1. Invite them β€” Tailscale admin console β†’ Users β†’ Invite external user β†’ their email. They accept and install the Tailscale client on their machine (https://tailscale.com/download).
  2. Approve their use of the subnet route β€” Tailscale admin β†’ the controller node β†’ Subnet routes β†’ ensure 10.0.0.0/24 is approved, and that your ACL policy permits this user to use it. (If your ACL is default-open, joining is enough; if you restrict routes by user/tag, add a grant for them.)
  3. They confirm reach: tailscale status shows the tailnet, and ping 10.0.0.200 works.

Why this and not a public URL? Operator tools expose the cluster's control plane, catalog, secrets and CI. Keeping them off the public internet and behind the VPN is the whole point of the tier-β‘  decision β€” identity alone (SSO) isn't a sufficient perimeter for these.

(Alternative for a shared/CI machine: issue a Tailscale auth key (admin β†’ Settings β†’ Keys) and run tailscale up --authkey=… on that box instead of a personal invite. Prefer the per-user invite for a real person β€” it's tied to their identity and easy to revoke.)

Step 2 β€” TLS trust: install the minicloud root CA​

Internal apps use certificates from the private minicloud root CA, so browsers/tools will reject them until that CA is trusted. Send the colleague minicloud-ca.crt (the same file at ~/minicloud-ca.crt) over a secure channel and have them install it:

  • macOS: Keychain Access β†’ System β†’ File β–Έ Import Items β†’ select minicloud-ca.crt β†’ set it to Always Trust.
  • Linux: copy to /usr/local/share/ca-certificates/minicloud-ca.crt β†’ sudo update-ca-certificates.
  • Windows: certlm.msc β†’ Trusted Root Certification Authorities β†’ Import.
  • Firefox keeps its own store: Settings β–Έ Privacy & Security β–Έ Certificates β–Έ View Certificates β–Έ Authorities β–Έ Import.

Step 3 β€” Identity: Authentik account + MFA​

Same as tier β‘‘, but they'll reach Authentik at the internal URL: create their account at https://auth.10.0.0.200.nip.io, add them to the right group, enroll TOTP. Every internal app is gated by Authentik SSO, so one login carries across all of them.

Step 4 β€” They're in​

They open any internal URL and SSO logs them in. The full internal set:

AppInternal URL (Tailscale-only)
Backstagehttps://backstage.10.0.0.200.nip.io
ArgoCDhttps://argocd.10.0.0.200.nip.io
Grafanahttps://grafana.10.0.0.200.nip.io
Prometheushttps://prometheus.10.0.0.200.nip.io
Alertmanagerhttps://alertmanager.10.0.0.200.nip.io
Harborhttps://harbor.10.0.0.200.nip.io
Vaulthttps://vault.10.0.0.200.nip.io
Kargohttps://kargo.10.0.0.200.nip.io
Temporalhttps://temporal.10.0.0.200.nip.io
NATS monitorhttps://nats.10.0.0.200.nip.io
Lokihttps://loki.10.0.0.200.nip.io
Hubble (Cilium)https://hubble.10.0.0.200.nip.io
Polarishttps://polaris.10.0.0.200.nip.io
LiteLLMhttps://litellm.10.0.0.200.nip.io
Langfusehttps://langfuse.10.0.0.200.nip.io
Flowisehttps://flowise.10.0.0.200.nip.io
MLflowhttps://mlflow.10.0.0.200.nip.io
Open WebUI (chat)https://chat.10.0.0.200.nip.io
minicloud-agent Β· crew-agenthttps://agent.10.0.0.200.nip.io Β· https://crew-agent.10.0.0.200.nip.io
ktayl-policy-servicehttps://ktayl-policy.10.0.0.200.nip.io
platform-demohttps://platform-demo.10.0.0.200.nip.io

The one-stop launcher is Homer β€” internally https://homer.10.0.0.200.nip.io (also public at homer.devandre.sbs).


Troubleshooting (which of the 3 layers failed)​

SymptomFailed layerFix
This site can't be reached / DNS or timeout on *.10.0.0.200.nip.ioTailscalenot on the tailnet, or subnet route 10.0.0.0/24 not approved for them
404 at a *.devandre.sbs operator URL (e.g. grafana.devandre.sbs)by designthat host was pulled from the public tunnel β€” use the *.10.0.0.200.nip.io URL over Tailscale
Certificate warning / NET::ERR_CERT_AUTHORITY_INVALIDCA certminicloud-ca.crt not installed/trusted in their OS or Firefox store
Reaches the login page but can't authenticateAuthentikno account, wrong group, or MFA not enrolled
Authentik redirect_uri mismatch after loginapp configthe app's OIDC provider must whitelist the callback host (usually already set)

Revoking access​

  • Tailscale: admin console β†’ remove the user / revoke their node or auth key.
  • Authentik: disable/delete the account (cuts SSO to all apps at once β€” the value of a single IdP).
  • The CA cert on their machine is harmless without the other two (it grants no access by itself).