summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorprospanclaudebot <[email protected]>2026-07-10 22:10:31 +0000
committerprospanclaudebot <[email protected]>2026-07-10 22:10:31 +0000
commit966b62d9bd7e483f1e9484a5a99d8c2db475171c (patch)
treedf3a27730963d68d515272b4246dc79d96945744 /README.md
downloadpacan-git-main.tar.gz
pacan-git-main.zip
initial import: pacan-gitHEADmain
Diffstat (limited to 'README.md')
-rw-r--r--README.md45
1 files changed, 45 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..078f2a8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,45 @@
+# Пацанский Гит 🏴‍☠️
+
+Минимальный self-hosted git: **телеграм-бот** рулит репозиториями, **cgit** их показывает,
+**git-http-backend** отдаёт clone/push, **cloudflared** пробрасывает наружу. Всё в докере.
+
+```
+tg-бот ──создаёт/удаляет──▶ /repos (bare) ◀──показывает── cgit ──┐
+ ├─ nginx ─ cloudflared ─▶ git.ancap.in.ua
+git push/clone ──HTTP──▶ git-http-backend ────────────────────────┘
+```
+
+## Запуск
+
+1. `cp .env.example .env` и заполни: `BOT_TOKEN`, `ADMINS`, `PUBLIC_URL`, `TUNNEL_TOKEN`.
+2. В Cloudflare Zero Trust создай туннель, public hostname `git.ancap.in.ua` → service `http://web:80`, вставь token в `.env`.
+3. `docker compose up -d --build`
+
+## Бот
+
+Репозитории живут под **неймспейсом юзера** (`<юзер>/<репо>.git`, юзер = @username).
+- `/new имя [описание]` — создать репо у себя
+- `/mine` — свои репо · `/list` — все (по владельцам) · `/info имя`
+- `/del имя confirm` — удалить своё
+- `/addkey ssh-ed25519 AAAA... коммент` — добавить ssh-ключ
+- `/keys` · `/delkey N`
+
+Вайтлист: `WHITELIST_CHAT` = id чата, бот должен быть в него добавлен.
+
+## Работа с репо
+
+По HTTP (через cloudflared-туннель):
+```
+git clone https://git.ancap.in.ua/юзер/имя.git
+```
+
+По SSH (ключи добавляются ботом, пуш только в свой неймспейс):
+```
+git clone ssh://[email protected]:2222/юзер/имя.git
+# или: git clone [email protected]:юзер/имя.git (для порта 22)
+```
+Браузить (cgit, тёмная тема): `https://git.ancap.in.ua/юзер/имя/`
+
+⚠️ **SSH через cloudflared HTTP-туннель не ходит** — для ssh пробрось порт `SSH_PORT`
+наружу напрямую или отдельным TCP-туннелем. HTTP-пуш открыт (`GIT_HTTP_EXPORT_ALL`);
+хочешь авторизацию и по HTTP — навесь `auth_basic` в `web/nginx.conf`.