Files
topsysops-app/.env.example
T
ogrechkoandClaude Sonnet 5 130c5382cd Initial commit: TopSysOps site + admin panel
Multi-page public site (Next.js), Node/Express backend with Postgres,
and Vite admin/account app, restructured from a single-page layout
into dedicated service, promotions, cases, about, FAQ, and blog pages
for SEO.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013otXCiTZsxdZ4SJKZ9wUky
2026-08-25 23:12:16 +03:00

77 lines
4.8 KiB
Bash

# Скопируйте этот файл в .env и заполните реальными значениями:
# cp .env.example .env
# --- PostgreSQL ---
POSTGRES_DB=topsysops
POSTGRES_USER=topsysops
POSTGRES_PASSWORD=change-me-to-a-long-random-password
# --- Бэкенд ---
# Длинная случайная строка для подписи сессионных JWT-токенов.
# Сгенерировать: openssl rand -hex 32
JWT_SECRET=change-me-to-a-long-random-string
# Логин и пароль первого администратора. Создаются один раз при первом
# запуске (если таблица admin_users пуста) - после этого меняются только
# из самой админ-панели (Настройки -> Сменить пароль).
ADMIN_USERNAME=admin
ADMIN_PASSWORD=change-me-to-a-strong-password
# Оставьте true в проде (сайт работает по HTTPS через Caddy).
# Поставьте false, только если временно открываете сайт по http:// без домена
# (например, тестируете по IP-адресу сервера) - иначе браузер не примет cookie.
COOKIE_SECURE=true
# --- Домен / Caddy ---
# Вариант А - Caddy сам получает и продлевает сертификат Let's Encrypt (нет
# внешнего реверс-прокси перед контейнером):
# DOMAIN=top-sysops.ru
# Вариант Б - перед контейнером уже стоит свой реверс-прокси со своим
# сертификатом (Nginx Proxy Manager, обычный nginx и т.п.), который проксирует
# сюда по обычному http. В этом случае ОБЯЗАТЕЛЬНО добавьте схему http:// -
# иначе Caddy сам попытается сделать редирект на https и получится
# бесконечный редирект ("too many redirects"):
# DOMAIN=http://top-sysops.ru
# Вариант В - тестируете по IP сервера, без домена и без HTTPS вообще:
# DOMAIN=:80
DOMAIN=http://top-sysops.ru
# Порт, на котором Caddy отдаёт сайт наружу (обычный http, без TLS - шифрование
# на внешнем реверс-прокси). Настройте этот же порт как target в Nginx Proxy
# Manager (Proxy Host -> Forward Hostname/IP: адрес сервера, Forward Port: это
# значение).
HTTP_PORT=7778
# Порт для HTTPS - нужен только в варианте А (Caddy сам управляет сертификатом).
# В варианте Б (ваш случай, внешний реверс-прокси) он не используется вообще -
# в docker-compose.yml проброс "443:443" уже закомментирован по умолчанию.
HTTPS_PORT=443
# --- Чат поддержки на публичном сайте ---
# Выберите один провайдер: topticket, chatwoot или none (чат выключен).
# Смена значения требует пересборки: docker compose up -d --build nextjs
CHAT_PROVIDER=topticket
# Если CHAT_PROVIDER=topticket - embed-сниппет вашей собственной разработки
# TopTicket: <script src="..." data-key="..." async>.
# URL и ключ ниже уже вписаны под help.top-sysops.ru.
TOPTICKET_WIDGET_URL=https://help.top-sysops.ru/widget.js
TOPTICKET_WIDGET_KEY=EBpDS4JqT7a-_MzZ
# Если CHAT_PROVIDER=chatwoot - адрес инсталляции и Website Token
# (Chatwoot -> Inboxes -> ваш website-инбокс -> Settings -> вкладка Configuration).
CHATWOOT_BASE_URL=https://chat.lamlaba.ru
CHATWOOT_WEBSITE_TOKEN=
# --- ИИ-ассистент в админ-панели (OpenRouter) ---
# Внутренний инструмент для сотрудников (раздел "ИИ-ассистент" в админке).
# Ключ и модель просто оставьте пустыми/по умолчанию, если ассистент не нужен -
# раздел покажет предупреждение и не будет пытаться обращаться к API.
# Получить ключ: https://openrouter.ai/keys
OPENROUTER_API_KEY=
# Любая модель, доступная в вашем аккаунте OpenRouter, например:
# openai/gpt-4o-mini, anthropic/claude-3.5-haiku, google/gemini-2.0-flash-001
OPENROUTER_MODEL=openai/gpt-4o-mini
# Используется как базовый URL в sitemap.xml и в заголовке HTTP-Referer
# запросов к OpenRouter. Укажите реальный домен сайта.
PUBLIC_SITE_URL=https://top-sysops.ru