Tunnels

Veilig tunnelen met Caddy en Basic Authenticatie

Published:
Kelvin Wuite
By Kelvin Wuite β€’ 6 min read
Share

Wanneer je een lokale service blootstelt met asd expose, krijgt het een publieke HTTPS-URL. Standaard kan iedereen met die URL je service benaderen. ASD's ingebouwde Caddy-integratie laat je HTTP Basic Authentication toevoegen met een paar regels in asd.yaml β€” geen handmatige Caddy-configuratie, geen bcrypt hashing, geen apart reverse proxy-setup.

Hoe ASD Caddy beheert

ASD beheert automatisch een lokale Caddy reverse proxy. Wanneer je services definieert in asd.yaml, genereert ASD Caddy-routes, regelt routing en past authenticatie toe. Je hoeft nooit zelf een Caddyfile aan te raken.

Verkeer stroomt als volgt:

text
Internet β†’ ASD Cloud β†’ SSH Tunnel β†’ Caddy (lokaal) β†’ Jouw Service
                                       ↑
                                  Beveiligingslaag

Vereisten

  • ASD CLI geinstalleerd (asd init om je workspace op te zetten)
  • Geauthenticeerd met ASD (asd login)
  • Een lokale service draaiend (we gebruiken poort 3000 in deze gids)

Stap 1: Configureer je service met basic auth

Voeg je service toe aan asd.yaml met een basic_auth blok:

yaml
version: 1
project:
  name: my-project
  domain: localhost

network:
  caddy:
    enable: true
    basic_auth:
      enabled: true
      realm: "Mijn Project"

  services:
    my-app:
      dial: "127.0.0.1:3000"
      host: "myapp.localhost"

ASD leest credentials uit je .env bestand:

bash
ASD_BASIC_AUTH_USERNAME=admin
ASD_BASIC_AUTH_PASSWORD=jouw-veilige-wachtwoord

Stap 2: Pas de netwerkconfiguratie toe

bash
asd net apply --caddy

Dit genereert Caddy-routes met de authenticatie-handler, bcrypt-hasht het wachtwoord automatisch, en past alles toe op de draaiende Caddy-instantie.

Stap 3: Verifieer met de netwerk-TUI

bash
asd net

Je zou je service moeten zien met een groen vinkje.

Stap 4: Expose via tunnel

bash
asd expose 3000 myapp

Output:

text
Local:  http://localhost:3000
Caddy:  http://myapp.localhost
Tunnel: https://myapp-abc123.cicd.eu1.asd.engineer

Iedereen die de tunnel-URL bezoekt ziet een Basic Auth prompt voordat ze bij je service kunnen.

Per-service credentials

Elke service kan eigen credentials hebben via het macro-systeem in tpl.env:

yaml
network:
  caddy:
    basic_auth:
      enabled: true

  services:
    public-api:
      dial: "127.0.0.1:3000"
      basic_auth:
        enabled: false # Geen auth voor deze service

    admin-panel:
      dial: "127.0.0.1:8080"
      basic_auth:
        enabled: true
        realm: "Alleen Admin"

Selectieve route-bescherming

yaml
network:
  caddy:
    basic_auth:
      enabled: true
      routes:
        -  host # Alleen host-gebaseerde routes beschermen

Macro's: automatisch gegenereerde credentials

ASD gebruikt macro's in tpl.env templates om automatisch veilige waarden te genereren tijdens asd init:

bash
# tpl.env (template)
ASD_BASIC_AUTH_USERNAME=admin
ASD_BASIC_AUTH_PASSWORD=getRandomString(length=32,charset=safe)

Om alle macro-waarden te regenereren (bijv. wachtwoorden roteren):

bash
asd env-init --override

Samenvatting

ASD's Caddy-integratie regelt authenticatie als onderdeel van je serviceconfiguratie. Definieer basic_auth in asd.yaml, pas toe met asd net apply --caddy, en expose met asd expose. Geen handmatige Caddyfiles, geen bcrypt hashing met de hand, geen apart reverse proxy-setup.

Kelvin Wuite
Written by

Kelvin Wuite

Kelvin Wuite is the founder of ASD B.V. With over eighteen years of development experience, he has witnessed the same patterns repeat across every software team - endless documentation, manual preparation, environment mismatches, and fragmented collaboration. His drive is to remove these barriers, enabling engineers to work together in unified environments with shorter feedback loops and hands-on collaboration. Since 2015 he has been refining these ideas, leading to ASD β€” a platform designed to create a faster, more integrated way for development teams to collaborate in an age where AI is thriving.

Related Articles