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";
---