diff --git a/Caddyfile b/Caddyfile index cd87cc3d2ba8392236d92e5c64a2a28af6884fba..00570a4ee3932d72741ec63efc714bbbd086260b 100644 --- a/Caddyfile +++ b/Caddyfile @@ -8,7 +8,7 @@ # this machine's public IP, then replace ":80" below with your # domain name. -portal.thriwe.shepherd.watch { +PORTAL_DOMAIN_NAME { # Set this path to your site's directory. # root * /var/www @@ -25,14 +25,14 @@ portal.thriwe.shepherd.watch { # php_fastcgi localhost:9000 } -one.thriwe.shepherd.watch { +ONEAPI_DOMAIN_NAME { reverse_proxy localhost:8081 log { output file /var/logs/caddy/oneapi-access.log } } -metrics.thriwe.shepherd.watch { +METRICS_DOMAIN_NAME { reverse_proxy /* localhost:3000 reverse_proxy /api/live/* localhost:3000 @@ -45,7 +45,7 @@ metrics.thriwe.shepherd.watch { } } -adm.thriwe.shepherd.watch { +ADM_DOMAIN_NAME { reverse_proxy localhost:8000 log { output file /var/logs/caddy/adm-access.log diff --git a/docker-compose.yml b/docker-compose.yml index 0511e8d10dcb5fe18e79b46e7191a5de952ce624..af46e37b245bcb1787ed4b1986b723439f9c8aad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -251,7 +251,7 @@ services: max-size: "200m" max-file: "2" keep-file: "false" - loki-external-labels: "job={{.Name}},version=${v1.90.0},public_teamspace_id=${PUBLIC_TEAMSPACE_ID}" + loki-external-labels: "job={{.Name}},version=v1.90.0,public_teamspace_id=${PUBLIC_TEAMSPACE_ID}" # Alertmanager # Running on port 9093 @@ -276,7 +276,7 @@ services: max-size: "200m" max-file: "2" keep-file: "false" - loki-external-labels: "job={{.Name}},version=${v0.27.0},public_teamspace_id=${PUBLIC_TEAMSPACE_ID}" + loki-external-labels: "job={{.Name}},version=v0.27.0,public_teamspace_id=${PUBLIC_TEAMSPACE_ID}" # ADM Required scep: diff --git a/setup-debian.sh b/setup-debian.sh index d18570bfa5f6f9fde096892bf089fd202a1b74e3..c1e2dd0d55a4906388647bade8fe8a4e6eccc086 100755 --- a/setup-debian.sh +++ b/setup-debian.sh @@ -15,7 +15,7 @@ is_active() { echo "$service service is running." else echo "$service service is not running. Trying to restart..." - sudo systemctl start $service + sudo systemctl start "$service" if sudo systemctl is-active "$service" >/dev/null; then echo "Successfully started service $service." else @@ -35,24 +35,28 @@ update_env_variable() { sed -i "s/^$variable_name=.*/$variable_name=$variable_value/" "$file_path" } -extract_env_variable() { +# Replace variable +replace_variable() { local variable_name="$1" - local source_file_path="$2" - local destination_file_path="$3" - - # Use grep to find the line containing the variable - local variable_line=$(grep "^$variable_name=" "$source_file_path") - - if [ -n "$variable_line" ]; then - # Use cut to extract the value of the variable - local variable_value=$(echo "$variable_line" | cut -d '=' -f 2-) - - # Write the value to the destination file - echo "$variable_value" > "$destination_file_path" - - echo "Extracted value of $variable_name from $source_file_path: $variable_value" + local variable_value="$2" + local file_path="$3" + + # Replace variable in the file + sed -i "s/\${$variable_name}/$variable_value/g" "$file_path" +} + +extract_env_value_or_exit() { + local variable_name="$1" + local file_name="$2" + + # Use grep to find the line containing the variable and cut to extract its value + local variable_value=$(grep "^$variable_name=" "$file_name" | cut -d '=' -f 2- | head -n 1) + + if [ -n "$variable_value" ]; then + echo "$variable_value" else - echo "Variable $variable_name not found in $source_file_path." + echo "Variable $variable_name not found in $file_name." >&2 + exit 1 fi } @@ -119,6 +123,10 @@ ENV_THRIWE_PATH="$PROJECT_PATH/.env.thriwe" ENV_PATH="$PROJECT_PATH/.env" ENV_ALERTMANAGER_URL_PATH="$PROJECT_PATH/.alertmanager-url" ENV_ALERTMANAGER_SECRET_PATH="$PROJECT_PATH/.alertmanager-secret" +ENV_VIMACOG_GEN="$PROJECT_PATH/vimacog/.env-gen" +ENV_VIMACOG_HARD_GEN="$PROJECT_PATH/vimacog/.env-hard-gen" + +CADDYFILE_PATH="$PROJECT_PATH/Caddyfile" SCRIPT_PATH="$PROJECT_PATH/setup-debian.sh" SCRIPT_LOG_PATH="$PROJECT_PATH/cron-logs/setup-debian-cron.log" @@ -131,12 +139,16 @@ VIMACOG_GEN_PATH="$PROJECT_PATH/vimacog/vimacog-gen.sh" VIMACOG_GEN_LOG_PATH="$PROJECT_PATH/cron-logs/vimacog-gen-cron.log" VIMACOG_GEN_JOB="*/1 * * * * $VIMACOG_GEN_PATH >> $VIMACOG_GEN_LOG_PATH 2>&1" VIMACOG_GEN_EXISTS=$(crontab -l | grep -F "$VIMACOG_GEN_PATH" | grep -v grep | wc -l) +VIMACOG_GEN_LOG_DIR="$PROJECT_PATH/vimacog/gen-logs/" +VIMACOG_GEN_BACKUP_DIR="$PROJECT_PATH/vimacog/gen-backup/" # NOTE: If this path is changed, change in `./vimacog/vimacog-hard-gen.sh` VIMACOG_HARD_GEN_PATH="$PROJECT_PATH/vimacog/vimacog-hard-gen.sh" VIMACOG_HARD_GEN_LOG_PATH="$PROJECT_PATH/cron-logs/vimacog-hard-gen-cron.log" VIMACOG_HARD_GEN_JOB="0 0 * * * $VIMACOG_HARD_GEN_PATH >> $VIMACOG_HARD_GEN_LOG_PATH 2>&1" VIMACOG_HARD_GEN_EXISTS=$(crontab -l | grep -F "$VIMACOG_HARD_GEN_PATH" | grep -v grep | wc -l) +VIMACOG_HARD_GEN_LOG_DIR="$PROJECT_PATH/vimacog/hard-gen-logs/" +VIMACOG_HARD_GEN_BACKUP_DIR="$PROJECT_PATH/vimacog/hard-gen-backup/" # Check for Git updates & pull if updates are available # Returns whether to hard run or soft run @@ -144,10 +156,10 @@ VIMACOG_HARD_GEN_EXISTS=$(crontab -l | grep -F "$VIMACOG_HARD_GEN_PATH" | grep - setup_git() { echo "Checking for git updates..." cd "$PROJECT_PATH" || exit - git fetch origin setup-docker-deployment >/dev/null 2>&1 + git fetch origin main >/dev/null 2>&1 if [ "$(git rev-parse HEAD)" != "$(git rev-parse FETCH_HEAD)" ]; then # TODO: Change this to main branch - git pull origin setup-docker-deployment + git pull origin main echo "Repository updated. Applying updates..." # Ensure the scripts are executable after a potential update chmod +x "$SCRIPT_PATH" @@ -174,11 +186,44 @@ setup_env() { echo "Env file $ENV_THRIWE_PATH not found. Contact support@shepherd.watch in case of queries." exit 1 fi + echo "Checking for vimacog env files..." + if [ ! -f "$ENV_VIMACOG_GEN" ]; then + echo "Vimacog env file not found, generating $ENV_VIMACOG_GEN..." + echo "export LOG_FILE_DIR=${VIMACOG_GEN_LOG_DIR}" > "$ENV_VIMACOG_GEN" + echo "export BACKUP_FILE_DIR=${VIMACOG_GEN_BACKUP_DIR}" >> "$ENV_VIMACOG_GEN" + echo "export SENTRY_LINK=" >> "$ENV_VIMACOG_GEN" + + JWT_SIGNING_KEY=$(extract_env_value_or_exit "JWT_SIGNING_KEY" "$ENV_SUBCOM_PATH") + PUBLIC_TEAMSPACE_ID=$(extract_env_value_or_exit "PUBLIC_TEAMSPACE_ID" "$ENV_SUBCOM_PATH") + SHEPHERD_API_JRPC_URL=$(extract_env_value_or_exit "SHEPHERD_API_JRPC_URL" "$ENV_SUBCOM_PATH") + + echo "export JWT_SIGNING_KEY=$JWT_SIGNING_KEY" >> "$ENV_VIMACOG_GEN" + echo "export PUBLIC_TEAMSPACE_ID=$PUBLIC_TEAMSPACE_ID" >> "$ENV_VIMACOG_GEN" + echo "export SHEPHERD_API_JRPC_URL=$SHEPHERD_API_JRPC_URL" >> "$ENV_VIMACOG_GEN" + fi + if [ ! -f "$ENV_VIMACOG_HARD_GEN" ]; then + echo "Vimacog env file not found, generating $ENV_VIMACOG_HARD_GEN..." + echo "export LOG_FILE_DIR=${VIMACOG_HARD_GEN_LOG_DIR}" > "$ENV_VIMACOG_HARD_GEN" + echo "export BACKUP_FILE_DIR=${VIMACOG_HARD_GEN_BACKUP_DIR}" >> "$ENV_VIMACOG_HARD_GEN" + echo "export SENTRY_LINK=" >> "$ENV_VIMACOG_HARD_GEN" + + JWT_SIGNING_KEY=$(extract_env_value_or_exit "JWT_SIGNING_KEY" "$ENV_SUBCOM_PATH") + PUBLIC_TEAMSPACE_ID=$(extract_env_value_or_exit "PUBLIC_TEAMSPACE_ID" "$ENV_SUBCOM_PATH") + SHEPHERD_API_JRPC_URL=$(extract_env_value_or_exit "SHEPHERD_API_JRPC_URL" "$ENV_SUBCOM_PATH") + + echo "export JWT_SIGNING_KEY=$JWT_SIGNING_KEY" >> "$ENV_VIMACOG_HARD_GEN" + echo "export PUBLIC_TEAMSPACE_ID=$PUBLIC_TEAMSPACE_ID" >> "$ENV_VIMACOG_HARD_GEN" + echo "export SHEPHERD_API_JRPC_URL=$SHEPHERD_API_JRPC_URL" >> "$ENV_VIMACOG_HARD_GEN" + fi # Variables are updated here - extract_env_variable "ONEAPI_ALERTS_PUSH" "$ENV_THRIWE_PATH" "$ENV_ALERTMANAGER_URL_PATH" - extract_env_variable "BASIC_BEARER_TOKEN" "$ENV_THRIWE_PATH" "$ENV_ALERTMANAGER_SECRET_PATH" + ## Use this function only to update `alertmanager` env, not suitable for other extractions + ONEAPI_ALERTS_PUSH=$(extract_env_value_or_exit "ONEAPI_ALERTS_PUSH" "$ENV_THRIWE_PATH") + BASIC_BEARER_TOKEN=$(extract_env_value_or_exit "BASIC_BEARER_TOKEN" "$ENV_THRIWE_PATH") + echo "$ONEAPI_ALERTS_PUSH" > "$ENV_ALERTMANAGER_URL_PATH" + echo "$BASIC_BEARER_TOKEN" > "$ENV_ALERTMANAGER_SECRET_PATH" + # Update this to rollout new update update_env_variable "WEBZERO_VERSION" "0.4.0" "$ENV_SUBCOM_PATH" update_env_variable "REPORTS_ACCUMULATOR_VERSION" "0.1.0" "$ENV_SUBCOM_PATH" update_env_variable "REPORTS_CRUNCHER_VERSION" "0.1.0" "$ENV_SUBCOM_PATH" @@ -186,6 +231,16 @@ setup_env() { update_env_variable "TAG" "0.1.0" "$ENV_SUBCOM_PATH" update_env_variable "ONEAPI_VERSION" "2.1.0" "$ENV_SUBCOM_PATH" + # Caddy file replace + PORTAL_DOMAIN_NAME=$(extract_env_value_or_exit "PORTAL_DOMAIN_NAME" "$ENV_THRIWE_PATH") + ONEAPI_DOMAIN_NAME=$(extract_env_value_or_exit "ONEAPI_DOMAIN_NAME" "$ENV_THRIWE_PATH") + METRICS_DOMAIN_NAME=$(extract_env_value_or_exit "METRICS_DOMAIN_NAME" "$ENV_THRIWE_PATH") + ADM_DOMAIN_NAME=$(extract_env_value_or_exit "ADM_DOMAIN_NAME" "$ENV_THRIWE_PATH") + replace_variable "PORTAL_DOMAIN_NAME" "$PORTAL_DOMAIN_NAME" "$CADDYFILE_PATH" + replace_variable "ONEAPI_DOMAIN_NAME" "$ONEAPI_DOMAIN_NAME" "$CADDYFILE_PATH" + replace_variable "METRICS_DOMAIN_NAME" "$METRICS_DOMAIN_NAME" "$CADDYFILE_PATH" + replace_variable "ADM_DOMAIN_NAME" "$ADM_DOMAIN_NAME" "$CADDYFILE_PATH" + if [ ! -f "$ENV_PATH" ]; then echo "$ENV_PATH not found. Generating..." cat ./.env.subcom ./.env.thriwe > .env