Ga naar hoofdinhoud

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).

Controlevraag
Na deze stap start je je site op je laptop in WSL opnieuw met docker compose up -d. In WSL staat geen .env. Op welke naam vind je je site op je laptop?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

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.