Skip to content
Server

Reach your server from anywhere

The server itself speaks plain HTTP. Choose how your devices reach it when they leave your home network.

10 min · Updated 26 October 2026

  1. 1

    Pick one

    Your own domain with Caddy reaches it from anywhere, with a certificate that renews by itself. You need a domain name and ports 80 and 443 reachable from the internet.

    Tailscale is private and opens no ports: only your own devices, signed in to your tailnet, can reach it. Home network only needs nothing, but syncs only at home.

  2. 2

    Option A: your own domain, with Docker Compose

    Point a DNS name such as photos.example.com at the machine and open ports 80 and 443. This one file starts the server and Caddy, which gets the certificate by itself. LIGHTCRAFT_BIND=127.0.0.1 keeps port 8080 private so only Caddy reaches the server.

    Terminal
    curl -LO https://raw.githubusercontent.com/elrumo/lightcraft/main/apps/lightcraft-server/docker-compose.hub.yml
    LIGHTCRAFT_BIND=127.0.0.1 LIGHTCRAFT_DOMAIN=photos.example.com \
      docker compose -f docker-compose.hub.yml --profile https up -d
  3. 3

    Option B: Tailscale

    Turn on MagicDNS and HTTPS certificates in your tailnet’s admin console, start the container on 127.0.0.1:8080 (-p 127.0.0.1:8080:8080), then publish it on your tailnet:

    Terminal
    tailscale serve --bg 8080
    # https://<this machine>.<your tailnet>.ts.net
  4. 4

    What to type in LightBites

    The address, as a device sees it: https://photos.example.com, https://nas.your-tailnet.ts.net, or http://192.168.1.20:8080 at home. A bare name on your home network or tailnet means http://; a public name means https://.