configuration/constants/nginx.constants.ts
configuration/constants/nginx.constants.ts is a file in Bane's Lab Deploy. 84 lines of code and 60 definitions.
import type { ModuleLoader, PackageSource, SourceArchive, SourceModule } from "#types/deployment.types";
import { REMOTE_STAGING } from "#configuration/constants/deployment.constants";
export const NGINX_PARENT = "/etc";
export const NGINX_FOLDER = "nginx";
export const NGINX_ROOT = `${NGINX_PARENT}/${NGINX_FOLDER}`;
export const MAIN_CONFIG = "nginx.conf";
const SITES_FOLDER = "sites-available";
export const SITE_NAME = "banes-lab";
const SCRIPTS_FOLDER = "js";
export const REMOTE_SCRIPTS = `${NGINX_ROOT}/${SCRIPTS_FOLDER}`;
export const SCRIPT_SOURCE_EXTENSION = ".ts";
export const NAME_SEPARATOR = ".";
export const SCRIPT_TARGET_EXTENSION = ".js";
export const NODE_PROTOCOL = "node:";
export const SCRIPT_STAGING_PREFIX = "banes-lab-njs-";
export const REMOTE_SITE_CONFIG = `${NGINX_ROOT}/${SITES_FOLDER}/${SITE_NAME}`;
export const SITE_LINK = `${NGINX_ROOT}/sites-enabled/${SITE_NAME}`;
const FULL_ARCHIVE = "nginx-full.tar.gz";
export const REMOTE_FULL_ARCHIVE = `${REMOTE_STAGING}/${FULL_ARCHIVE}`;
export const SETUP_STAGING = `${REMOTE_STAGING}/nginx-setup`;
export const FULL_BACKUP_PREFIX = "nginx-full-";
export const CONFIG_BACKUP_SUFFIX = ".backup.conf";
export const BACKUP_MARKER = ".backup";
export const FILE_TEST_COMMAND = "test -f";
export const REMOVE_FILE_COMMAND = "sudo rm -f";
export const PREVIEW_LENGTH = 1000;
export const TEST_COMMAND = "nginx -t";
export const ERROR_LOG_DIRECTIVE = "error_log";
export const LOG_SIZE_COMMAND = "sudo stat -c %s";
export const LOG_TAIL_COMMAND = "sudo tail -c +";
export const RELOAD_COMMAND = "systemctl reload-or-restart nginx";
export const STATUS_COMMAND = "systemctl is-active nginx";
export const SERVICE_ENABLE_COMMAND = "sudo systemctl enable nginx";
export const ACTIVE_STATUS = "active";
export const CONFIG_MODE = "644";
export const CONFIG_OWNER = "root:root";
export const NGINX_SOURCE: SourceArchive & { readonly upstream: string } = {
archive: "https://nginx.org/download/nginx-1.30.4.tar.gz",
folder: "nginx-1.30.4",
sha256: "4261dc90e9e47c1c4041276e9aaa3d48ebe2e664f728e14fa95ae6c67d57a08b",
upstream: "1.30.4",
};
export const NGINX_PACKAGE = "nginx";
export const MODULE_PACKAGES: readonly string[] = ["nginx-module-njs", "libnginx-mod-brotli"];
export const PACKAGE_SOURCES: readonly PackageSource[] = [
{ base: "https://nginx.org/packages/ubuntu/", component: "nginx" },
{ base: "https://packagecloud.io/DaryL/libnginx-mod-brotli-stable/ubuntu/", component: "main" },
];
export const SOURCE_MODULES: readonly SourceModule[] = [
{
archive: "https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.40.tar.gz",
folder: "headers-more-nginx-module-0.40",
object: "ngx_http_headers_more_filter_module.so",
sha256: "c14cb5e6c998590c209efbf77bd7637ce2cab02332e4192756a8af5b26ba4284",
version: "0.40",
},
];
export const BUILD_PACKAGES: readonly string[] = ["build-essential", "libpcre2-dev", "zlib1g-dev"];
export const MODULES_FOLDER = "/usr/lib/nginx/modules";
export const BUILD_MARKER_SUFFIX = ".build";
export const PREVIOUS_SUFFIX = ".previous";
export const MODULE_LOADERS: readonly ModuleLoader[] = [
{ file: `${NGINX_ROOT}/modules-enabled/50-mod-http-js.conf`, object: "ngx_http_js_module.so" },
{
file: `${NGINX_ROOT}/modules-enabled/50-mod-http-headers-more-filter.conf`,
object: "ngx_http_headers_more_filter_module.so",
},
];
export const CODENAME_COMMAND = '. /etc/os-release && echo "$VERSION_CODENAME"';
export const ARCHITECTURE_COMMAND = "dpkg --print-architecture";
export const PACKAGE_STATUS_COMMAND = "dpkg -s";
export const PACKAGE_VERSION_FIELD = "Version";
export const PACKAGE_STATUS_FIELD = "Status";
export const CONFIGURED_STATUS = "install ok installed";
const PACKAGE_LOCK_SECONDS = 600;
export const PACKAGE_LOCK_WAIT = `timeout ${String(PACKAGE_LOCK_SECONDS)} sh -c 'while sudo fuser /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/lib/apt/lists/lock > /dev/null 2>&1; do sleep 5; done'`;
const APT = `sudo DEBIAN_FRONTEND=noninteractive apt-get -o DPkg::Lock::Timeout=${String(PACKAGE_LOCK_SECONDS)} -o Dpkg::Options::=--force-confold -y -q`;
export const PACKAGE_INDEX_COMMAND = `${APT} update`;
export const PACKAGE_INSTALL_COMMAND = `${APT} --no-remove install`;
export const PACKAGE_REVERT_COMMAND = `${APT} --no-remove --allow-downgrades install`;
export const PACKAGE_REMOVE_COMMAND = `${APT} remove`;
export const PULL_COMMANDS: readonly string[] = ["pull", "download", "from-remote"];
export const PULL_FULL_COMMANDS: readonly string[] = ["pull-full", "full", "pull-all"];
export const PUSH_COMMANDS: readonly string[] = ["push", "upload", "to-remote"];