Eget Domæne & HTTPS

Peg dit eget domæne til en selvhostet Conzent OCI-installation, afslut TLS, og regenerer samtykkescripts, så hver side indlæses fra den nye vært.

Eget Domæne & HTTPS

En frisk installation svarer på http://localhost. Denne guide flytter det til dit eget domæne over HTTPS — for eksempel https://consent.example.com.

Gør dette før du tilføjer sider. Hvert samtykkescript, Conzent genererer, har dit domæne indbygget i det. At ændre domænet senere fungerer, men du skal regenerere scripts (trin 5) og opdatere embed-snippet på hver hjemmeside, der allerede bruger dem (trin 6).

1. Peg DNS til din server

Opret en A post for det værtsnavn, du ønsker, der peger på din servers offentlige IP:

consent.example.com.   A   203.0.113.10

Bekræft, at det løser med dig +short consent.example.com før du fortsætter. Et subdomæne af et domæne, du allerede ejer — consent., cmp., privacy. — er det sædvanlige valg.

2. Indstil APP_URL

APP_URL er den eneste kilde til sandhed for hver absolut URL, Conzent producerer: samtykkescript-endepunkter, embed-snippet vist i dashboardet, links til nulstilling af adgangskoder og OAuth callbacks.

Rediger .env i din installationsmappe:

APP_URL=https://consent.example.com

Brug den nøjagtige offentlige URL, med skemaet og uden afsluttende skråstreg. Hvis du afslutter TLS — og det bør du — betyder det https://, selvom containeren selv stadig taler almindelig HTTP internt. At indstille https:// skifter også "huske mig" cookie til Secure, så den aldrig sendes over almindelig HTTP.

Ny installation kan gøre trin 1 og 2 i et hug:

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

3. Afslut TLS

Den bundne nginx-container serverer almindelig HTTP på ${APP_PORT:-80}. Den opnår eller serverer ikke certifikater.

Mulighed A — Caddy foran. Caddy henter og fornyer Let's Encrypt certifikater automatisk. Frigør port 80 ved at indstille APP_PORT=8080 i .env, og opret derefter 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
}

Kør docker compose up -d. Caddy udsteder certifikatet ved den første anmodning.

Mulighed B — en eksisterende nginx eller Apache. Indstil 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 vigtigt ud over ordenlighed: Conzent registrerer besøgs-IP'en på hver samtykke-logindgang og bruger den til geo-targeting. Uden headeren tilskrives hvert samtykke din proxy.

Mulighed C — Cloudflare. Proxy posten og indstil SSL/TLS-tilstand til Fuldt. Hold oprindelig TLS tændt; "Fleksibel" efterlader springet mellem Cloudflare og din server ukrypteret. Indstil CLOUDFLARE_ZONE_ID og CLOUDFLARE_API_TOKEN i .env for at få Conzent til automatisk at rydde edge-cachen, når scripts ændres.

Put stackændringer i docker-compose.override.yml, aldrig i docker-compose.yml — opdateringer nulstiller sporingsfiler, og override-filen forbliver uændret.

4. Genstart og bekræft

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

Indlæs https://consent.example.com. Du bør få login-siden over et gyldigt certifikat.

5. Regenerer samtykkescripts

Dette er det trin, der er let at overse og producerer de mærkeligste symptomer, hvis du gør det.

Hver sides script findes på public/sites_data/{site_key}/script.js og indeholder absolutte URL'er bygget fra APP_URL ved generationstidspunktet — API-endepunktet, det sender samtykke til, CSS'en, det henter, logo-stierne. At ændre APP_URL omskriver ikke scripts, der allerede eksisterer. Indtil du regenererer, fortsætter bannere på dine kunders sider med at kalde den gamle vært: samtykke registreres mod den forkerte oprindelse eller fejler helt, når den gamle adresse stopper med at svare.

docker compose exec app php bin/oci scripts:regenerate

6. Opdater embed-snippet på dine hjemmesider

Snippetet vist i dashboardet peger nu på det nye domæne:

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

Hvis du flytter en live installation, skal du holde det gamle værtsnavn, der løser og proxy til det nye, indtil du har udskiftet hver embed. Loaderen er indgangspunktet for hele banneret — en defekt src betyder slet ikke noget samtykkebanner.

7. Bekræft end-to-end

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

Indlæs derefter en side, der indeholder banneret, accepter samtykke, og bekræft, at indgangen vises under Samtykke Logs. Den enkelt rundtur tester DNS, TLS, loaderen, det genererede script og API-stien sammen.

Fejlfinding

Symptom Årsag
Banneren vises ikke Embed'et peger stadig på det gamle domæne, eller scripts blev aldrig regenereret
Samtykke logs stoppede efter flytningen Det genererede script sender til den gamle API-sti — kør scripts:regenerate
Hver samtykke log viser den samme IP Proxy'en videresender ikke X-Forwarded-For
Nulstillings-e-mails linker til localhost APP_URL ikke opdateret, eller containere ikke genstartet efter redigering af .env
Blandede indholdsadvarsler APP_URL er http://, mens siden serveres over HTTPS
Certifikat udstedes aldrig Port 80 er stadig optaget af en anden tjeneste
Compose-redigeringer forsvandt En opdatering nulstillede sporingsfiler — flyt dem til docker-compose.override.yml

Den fulde reference findes med koden: docs/custom-domain.md på GitHub.

Tilbage til Dokumentation