diff --git a/Dockerfile b/Dockerfile index 964c0ad..cacdc32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ RUN apk add --no-cache \ python3 \ py3-pip \ ffmpeg \ - && pip3 install --no-cache-dir yt-dlp + && pip3 install --no-cache-dir --break-system-packages yt-dlp WORKDIR /app diff --git a/astro.config.mjs b/astro.config.mjs index a000f63..5e98372 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -12,6 +12,10 @@ export default defineConfig({ adapter: node({ mode: 'standalone' }), + server: { + host: '0.0.0.0', + port: 4321 + }, i18n: { defaultLocale: 'de', locales: ['de', 'en'], @@ -20,4 +24,3 @@ export default defineConfig({ } } }); - diff --git a/src/components/DownloadForm.astro b/src/components/DownloadForm.astro index b643ed6..0c54c6b 100644 --- a/src/components/DownloadForm.astro +++ b/src/components/DownloadForm.astro @@ -1,7 +1,7 @@ --- import { t } from "../lib/i18n"; -const streamOnly = import.meta.env.STREAM_ONLY === "true"; +const streamOnly = process.env.STREAM_ONLY === "true"; ---
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index cfbe624..5e2aa3f 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -10,7 +10,7 @@ interface Props { const { title } = Astro.props; const loginEnabled = isLoginEnabled(); const session = await getSession(Astro.request); -const streamOnly = import.meta.env.STREAM_ONLY === "true"; +const streamOnly = process.env.STREAM_ONLY === "true"; const locale = getLocale(Astro); --- diff --git a/src/lib/i18n.ts b/src/lib/i18n.ts index 6e3415a..6e4aab4 100644 --- a/src/lib/i18n.ts +++ b/src/lib/i18n.ts @@ -14,7 +14,7 @@ const translations: Record = { */ export function getLocale(astro: AstroGlobal): string { // Check environment variable first (for Docker/container environments) - const envLocale = import.meta.env.LOCALE; + const envLocale = process.env.LOCALE; if (envLocale && (envLocale === 'de' || envLocale === 'en')) { return envLocale; } @@ -26,7 +26,7 @@ export function getLocale(astro: AstroGlobal): string { */ export function getLocaleFromRequest(request: Request): string { // Check environment variable first (for Docker/container environments) - const envLocale = import.meta.env.LOCALE; + const envLocale = process.env.LOCALE; if (envLocale && (envLocale === 'de' || envLocale === 'en')) { return envLocale; } diff --git a/src/lib/session.ts b/src/lib/session.ts index 521b526..3959f43 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -1,7 +1,7 @@ import type { Request } from 'astro'; const SESSION_COOKIE = 'session'; -const SESSION_SECRET = import.meta.env.SESSION_SECRET || 'default-secret-change-in-production'; +const SESSION_SECRET = process.env.SESSION_SECRET || 'default-secret-change-in-production'; export interface Session { username: string; @@ -13,7 +13,7 @@ export interface Session { * Wenn LOGIN=false oder nicht gesetzt, ist Login deaktiviert */ export function isLoginEnabled(): boolean { - const loginEnabled = import.meta.env.LOGIN; + const loginEnabled = process.env.LOGIN; // Wenn LOGIN explizit auf "false" gesetzt ist, ist Login deaktiviert // Ansonsten ist Login aktiviert (Standard-Verhalten) return loginEnabled !== "false"; @@ -52,4 +52,3 @@ export function createSessionCookie(session: Session): string { export function clearSessionCookie(): string { return `${SESSION_COOKIE}=; HttpOnly; Path=/; Max-Age=0; SameSite=Lax`; } - diff --git a/src/pages/api/download-file.ts b/src/pages/api/download-file.ts index b50eb3e..d684330 100644 --- a/src/pages/api/download-file.ts +++ b/src/pages/api/download-file.ts @@ -25,7 +25,7 @@ export const GET: APIRoute = async ({ request }) => { // Download-Verzeichnis aus Environment-Variable const downloadDir = - import.meta.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); + process.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); const filePath = path.join(downloadDir, fileName); diff --git a/src/pages/api/download.ts b/src/pages/api/download.ts index 582e32a..3d53d23 100644 --- a/src/pages/api/download.ts +++ b/src/pages/api/download.ts @@ -48,7 +48,7 @@ export const POST: APIRoute = async ({ request }) => { } // Prüfe ob Stream-Modus aktiviert ist - const streamOnly = import.meta.env.STREAM_ONLY === "true"; + const streamOnly = process.env.STREAM_ONLY === "true"; // yt-dlp-wrap Instanz erstellen const ytDlpWrap = new YTDlpWrap(); @@ -154,7 +154,7 @@ export const POST: APIRoute = async ({ request }) => { } else { // NORMALER MODUS: Datei speichern wie bisher const downloadDir = - import.meta.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); + process.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); // Verzeichnis erstellen falls nicht vorhanden try { diff --git a/src/pages/api/files.ts b/src/pages/api/files.ts index 4181980..8379a1d 100644 --- a/src/pages/api/files.ts +++ b/src/pages/api/files.ts @@ -19,7 +19,7 @@ export const GET: APIRoute = async ({ request }) => { } // Prüfe ob Stream-Modus aktiviert ist - const streamOnly = import.meta.env.STREAM_ONLY === "true"; + const streamOnly = process.env.STREAM_ONLY === "true"; if (streamOnly) { return new Response( JSON.stringify({ @@ -36,7 +36,7 @@ export const GET: APIRoute = async ({ request }) => { try { // Download-Verzeichnis aus Environment-Variable const downloadDir = - import.meta.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); + process.env.DOWNLOAD_DIR || path.join(process.cwd(), "downloaded"); if (!existsSync(downloadDir)) { return new Response(JSON.stringify({ files: [] }), { diff --git a/src/pages/api/login.ts b/src/pages/api/login.ts index 138a82b..c3da6a6 100644 --- a/src/pages/api/login.ts +++ b/src/pages/api/login.ts @@ -16,8 +16,8 @@ export const POST: APIRoute = async ({ request }) => { const password = formData.get('password')?.toString(); // Credentials aus Environment-Variablen - const envUsername = import.meta.env.LOGIN_USERNAME; - const envPassword = import.meta.env.LOGIN_PASSWORD; + const envUsername = process.env.LOGIN_USERNAME; + const envPassword = process.env.LOGIN_PASSWORD; // Prüfe ob Credentials konfiguriert sind if (!envUsername || !envPassword) { diff --git a/src/pages/files.astro b/src/pages/files.astro index 5ab393d..816cf84 100644 --- a/src/pages/files.astro +++ b/src/pages/files.astro @@ -11,7 +11,7 @@ if (loginEnabled && !session) { return Astro.redirect('/'); } -const streamOnly = import.meta.env.STREAM_ONLY === "true"; +const streamOnly = process.env.STREAM_ONLY === "true"; ---