# Готовый образ: версия закреплена, данные сохраняются в соседних data/ и keys/. services: ssh-commander: image: ghcr.io/lexuss1979/ssh-commander:0.1.1 ports: - "127.0.0.1:8080:8080" # Диапазон портов для SSH-туннелей (локальный конец внутри контейнера). # Обе стороны маппинга используют одни переменные — источник истины один. - "127.0.0.1:${TUNNEL_PORT_MIN:-10000}-${TUNNEL_PORT_MAX:-10049}:${TUNNEL_PORT_MIN:-10000}-${TUNNEL_PORT_MAX:-10049}" environment: # Пусто = «не задан»: пароль сеется в data/settings.json при первом # старте или задаётся в onboarding; после первого старта env не читается. - APP_PASSWORD=${APP_PASSWORD:-} - AI_API_BASE=${AI_API_BASE:-https://api.deepseek.com/v1} - AI_API_KEY=${AI_API_KEY:-} - AI_MODEL=${AI_MODEL:-deepseek-v4-flash} - AI_MAX_STEPS=${AI_MAX_STEPS:-30} - AI_TEMPERATURE=${AI_TEMPERATURE:-0.2} - AI_SEARCH_API_BASE=${AI_SEARCH_API_BASE:-} - AI_SEARCH_MODEL=${AI_SEARCH_MODEL:-deepseek-v4-flash} - TUNNEL_PORT_MIN=${TUNNEL_PORT_MIN:-10000} - TUNNEL_PORT_MAX=${TUNNEL_PORT_MAX:-10049} volumes: - ./data:/data - ./keys:/keys restart: unless-stopped