Online zetten: je site op je domein
De voordeur staat op de server. Nu zet je je site erachter, op je eigen domeinnaam, nog met http.
Je domeinnaam
In je compose.yaml staat Host( met gastenboek.localhost. Op de server moet daar je domeinnaam staan, en op je laptop niet. Daarom haal je de naam uit een variabele. Verander het label in WSL, in je project:
- traefik.http.routers.gastenboek.rule=Host(`${DOMEIN:-gastenboek.localhost}`)
${DOMEIN:-gastenboek.localhost} betekent: de waarde van DOMEIN, of gastenboek.localhost als die er niet is. Zet .env in je .gitignore en je .dockerignore, en commit en push.
De naam op de server
Op de server haal je de nieuwe versie op, en zet je de naam in een bestand .env naast compose.yaml (een .env-bestand). Compose leest dat bestand vanzelf:
cd ~/gastenboek
git pull
echo "DOMEIN=gastenboek.voorbeeld.nl" > .env
docker compose up -d --build
De .env hoort bij deze computer, niet bij je project. Zo werkt dezelfde compose.yaml op je laptop en op de server. Je site heeft geen ports, net als in WSL: alleen Traefik publiceert iets (les 32).
Er gaat iets mis
404 page not found op je domein
Traefik antwoordt, maar zegt 404 page not found.
Oorzaak: Traefik zoekt een andere naam. Meestal staat .env niet naast compose.yaml, of zit er een tikfout in DOMEIN. Dan gebruikt Compose gastenboek.localhost.
Oplossing: kijk welke naam Compose echt gebruikt, verbeter .env, en start opnieuw:
docker compose config | grep Host
docker compose up -d
De browser krijgt geen antwoord
Oorzaak: het A-record wijst nog niet naar je server (les 27), of Traefik draait niet.
Oplossing: controleer de naam met ping -c 1 gastenboek.voorbeeld.nl, en kijk met docker ps of Traefik draait.
Opdrachten
Opdracht 1: Run - Je site op internet
Zet je site op de server, achter Traefik, met je eigen domeinnaam. Open hem op je telefoon via mobiele data, en maak er een account.
Antwoord
Je ziet je gastenboek, met een lege lijst: de databases van je laptop staan in een volume op je laptop, niet op de server. Werkt het niet, ga dan van achter naar voren: draait je site (docker compose ps in ~/gastenboek), draait Traefik (docker compose ps in ~/traefik), en wijst de naam naar je server?
Opdracht 2: Investigate - Wie bezoekt je site?
Kijk na een bezoek met je telefoon in het logboek van je site:
cd ~/gastenboek
docker compose logs --tail 5
Staat er het adres van Traefik, of dat van je telefoon? Waarom?
Antwoord
Je ziet het adres van je telefoon op internet. Traefik zette het in X-Forwarded-For, en je site gelooft die kop door FORWARDED_ALLOW_IPS=* uit les 23. Daardoor telt de limiet uit de route Veiligheid per bezoeker, en niet iedereen samen.
Door naar les 34: je domein met HTTPS.