Tunnels

Lokale services publiek maken met ASD Tunnels

Published:
Kelvin Wuite
By Kelvin Wuite • 8 min read
Share

ASD biedt meerdere manieren om lokale services bereikbaar te maken via het internet. Van een snelle one-liner tot een volledige projectconfiguratie — kies de methode die bij je workflow past. Deze gids behandelt alle drie de benaderingen en wanneer je welke gebruikt.

Drie manieren om tunnels te maken

BehoefteMethodeComplexiteit
Nu iets delenasd exposeSimpelst
Dagelijkse ontwikkelingasd.yaml configGemiddeld
CI/CD automatiseringTunnel tokensGeavanceerd

Methode 1: Quick expose

De snelste manier om een lokale poort te delen. Eén commando, direct resultaat:

bash
asd expose 3000

Output:

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

Eigen namen

Geef je tunnel een herkenbare URL-prefix:

bash
asd expose 3000 --name myapp
# Resultaat: https://myapp-abc123.cicd.eu1.asd.engineer

Directe tunnel (zonder Caddy)

Als je de lokale Caddy proxy niet nodig hebt, gebruik --direct om een tunnel direct naar je service te maken:

bash
asd expose 3000 myapp --direct

Exposed services beheren

bash
# Toon alle exposed services met hun URLs
asd expose list

# Stop op naam
asd expose stop myapp

# Stop op poort
asd expose stop 3000

Ideaal voor: Snelle demo's, eenmalig delen, webhooks testen.

Methode 2: Projectconfiguratie (asd.yaml)

Voor doorlopende ontwikkeling definieer je services in asd.yaml. Dit geeft je herhaalbare configuratie, meerdere services, en lokale routing via Caddy.

Project initialiseren

bash
cd jouw-project
asd init

Dit maakt asd.yaml aan en zet de workspace op.

Services definiëren

yaml
version: 1
project:
  name: "my-app"

network:
  services:
    frontend:
      dial: "127.0.0.1:3000"
      host: "app.localhost"
      public: true
      subdomain: "frontend"

    api:
      dial: "127.0.0.1:8080"
      paths: ["/api"]
      public: true
      subdomain: "api"

Elke service krijgt:

  • dial — het lokale adres en de poort
  • host — een optionele lokale hostname voor Caddy routing
  • paths — pad-gebaseerde routing (bijv. /api)
  • public: true — schakelt de publieke tunnel in
  • subdomain — prefix voor de tunnel-URL

Toepassen en starten

bash
# Config toepassen, Caddy en tunnels starten
asd net apply --caddy --tunnel

# Open de netwerk-TUI om alles te zien
asd net

De TUI toont alle services, hun gezondheid, en toegangs-URL's:

ToetsActie
TabWissel tabs (Services, Projects, Logs)
EnterActiemenu voor geselecteerde service
Ctrl+RGezondheid verversen
Ctrl+QAfsluiten

Ideaal voor: Dagelijkse ontwikkeling, teamprojecten, meerdere services.

Methode 3: Tunnel tokens (CI/CD)

Voor geautomatiseerde omgevingen zoals GitHub Actions of GitLab CI gebruik je tunnel tokens in plaats van interactieve authenticatie.

Tijdelijke tokens (snel testen)

Geen account nodig. Verkrijg direct 5 minuten credentials:

bash
curl -X POST https://asd.engineer/functions/v1/create-ephemeral-token

Permanente tokens (CI/CD pipelines)

  1. Registreer op asd.host
  2. Ga naar Account → Tunnel Tokens → Aanmaken
  3. Voeg credentials toe als CI-secrets:
bash
ASD_TUNNEL_TOKEN=jouw-token-van-dashboard
ASD_TUNNEL_USER=jouw-gebruikers-id

Dan in je CI-pipeline:

bash
asd expose 3000

Ideaal voor: CI/CD pipelines, geautomatiseerd testen, webhook receivers.

Meerdere services tegelijk

Met asd.yaml kun je meerdere services tegelijk exposen. Elke service krijgt een eigen tunnel-URL:

yaml
network:
  services:
    frontend:
      dial: "127.0.0.1:3000"
      host: "app.localhost"
      public: true
      subdomain: "frontend"

    api:
      dial: "127.0.0.1:8080"
      paths: ["/api"]
      public: true
      subdomain: "api"

    docs:
      dial: "127.0.0.1:4000"
      host: "docs.localhost"
      public: true
      subdomain: "docs"
bash
asd net apply --caddy --tunnel

Alle drie de services krijgen unieke tunnel-URL's en lokale Caddy routes.

Toegangspatronen

Elke exposed service is op drie manieren bereikbaar:

PatroonURL VoorbeeldGebruik
Lokaal Direct http://localhost:3000 Zelfde machine
Caddy Route http://app.localhost Lokaal netwerk, LAN
Tunnel Remote https://frontend-abc123.cicd.eu1.asd.engineer Overal op het internet
text
Browser → ASD Cloud → SSH Tunnel → Caddy (lokaal) → Jouw Service
                       (versleuteld)       ↑
                                     Routes + Auth

Authenticatie toevoegen

Standaard kan iedereen met de tunnel-URL je service benaderen. Voeg een wachtwoord toe met basic_auth in asd.yaml:

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

  services:
    my-app:
      dial: "127.0.0.1:3000"
      public: true

Stel credentials in via .env:

bash
ASD_BASIC_AUTH_USERNAME=admin
ASD_BASIC_AUTH_PASSWORD=jouw-veilige-wachtwoord

Zie de Caddy Basic Auth gids voor gedetailleerde configuratie-opties.

Problemen oplossen

ProbleemOplossing
Tunnel maakt geen verbinding Controleer credentials: asd tunnel auth status
Poort al in gebruik asd expose stop 3000 of lsof -i :3000
Service niet in TUI asd net refresh om services opnieuw te scannen
Caddy start niet asd caddy stop, verwijder .asd/workspace/caddy/, herstart

Wat nu

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