kutt/server/env.js

60 lines
2.1 KiB
JavaScript
Raw Normal View History

2024-08-11 18:41:03 +03:30
require("dotenv").config();
const { cleanEnv, num, str, bool } = require("envalid");
2024-09-11 20:51:14 +02:00
const supportedDBClients = [
"pg",
"pg-native",
"sqlite3",
"better-sqlite3",
"mysql",
"mysql2"
2024-09-11 20:51:14 +02:00
];
2025-01-15 14:04:52 +03:30
// make sure custom alphabet is not empty
if (process.env.LINK_CUSTOM_ALPHABET === "") {
delete process.env.LINK_CUSTOM_ALPHABET;
}
2020-01-30 18:51:52 +03:30
const env = cleanEnv(process.env, {
PORT: num({ default: 3000 }),
2025-01-04 13:24:01 +03:30
SITE_NAME: str({ example: "Kutt", default: "Kutt" }),
DEFAULT_DOMAIN: str({ example: "kutt.it", default: "localhost:3000" }),
2020-01-30 18:51:52 +03:30
LINK_LENGTH: num({ default: 6 }),
2025-01-15 14:04:52 +03:30
LINK_CUSTOM_ALPHABET: str({ default: "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789" }),
2025-01-15 15:35:30 +03:30
TRUST_PROXY: bool({ default: true }),
2025-01-04 13:24:01 +03:30
DB_CLIENT: str({ choices: supportedDBClients, default: "sqlite3" }),
2025-01-08 09:45:55 +03:30
DB_FILENAME: str({ default: "db/data" }),
2020-01-30 18:51:52 +03:30
DB_HOST: str({ default: "localhost" }),
DB_PORT: num({ default: 5432 }),
2025-01-04 13:24:01 +03:30
DB_NAME: str({ default: "kutt" }),
2024-09-25 16:34:43 +03:30
DB_USER: str({ default: "postgres" }),
DB_PASSWORD: str({ default: "" }),
2020-01-30 18:51:52 +03:30
DB_SSL: bool({ default: false }),
2024-09-25 16:34:43 +03:30
DB_POOL_MIN: num({ default: 0 }),
DB_POOL_MAX: num({ default: 10 }),
2024-10-21 14:59:55 +03:30
REDIS_ENABLED: bool({ default: false }),
2020-01-30 18:51:52 +03:30
REDIS_HOST: str({ default: "127.0.0.1" }),
REDIS_PORT: num({ default: 6379 }),
REDIS_PASSWORD: str({ default: "" }),
2022-11-10 15:05:11 +03:30
REDIS_DB: num({ default: 0 }),
2025-01-04 13:24:01 +03:30
DISALLOW_ANONYMOUS_LINKS: bool({ default: true }),
DISALLOW_REGISTRATION: bool({ default: true }),
2024-09-12 14:26:39 +03:30
SERVER_IP_ADDRESS: str({ default: "" }),
SERVER_CNAME_ADDRESS: str({ default: "" }),
2020-01-30 18:51:52 +03:30
CUSTOM_DOMAIN_USE_HTTPS: bool({ default: false }),
JWT_SECRET: str({ devDefault: "securekey" }),
2024-09-23 13:45:39 +03:30
MAIL_ENABLED: bool({ default: false }),
MAIL_HOST: str({ default: "" }),
MAIL_PORT: num({ default: 587 }),
2020-01-30 18:51:52 +03:30
MAIL_SECURE: bool({ default: false }),
2024-09-23 13:45:39 +03:30
MAIL_USER: str({ default: "" }),
2020-01-30 18:51:52 +03:30
MAIL_FROM: str({ default: "", example: "Kutt <support@kutt.it>" }),
2024-09-23 13:45:39 +03:30
MAIL_PASSWORD: str({ default: "" }),
2024-11-23 14:43:18 +03:30
ENABLE_RATE_LIMIT: bool({ default: false }),
2020-01-30 18:51:52 +03:30
REPORT_EMAIL: str({ default: "" }),
2024-11-23 14:43:18 +03:30
CONTACT_EMAIL: str({ default: "" }),
NODE_APP_INSTANCE: num({ default: 0 }),
2020-01-30 18:51:52 +03:30
});
2024-08-11 18:41:03 +03:30
module.exports = env;