blob: bf0e5fb4e134bc74679bfa3cb8b78b31c9ee5fb9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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:
|