diff --git a/ghost/domain.sh b/ghost/domain.sh new file mode 100644 index 0000000..4caaf63 --- /dev/null +++ b/ghost/domain.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +APP_NAME="ghost" +APP_DIR="/var/excloud/apps" +APP_UPSTREAM_PORT="${EXC_APP_UPSTREAM_PORT:-2368}" + +DOMAIN="${1}" + +if [ -z "${DOMAIN}" ]; then + echo "Error: URL argument is required. Example:" >&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +GHOST_DIR="${APP_DIR}/${APP_NAME}" +ENV_FILE="${GHOST_DIR}/.env" +OVERRIDE_FILE="${GHOST_DIR}/compose.override.yml" +ROOT_PASSWORD_FILE="${GHOST_DIR}/.database_root_password" +DATABASE_PASSWORD_FILE="${GHOST_DIR}/.database_password" + +if [ ! -f "${ROOT_PASSWORD_FILE}" ]; then + openssl rand -hex 32 > "${ROOT_PASSWORD_FILE}" +fi + +if [ ! -f "${DATABASE_PASSWORD_FILE}" ]; then + openssl rand -hex 32 > "${DATABASE_PASSWORD_FILE}" +fi + +DATABASE_ROOT_PASSWORD="$(cat "${ROOT_PASSWORD_FILE}")" +DATABASE_PASSWORD="$(cat "${DATABASE_PASSWORD_FILE}")" + +cat > "${ENV_FILE}" < "${OVERRIDE_FILE}" < /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +GHOST_DIR="${APP_DIR}/${APP_NAME}" + +apt-get install -y caddy git openssl + +if [ ! -d "${GHOST_DIR}/.git" ]; then + git clone "${REPO_URL}" "${GHOST_DIR}" +fi + +bash "${SCRIPT_DIR}/domain.sh" "${DOMAIN}" diff --git a/gitea/domain.sh b/gitea/domain.sh new file mode 100644 index 0000000..511ee7c --- /dev/null +++ b/gitea/domain.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +APP_NAME="gitea" +APP_DIR="/var/excloud/apps" +APP_UPSTREAM_PORT="${EXC_APP_UPSTREAM_PORT:-3000}" + +DOMAIN="${1}" + +if [ -z "${DOMAIN}" ]; then + echo "Error: URL argument is required. Example:" >&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +GITEA_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${GITEA_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${GITEA_DIR}" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +JELLYFIN_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${JELLYFIN_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${JELLYFIN_DIR}" +mkdir -p /srv/media/movies /srv/media/shows /srv/media/music + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +METABASE_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${METABASE_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${METABASE_DIR}" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +N8N_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${N8N_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${N8N_DIR}" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +NOCODB_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${NOCODB_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${NOCODB_DIR}" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +OPEN_WEBUI_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${OPEN_WEBUI_DIR}/docker-compose.yml" + +apt-get install -y caddy openssl +mkdir -p "${OPEN_WEBUI_DIR}" + +WEBUI_SECRET_KEY="$(openssl rand -hex 32)" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +OPENCLAW_DIR="${APP_DIR}/${APP_NAME}" +DATA_DIR="${OPENCLAW_DIR}/data" +CONFIG_DIR="${DATA_DIR}/config" +WORKSPACE_DIR="${DATA_DIR}/workspace" +TOKEN_FILE="${OPENCLAW_DIR}/.gateway_token" +ENV_FILE="${OPENCLAW_DIR}/.env" +LEGACY_OVERRIDE_FILE="${OPENCLAW_DIR}/compose.override.yml" + +mkdir -p "${CONFIG_DIR}/identity" +mkdir -p "${CONFIG_DIR}/agents/main/agent" +mkdir -p "${CONFIG_DIR}/agents/main/sessions" +mkdir -p "${WORKSPACE_DIR}" +chown -R 1000:1000 "${DATA_DIR}" + +if [ ! -f "${TOKEN_FILE}" ]; then + openssl rand -hex 32 > "${TOKEN_FILE}" +fi + +OPENCLAW_GATEWAY_TOKEN="$(cat "${TOKEN_FILE}")" + +cat > "${ENV_FILE}" < /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +OPENCLAW_DIR="${APP_DIR}/${APP_NAME}" + +apt-get install -y caddy git openssl + +if [ ! -d "${OPENCLAW_DIR}/.git" ]; then + git clone "${REPO_URL}" "${OPENCLAW_DIR}" +fi + +bash "${SCRIPT_DIR}/domain.sh" "${DOMAIN}" diff --git a/picoclaw/domain.sh b/picoclaw/domain.sh new file mode 100644 index 0000000..f9607ed --- /dev/null +++ b/picoclaw/domain.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +APP_NAME="picoclaw" +APP_DIR="/var/excloud/apps" +APP_UPSTREAM_PORT="${EXC_APP_UPSTREAM_PORT:-18800}" +APP_BRIDGE_PORT="${EXC_APP_BRIDGE_PORT:-18790}" + +DOMAIN="${1}" + +if [ -z "${DOMAIN}" ]; then + echo "Error: URL argument is required. Example:" >&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +PICOCLAW_DIR="${APP_DIR}/${APP_NAME}" +DATA_DIR="${PICOCLAW_DIR}/docker/data" +CONFIG_FILE="${DATA_DIR}/config.json" +OVERRIDE_FILE="${PICOCLAW_DIR}/docker/compose.override.yml" + +mkdir -p "${DATA_DIR}/workspace" + +if [ ! -f "${CONFIG_FILE}" ]; then + cp "${PICOCLAW_DIR}/config/config.example.json" "${CONFIG_FILE}" +fi + +cat > "${OVERRIDE_FILE}" < /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +PICOCLAW_DIR="${APP_DIR}/${APP_NAME}" + +apt-get install -y caddy git + +if [ ! -d "${PICOCLAW_DIR}/.git" ]; then + git clone "${REPO_URL}" "${PICOCLAW_DIR}" +fi + +bash "${SCRIPT_DIR}/domain.sh" "${DOMAIN}" diff --git a/plausible/domain.sh b/plausible/domain.sh new file mode 100644 index 0000000..9f39422 --- /dev/null +++ b/plausible/domain.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +APP_NAME="plausible" +APP_DIR="/var/excloud/apps" +APP_UPSTREAM_PORT="${EXC_APP_UPSTREAM_PORT:-8000}" + +DOMAIN="${1}" + +if [ -z "${DOMAIN}" ]; then + echo "Error: URL argument is required. Example:" >&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +PLAUSIBLE_DIR="${APP_DIR}/${APP_NAME}" +ENV_FILE="${PLAUSIBLE_DIR}/.env" +OVERRIDE_FILE="${PLAUSIBLE_DIR}/compose.override.yml" +SECRET_KEY_FILE="${PLAUSIBLE_DIR}/.secret_key_base" + +if [ ! -f "${SECRET_KEY_FILE}" ]; then + openssl rand -base64 48 > "${SECRET_KEY_FILE}" +fi + +SECRET_KEY_BASE="$(tr -d '\n' < "${SECRET_KEY_FILE}")" + +cat > "${ENV_FILE}" < "${OVERRIDE_FILE}" < /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +PLAUSIBLE_DIR="${APP_DIR}/${APP_NAME}" + +apt-get install -y caddy git openssl + +if [ ! -d "${PLAUSIBLE_DIR}/.git" ]; then + git clone -b "${REPO_REF}" --single-branch "${REPO_URL}" "${PLAUSIBLE_DIR}" +fi + +bash "${SCRIPT_DIR}/domain.sh" "${DOMAIN}" diff --git a/signoz/domain.sh b/signoz/domain.sh index fd78851..10270f5 100644 --- a/signoz/domain.sh +++ b/signoz/domain.sh @@ -38,26 +38,26 @@ set_env "SIGNOZ_ALERTMANAGER_SIGNOZ_EXTERNAL_URL" "${URL}" ".services.signoz.env cat > /etc/caddy/Caddyfile << EOF ${URL} { - reverse_proxy localhost:${APP_UPSTREAM_PORT} + reverse_proxy 127.0.0.1:${APP_UPSTREAM_PORT} } ${URL}:4317 { - reverse_proxy h2c://localhost:44317 + reverse_proxy h2c://127.0.0.1:44317 } ${URL}:4318 { - reverse_proxy localhost:44318 + reverse_proxy 127.0.0.1:44318 } # ${INTERNAL_URL} { -# reverse_proxy localhost:${APP_UPSTREAM_PORT} +# reverse_proxy 127.0.0.1:${APP_UPSTREAM_PORT} # } # # ${INTERNAL_URL}:4317 { -# reverse_proxy h2c://localhost:44317 +# reverse_proxy h2c://127.0.0.1:44317 # } # # ${INTERNAL_URL}:4318 { -# reverse_proxy localhost:44318 +# reverse_proxy 127.0.0.1:44318 # } EOF diff --git a/signoz/install.sh b/signoz/install.sh index 8d28ec7..92f04ed 100644 --- a/signoz/install.sh +++ b/signoz/install.sh @@ -17,14 +17,16 @@ if [ -z "$DOMAIN" ]; then 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" +JWT_SECRET_FILE="${SIGNOZ_DIR}/jwt-secret" + +mkdir -p "${SIGNOZ_DIR}" + +if [ -f "${JWT_SECRET_FILE}" ]; then + JWT_SECRET=$(cat "${JWT_SECRET_FILE}") +else + echo "${JWT_SECRET}" > "${JWT_SECRET_FILE}" +fi COMPOSE_FILE="${SIGNOZ_DIR}/deploy/docker/docker-compose.yaml" OTEL_SERVICE_PATH='.services["otel-collector"].ports' SIGNOZ_SERVICE_PATH=".services.signoz.ports" diff --git a/uptime-kuma/domain.sh b/uptime-kuma/domain.sh new file mode 100644 index 0000000..3a022ce --- /dev/null +++ b/uptime-kuma/domain.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +APP_NAME="uptime-kuma" +APP_DIR="/var/excloud/apps" +APP_UPSTREAM_PORT="${EXC_APP_UPSTREAM_PORT:-3001}" + +DOMAIN="${1}" + +if [ -z "${DOMAIN}" ]; then + echo "Error: URL argument is required. Example:" >&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +UPTIME_KUMA_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${UPTIME_KUMA_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${UPTIME_KUMA_DIR}" + +cat > "${COMPOSE_FILE}" <&2 + echo "domain.sh sub.example.com" >&2 + exit 1 +fi + +URL="https://${DOMAIN}" +COMPOSE_FILE="${APP_DIR}/${APP_NAME}/docker-compose.yml" + +cat > /etc/caddy/Caddyfile <&2 + echo "install.sh sub.example.com" >&2 + exit 1 +fi + +VAULTWARDEN_DIR="${APP_DIR}/${APP_NAME}" +COMPOSE_FILE="${VAULTWARDEN_DIR}/docker-compose.yml" + +apt-get install -y caddy +mkdir -p "${VAULTWARDEN_DIR}" + +cat > "${COMPOSE_FILE}" <