Skip to content

Server / Traefik reference (DogeSoft edge)

Use this file as the inventory for how public hostnames attach to Compose services. It contains no passwords; fill on-server paths in your own copy or internal wiki if you need absolute local paths.

Convention (this monorepo): Traefik talks to app containers on the external Docker network proxy. Labels use websecure + tls.certresolver=letsencrypt (names must match your Traefik static config).


One-time on a host

docker network create proxy

If the network already exists, Docker prints an error β€” that is fine.


Hostname β†’ service (from repo layouts)

Public host (example) Compose project / path in repo Compose file Service name(s) Backend port inside container
maps.dogesoft.io dogemaps/ docker-compose.yml dogemaps 80 (nginx)
drc20.dogesoft.io drc20_swap_amm/ compose.yml drc20_web (+ redirect router on dogesoft.io) 80
bridge.dogesoft.io dogesoft_bridge/ docker-compose.yml bridge_web (HTML), bridge_api (/api) 80, 3001
docs.dogesoft.io site/ compose.yml docs 80
indexer.dogesoft.io indexer_explorer_dogemapinscribe/ docker-compose.yml + optional infra/traefik/docker-compose.traefik.yml rust-indexer 8091

Other stacks (e.g. play API, marketplace) may use the same proxy network and the same label style; discover them on the server with the commands below.


Deploy or refresh dogemaps (maps)

Layout A β€” full repo path (simplest): the current directory is the dogemaps/ tree from git (contains Dockerfile, src/, package.json).

cd /path/to/DogeSoftEco/dogemaps
docker compose up -d --build

Layout B β€” compose only under sites/maps (or similar): you keep docker-compose.yml in e.g. ~/sites/maps but the source lives elsewhere. Docker needs a build context that includes the Dockerfile.

Create ~/sites/maps/.env (do not commit) with the absolute path to the real dogemaps project root:

# Example β€” set to YOUR checkout path on Eden
DOGEMAPS_BUILD_CONTEXT=/home/eden/path/to/DogeSoftEco/dogemaps

Then:

cd ~/sites/maps
docker compose -f docker-compose.yml up -d --build

Use the same docker-compose.yml content as in the repo; Compose reads .env next to it for DOGEMAPS_BUILD_CONTEXT.

Layout C β€” sites/maps with only compose + env (sources elsewhere): copy docker-compose.yml, nginx.conf, and .env.example β†’ .env from dogemaps/, then set DOGEMAPS_BUILD_CONTEXT and MARKETPLACE_BUILD_CONTEXT to absolute paths on the server (same idea as Layout B). There is a single compose file: it always builds the Vite image and runs maps_marketplace.

Rebuild flow: after npm run build in dogemaps/ (output html/), rebuild and restart the UI container from a checkout that includes that build, e.g. docker compose build dogemaps && docker compose up -d. Nginx config can be updated without rebuild via the ./nginx.conf bind mount in compose.

  • --build when you change app sources or VITE_* build args.
  • Ensure DNS for maps.dogesoft.io points at the machine that runs Traefik.
  • Dogemaps compose files do not publish host ports by default β€” Traefik reaches nginx on proxy only (avoids 8080 already allocated errors). Uncomment the optional ports block in the YAML if you need curl to localhost while debugging.

Commands to investigate the edge (run on the server)

Traefik container and version

docker ps --filter "name=traefik" --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"

Who is on the proxy network

docker network inspect proxy --format '{{range .Containers}}{{.Name}} {{end}}'

List routers (Traefik v2+ API β€” if enabled, default :8080 on traefik)

curl -sS http://127.0.0.1:8080/api/http/routers | head -c 4000

If the API is disabled or on another port, use your Traefik dashboard / static config path instead.

Smoke test TLS and routing

curl -sS -o /dev/null -w "%{http_code}\n" https://maps.dogesoft.io/
curl -sS -o /dev/null -w "%{http_code}\n" https://bridge.dogesoft.io/
curl -sS -o /dev/null -w "%{http_code}\n" https://drc20.dogesoft.io/

Logs

docker logs traefik --tail 100 2>&1
docker logs dogemaps_dogesoft --tail 50 2>&1

Adding another *.dogesoft.io static site

  1. DNS A/AAAA β†’ Traefik host.
  2. Service joins networks: [proxy] and defines labels with Host(\new.example.dogesoft.io`),entrypoints=websecure,tls.certresolver=letsencrypt, andloadbalancer.server.port` = the port the container listens on.
  3. docker compose up -d --build for that project.
  4. Update this document’s table in git so operators and automation stay aligned.

Changing hostname for dogemaps (forks / staging)

Edit dogemaps/docker-compose.yml β€” the traefik.http.routers.dogemaps.rule=Host(...) label β€” then rebuild/recreate the container.


Do not commit

Real server paths (e.g. /home/...), API keys, DB passwords, or Traefik ACME email secrets belong only in private env files and backup stores β€” not in this reference.