diff --git a/signoz/domain-signoz.sh b/signoz/domain-signoz.sh index 747ddf7..453d19f 100644 --- a/signoz/domain-signoz.sh +++ b/signoz/domain-signoz.sh @@ -13,6 +13,7 @@ if [ -z "$DOMAIN" ]; then fi URL="https://${DOMAIN}" +INTERNAL_URL="https://internal-${DOMAIN}" COMPOSE_FILE="${APP_DIR}/signoz/deploy/docker/docker-compose.yaml" set_env() { @@ -32,6 +33,7 @@ set_env() { set_env "SIGNOZ_GLOBAL_EXTERNAL_URL" "${URL}" ".services.signoz.environment" set_env "SIGNOZ_GLOBAL_INGESTION_URL" "${URL}" ".services.signoz.environment" +set_env "SIGNOZ_ALERTMANAGER_SIGNOZ_EXTERNAL_URL" "${URL}" ".services.signoz.environment" cat > /etc/caddy/Caddyfile << EOF ${URL} { @@ -45,6 +47,17 @@ ${URL}:4317 { ${URL}:4318 { reverse_proxy localhost:44318 } +${INTERNAL_URL} { + reverse_proxy localhost:8080 +} + +${INTERNAL_URL}:4317 { + reverse_proxy h2c://localhost:44317 +} + +${INTERNAL_URL}:4318 { + reverse_proxy localhost:44318 +} EOF echo "Caddyfile updated" diff --git a/signoz/install-signoz.sh b/signoz/install-signoz.sh index ea6928f..fd466e2 100644 --- a/signoz/install-signoz.sh +++ b/signoz/install-signoz.sh @@ -3,27 +3,40 @@ APP_NAME="signoz" APP_DIR="/var/excloud/apps" SCRIPT_DIR="/var/excloud/scripts" +POSTGRES_DSN="postgres://postgres:your_password@localhost:5432/signoz?sslmode=disable" +mkdir -p "${APP_DIR}" +mkdir -p "${SCRIPT_DIR}" + DOMAIN="${1}" + if [ -z "$DOMAIN" ]; then echo "Error: URL argument is required. Example:" >&2 - echo "domain-change.sh sub.example.com" >&2 + echo "install-signoz.sh sub.example.com" >&2 exit 1 fi + +JWT_SECRET=$(openssl rand -hex 16 | cut -c-32) + +if [ -f "${APP_DIR}/jwt-secret" ]; then + JWT_SECRET=$(cat ${APP_DIR}/jwt-secret) +else + echo $JWT_SECRET > ${APP_DIR}/jwt-secret +fi + SIGNOZ_DIR="${APP_DIR}/signoz" COMPOSE_FILE="${SIGNOZ_DIR}/deploy/docker/docker-compose.yaml" OTEL_SERVICE_PATH='.services["otel-collector"].ports' SIGNOZ_SERVICE_PATH=".services.signoz.ports" -mkdir -p "${APP_DIR}" -mkdir -p "${SCRIPT_DIR}" - apt-get install -y caddy yq -rm -rf ${SIGNOZ_DIR} -git clone -b main https://github.com/SigNoz/signoz.git ${SIGNOZ_DIR} -cd ${SIGNOZ_DIR}/deploy/docker +if git -C ${SIGNOZ_DIR} rev-parse 2>/dev/null; then + echo "Git repo exists" +else + git clone -b main https://github.com/SigNoz/signoz.git ${SIGNOZ_DIR} +fi -bash "${SCRIPT_DIR}/domain-signoz.sh" "${DOMAIN}" +cd ${SIGNOZ_DIR}/deploy/docker set_port() { local port_pair="$1" @@ -39,8 +52,27 @@ set_port() { fi } +set_env() { + local key="$1" + local value="$2" + local service_path="$3" + local env_pair="${key}=${value}" + + if yq "${service_path}" "$COMPOSE_FILE" | grep -q "${key}="; then + yq -yi "(${service_path}[] | select(type == \"string\" and test(\"^${key}=\"))) = \"${env_pair}\"" "$COMPOSE_FILE" + echo "Replaced: ${env_pair}" + else + yq -yi "${service_path} += [\"${env_pair}\"]" "$COMPOSE_FILE" + echo "Added: ${env_pair}" + fi +} + set_port "127.0.0.1:44317:4317" "$OTEL_SERVICE_PATH" set_port "127.0.0.1:44318:4318" "$OTEL_SERVICE_PATH" set_port "127.0.0.1:8080:8080" "$SIGNOZ_SERVICE_PATH" +set_env "SIGNOZ_TOKENIZER_JWT_SECRET" "${JWT_SECRET}" ".services.signoz.environment" +set_env "SIGNOZ_SQLSTORE_PROVIDER" "${JWT_SECRET}" ".services.signoz.environment" +set_env "SIGNOZ_SQLSTORE_POSTGRES_DSN" "${POSTGRES_DSN}" ".services.signoz.environment" -docker compose -f $COMPOSE_FILE up -d --remove-orphans + +bash "${SCRIPT_DIR}/domain-signoz.sh" "${DOMAIN}"