Hemmelig.app/config/default.cjs
2025-02-13 08:23:48 +01:00

104 lines
3.0 KiB
JavaScript

const {
SECRET_LOCAL_HOSTNAME = '0.0.0.0',
SECRET_PORT = '3000',
SECRET_HOST = 'localhost',
SECRET_JWT_SECRET = 'good_luck_have_fun',
SECRET_ROOT_USER = 'groot',
SECRET_ROOT_PASSWORD = 'iamgroot',
SECRET_ROOT_EMAIL = 'groot@hemmelig.app',
SECRET_FILE_SIZE = 4, // 4 mb
SECRET_FORCED_LANGUAGE = 'en',
SECRET_DO_SPACES_ENDPOINT = '',
SECRET_DO_SPACES_KEY = '',
SECRET_DO_SPACES_SECRET = '',
SECRET_DO_SPACES_BUCKET = '',
SECRET_DO_SPACES_FOLDER = '',
SECRET_AWS_S3_REGION = '',
SECRET_AWS_S3_KEY = '',
SECRET_AWS_S3_SECRET = '',
SECRET_AWS_S3_BUCKET = '',
SECRET_AWS_S3_FOLDER = '',
SECRET_MAX_TEXT_SIZE = 256, // 256 kb
SECRET_UPLOAD_RESTRICTION = 'true', // true = only allow uploads from signed in users
SECRET_RATE_LIMIT_MAX = 1000,
SECRET_RATE_LIMIT_TIME_WINDOW = 60,
SECRET_ANALYTICS_ENABLED = 'true',
SECRET_ANALYTICS_HMAC_SECRET = '1234567890',
NODE_ENV = 'development',
} = process.env;
const config = {
localHostname: SECRET_LOCAL_HOSTNAME,
env: NODE_ENV,
host: SECRET_HOST,
port: SECRET_PORT,
upload_restriction: JSON.parse(SECRET_UPLOAD_RESTRICTION),
rateLimit: {
max: Number(SECRET_RATE_LIMIT_MAX),
timeWindow: Number(SECRET_RATE_LIMIT_TIME_WINDOW) * 1000,
},
// root account management
account: {
root: {
user: SECRET_ROOT_USER,
password: SECRET_ROOT_PASSWORD,
email: SECRET_ROOT_EMAIL,
},
},
// choose digital ocean/s3 or disk
file: {
size: SECRET_FILE_SIZE,
adapter: !!SECRET_DO_SPACES_SECRET ? 'do' : 'disk',
},
jwt: {
secret: SECRET_JWT_SECRET,
cookie: '__HEMMELIG_TOKEN',
},
api: {
maxTextSize: SECRET_MAX_TEXT_SIZE * 1000, // 256 000 bytes
},
// Digital Ocean
do: {
spaces: {
endpoint: SECRET_DO_SPACES_ENDPOINT,
key: SECRET_DO_SPACES_KEY,
secret: SECRET_DO_SPACES_SECRET,
bucket: SECRET_DO_SPACES_BUCKET,
folder: SECRET_DO_SPACES_FOLDER,
},
},
aws: {
s3: {
region: SECRET_AWS_S3_REGION,
key: SECRET_AWS_S3_KEY,
secret: SECRET_AWS_S3_SECRET,
bucket: SECRET_AWS_S3_BUCKET,
folder: SECRET_AWS_S3_FOLDER,
},
},
disk: {
// /var/tmp files can live up to 30 days
folder: `/var/tmp/hemmelig/upload/files/`,
},
analytics: {
enabled: JSON.parse(SECRET_ANALYTICS_ENABLED),
hmacSecret: SECRET_ANALYTICS_HMAC_SECRET,
},
logger: true,
cors: '*',
__client_config: {
api: {
host: '/api',
},
settings: {
forcedLanguage: SECRET_FORCED_LANGUAGE,
upload_restriction: JSON.parse(SECRET_UPLOAD_RESTRICTION),
analytics: {
enabled: JSON.parse(SECRET_ANALYTICS_ENABLED),
},
},
},
};
module.exports = config;