116 lines
2.8 KiB
JavaScript
116 lines
2.8 KiB
JavaScript
// @flow
|
|
require("dotenv").config({ silent: true });
|
|
|
|
const errors = [];
|
|
const boxen = require("boxen");
|
|
const chalk = require("chalk");
|
|
|
|
// If the DataDog agent is installed and the DD_API_KEY environment variable is
|
|
// in the environment then we can safely attempt to start the DD tracer
|
|
if (process.env.DD_API_KEY) {
|
|
require("dd-trace").init({
|
|
// SOURCE_COMMIT is used by Docker Hub
|
|
// SOURCE_VERSION is used by Heroku
|
|
version: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION,
|
|
});
|
|
}
|
|
|
|
if (
|
|
!process.env.SECRET_KEY ||
|
|
process.env.SECRET_KEY === "generate_a_new_key"
|
|
) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
"SECRET_KEY"
|
|
)} env variable must be set with the output of ${chalk.bold(
|
|
"$ openssl rand -hex 32"
|
|
)}`
|
|
);
|
|
}
|
|
|
|
if (
|
|
!process.env.UTILS_SECRET ||
|
|
process.env.UTILS_SECRET === "generate_a_new_key"
|
|
) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
"UTILS_SECRET"
|
|
)} env variable must be set with a secret value, it is recommended to use the output of ${chalk.bold(
|
|
"$ openssl rand -hex 32"
|
|
)}`
|
|
);
|
|
}
|
|
|
|
if (process.env.AWS_ACCESS_KEY_ID) {
|
|
[
|
|
"AWS_REGION",
|
|
"AWS_SECRET_ACCESS_KEY",
|
|
"AWS_S3_UPLOAD_BUCKET_URL",
|
|
"AWS_S3_UPLOAD_MAX_SIZE",
|
|
].forEach((key) => {
|
|
if (!process.env[key]) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
key
|
|
)} env variable must be set when using S3 compatible storage`
|
|
);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (!process.env.URL) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
"URL"
|
|
)} env variable must be set to the fully qualified, externally accessible URL, e.g https://wiki.mycompany.com`
|
|
);
|
|
}
|
|
|
|
if (!process.env.DATABASE_URL) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
"DATABASE_URL"
|
|
)} env variable must be set to the location of your postgres server, including username, password, and port`
|
|
);
|
|
}
|
|
|
|
if (!process.env.REDIS_URL) {
|
|
errors.push(
|
|
`The ${chalk.bold(
|
|
"REDIS_URL"
|
|
)} env variable must be set to the location of your redis server, including username, password, and port`
|
|
);
|
|
}
|
|
|
|
if (errors.length) {
|
|
console.log(
|
|
chalk.bold.red(
|
|
"\n\nThe server could not start, please fix the following configuration errors and try again:\n"
|
|
)
|
|
);
|
|
errors.map((text) => console.log(` - ${text}`));
|
|
console.log("\n");
|
|
process.exit(1);
|
|
}
|
|
|
|
if (process.env.NODE_ENV === "production") {
|
|
console.log(
|
|
boxen(
|
|
`
|
|
Is your team enjoying Outline? Consider supporting future development by sponsoring the project:\n\nhttps://github.com/sponsors/outline
|
|
`,
|
|
{ padding: 1, margin: 1, borderStyle: "double", borderColor: "green" }
|
|
)
|
|
);
|
|
} else if (process.env.NODE_ENV === "development") {
|
|
console.log(
|
|
chalk.yellow(
|
|
`\nRunning Outline in development mode. To run Outline in production mode set the ${chalk.bold(
|
|
"NODE_ENV"
|
|
)} env variable to "production"\n`
|
|
)
|
|
);
|
|
}
|
|
|
|
require("./main");
|