mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-03-11 03:52:40 +00:00
add kellnr-storage-on-usb-drive.gmi
This commit is contained in:
parent
95d35ca7cd
commit
677a06b776
4 changed files with 128 additions and 2 deletions
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
### Нотатки
|
### Нотатки
|
||||||
|
|
||||||
|
=> kellnr-storage-on-usb-drive.gmi 2026-03-03 Спільне сховище Kellnr на флешці USB
|
||||||
=> tarball-from-nautilus-context-menu.gmi 2026-03-02 Створення Tarball з контекстного меню Nautilus / GNOME
|
=> tarball-from-nautilus-context-menu.gmi 2026-03-02 Створення Tarball з контекстного меню Nautilus / GNOME
|
||||||
=> radicle-kick-starter.gmi 2026-03-02 Пуш Radicle з толкача
|
=> radicle-kick-starter.gmi 2026-03-02 Пуш Radicle з толкача
|
||||||
=> notblood-multiplayer-with-ipv6-support.gmi 2026-03-02 Збірка NotBlood з підключенням до серверів IPv6
|
=> notblood-multiplayer-with-ipv6-support.gmi 2026-03-02 Збірка NotBlood з підключенням до серверів IPv6
|
||||||
|
|
|
||||||
|
|
@ -38,4 +38,8 @@ replace-with = "kellnr"
|
||||||
timeout = 180
|
timeout = 180
|
||||||
```
|
```
|
||||||
|
|
||||||
Нагадаю, що окремий індекс використовувати не обов'язково, якщо ваша копія проєкту містить файл `Cargo.lock` з хешами, що дозволяє звіряти їх аргументом `--locked`.
|
Нагадаю, що окремий індекс використовувати не обов'язково, якщо ваша копія проєкту містить файл `Cargo.lock` з хешами, що дозволяє звіряти їх аргументом `--locked`.
|
||||||
|
|
||||||
|
## Дивіться також
|
||||||
|
|
||||||
|
=> kellnr-storage-on-usb-drive.gmi Спільне сховище Kellnr на флешці USB
|
||||||
117
public/uk/kellnr-storage-on-usb-drive.gmi
Normal file
117
public/uk/kellnr-storage-on-usb-drive.gmi
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
# Спільне сховище Kellnr на флешці USB
|
||||||
|
|
||||||
|
Оскільки мій домашній сервер ARM наказав довго жити, постала задача десь розмістити локальний кеш крейтів на випадок відсутності Інтернет та можливості розробки Rust офлайн. Kellnr мені сподобався своєю гнучкістю і не вибагливістю до диску, за рахунок кешування тільки тих даних, які використовуються. З ним легко збудувати децентралізовані ланцюги проксі і так само легко переключатись у разі не доступності одного з них.
|
||||||
|
|
||||||
|
Для локального сервера Kellnr, першою опцією в мене був сам комп'ютер, але єдиний його HDD (запакований в iMac) майже заповнений, до того ж повільний. Інший комп'ютер PC - наразі не зручно запускати через перебої живлення і його апетити до UPS. Тому я вирішив застосувати свій старий лайф-хак з розширенням пам'яті засобами звичайної флешки USB (Kellnr пише дані тільки при першому запиті крейту, тому проблем з живучістю SSD не повинно бути). Також, цей сценарій дозволяє тягати флешку між компами без жодної залежності від стаціонарного сервера чи локальної мережі.
|
||||||
|
|
||||||
|
## Підготовка USB
|
||||||
|
|
||||||
|
Фактично, я користуюсь флешкою 32 GB, яка при ~1к крейтів заповнена на 30%. Тобто підійде сама чіпова флешка, і зовсім не обов'язково спеціально купувати заявлені 300 Гб станом на 2024-2026. При першій ініціалізації реєстру, відбувається пікове зростання споживання диску через внутрішні залежності усіх запитаних крейтів, але потім воно збалансовується і тримається на згаданому вище рівні.
|
||||||
|
|
||||||
|
### Файлова система
|
||||||
|
|
||||||
|
Накопичувач я спочатку відформатував в FAT, оскільки мені набридло морочитись з правами. Утім, як виявилось, Kellnr якось там залежить від мета-даних і сипле в журнали помилки. Тому згодом я обрав формат Ext4, створивши для сховища простір імен `kellnr/data`.
|
||||||
|
|
||||||
|
## Системний сервіс
|
||||||
|
|
||||||
|
Перший час, крутив кеш-проксі через CLI, але згодом вирішив організувати для нього сервіс:
|
||||||
|
|
||||||
|
``` /etc/systemd/system/kellnr.service
|
||||||
|
[Unit]
|
||||||
|
After=network.target
|
||||||
|
Wants=network.target
|
||||||
|
RequiresMountsFor=/mnt/usb1/kellnr/data
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
|
||||||
|
User=kellnr
|
||||||
|
Group=kellnr
|
||||||
|
|
||||||
|
ExecStart=/usr/local/bin/kellnr start --registry-data-dir /mnt/usb1/kellnr/data \
|
||||||
|
--proxy-enabled true \
|
||||||
|
--proxy-download-on-update true \
|
||||||
|
--local-ip 127.0.0.1 \
|
||||||
|
-l warn
|
||||||
|
|
||||||
|
Environment="NO_COLOR=1"
|
||||||
|
StandardOutput=file:///var/log/kellnr/debug.log
|
||||||
|
StandardError=file:///var/log/kellnr/error.log
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
* зверніть увагу: якщо не вказати `--local-ip` то стандартно Kellnr працюватиме на `0.0.0.0`
|
||||||
|
|
||||||
|
Хоча сервіс локальний, я також за звичкою створюю для процесу окремого користувача:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo useradd -s /usr/sbin/nologin -Mr kellnr
|
||||||
|
```
|
||||||
|
|
||||||
|
І відповідні теки для монтування і журналів:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo mkdir /var/log/kellnr
|
||||||
|
sudo chown kellnr:kellnr /var/log/kellnr
|
||||||
|
mkdir /mnt/usb1
|
||||||
|
```
|
||||||
|
|
||||||
|
Отримуємо UUID пристрою для прив'язки його в `/etc/fstab`:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
lsblk -f
|
||||||
|
```
|
||||||
|
|
||||||
|
Додаємо в кінець файлу`/etc/fstab` новий пристрій, замінивши `xxxx-xxxx-xxxx-xxxx-xxxx` на ваше значення:
|
||||||
|
|
||||||
|
``` /etc/fstab
|
||||||
|
UUID=xxxx-xxxx-xxxx-xxxx-xxxx /mnt/usb1 ext4 defaults,nofail 0 0
|
||||||
|
```
|
||||||
|
* важливо вказати `nofail`, інакше система без флешки (або після її пошкодження) може не завантажитись!
|
||||||
|
|
||||||
|
Перевіряємо конфігурацію і монтуємось:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo findmnt --verify --verbose
|
||||||
|
sudo mount -a
|
||||||
|
```
|
||||||
|
|
||||||
|
Kellnr запускається від однойменного користувача, тому для теки сховища потрібні відповідні права:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo mkdir -p /mnt/usb1/kellnr
|
||||||
|
sudo chown kellnr:kellnr -R /mnt/usb1/kellnr
|
||||||
|
sudo chmod 0755 -R /mnt/usb1
|
||||||
|
```
|
||||||
|
|
||||||
|
Тепер можна запустити сервіс:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo systemctl restart kellnr
|
||||||
|
```
|
||||||
|
|
||||||
|
Для автозапуску з системою:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
sudo systemctl enable kellnr
|
||||||
|
```
|
||||||
|
|
||||||
|
Для цієї конфігурації, мною використовується наступна конфігурація `~/.cargo/config.toml`:
|
||||||
|
|
||||||
|
``` ~/.cargo/config.toml
|
||||||
|
[registries.kellnr]
|
||||||
|
index = "sparse+http://127.0.0.1:8000/api/v1/cratesio/"
|
||||||
|
|
||||||
|
[source.crates-io]
|
||||||
|
replace-with = "kellnr"
|
||||||
|
|
||||||
|
[http]
|
||||||
|
timeout = 900
|
||||||
|
```
|
||||||
|
|
||||||
|
## Дивіться також
|
||||||
|
|
||||||
|
=> rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr
|
||||||
|
=> kellnr-proxy-verification-using-local-index.gmi Не верифіковане проксі Kellnr на базі власного індексу
|
||||||
|
|
@ -321,4 +321,8 @@ crates.io-index > _↑ |
|
||||||
|
|
||||||
```
|
```
|
||||||
rad:z4VnEyS5YXnFpEgY1iheHneRPeSX6
|
rad:z4VnEyS5YXnFpEgY1iheHneRPeSX6
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Дивіться також
|
||||||
|
|
||||||
|
=> kellnr-storage-on-usb-drive.gmi Спільне сховище Kellnr на флешці USB
|
||||||
Loading…
Add table
Add a link
Reference in a new issue