Sicherheit: - .htaccess im Projektstamm mit X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy und einer Content-Security-Policy; da alle Assets lokal liegen, erlaubt sie nur noch die eigene Herkunft (Ausnahme: hCaptcha, falls aktiviert) - includes/, tools/, tests/, updater/storage und uploads/ schützen sich über eigene .htaccess-Dateien – auch bei Installation im Unterordner - Docker: AllowOverride All, damit diese Regeln überhaupt greifen, und ein Volume für uploads/, damit Logos ein Image-Update überstehen Werkzeuge: - tools/screenshots.py erzeugt alle Bilder in docs/screenshots aus der Demo-Instanz; tools/README.md beschreibt beides - Einstellungs-Tabs sind per ?tab=… direkt verlinkbar (serverseitig, also auch ohne JavaScript) Dokumentation: Readme um Markenfarben, Bild-Upload, lokale Assets, Sicherheits-Header (inkl. Nginx-Entsprechung) und einen Abschnitt "Entwicklung" ergänzt; Screenshots neu erzeugt, Version 2.6.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
39 lines
1.3 KiB
Docker
39 lines
1.3 KiB
Docker
# UniFi Voucher Management System – Container-Image
|
||
FROM php:8.2-apache
|
||
|
||
# System-Tools (curl für Healthcheck) + PHP-Extensions
|
||
RUN apt-get update && apt-get install -y --no-install-recommends curl \
|
||
&& rm -rf /var/lib/apt/lists/* \
|
||
&& docker-php-ext-install pdo pdo_mysql \
|
||
&& a2enmod rewrite headers
|
||
|
||
# Empfohlene PHP-Einstellungen
|
||
RUN { \
|
||
echo 'display_errors=0'; \
|
||
echo 'log_errors=1'; \
|
||
echo 'expose_php=0'; \
|
||
echo 'upload_max_filesize=8M'; \
|
||
echo 'post_max_size=8M'; \
|
||
} > /usr/local/etc/php/conf.d/zz-voucher.ini
|
||
|
||
# .htaccess auswerten (Sicherheits-Header, Schutz des uploads-Ordners)
|
||
RUN sed -ri 's!<Directory /var/www/>!<Directory /var/www/>\n\tAllowOverride All!g' /etc/apache2/apache2.conf
|
||
|
||
WORKDIR /var/www/html
|
||
COPY . /var/www/html
|
||
|
||
# Laufzeit-Verzeichnisse beschreibbar machen
|
||
RUN mkdir -p /var/www/html/updater/storage /var/www/html/uploads \
|
||
&& chown -R www-data:www-data /var/www/html
|
||
|
||
COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
|
||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
||
|
||
EXPOSE 80
|
||
|
||
# Apache-Worker laufen als www-data (Privilege-Drop durch den Master).
|
||
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
||
CMD curl -fsS http://localhost/health.php || exit 1
|
||
|
||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||
CMD ["apache2-foreground"]
|