# Мінімалістичний гостьовий репозиторій Git

Я тут давно експериментую з різними форматами публікації коду Git, наприклад:
=> radicle-is-decentralized-p2p-git-dvcs.gmi Radicle: децентралізований P2P хостинг Git/DVCS

Але все це "товсті", голодні до CPU та пропускного каналу крипто-цяцьки. Все-таки, я бачу оптимальним хостинг власного репозиторію на своєму сервері: допоки він живий - качайте, децентралізуйте (Git по своїй природі такий)

От я в принципі вирішив опублікувати дзеркало індексу Crates для проксі Kellnr:
=> rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr

Доступні платформи типу Gitea, Forgejo і навіть штатний httpd - це про сошл, а мені потрібно просто віддати код.

``` bash
sudo dnf install git-daemon
```

Створімо умовний публічний корінь, де лежатиме репозиторій:

``` bash
mkdir /path/to/git
```

Копіюємо до нього репозиторій з файлової системи або клонуємо віддалений:

``` bash
cd /path/to/git
git clone https://github.com/rust-lang/crates.io-index.git
```

Відкривши на фаєрволі стандартний порт 9418/TCP, запускаємо сервер:

``` bash
git daemon --verbose --base-path=/path/to/git --listen=0.0.0.0 --reuseaddr --export-all
```
* аргумент `--verbose` потрібен тільки для відлагодження
* аргумент `--export-all` автоматично зробить підтеки репозиторії доступними за псевдонімом (у цьому випадку `crates.io-index.git`)
* якщо не вказувати `--export-all`, тоді потрібно додати до кореня цільового репозиторію файл `git-daemon-export-ok`

Ось власне і все! Забрати репозиторій (доступний виключно на читання) можна командою:

``` bash
git clone git://0.0.0.0/crates.io-index.git
```
* `0.0.0.0` - ваш IP