Anpassad domän & HTTPS

Peka din egen domän mot en självhostad Conzent OCI-installation, avsluta TLS och regenerera samtyckesskript så att varje webbplats laddas från den nya värden.

Anpassad domän & HTTPS

En ny installation svarar på http://localhost. Denna guide flyttar den till din egen domän över HTTPS — till exempel https://consent.example.com.

Gör detta innan du lägger till webbplatser. Varje samtyckesskript som Conzent genererar har din domän inbakad i sig. Att ändra domänen senare fungerar, men du måste regenerera skripten (steg 5) och uppdatera inbäddningssnutten på varje webbplats som redan använder dem (steg 6).

1. Peka DNS mot din server

Skapa en A-post för värdnamnet du vill ha, som pekar på din servers offentliga IP:

consent.example.com.   A   203.0.113.10

Bekräfta att det löser med dig +short consent.example.com innan du fortsätter. En subdomän av en domän du redan äger — consent., cmp., privacy. — är det vanliga valet.

2. Ställ in APP_URL

APP_URL är den enda sanna källan för varje absolut URL som Conzent producerar: samtyckesskriptens slutpunkter, inbäddningssnutten som visas i instrumentpanelen, länkar för återställning av lösenord och OAuth-återkopplingar.

Redigera .env i din installationskatalog:

APP_URL=https://consent.example.com

Använd den exakta offentliga URL:en, med schemat och utan avslutande snedstreck. Om du avslutar TLS — och det bör du — betyder det https://, även om containern själv fortfarande talar vanlig HTTP internt. Att ställa in https:// växlar också "kom ihåg mig"-kakan till Secure, så den skickas aldrig över vanlig HTTP.

Nya installationer kan göra steg 1 och 2 i ett svep:

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

3. Avsluta TLS

Den bundna nginx-containern serverar vanlig HTTP på ${APP_PORT:-80}. Den hämtar eller serverar inte certifikat.

Alternativ A — Caddy framför. Caddy hämtar och förnyar Let's Encrypt-certifikat automatiskt. Frigör port 80 genom att ställa in APP_PORT=8080 i .env, skapa sedan 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 utfärdar certifikatet vid den första begäran.

Alternativ B — en befintlig nginx eller Apache. Ställ in APP_PORT=8080 i .env, och proxy till den:

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 är viktigt bortom ordning: Conzent registrerar besökarens IP på varje samtyckesloggpost och använder den för geo-targeting. Utan headern attribueras varje samtycke till din proxy.

Alternativ C — Cloudflare. Proxy-posten och ställ in SSL/TLS-läget till Full. Håll ursprunglig TLS på; "Flexibel" lämnar hoppet mellan Cloudflare och din server okrypterat. Ställ in CLOUDFLARE_ZONE_ID och CLOUDFLARE_API_TOKEN i .env för att få Conzent att automatiskt rensa cache på kanten när skripten ändras.

Placera stackändringar i docker-compose.override.yml, aldrig i docker-compose.yml — uppdateringar återställer spårade filer, och överskrivningsfilen lämnas orörd.

4. Starta om och bekräfta

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

Ladda https://consent.example.com. Du bör få inloggningssidan över ett giltigt certifikat.

5. Regenerera samtyckesskripten

Detta är steget som är lätt att missa och ger de konstigaste symptomen om du gör det.

Varje webbplats skript finns på public/sites_data/{site_key}/script.js och innehåller absoluta URL:er byggda från APP_URL vid genereringstillfället — API-slutpunkten den postar samtycke till, CSS den hämtar, logotypvägar. Att ändra APP_URL skriver inte om skript som redan finns. Tills du regenererar, fortsätter banners på dina kunders webbplatser att kalla den gamla värden: samtycke registreras mot fel ursprung, eller misslyckas helt när den gamla adressen slutar svara.

docker compose exec app php bin/oci scripts:regenerate

6. Uppdatera inbäddningssnutten på dina webbplatser

Snutten som visas i instrumentpanelen pekar nu på den nya domänen:

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

Om du flyttar en live-installation, håll det gamla värdnamnet som löser och proxy till den nya tills du har bytt varje inbäddning. Laddaren är ingångspunkten för hela bannern — en trasig src betyder ingen samtyckesbanner alls.

7. Verifiera från början till slut

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

Ladda sedan en sida som inbäddar bannern, acceptera samtycke och bekräfta att posten visas under Samtyckesloggar. Denna enda rundtur testar DNS, TLS, laddaren, det genererade skriptet och API-vägen tillsammans.

Felsökning

Symptom Orsak
Bannern visas inte Inbäddningen pekar fortfarande på den gamla domänen, eller skripten har aldrig regenererats
Samtyckesloggarna slutade efter flytten Det genererade skriptet postar till den gamla API-vägen — kör scripts:regenerate
Varje samtyckeslogg visar samma IP Proxyn vidarebefordrar inte X-Forwarded-For
Återställningsmejl länkar till localhost APP_URL uppdaterades inte, eller containrarna startades inte om efter redigering av .env
Blandat innehåll varningar APP_URL är http:// medan webbplatsen serveras över HTTPS
Certifikat utfärdas aldrig Port 80 hålls fortfarande av en annan tjänst
Compose-redigeringar försvann En uppdatering återställde spårade filer — flytta dem till docker-compose.override.yml

Den fullständiga referensen finns med koden: docs/custom-domain.md på GitHub.

Tillbaka till Dokumentation