Compare commits

..

4 Commits

2 changed files with 14 additions and 237 deletions

View File

@ -49,7 +49,7 @@ services:
- traefik.http.middlewares.global-stripprefix2.replacepathregex.replacement=/$$2
sah:
image: ${REG}/cc/sah:latest
image: ${REG}/cc/sah:0.0.3
volumes:
- ./sah/data:/data
environment:
@ -60,7 +60,7 @@ services:
- "traefik.http.services.sah.loadbalancer.server.port=80"
portainer:
image: portainer/portainer-ce:latest
image: portainer/portainer-ce:2.19.1
environment:
- PORTAINER_HTTP_ENABLED=true
volumes:
@ -157,7 +157,7 @@ services:
# --- Plugins services ---
metabase:
image: metabase/metabase:latest
image: metabase/metabase:v0.57.6.2
restart: always
environment:
- MB_JETTY_PORT=3000
@ -174,6 +174,12 @@ services:
image: n8nio/n8n:1.121.2
container_name: n8n
restart: unless-stopped
volumes:
- ./n8n/home:/home/node/.n8n
# патчи для лицензии
- ./n8n/patch/license.js:/usr/local/lib/node_modules/n8n/dist/license.js
- ./n8n/patch/license-state.js:/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+backend-common@file+packages+@n8n+backend-common/node_modules/@n8n/backend-common/dist/license-state.js
- ./n8n/patch/frontend.service.js:/usr/local/lib/node_modules/n8n/dist/services/frontend.service.js
environment:
- N8N_PORT=5678
- N8N_SECURE_COOKIE=false
@ -187,6 +193,9 @@ services:
labels:
- "traefik.http.routers.n8n.rule=Host(`n8n.${DOMAIN}`)"
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
- "traefik.http.routers.n8n-internal.rule=Host(`app.${DOMAIN}`) && PathPrefix(`/n8n/`)"
- "traefik.http.routers.n8n-internal.middlewares=global-stripprefix"
jupyter:
image: jupyter/datascience-notebook:latest

View File

@ -1,233 +1 @@
#!/bin/sh
REG=git.sys.smsynergy.ru
VERSION=v0.0.1
. ./.env
echo $DOMAIN
set -e
echo "=========================================="
echo " Установка системы Panorama Analytics"
echo "=========================================="
echo ""
# Проверка наличия необходимых утилит
if ! command -v docker >/dev/null 2>&1; then
echo "Установка Docker..."
apk add --no-cache docker docker-compose
rc-update add docker boot
service docker start
sleep 2
fi
# Запрос DOMAIN
if [ -z "$DOMAIN" ]; then
echo -n "Введите домен для запуска системы Panorama Analytics (например: example.com): "
read DOMAIN
if [ -z "$DOMAIN" ]; then
echo "Ошибка: DOMAIN обязателен для продолжения"
exit 1
fi
else
echo "DOMAIN: $DOMAIN"
fi
# Запрос токена (для доступа к git registry)
if [ -z "$REG_USER" ]; then
echo -n "Введите логинт для доступа к git registry: "
read REG_USER
if [ -z "$REG_USER" ]; then
echo "Ошибка: логин обязателен для продолжения"
exit 1
fi
fi
if [ -z "$REG_PASS" ]; then
echo -n "Введите пароль для доступа к git registry: "
read REG_PASS
if [ -z "$REG_PASS" ]; then
echo "Ошибка: пароль обязателен для продолжения"
exit 1
fi
fi
echo ""
echo "Настройка окружения..."
# Создаем .env файл
cat > .env <<EOF
# --- Infrastructure
DOMAIN=${DOMAIN}
REG=git.sys.smsynergy.ru
REG_USER=${REG_USER}
REG_PASS=${REG_PASS}
# --- Databases
EOF
echo ".env файл создан"
# Логин в Docker registry
echo ""
echo "Авторизация в Docker registry..."
echo "$REG_PASS" | docker login $REG -u $REG_USER --password-stdin
if [ $? -ne 0 ]; then
echo "Ошибка: не удалось авторизоваться в Docker registry"
exit 1
fi
echo "Авторизация успешна"
# Скачивание docker-compose.yml
echo ""
echo "Скачивание docker-compose.yml версии ${VERSION}..."
# Пробуем скачать из git репозитория
# Пробуем разные варианты URL
DOWNLOADED=0
# Создаем базовую HTTP аутентификацию (Base64)
AUTH_BASE64=$(printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64 -w 0 2>/dev/null || printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64)
for COMPOSE_URL in \
"https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/src/tag/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/-/raw/${VERSION}/dev/docker-compose.yml" \
"https://${REG}/cc/deploy/-/blob/${VERSION}/dev/docker-compose.yml?format=raw"; do
echo "Попытка скачать: ${COMPOSE_URL}"
# Пробуем с базовой HTTP аутентификацией через заголовок (для BusyBox wget)
echo "Попытка с Basic Auth..."
if wget --header="Authorization: Basic ${AUTH_BASE64}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
# Проверяем, что это не HTML страница с ошибкой
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с URL: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
echo "Предупреждение: скачанный файл не похож на docker-compose.yml"
cat docker-compose.yml | head -5
rm -f docker-compose.yml
fi
fi
else
HTTP_CODE=$(grep -o "HTTP/[0-9.]* [0-9]*" /tmp/wget_output.log 2>/dev/null | tail -1 | awk '{print $2}' || echo "unknown")
if [ "$HTTP_CODE" != "unknown" ]; then
echo "HTTP код: ${HTTP_CODE}"
fi
if [ -f /tmp/wget_output.log ]; then
echo "Вывод wget:"
cat /tmp/wget_output.log | tail -3
fi
fi
# Пробуем с токеном в заголовке
echo "Попытка с токеном в заголовке..."
if wget --header="Authorization: token ${REG_PASS}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с токеном: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
# Пробуем с Bearer токеном
echo "Попытка с Bearer токеном..."
if wget --header="Authorization: Bearer ${REG_PASS}" -O docker-compose.yml "${COMPOSE_URL}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с Bearer токеном: ${COMPOSE_URL}"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
# Пробуем с URL содержащим credentials (для некоторых систем)
COMPOSE_URL_WITH_AUTH="https://${REG_USER}:${REG_PASS}@${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml"
if [ "$COMPOSE_URL" = "https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml" ]; then
echo "Попытка с credentials в URL..."
if wget -O docker-compose.yml "${COMPOSE_URL_WITH_AUTH}" 2>&1 | tee /tmp/wget_output.log; then
if [ -f "docker-compose.yml" ] && [ -s "docker-compose.yml" ]; then
if head -1 docker-compose.yml | grep -q "services:"; then
echo "docker-compose.yml успешно скачан с credentials в URL"
DOWNLOADED=1
break
else
rm -f docker-compose.yml
fi
fi
fi
fi
echo ""
done
if [ $DOWNLOADED -eq 0 ]; then
echo ""
echo "=========================================="
echo "ОШИБКА: не удалось скачать docker-compose.yml"
echo "=========================================="
echo "Проверьте:"
echo "1. Правильность версии: ${VERSION}"
echo "2. Доступность репозитория: ${REG}/cc/deploy"
echo "3. Правильность логина и пароля"
echo "4. Существование файла: dev/docker-compose.yml в указанной версии"
echo ""
echo "Попробуйте вручную:"
AUTH_B64=$(printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64 -w 0 2>/dev/null || printf "%s:%s" "${REG_USER}" "${REG_PASS}" | base64)
echo "wget --header=\"Authorization: Basic ${AUTH_B64}\" -O docker-compose.yml \"https://${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml\""
echo "или:"
echo "wget -O docker-compose.yml \"https://${REG_USER}:${REG_PASS}@${REG}/cc/deploy/raw/tag/${VERSION}/dev/docker-compose.yml\""
exit 1
fi
# Проверка наличия docker-compose.yml
if [ ! -f "docker-compose.yml" ]; then
echo "Ошибка: docker-compose.yml не найден"
exit 1
fi
# Запуск docker-compose
echo ""
echo "Запуск контейнеров..."
docker-compose up -d
if [ $? -ne 0 ]; then
echo "Ошибка: не удалось запустить контейнеры"
exit 1
fi
# Ожидание запуска сервисов
echo ""
echo "Ожидание запуска сервисов..."
sleep 5
# Проверка статуса
echo ""
echo "Статус контейнеров:"
docker-compose ps
echo ""
echo "=========================================="
echo " Установка завершена!"
echo "=========================================="
echo ""
echo "Зайдите на http://sah.${DOMAIN} для продолжения"
echo ""
wget https://git.sys.smsynergy.ru/public/setup/raw/branch/main/dev/docker-compose.yml -O docker-compose.yml