From 3f9fb147545a9b818f32efadbce0b030c592458b Mon Sep 17 00:00:00 2001 From: postscriptum Date: Thu, 26 Feb 2026 19:28:23 +0200 Subject: [PATCH] minor additions --- public/uk/rust-crates-mirroring-with-kellnr.gmi | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/public/uk/rust-crates-mirroring-with-kellnr.gmi b/public/uk/rust-crates-mirroring-with-kellnr.gmi index 93bd46e..88674ce 100644 --- a/public/uk/rust-crates-mirroring-with-kellnr.gmi +++ b/public/uk/rust-crates-mirroring-with-kellnr.gmi @@ -57,7 +57,7 @@ target/release/kellnr start --registry-data-dir /path/to/kellnr \ Після запуску, зайшов до адмінки, вказавши логін `admin` і пароль `admin`: => http://127.0.0.1:8000/login?redirect=settings -* на віддаленому сервері потрібно цей пароль змінити (в моїй версії була помилка не співпадіння - проігноруйте її, бо пароль насправді змінюється) +* на віддаленому сервері потрібно цей пароль змінити (в моїй версії була помилка не співпадіння - проігноруйте її, бо пароль насправді змінюється). Див. також `--setup-admin-pwd`. База даних тут стандартно SQLite, вона буде розташована за вказаним шляхом `/path/to/kellnr`. @@ -126,6 +126,8 @@ Group=kellnr ExecStart=/usr/local/bin/kellnr start --registry-data-dir /home/kellnr \ --proxy-enabled true \ + # кешувати файли крейтів локально (до теки cratesio) + # --proxy-download-on-update true \ --local-ip :: \ --local-port 8180 \ # в мене використовується багатомережний origin @@ -172,13 +174,16 @@ semanage port -a -t http_port_t -p tcp 8180 ### Налаштування вихідного проксі +> Рішення нижче виявилось робочим частково: наприклад, завантажити крейт (cargo install) не виде, тільки підтягнути до ного залежності (cargo update). Також цей сценарій чомусь не зберігає кешовані файли, тільки наповнює індекс в БД. Тому від описаного нижче способу я відмовився бо він потребує доопрацювання вибіркових шляхів API через `/etc/hosts` та [config.json](https://github.com/rust-lang/crates.io-index/blob/master/config.json) або рішення програмними засобами. + На моєму сервері немає Інтернет-інтерфейсу, тому я не можу забрати пакунки з crates.io напряму. Схоже, що Kellnr також поки не підтримує таку функціональність, тому я створив відповідний тікет #1096 і згодом знайшов тимчасове рішення у зв'язці з Nginx - засобами якого я "підставляю" потрібні заголовки згідно до URI: ``` /etc/nginx/sites-available/default server { listen [::1]:8200; - access_log /var/log/nginx/kellnr.outproxy.access.log; + access_log /var/log/nginx/kellnr.access.log; + error_log /var/log/nginx/kellnr.error.log warn; location / { proxy_pass http://[::1]:8118; @@ -201,7 +206,8 @@ server { server { listen [::1]:8200; - access_log /var/log/nginx/kellnr.outproxy.access.log; + access_log /var/log/nginx/kellnr.access.log; + error_log /var/log/nginx/kellnr.error.log warn; location / { proxy_set_header X-Forwarded-Proto "https"; @@ -245,7 +251,7 @@ kellnr start .. \ $ cargo build --locked warning: spurious network error (3 tries remaining): [7] Could not connect to server (Failed to connect to 127.0.0.1 port 8000 after 1 ms: Could not connect to server) ``` -то не плутайте її з локальними налаштуваннями `Cargo.toml` і вкажіть на сервері актуальний `--origin-*`, вирішивши проблему його підключення до вихідного проксі. +то не плутайте її з локальними налаштуваннями `Cargo.toml` і вкажіть на сервері актуальний `--origin-*`, вирішивши спочатку проблему його підключення до вихідного проксі. Якщо помилки: @@ -265,6 +271,9 @@ warning: spurious network error (3 tries remaining): [28] Timeout was reached (O cargo build --locked ``` +Додатково, для запобігання компрометації пакунків, варто створити окремий апстрім для індексів з хешами: наприклад на базі офіційного дзеркала GitHub, опціонально розгорнувши мульти-мережне дзеркало Radicle: +=> https://github.com/rust-lang/crates.io-index + ## Посилання Наш експериментальний вузол в мережах Yggdrasil і Mycelium, побачимо що з того вийде: