Prepare Portainer stack deployment

This commit is contained in:
2026-05-07 19:16:17 +02:00
parent fdf2f1fddc
commit 1fc39ee12b
5 changed files with 188 additions and 62 deletions

View File

@@ -38,33 +38,41 @@ function parseBoolean(value: string | undefined, fallback: boolean): boolean {
return ["1", "true", "yes", "on"].includes(value.toLowerCase());
}
function readEnv(name: string): string | undefined {
const value = process.env[name];
if (value === undefined) {
return undefined;
}
return value.trim().length > 0 ? value : undefined;
}
const rawConfig = {
port: process.env.PORT,
logLevel: process.env.LOG_LEVEL,
databasePath: process.env.DATABASE_PATH,
paperlessBaseUrl: process.env.PAPERLESS_BASE_URL,
paperlessToken: process.env.PAPERLESS_TOKEN,
paperlessExternalUrl: process.env.PAPERLESS_EXTERNAL_URL,
appExternalUrl: process.env.APP_EXTERNAL_URL,
appLocale: process.env.APP_LOCALE,
schedulerIntervalMinutes: process.env.SCHEDULER_INTERVAL_MINUTES,
alertDaysBefore: process.env.ALERT_DAYS_BEFORE,
mailServer: process.env.MAIL_SERVER,
mailPort: process.env.MAIL_PORT,
mailUsername: process.env.MAIL_USERNAME,
mailPassword: process.env.MAIL_PASSWORD,
mailUseTls: parseBoolean(process.env.MAIL_USE_TLS, true),
mailFrom: process.env.MAIL_FROM,
mailTo: process.env.MAIL_TO,
authUsername: process.env.AUTH_USERNAME,
authPassword: process.env.AUTH_PASSWORD,
authJwtSecret: process.env.AUTH_JWT_SECRET,
authTokenExpiresInHours: process.env.AUTH_TOKEN_EXPIRES_IN_HOURS,
ntfyServerUrl: process.env.NTFY_SERVER_URL,
ntfyTopic: process.env.NTFY_TOPIC,
ntfyToken: process.env.NTFY_TOKEN,
ntfyPriority: process.env.NTFY_PRIORITY,
icalSecret: process.env.ICAL_SECRET
port: readEnv("PORT"),
logLevel: readEnv("LOG_LEVEL"),
databasePath: readEnv("DATABASE_PATH"),
paperlessBaseUrl: readEnv("PAPERLESS_BASE_URL"),
paperlessToken: readEnv("PAPERLESS_TOKEN"),
paperlessExternalUrl: readEnv("PAPERLESS_EXTERNAL_URL"),
appExternalUrl: readEnv("APP_EXTERNAL_URL"),
appLocale: readEnv("APP_LOCALE"),
schedulerIntervalMinutes: readEnv("SCHEDULER_INTERVAL_MINUTES"),
alertDaysBefore: readEnv("ALERT_DAYS_BEFORE"),
mailServer: readEnv("MAIL_SERVER"),
mailPort: readEnv("MAIL_PORT"),
mailUsername: readEnv("MAIL_USERNAME"),
mailPassword: readEnv("MAIL_PASSWORD"),
mailUseTls: parseBoolean(readEnv("MAIL_USE_TLS"), true),
mailFrom: readEnv("MAIL_FROM"),
mailTo: readEnv("MAIL_TO"),
authUsername: readEnv("AUTH_USERNAME"),
authPassword: readEnv("AUTH_PASSWORD"),
authJwtSecret: readEnv("AUTH_JWT_SECRET"),
authTokenExpiresInHours: readEnv("AUTH_TOKEN_EXPIRES_IN_HOURS"),
ntfyServerUrl: readEnv("NTFY_SERVER_URL"),
ntfyTopic: readEnv("NTFY_TOPIC"),
ntfyToken: readEnv("NTFY_TOKEN"),
ntfyPriority: readEnv("NTFY_PRIORITY"),
icalSecret: readEnv("ICAL_SECRET")
};
export type AppConfig = z.infer<typeof configSchema>;