gemlog/public/uk/kellnr-proxy-verification-using-local-index.gmi

41 lines
No EOL
3 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Не верифіковане проксі Kellnr на базі власного індексу
> Повний аудит рішення не проводився, зокрема обробка [config.json](https://github.com/rust-lang/crates.io-index/blob/master/config.json). Візуально, лічильники завантажень в ланцюгу проксі працюють коректно, підміна фіктивним індексом - не дозволяє оновлень.
У попередньому гайді, я описав базове встановлення Kellnr в режимі локального та віддаленого проксі сервера:
=> rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr
Утім, мені не давало спокою питання потенційної компрометації дзеркала, через що я декілька днів поспіль намагався відокремити індекс з контрольними сумами від джерела кешованих пакунків.
Нарешті, мені це вдалося. Схема з'єднання виглядає наступним чином:
```
crates.io > -|- out proxy > kellnr server > kellnr client > cargo
crates.io-index > _↑ |
↑_________________[--proxy-index]__________________↓
```
У цьому ланцюгу, `kellnr server` ми не довіряємо, оскільки той ходить через не відомий нам вихідний проксі. Натомість, піднімаємо додатковий локальний інстанс `kellnr client`, який звертається до першого але використовує власний `--proxy-index`:
``` /etc/systemd/system/kellnr.service
kellnr start \
--proxy-index https://index.crates.io/ \
--proxy-url http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8180/api/v1/cratesio/dl/ \
```
* це просто фрагмент команди `kellnr start` з файлу `/etc/systemd/system/kellnr.service`, де ми задіюємо офіційний індекс, але у вас це може бути локальне дзеркало репозиторію
* `http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8180` - не верифікований `kellnr server` на схемі
Відповідно, в локальному `~/.cargo/config.toml` вказуємо `kellnr client`, якому довіряємо:
``` ~/.cargo/config.toml
[registries.kellnr]
index = "sparse+http://127.0.0.1:8000/api/v1/cratesio/"
[source.crates-io]
replace-with = "kellnr"
[http]
timeout = 180
```
Нагадаю, що окремий індекс використовувати не обов'язково, якщо ваша копія проєкту містить файл `Cargo.lock` з хешами, що дозволяє звіряти їх аргументом `--locked`.