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.