name: pacan-git services: web: # cgit (браузинг) + git-http-backend (clone/push) build: ./web volumes: - repos:/repos expose: - "80" restart: unless-stopped bot: # телеграм-бот: /new /list /info /del build: ./bot environment: BOT_TOKEN: ${BOT_TOKEN:?нужен токен от @BotFather} ADMINS: ${ADMINS:-} WHITELIST_CHAT: ${WHITELIST_CHAT:-} PUBLIC_URL: ${PUBLIC_URL:-https://git.ancap.in.ua} SSH_HOST: ${SSH_HOST:-} REPOS_DIR: /repos KEYS_DIR: /keys GIT_NS: /usr/local/bin/git-ns # форс-команда в authorized_keys (её читает ssh-сервис) volumes: - repos:/repos - keys:/keys restart: unless-stopped tunnel: # cloudflared: git.ancap.in.ua -> http://web:80 (HTTP) image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN:?нужен cloudflared tunnel token} restart: unless-stopped ssh: # git по ssh-ключам: пуш только в свой неймспейс build: ./ssh volumes: - repos:/repos - keys:/keys ports: - "${SSH_PORT:-2222}:22" # SSH через HTTP-туннель не ходит — пробрось порт или свой TCP-туннель restart: unless-stopped volumes: repos: keys: