diff --git a/public/uk/index.gmi b/public/uk/index.gmi index 6d46e14..38463f1 100644 --- a/public/uk/index.gmi +++ b/public/uk/index.gmi @@ -16,6 +16,7 @@ ### Нотатки +=> kellnr-proxy-verification-using-local-index.gmi 2026-02-28 Не верифіковане проксі Kellnr на базі власного індексу => rust-crates-mirroring-with-kellnr.gmi 2026-02-25 Організація локального дзеркала залежностей Cargo з Kellnr => radicle-p2p-traffic-leak-prevention.gmi 2026-02-24 Radicle: обмеження витоків пірингового трафіку => flarum-v2-fof-redis-extension-setup.gmi 2026-02-22 Flarum v2: активація драйвера Redis (FoF/redis) diff --git a/public/uk/kellnr-proxy-verification-using-local-index.gmi b/public/uk/kellnr-proxy-verification-using-local-index.gmi new file mode 100644 index 0000000..279a4c2 --- /dev/null +++ b/public/uk/kellnr-proxy-verification-using-local-index.gmi @@ -0,0 +1,41 @@ +# Не верифіковане проксі 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`. \ No newline at end of file diff --git a/public/uk/rust-crates-mirroring-with-kellnr.gmi b/public/uk/rust-crates-mirroring-with-kellnr.gmi index a925b73..55f92ee 100644 --- a/public/uk/rust-crates-mirroring-with-kellnr.gmi +++ b/public/uk/rust-crates-mirroring-with-kellnr.gmi @@ -308,6 +308,7 @@ crates.io > -|- out proxy > kellnr server > kellnr client > cargo crates.io-index > _↑ | ↑_________________[--proxy-index]__________________↓ ``` +=> kellnr-proxy-verification-using-local-index.gmi Не верифіковане проксі Kellnr на базі власного індексу ## Посилання