/** * Website Status API Route * * GET: Health-Check ob die Website (Port 3000) erreichbar ist */ import { NextResponse } from 'next/server' const WEBSITE_URL = process.env.WEBSITE_URL || 'http://website:3000' const WEBSITE_FALLBACK_URL = 'https://macmini:3000' export async function GET() { const start = Date.now() try { const controller = new AbortController() const timeout = setTimeout(() => controller.abort(), 5000) let response: Response | null = null try { response = await fetch(WEBSITE_URL, { method: 'HEAD', signal: controller.signal, cache: 'no-store', }) } catch { // Docker-internal name failed, try fallback response = await fetch(WEBSITE_FALLBACK_URL, { method: 'HEAD', signal: controller.signal, cache: 'no-store', }) } finally { clearTimeout(timeout) } const responseTime = Date.now() - start return NextResponse.json({ online: response.ok || response.status < 500, responseTime, statusCode: response.status, }) } catch (error) { const responseTime = Date.now() - start return NextResponse.json({ online: false, responseTime, error: error instanceof Error ? error.message : 'Website nicht erreichbar', }) } }