/** @type {import('next').NextConfig} */ const nextConfig = { // Standalone-Build fuer ein schlankes Docker-Image. output: 'standalone', reactStrictMode: true, poweredByHeader: false, // Argon2 ist eine native Bibliothek und darf nicht gebundelt werden. serverExternalPackages: ['@node-rs/argon2'], // Zwei Seiten lesen zur Laufzeit eine Markdown-Datei aus docs/: // die Datenschutzhinweise und die Bedienungsanleitung. Der Pfad wird // erst zur Laufzeit gebaut, die Dateiverfolgung von Next.js kann ihn // also nicht erkennen - ohne diesen Eintrag fehlten beide Dateien im // Standalone-Build, und im Behaelter waeren die Seiten leer. outputFileTracingIncludes: { '/datenschutz': ['./docs/datenschutzhinweise.md'], '/anleitung': ['./docs/ANLEITUNG.md'], }, eslint: { ignoreDuringBuilds: false, }, async headers() { return [ { source: '/:path*', headers: [ { key: 'X-Content-Type-Options', value: 'nosniff' }, { key: 'X-Frame-Options', value: 'DENY' }, { key: 'Referrer-Policy', value: 'no-referrer' }, { key: 'X-DNS-Prefetch-Control', value: 'off' }, { key: 'Permissions-Policy', // Kamera bleibt erlaubt: Belege werden am Handy fotografiert. value: 'camera=(self), microphone=(self), geolocation=(), interest-cohort=()', }, { key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload', }, ], }, ] }, } export default nextConfig