mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-03-11 03:52:40 +00:00
minor additions
This commit is contained in:
parent
2a71dd2ae8
commit
cc96bf153a
1 changed files with 74 additions and 3 deletions
|
|
@ -73,6 +73,10 @@ index = "sparse+http://127.0.0.1:8000/api/v1/crates/"
|
|||
# Вказуємо Cargo замінити стандартне джерело crates.io на Kellnr
|
||||
[source.crates-io]
|
||||
replace-with = "kellnr"
|
||||
|
||||
# Варто збільшити час очікування, оскільки трафік "блукатиме" значно довше
|
||||
[http]
|
||||
timeout = 180
|
||||
```
|
||||
|
||||
Тепер, якщо відкрити будь який проєкт Rust і виконати в ньому оновлення індексу, то отримаємо наступне:
|
||||
|
|
@ -124,6 +128,9 @@ ExecStart=/usr/local/bin/kellnr start --registry-data-dir /home/kellnr \
|
|||
--proxy-enabled true \
|
||||
--local-ip :: \
|
||||
--local-port 8180 \
|
||||
# в мене використовується багатомережний origin
|
||||
# --origin-host=.ua.srv \
|
||||
# --origin-port=8180 \
|
||||
-l warn
|
||||
|
||||
Environment="NO_COLOR=1"
|
||||
|
|
@ -144,6 +151,13 @@ ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8180 prot
|
|||
```
|
||||
* у прикладі використовуються дозволи для мереж Yggdrasil і Mycelium
|
||||
|
||||
Нагадаю, що на серверах Fedora, потрібно окремо оголосити наступну політику SELinux:
|
||||
|
||||
``` bash
|
||||
setsebool -P httpd_can_network_connect 1
|
||||
semanage port -a -t http_port_t -p tcp 8180
|
||||
```
|
||||
|
||||
Керування сервісом відбувається за класикою:
|
||||
|
||||
* `systemctl restart kellnr` - (пере) запуск
|
||||
|
|
@ -181,15 +195,66 @@ server {
|
|||
* `[::1]:8118` - це будь-який локальний проксі (типу privoxy або gost) який вміє обробляти HTTP
|
||||
* теоретично, можна пускати трафік через Tor, без проксі-посередника, але в моїй редакції Arti підтримується тільки SOCKS, а той - не підтримується Nginx
|
||||
|
||||
Окремо, маю ще такий конфіг, який кидає запити напряму без маршрутизуючого проксі:
|
||||
|
||||
```
|
||||
server {
|
||||
listen [::1]:8200;
|
||||
|
||||
access_log /var/log/nginx/kellnr.outproxy.access.log;
|
||||
|
||||
location / {
|
||||
proxy_set_header X-Forwarded-Proto "https";
|
||||
proxy_set_header Host "index.crates.io";
|
||||
|
||||
proxy_ssl_server_name on;
|
||||
proxy_ssl_name "index.crates.io";
|
||||
|
||||
# dig index.crates.io
|
||||
proxy_pass https://151.101.238.137;
|
||||
}
|
||||
location /crates {
|
||||
proxy_set_header X-Forwarded-Proto "https";
|
||||
proxy_set_header Host "static.crates.io";
|
||||
|
||||
proxy_ssl_server_name on;
|
||||
proxy_ssl_name "static.crates.io";
|
||||
|
||||
# dig static.crates.io
|
||||
proxy_pass https://151.101.238.137;
|
||||
}
|
||||
}
|
||||
```
|
||||
* на ньому я резольвлю руками `.crates.io` бо піймав якісь глюки Nginx: коли він слухає на IPv6, то резольвить на те ж сімейство адрес, інтерфейсу якого в мене немає і опції типу `resolver 8.8.8.8 8.8.4.4 ipv6=off valid=300s;` - не допомагають
|
||||
* можливо, деякі поля можна прибрати, але це остання заготовка яка працювала, тому додав "як є"
|
||||
|
||||
Відповідно до нашого прикладу Nginx, при запуску сервера Kellnr, потрібно додати два аргументи:
|
||||
|
||||
``` bash
|
||||
kellnr start .. \
|
||||
--proxy-index=http://[::1]:8200/ \
|
||||
--proxy-url=http://[::1]:8200/crates/
|
||||
--proxy-index="http://[::1]:8200" \
|
||||
--proxy-url="http://[::1]:8200/crates"
|
||||
```
|
||||
* тут я також пробував різні аналоги proxychains і "магічні" URL типу `http://[::1]:8118/index.crates.io/` - але цей фокус не пройшов, тому ось такий костиль з Nginx, який працює.
|
||||
|
||||
### Вирішення проблем
|
||||
|
||||
Якщо на стороні клієнта бачите помилку:
|
||||
|
||||
``` bash
|
||||
$ 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-*`, вирішивши проблему його підключення до вихідного проксі.
|
||||
|
||||
Якщо помилки:
|
||||
|
||||
``` bash
|
||||
$ cargo build --locked
|
||||
warning: spurious network error (3 tries remaining): [28] Timeout was reached (Operation timed out after 30000 milliseconds with 0 bytes received)
|
||||
```
|
||||
збільшіть значення `http.timeout` в `~/.cargo/config.toml`
|
||||
|
||||
## Зауваження щодо безпеки
|
||||
|
||||
Хоча в Cargo передбачається декілька рівнів перевірки цілісності пакетів, буде не зайвим переконатись в наявності оригінального файлу `Cargo.lock` для вашого проєкту, що містить хеші залежностей. Ці хеш-суми стандартно не доступні в реєстрах crates.io, утім вони звичайно зберігаються в репозиторіях Git.
|
||||
|
|
@ -206,3 +271,9 @@ cargo build --locked
|
|||
|
||||
* `http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8180` | http://ygg.ua.srv:8180
|
||||
* `http://[505:6847:c778:61a1:5c6d:e802:d291:8191]:8180` | http://myc.ua.srv:8180
|
||||
|
||||
Не офіційне дзеркало Kellnr в [Radicle](https://devzone.org.ua/post/radicle-detsentralizovanyy-p2p-khostynh-gitdvcs), знімок репозиторію на момент написання матеріалу:
|
||||
|
||||
```
|
||||
rad:z4VnEyS5YXnFpEgY1iheHneRPeSX6
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue