diff --git a/backend/src/index.ts b/backend/src/index.ts index f8f4152..6d5d4c4 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -8,6 +8,7 @@ import { env, validateEnv } from './config/env.js'; import { db, initDatabase } from './config/database.js'; import fastifyStatic from '@fastify/static'; import path from 'path'; +import fs from 'fs'; // Import routes import authRoute from './routes/auth.js'; @@ -79,12 +80,25 @@ fastify.register(multipart, { // Serve static files (uploaded images, etc.) from persistent volume const dataDir = env.GIT_WORKSPACE_DIR || path.join(process.cwd(), 'data'); +// Muss existieren, sonst verweigert @fastify/static die Registrierung +fs.mkdirSync(dataDir, { recursive: true }); fastify.register(fastifyStatic, { root: dataDir, prefix: '/static/', decorateReply: false }); +// Uploads liegen unter /public/images. In der DB stehen sie als +// /images/... - das ist die URL auf der publizierten Astro-Seite. Damit die +// Admin-Oberflaeche dieselben Pfade verwenden kann, hier ebenso ausliefern. +const imagesDir = path.join(dataDir, 'public', 'images'); +fs.mkdirSync(imagesDir, { recursive: true }); +fastify.register(fastifyStatic, { + root: imagesDir, + prefix: '/images/', + decorateReply: false +}); + // Decorate fastify with authenticate method fastify.decorate('authenticate', authenticate);