feat: публикация наружу через Cloudflare Quick Tunnel (cloudflared)
This commit is contained in:
@@ -14,3 +14,13 @@ AI_MODEL_REPO=Qwen/Qwen2.5-1.5B-Instruct-GGUF
|
||||
AI_PROMPT=Ты — редактор текстов. Исправь ТОЛЬКО грамматические, орфографические и пунктуационные ошибки в тексте. Приведи к правильному регистру буквы. НЕ меняй слова, структуру предложений, стиль или смысл текста. Верни ТОЛЬКО исправленный текст без пояснений.
|
||||
# Таймаут запроса к AI (мс), по умолчанию 120000 (2 минуты)
|
||||
AI_REQUEST_TIMEOUT_MS=120000
|
||||
|
||||
# === Cloudflare Tunnel (контейнер cloudflared) ===
|
||||
# По умолчанию — Quick Tunnel на trycloudflare.com: случайный публичный URL,
|
||||
# адрес печатается в логах: docker compose logs -f cloudflared.
|
||||
# Чтобы привязать свой домен, замените command сервиса cloudflared
|
||||
# в docker-compose.yml на: command: ["tunnel", "run", "--token", "${CLOUDFLARE_TUNNEL_TOKEN}"]
|
||||
# (токен вида "eyJ..." создаётся в Cloudflare Zero Trust -> Networks -> Tunnels).
|
||||
CLOUDFLARE_TUNNEL_TOKEN=
|
||||
# Внутренний адрес приложения, на который указывает Quick Tunnel.
|
||||
CLOUDFLARE_TUNNEL_URL=http://app:3003
|
||||
@@ -172,6 +172,18 @@ docker exec whatido-tailscale-1 tailscale funnel status
|
||||
|
||||
Исторически проект публиковался через reverse-proxy Caddy + Let's Encrypt (файлы `Caddyfile.example`, закомментированный сервис в старых версиях compose). Если нужно классическое публичное HTTPS на собственном домене с проброшенными портами 80/443 — этот вариант остаётся возможным: раскомментируйте/восстановите сервис `caddy`, укажите домен в `Caddyfile` и уберите сетевые блокировки. По умолчанию сейчас рекомендуется Tailscale-схема выше.
|
||||
|
||||
## Публикация наружу через Cloudflare (Quick Tunnel)
|
||||
|
||||
Помимо Tailscale, стек умеет публиковать приложение через контейнер `cloudflared` (сервис в `docker-compose.yml`). **Quick Tunnel** даёт случайный публичный адрес `*.trycloudflare.com` через Cloudflare — без своего домена, банковской карты и проброса портов (подойдёт, если Zero Trust требует привязать карту).
|
||||
|
||||
Узнать текущий адрес для доступа:
|
||||
|
||||
```bash
|
||||
docker compose logs cloudflared | grep trycloud
|
||||
```
|
||||
|
||||
Адрес меняется при каждом перезапуске контейнера `cloudflared`. Для постоянного адреса используйте именованный туннель (замените `command` сервиса `cloudflared` в `docker-compose.yml` на `["tunnel", "run", "--token", "${CLOUDFLARE_TUNNEL_TOKEN}"]`, токен — из Cloudflare Zero Trust **Networks → Tunnels**) или схему через Tailscale выше.
|
||||
|
||||
## Структура данных
|
||||
|
||||
- `groups` — группы, расписание (`day_of_week`, `time_start`, `time_end`)
|
||||
|
||||
@@ -65,6 +65,24 @@ services:
|
||||
# depends_on:
|
||||
# - app
|
||||
|
||||
# Публикация наружу через Cloudflare Tunnel (cloudflared), Quick Tunnel:
|
||||
# случайный публичный URL *.trycloudflare.com, который печатается в логах:
|
||||
# docker compose logs -f cloudflared
|
||||
# ВАЖНО: официальный образ cloudflare/cloudflared НЕ содержит /bin/sh,
|
||||
# поэтому логика передаётся аргументами в command (entrypoint образа = cloudflared),
|
||||
# а не скриптом.
|
||||
# Для именованного туннеля на свой домен замените command ниже на:
|
||||
# command: ["tunnel", "run", "--token", "${CLOUDFLARE_TUNNEL_TOKEN}"]
|
||||
# (токен получается в Cloudflare Zero Trust -> Networks -> Tunnels).
|
||||
cloudflared:
|
||||
image: cloudflare/cloudflared:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TZ: Europe/Moscow
|
||||
command: ["tunnel", "--url", "${CLOUDFLARE_TUNNEL_URL:-http://app:3003}"]
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
|
||||
text-corrector:
|
||||
image: ghcr.io/ggml-org/llama.cpp:server
|
||||
|
||||
Reference in New Issue
Block a user