CDPCaptcha ist dafür gebaut, auf Ihrem eigenen Server zu laufen.
Voraussetzungen: PHP 8.2 oder neuer mit pdo_mysql, mbstring und openssl;
MariaDB 10.6 oder neuer;
nginx oder Apache mit HTTPS.
Installation
git clone <your copy of the repository> /var/www/captcha.example.com
sudo bash /var/www/captcha.example.com/connect/install/cdp-install.sh --base-url https://captcha.example.comDer Installer legt die Datenbank und ihren Benutzer an, schreibt /etc/cdpcaptcha/.env (0640 root:www-data) mit erzeugten Geheimnissen, spielt die Migrationen ein und legt die System-Sitekeys an.
Geheimnisse gibt er nie aus.
Führen Sie ihn nach Updates erneut aus: Er spielt nur neue Migrationen ein.
Webserver
Richten Sie das Document Root auf den Ordner;
jede Anfrage, die keine Datei unter /core/assets ist, geht an index.php.
server {
listen 443 ssl http2;
server_name captcha.example.com;
root /var/www/captcha.example.com;
index index.php;
location /core/assets/ { expires 7d; add_header Cache-Control "public"; }
location ~ ^/(config|connect|controller|components|migrations|tests|sdk|\.git)/ { return 404; }
location / { try_files $uri /index.php$is_args$args; }
location = /index.php {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}.env-Schlüssel
| Schlüssel | Standard | Bedeutung |
|---|---|---|
BASE_URL | Öffentliche Adresse, verwendet in Mails und Einbau-Codes. | |
DIFFICULTY_DEFAULT | 4 | Stufe 1 bis 10 für Sitekeys ohne eigene Einstellung. |
PUZZLE_TTL | 1800 | Sekunden, die Rätsel und Lösung gültig bleiben. |
PUZZLE_COUNT | 8 | Teilrätsel je Rätsel. |
RATE_WINDOW / RATE_STEPS / RATE_PUZZLES_MAX | 600 / 10,30,100,300 / 600 | Anpassbare Schwierigkeit und Obergrenze je Adresse. |
MAIL_MODE / MAIL_FROM | sendmail | Systemmails über den lokalen Mailserver; „file“ schreibt Mails für Tests nach MAIL_DIR. |
CONTACT_TO | Empfänger des Kontaktformulars. | |
PLAYGROUND | 1 | 0 blendet den Playground aus. |
Kommandozeile
php connect/install/cdp-install.php migrate
php connect/install/cdp-install.php system-sites
php connect/install/cdp-install.php site:add "Contact form" "example.com" 4
php connect/install/cdp-install.php site:list
php connect/install/cdp-install.php key:add "Server A"Wartung
Es gibt keine Cronjobs.
Abgelaufene Rätsel werden bei normalen API-Aufrufen entfernt.
Sichern Sie die Datenbank und die .env-Datei;
der HMAC-Schlüssel darin signiert jedes Rätsel, eine Änderung macht also gerade laufende Rätsel ungültig (sonst nichts).
