Egendefinert domene & HTTPS

Pek ditt eget domene til en selvhostet Conzent OCI-installasjon, terminer TLS, og regenerer samtykkeskript slik at hver side lastes fra den nye verten.

Egendefinert domene & HTTPS

En fersk installasjon svarer på http://localhost. Denne guiden flytter den til ditt eget domene over HTTPS — for eksempel https://consent.example.com.

Gjør dette før du legger til nettsteder. Hvert samtykkeskript Conzent genererer har ditt domene innebygd. Å endre domenet senere fungerer, men du må regenerere skriptene (trinn 5) og oppdatere innebyggingssnutten på hver nettside som allerede bruker dem (trinn 6).

1. Pek DNS til serveren din

Opprett en A-post for vertsnavnet du ønsker, som peker til serverens offentlige IP:

consent.example.com.   A   203.0.113.10

Bekreft at det løser seg med dig +short consent.example.com før du fortsetter. En underdomene av et domene du allerede eier — consent., cmp., privacy. — er det vanlige valget.

2. Sett APP_URL

APP_URL er den eneste sannhetskilden for hver absolutt URL Conzent produserer: samtykkeskript-endepunkter, innebyggingssnutten vist i dashbordet, lenker for tilbakestilling av passord og OAuth-tilbakekall.

Rediger .env i installasjonskatalogen din:

APP_URL=https://consent.example.com

Bruk den nøyaktige offentlige URL-en, med skjemaet og uten skråstrek på slutten. Hvis du terminerer TLS — og det bør du — betyr det https://, selv om containeren selv fortsatt snakker vanlig HTTP internt. Å sette https:// bytter også "huske meg"-informasjonskapselen til Secure, slik at den aldri sendes over vanlig HTTP.

Nyinstallasjoner kan gjøre trinn 1 og 2 i ett skudd:

curl -sSL https://getconzent.com/install | sh -s -- --domain consent.example.com

3. Terminer TLS

Den innebygde nginx-containeren serverer vanlig HTTP på ${APP_PORT:-80}. Den skaffer eller serverer ikke sertifikater.

Alternativ A — Caddy foran. Caddy henter og fornyer Let's Encrypt-sertifikater automatisk. Frigjør port 80 ved å sette APP_PORT=8080 i .env, og opprett deretter docker-compose.override.yml:

services:
  caddy:
    image: caddy:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on:
      - nginx
    restart: unless-stopped

volumes:
  caddy-data:
  caddy-config:

Med docker/caddy/Caddyfile:

consent.example.com {
    reverse_proxy nginx:80
}

Kjør docker compose up -d. Caddy utsteder sertifikatet ved første forespørsel.

Alternativ B — en eksisterende nginx eller Apache. Sett APP_PORT=8080 i .env, og proxy til det:

server {
    listen 443 ssl http2;
    server_name consent.example.com;

    ssl_certificate     /etc/letsencrypt/live/consent.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/consent.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

X-Forwarded-For er viktig utover ryddighet: Conzent registrerer besøkende IP på hver samtykkelogginngang og bruker den til geo-targeting. Uten headeren blir hvert samtykke tilskrevet din proxy.

Alternativ C — Cloudflare. Proxy posten og sett SSL/TLS-modus til Full. Hold opprinnelig TLS aktiv; "Fleksibel" lar hoppet mellom Cloudflare og serveren din være ukryptert. Sett CLOUDFLARE_ZONE_ID og CLOUDFLARE_API_TOKEN i .env for å få Conzent til å tømme kantcache automatisk når skriptene endres.

Legg endringer i stakken i docker-compose.override.yml, aldri i docker-compose.yml — oppdateringer tilbakestiller sporede filer, og overstyringsfilen forblir urørt.

4. Start på nytt og bekreft

docker compose up -d
docker compose exec app php bin/oci health

Last inn https://consent.example.com. Du bør få innloggingssiden over et gyldig sertifikat.

5. Regenerer samtykkeskriptene

Dette er trinnet som er lett å gå glipp av og gir de merkeligste symptomene hvis du gjør det.

Hvert nettsideskript ligger på public/sites_data/{site_key}/script.js og inneholder absolutte URL-er bygget fra APP_URL ved genereringstidspunktet — API-endepunktet det sender samtykke til, CSS-en det henter, logo-stiene. Å endre APP_URL skriver ikke om skriptene som allerede eksisterer. Inntil du regenererer, fortsetter bannere på kundenes nettsteder å kalle den gamle verten: samtykke registreres mot feil opprinnelse, eller mislykkes helt når den gamle adressen slutter å svare.

docker compose exec app php bin/oci scripts:regenerate

6. Oppdater innebyggingssnutten på nettstedene dine

Snutten vist i dashbordet peker nå til det nye domenet:

<script async src="https://consent.example.com/c/consent.js" data-key="YOUR_SITE_KEY"></script>

Hvis du flytter en live installasjon, hold det gamle vertsnavnet oppløst og proxy til det nye inntil du har byttet hver innebygging. Lasteren er inngangspunktet for hele banneret — en ødelagt src betyr ingen samtykkebanner i det hele tatt.

7. Bekreft ende til ende

curl -sSI https://consent.example.com/c/consent.js | head -1
curl -s https://consent.example.com/sites_data/YOUR_SITE_KEY/version.json

Last deretter inn en side som innebygger banneret, aksepter samtykke, og bekreft at oppføringen vises under Samtykkelogg. Den enkle rundreisen tester DNS, TLS, lasteren, det genererte skriptet, og API-stien sammen.

Feilsøking

Symptom Årsak
Banneren vises ikke Innebyggingen peker fortsatt til det gamle domenet, eller skriptene ble aldri regenerert
Samtykkelogger stoppet etter flyttingen Det genererte skriptet sender til den gamle API-stien — kjør scripts:regenerate
Hver samtykkelog vises med samme IP Proxyen videresender ikke X-Forwarded-For
Tilbakestillings-e-poster lenker til localhost APP_URL ikke oppdatert, eller containere ikke startet på nytt etter redigering av .env
Blandede innholdsvarsler APP_URL er http:// mens nettstedet serveres over HTTPS
Sertifikat utstedes aldri Port 80 holdes fortsatt av en annen tjeneste
Compose-redigeringer forsvant En oppdatering tilbakestilte sporede filer — flytt dem til docker-compose.override.yml

Den fullstendige referansen finnes med koden: docs/custom-domain.md på GitHub.

Tilbake til dokumentasjon