From 19bd39f8e66d5f19de69ccf7782c7c365248cb28 Mon Sep 17 00:00:00 2001 From: postscriptum Date: Tue, 17 Mar 2026 19:55:50 +0200 Subject: [PATCH] remove url scheme from the inline context --- .../anonymous-torrents-with-i2psnark-over-i2pd.gmi | 8 ++++---- ...ion-router-with-tor-connection-over-yggdrasil.gmi | 4 +++- .../bittorrent-blocklist-examples-for-ipv6-range.gmi | 2 +- public/uk/btracker-bittorrent-tracker-in-rust.gmi | 4 ++-- public/uk/btracker-environment-deployment.gmi | 4 ++-- ...js-cookies-anti-bot-on-website-dump-with-wget.gmi | 2 +- public/uk/enhancing-privacy-in-linux-apps.gmi | 6 ++---- public/uk/filter-outgoing-connections-with-ufw.gmi | 2 +- public/uk/first-impressions-of-cpp.gmi | 2 +- public/uk/flatpak-bundle-build.gmi | 6 +++--- public/uk/i2p-capsule-in-gemini-space-with-agate.gmi | 8 ++++---- .../kellnr-proxy-verification-using-local-index.gmi | 3 ++- ...bhandy-tab-as-gtk-notebook-widget-alternative.gmi | 4 ++-- ...ed-on-qemu-virtual-machine-manager-with-vsock.gmi | 4 ++-- public/uk/mat2-meta-data-cleaner.gmi | 2 +- public/uk/misfin-postal-satellite-of-geminispace.gmi | 4 ++-- public/uk/my-first-impressions-of-flarum.gmi | 12 ++++++------ public/uk/mycelium-network-integration-with-i2pd.gmi | 2 +- public/uk/mycelium-network-services.gmi | 2 +- public/uk/news/the-end-of-cdma-in-ukraine.gmi | 8 ++++---- public/uk/notblood-multiplayer-with-ipv6-support.gmi | 2 +- .../personal-snac-instance-for-yggdrasil-network.gmi | 10 +++++----- ...pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi | 2 +- public/uk/radicle-is-decentralized-p2p-git-dvcs.gmi | 2 +- public/uk/radicle-web-service-deployment.gmi | 3 ++- ...culum-meshchat-with-connection-over-yggdrasil.gmi | 8 ++++---- ...rssto-convert-rss-feeds-into-multiple-formats.gmi | 2 +- public/uk/rust-crates-mirroring-with-kellnr.gmi | 4 +++- .../uk/rust-cross-compilation-with-cross-crate.gmi | 2 +- public/uk/setup-anonymous-ftp-server.gmi | 2 +- ...pd-with-i2p-network-connection-over-yggdrasil.gmi | 9 ++++++--- .../uk/setup-icecast-ezstream-web-radio-on-linux.gmi | 4 ++-- ...ollision-attack-can-serve-backdoored-torrents.gmi | 2 +- ...ster-p2p-decentralized-microblogging-platform.gmi | 6 +++--- .../unexpected-connection-leaks-in-qbittorrent.gmi | 2 +- public/uk/yggmail-messenger-with-email-protocol.gmi | 2 +- public/uk/znc-irc-bouncer-setup.gmi | 2 +- 37 files changed, 80 insertions(+), 73 deletions(-) diff --git a/public/uk/anonymous-torrents-with-i2psnark-over-i2pd.gmi b/public/uk/anonymous-torrents-with-i2psnark-over-i2pd.gmi index 26784bb..573ba2e 100644 --- a/public/uk/anonymous-torrents-with-i2psnark-over-i2pd.gmi +++ b/public/uk/anonymous-torrents-with-i2psnark-over-i2pd.gmi @@ -1,10 +1,10 @@ # Анонімний піринг BitTorrent з I2PSnark та i2pd -Давно цікавлюсь тематикою альтернативних мереж, зокрема - експериментую з Yggdrasil в контексті BitTorrent. Про мережу I2P (https://uk.wikipedia.org/wiki/I2P) знаю давно, але мені жодного разу не доводилось нею користуватись. Утім, організувавши на прохання деяких користувачів доступ по I2P до форуму адміністраторів альтернативних мереж, налаштувавши дзеркало свого блогу Gemini, та ретрансляцію каналів eQtv і Громадське радіо, стало цікаво також спробувати цю мережу і в контексті торентів. +Давно цікавлюсь тематикою альтернативних мереж, зокрема - експериментую з Yggdrasil в контексті BitTorrent. Про мережу I2P (uk.wikipedia.org/wiki/I2P) знаю давно, але мені жодного разу не доводилось нею користуватись. Утім, організувавши на прохання деяких користувачів доступ по I2P до форуму адміністраторів альтернативних мереж, налаштувавши дзеркало свого блогу Gemini, та ретрансляцію каналів eQtv і Громадське радіо, стало цікаво також спробувати цю мережу і в контексті торентів. -Для одночасного обміну файлами в Інтернет, Yggdrasil і Mycelium - я користуюсь вільним клієнтом qBittorrent (https://www.qbittorrent.org), що з коробки працює на всі мережі (Інтернет та Yggdrasil через подвійний стек IPv4/IPv6) і має гнучкі налаштування для керування великими колекціями. Але Yggdrasil не є анонімною мережею, а qBittorrent - допускає в такому випадку непередбачені з'єднання в гібридному режимі, оскільки розроблявся перш за все для максимальної конективності, а не для анонімізації/деперсоналізації. Так, в ньому є експериментальна опція I2P та універсальна реалізація проксі SOCKS5, але я вже помічав за цим клієнтом "сюрпризи" у вигляді вихідних з'єднань на веб-сокет IPv4 при біндінгу на IPv6 та інші нюанси, що в цілому залежать від конкретної версії. +Для одночасного обміну файлами в Інтернет, Yggdrasil і Mycelium - я користуюсь вільним клієнтом qBittorrent (www.qbittorrent.org), що з коробки працює на всі мережі (Інтернет та Yggdrasil через подвійний стек IPv4/IPv6) і має гнучкі налаштування для керування великими колекціями. Але Yggdrasil не є анонімною мережею, а qBittorrent - допускає в такому випадку непередбачені з'єднання в гібридному режимі, оскільки розроблявся перш за все для максимальної конективності, а не для анонімізації/деперсоналізації. Так, в ньому є експериментальна опція I2P та універсальна реалізація проксі SOCKS5, але я вже помічав за цим клієнтом "сюрпризи" у вигляді вихідних з'єднань на веб-сокет IPv4 при біндінгу на IPv6 та інші нюанси, що в цілому залежать від конкретної версії. -Ситуація не краще й з віднайденою мною бібліотекою librqbit (на базі якої мав намір створити приватно-орієнтований клієнт GTK для оверлейних мереж) де наприклад не можливо вимкнути PEX (https://en.wikipedia.org/wiki/Peer_exchange), для чого треба користуватись костилями blacklist. Взагалі, тему приватного користування торентами в контексті оверлейних мереж краще розкрити окремо, бо тут є що розповісти. +Ситуація не краще й з віднайденою мною бібліотекою librqbit (на базі якої мав намір створити приватно-орієнтований клієнт GTK для оверлейних мереж) де наприклад не можливо вимкнути PEX (en.wikipedia.org/wiki/Peer_exchange), для чого треба користуватись костилями blacklist. Взагалі, тему приватного користування торентами в контексті оверлейних мереж краще розкрити окремо, бо тут є що розповісти. ## Інфраструктура I2P @@ -16,7 +16,7 @@ Переглянувши доступні клієнти: => https://i2pd.readthedocs.io/en/latest/tutorials/filesharing/ -- відкинув вже згаданий qBittorrent і BiglyBT (https://www.biglybt.com/) через їх універсальність; XD (https://github.com/majestrate/XD) - як такий, що "крашить" i2pd. Тому з кандидатів лишився I2P-only I2PSnark. +- відкинув вже згаданий qBittorrent і BiglyBT (www.biglybt.com/) через їх універсальність; XD (github.com/majestrate/XD) - як такий, що "крашить" i2pd. Тому з кандидатів лишився I2P-only I2PSnark. ### I2PSnark diff --git a/public/uk/arti-onion-router-with-tor-connection-over-yggdrasil.gmi b/public/uk/arti-onion-router-with-tor-connection-over-yggdrasil.gmi index c3d1562..45c1b10 100644 --- a/public/uk/arti-onion-router-with-tor-connection-over-yggdrasil.gmi +++ b/public/uk/arti-onion-router-with-tor-connection-over-yggdrasil.gmi @@ -55,7 +55,9 @@ bridges = [ ### Мости obfs4 -В списках мостів бувають і такі, що підтримують обфускацію [obfs4](https://github.com/Yawning/obfs4): +В списках мостів бувають і такі, що підтримують обфускацію: + +=> https://github.com/Yawning/obfs4 ``` config.toml bridges = [ diff --git a/public/uk/bittorrent-blocklist-examples-for-ipv6-range.gmi b/public/uk/bittorrent-blocklist-examples-for-ipv6-range.gmi index 03fd4c1..c234564 100644 --- a/public/uk/bittorrent-blocklist-examples-for-ipv6-range.gmi +++ b/public/uk/bittorrent-blocklist-examples-for-ipv6-range.gmi @@ -1,6 +1,6 @@ # Блокування вихідних з'єднань BitTorrent по діапазону IPv6 -Деякі бібліотеки, такі як librqbit (https://github.com/ikatson/rqbit/issues/469) - не вміють вимикати надбудови міжпірингової комунікації типу PEX, але можуть робити це засобами так званого Blocklist. +Деякі бібліотеки, такі як librqbit - не вміють (github.com/ikatson/rqbit/issues/469) вимикати надбудови міжпірингової комунікації типу PEX, але можуть робити це засобами так званого Blocklist. В принципі, для IPv4 все просто: diff --git a/public/uk/btracker-bittorrent-tracker-in-rust.gmi b/public/uk/btracker-bittorrent-tracker-in-rust.gmi index 44efb5f..d8b939b 100644 --- a/public/uk/btracker-bittorrent-tracker-in-rust.gmi +++ b/public/uk/btracker-bittorrent-tracker-in-rust.gmi @@ -2,7 +2,7 @@ > Даний матеріал писався як гайд для локальної спільноти адміністраторів альтернативних мереж, утім, я знайшов його потенційно цікавим для широкого загалу: зокрема для тих, хто бажає підняти свій торент трекер і автоматизований Веб-каталог з функцією пошуку та статистикою роздач на базі інфраструктури Rust. -βtracker (beta-tracker) - BitTorrent каталог агрегаційного типу з Веб-інтерфейсом на базі фреймворку Rocket (https://rocket.rs), що є продовженням попереднього проєкту YGGtracker але на відміну від останнього - повністю автоматизований. +βtracker (beta-tracker) - BitTorrent каталог агрегаційного типу з Веб-інтерфейсом на базі фреймворку Rocket (rocket.rs), що є продовженням попереднього проєкту YGGtracker але на відміну від останнього - повністю автоматизований. Індекс тут складається на базі додаткових компонентів: => https://github.com/YGGverse/aquatic/tree/yggverse/crates/udp форк UDP трекера "aquatic", який генерує дамп інфо-хешів у бінарному форматі API @@ -25,7 +25,7 @@ torrent client <-----------------------| * /preload/info- ## Мережі -βtracker розроблявся для мережі Yggdrasil (https://yggdrasil-network.github.io), але на відміну від YGGtracker, може без проблемно працювати з Інтернет / IPv4 включно, а також споріднених оверлейних мережах типу Mycelium (https://github.com/threefoldtech/mycelium). +βtracker розроблявся для мережі Yggdrasil (yggdrasil-network.github.io), але на відміну від YGGtracker, може без проблемно працювати з Інтернет / IPv4 включно, а також споріднених оверлейних мережах типу Mycelium (github.com/threefoldtech/mycelium). ## Проблеми diff --git a/public/uk/btracker-environment-deployment.gmi b/public/uk/btracker-environment-deployment.gmi index 513e0bb..2150407 100644 --- a/public/uk/btracker-environment-deployment.gmi +++ b/public/uk/btracker-environment-deployment.gmi @@ -2,7 +2,7 @@ > Здається, інструкція з розгортання поточної версії βtracker була написана в одному екземплярі для проєкту howto.ygg і я зовсім забув зробити для неї локальну версію. Свій інстанс я згорнув, але на випадок, якщо передумаю (та для інших користувачів) - гайд нижче. -βtracker - альтернативна гілка розробки YGGtracker (https://github.com/YGGverse/YGGtracker), яка надає програмний комплекс для автоматичного відстеження та агрегації без участі модератора та ручного додавання торентів до каталогу. +βtracker - альтернативна гілка розробки YGGtracker (github.com/YGGverse/YGGtracker), яка надає програмний комплекс для автоматичного відстеження та агрегації без участі модератора та ручного додавання торентів до каталогу. Система створена для мережі Yggdrasil, але може працювати з будь-якою іншою, що підтримує стек IPv4/IPv6 або в гібридному режимі. Щоб додати торренти до каталогу, користувачеві достатньо додати пов'язані з агрегатором трекери в свій клієнт (дистрибутив) @@ -197,7 +197,7 @@ cd btracker cargo build --release sudo install target/release/btracker /usr/local/bin/btracker ``` -* у зв'язку з поточною реалізацією шаблонізатора Rocker (https://rocket.rs/guide/v0.5/deploying), потрібно скопіювати директорії `public` і `templates` до простору `WorkingDirectory` (див. налаштування systemd) +* у зв'язку з поточною реалізацією шаблонізатора Rocker (rocket.rs/guide/v0.5/deploying), потрібно скопіювати директорії `public` і `templates` до простору `WorkingDirectory` (див. налаштування systemd) ``` /etc/systemd/system/btracker.service [Unit] diff --git a/public/uk/bypass-js-cookies-anti-bot-on-website-dump-with-wget.gmi b/public/uk/bypass-js-cookies-anti-bot-on-website-dump-with-wget.gmi index 9f1a15f..d28e7dc 100644 --- a/public/uk/bypass-js-cookies-anti-bot-on-website-dump-with-wget.gmi +++ b/public/uk/bypass-js-cookies-anti-bot-on-website-dump-with-wget.gmi @@ -1,6 +1,6 @@ # Копіювання Веб-сайту з обходом анти-бот захисту через wget -В рамках проєкту з реставрації українських Веб-архівів, я періодично роблю "сирі" дампи деяких Веб-сайтів, на випадок їх зникнення з онлайну. Утім один з ресурсів, який мене зацікавив (https://prolinux.pp.ua/news/prolinuxua-stopped.html) - використовував динамічний анти-бот захист на основі JavaScript + Cookies, перший з яких утиліта wget обробляти не вміє, через що цей сайт також не може проіндексуватись проєктом Web-archive: +В рамках проєкту з реставрації українських Веб-архівів, я періодично роблю "сирі" дампи деяких Веб-сайтів, на випадок їх зникнення з онлайну. Утім один з ресурсів, який мене зацікавив (prolinux.pp.ua/news/prolinuxua-stopped.html) - використовував динамічний анти-бот захист на основі JavaScript + Cookies, перший з яких утиліта wget обробляти не вміє, через що цей сайт також не може проіндексуватись проєктом Web-archive: => https://web.archive.org/web/20231130201641/https://prolinux.pp.ua/?i=1 Тобто у цьому випадку, його сторінка віддає кравлеру наступний код, точніше логічне завдання для клієнт-сайду, результат якого потрібно зберегти до Cookies та застосувати для подальших запитів: diff --git a/public/uk/enhancing-privacy-in-linux-apps.gmi b/public/uk/enhancing-privacy-in-linux-apps.gmi index fdbc282..a6e7f80 100644 --- a/public/uk/enhancing-privacy-in-linux-apps.gmi +++ b/public/uk/enhancing-privacy-in-linux-apps.gmi @@ -55,12 +55,10 @@ peers = [ "[301:84f7:4bc0:2f3a::53]:4244" ] -# стандартна гілка (https://github.com/Revertron/Alfis) +# стандартна гілка (github.com/Revertron/Alfis) yggdrasil_only = true -# якщо гілка mycelium-network-mode -# https://github.com/YGGverse/Alfis/tree/mycelium-network-mode -# +# якщо гілка mycelium-network-mode (github.com/YGGverse/Alfis/tree/mycelium-network-mode) # yggdrasil_mode = true # mycelium_mode = true ``` diff --git a/public/uk/filter-outgoing-connections-with-ufw.gmi b/public/uk/filter-outgoing-connections-with-ufw.gmi index 58922e4..5466766 100644 --- a/public/uk/filter-outgoing-connections-with-ufw.gmi +++ b/public/uk/filter-outgoing-connections-with-ufw.gmi @@ -49,7 +49,7 @@ ufw allow out to 1.1.1.1 port 53 proto udp ufw allow out to any port 53 proto udp ``` -Якщо використовується локальний DNS для Yggdrasil (https://yggdrasil-network.github.io/services.html#dns) або Mycelium, цей крок можна пропустити, адже вище ми вже дозволили усі вихідні з'єднання на ці мережі. +Якщо використовується локальний DNS для Yggdrasil (yggdrasil-network.github.io/services.html#dns) або Mycelium, цей крок можна пропустити, адже вище ми вже дозволили усі вихідні з'єднання на ці мережі. ## NTP diff --git a/public/uk/first-impressions-of-cpp.gmi b/public/uk/first-impressions-of-cpp.gmi index 010c19c..f4a3c78 100644 --- a/public/uk/first-impressions-of-cpp.gmi +++ b/public/uk/first-impressions-of-cpp.gmi @@ -211,7 +211,7 @@ void someMethod(int arg1 = 1, bool arg2 = true); Поки що, мені не доводилось користуватись такими бібліотеками, яких немає в репозиторії мого дистрибутиву. Звісно, розумію що одного разу такий момент настане, тим паче, що я звик виносити окремі функції програми на рівень маленьких бібліотек і працювати з ними через пакетний менеджер, замість використання моделей. -В принципі, такі пакетні менеджери для C++ є, наприклад Conan (https://conan.io). Але мене трохи засмучує, що немає якось єдиного хабу по типу Composer/Packagist для PHP. В цьому плані, звісно дуже виграє Rust з його пакетним менеджером Cargo. Хотілось би подібний набір для C++ з коробки, але все таки це мова, яка сформована спільнотою і має трохи іншу, свого роду анархічну парадигму в своїй основі, яка не прив'язує вас до конкретного рішення і дає повну свободу дій. +В принципі, такі пакетні менеджери для C++ є, наприклад Conan (conan.io). Але мене трохи засмучує, що немає якось єдиного хабу по типу Composer/Packagist для PHP. В цьому плані, звісно дуже виграє Rust з його пакетним менеджером Cargo. Хотілось би подібний набір для C++ з коробки, але все таки це мова, яка сформована спільнотою і має трохи іншу, свого роду анархічну парадигму в своїй основі, яка не прив'язує вас до конкретного рішення і дає повну свободу дій. Коли дійдуть руки до організації сторонніх бібліотек, в першу чергу, хочу спробувати варіант з git submodule. Це не зовсім пакетний менеджер, але у даного рішення є таке поняття як "теги", з яких формуються безпосередньо версії, git також перед-встановлено на більшості систем тих, хто займається збіркою і не доведеться вимагати від користувача додаткових рухів. Тому наразі це рішення для мене виглядає найбільш привабливим, перш за все - з точки зору універсальності. diff --git a/public/uk/flatpak-bundle-build.gmi b/public/uk/flatpak-bundle-build.gmi index ebe04ae..f7901bc 100644 --- a/public/uk/flatpak-bundle-build.gmi +++ b/public/uk/flatpak-bundle-build.gmi @@ -123,13 +123,13 @@ Flathub - це безкоштовний хостинг для пакунків F ### Публікація -Суть публікації пакунку на Flathub полягає в створенні форку ініціативного репозиторію (https://github.com/flathub/flathub), в якому створюється окрема гілка для подальшого запиту на додавання (https://github.com/flathub/flathub/pulls). +Суть публікації пакунку на Flathub полягає в створенні форку ініціативного репозиторію (github.com/flathub/flathub), в якому створюється окрема гілка для подальшого запиту на додавання (github.com/flathub/flathub/pulls). -До PR, окрім файлу маніфесту, додається ще один, схожий до маніфесту файл metainfo (https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines) у форматі XML. Наприклад для twister p2p - він виглядає так +До PR, окрім файлу маніфесту, додається ще один, схожий до маніфесту файл metainfo (docs.flathub.org/docs/for-app-authors/metainfo-guidelines) у форматі XML. Наприклад для twister p2p - він виглядає так => https://github.com/twisterarmy/flathub/blob/twister-bundle/io.github.twisterarmy.twister.metainfo.xml * а саме: містить назву, опис проєкту, версію збірки а також скріншоти та деяку іншу інформацію, необхідну для коректного відображення на сайті каталогу. -Після модерації, ваш проєкт буде (або не буде) розміщено в офіційному списку постачальників (https://github.com/orgs/flathub/repositories) Flathub, а вам (у разі схвалення) - надано статус майнтейнера до відповідного репозиторію для його подальших оновлень. +Після модерації, ваш проєкт буде (або не буде) розміщено в офіційному списку постачальників (github.com/orgs/flathub/repositories) Flathub, а вам (у разі схвалення) - надано статус майнтейнера до відповідного репозиторію для його подальших оновлень. Опціонально, постачальники можуть отримати верифікований статус та інші фічі для подальшого просування власного проєкту. diff --git a/public/uk/i2p-capsule-in-gemini-space-with-agate.gmi b/public/uk/i2p-capsule-in-gemini-space-with-agate.gmi index ebaa919..9bd1685 100644 --- a/public/uk/i2p-capsule-in-gemini-space-with-agate.gmi +++ b/public/uk/i2p-capsule-in-gemini-space-with-agate.gmi @@ -5,7 +5,7 @@ * мінімальний розмір контенту, та одно-поточні запити до сервера: що добре для швидкості відгуку та легкі для мережі I2P в цілому, адже не тягатимуть купу асинхронних скриптів, трекерів, стилів, медіа та іншого мотлоху * приватно-орієнтованість: немає заголовків з рефералами, сторонніх підвантажень контенту, а отже - не потрібні костилі з ізольованими контейнерами, окремі браузери з PAC чи правила фаєрволу, що фільтруватимуть потенційні витоки з'єднань на Інтернет * відсутність потреби у виділеному IP: роутер I2P може поставити собі кожен, для цього не потрібно навіть відкривати порт -* ідеально для соціальних децентралізованих застосунків: авторизація на базі TLS (https://geminiprotocol.net/docs/protocol-specification.gmi#client-certificates) не передбачає передачу на сервер класичних для Веб e-mail, паролів та іншої потенційно чутливої інформації +* ідеально для соціальних децентралізованих застосунків: авторизація на базі TLS (geminiprotocol.net/docs/protocol-specification.gmi#client-certificates) не передбачає передачу на сервер класичних для Веб e-mail, паролів та іншої потенційно чутливої інформації Сьогодні таки зібрався і вирішив спробувати опублікувати свою капсулу. При цьому, вирішив не проксувати (proxy) трафік I2P на віддалений хостинг Yesterweb, а саме задзеркалити копію ресурсу (mirror) на локальному сервері. @@ -38,7 +38,7 @@ systemctl i2pd restart ## Agate -Agate (https://github.com/mbrubeck/agate) - це один з відомих серверів Gemini для публікації статики Gemtext, написаний мовою Rust. +Agate (github.com/mbrubeck/agate) - це один з відомих серверів Gemini для публікації статики Gemtext, написаний мовою Rust. Взагалі, я хотів би опублікувати дзеркало на усі мережі: I2P, Yggdrasil і Mycelium, але сервер Agate має свою специфіку роботи з SNI: чомусь, більшість розробників в очі не бачили IPv6 і таке поняття як мульти-стек. Тому забігаючи на перед - ця інструкція підходить лише для публікації одного домену в I2P; якщо ви хочете забіндитись на різні мережі, то подивіться: => gmid-server-for-gemini-protocol.gmi Gmid - багатофункціональний сервер для Gemini @@ -98,9 +98,9 @@ WantedBy=multi-user.target ## Клієнт -Для доступу до ресурсів I2P, потрібен клієнт (браузер) Gemini з функціями проксування SOCKS або HTTP. Наскільки мені відомо, популярний браузер Lagrange (https://github.com/skyjake/lagrange/) (на момент публікації матеріалу) того не вміє. Останнім часом, активно розвивається клієнт Alhena (https://github.com/mochaman/alhena), але там альтернативно реалізована клієнтська частина, що виходить за рамки специфікації і підвантажує inline-медіа на фоні. +Для доступу до ресурсів I2P, потрібен клієнт (браузер) Gemini з функціями проксування SOCKS або HTTP. Наскільки мені відомо, популярний браузер Lagrange (github.com/skyjake/lagrange/) (на момент публікації матеріалу) того не вміє. Останнім часом, активно розвивається клієнт Alhena (github.com/mochaman/alhena), але там альтернативно реалізована клієнтська частина, що виходить за рамки специфікації і підвантажує inline-медіа на фоні. -Особисто я користуюсь спеціально створеним для моїх потреб GTK браузером Yoda (https://github.com/YGGverse/Yoda), де реалізовано підтримку різних типів проксі а також маршрутизацію по regex і пріоритетам: +Особисто я користуюсь спеціально створеним для моїх потреб GTK браузером Yoda (github.com/YGGverse/Yoda), де реалізовано підтримку різних типів проксі а також маршрутизацію по regex і пріоритетам: ``` \.i2p$ http://127.0.0.1:4444 diff --git a/public/uk/kellnr-proxy-verification-using-local-index.gmi b/public/uk/kellnr-proxy-verification-using-local-index.gmi index 5c96357..200d584 100644 --- a/public/uk/kellnr-proxy-verification-using-local-index.gmi +++ b/public/uk/kellnr-proxy-verification-using-local-index.gmi @@ -1,6 +1,7 @@ # Не верифіковане проксі Kellnr на базі власного індексу -> Повний аудит рішення не проводився, зокрема обробка [config.json](https://github.com/rust-lang/crates.io-index/blob/master/config.json). Візуально, лічильники завантажень в ланцюгу проксі працюють коректно, підміна фіктивним індексом - не дозволяє оновлень. +> Повний аудит рішення не проводився, зокрема обробка файлу github.com/rust-lang/crates.io-index/blob/master/config.json +> Візуально, лічильники завантажень в ланцюгу проксі працюють коректно, підміна фіктивним індексом - не дозволяє оновлень. У попередньому гайді, я описав базове встановлення Kellnr в режимі локального та віддаленого проксі сервера: => rust-crates-mirroring-with-kellnr.gmi Організація локального дзеркала залежностей Cargo з Kellnr diff --git a/public/uk/libhandy-tab-as-gtk-notebook-widget-alternative.gmi b/public/uk/libhandy-tab-as-gtk-notebook-widget-alternative.gmi index 437398d..7292928 100644 --- a/public/uk/libhandy-tab-as-gtk-notebook-widget-alternative.gmi +++ b/public/uk/libhandy-tab-as-gtk-notebook-widget-alternative.gmi @@ -79,7 +79,7 @@ => https://blogs.gnome.org/alicem/files/2021/03/ephy-pinned2-768x78.png Вигляд закріплених вкладок при зміні ширини вікна * Epiphany вручну підсвічує стрілки, коли вкладка була відкрита за межами екрана, також надає спливаюче вікно для швидкого перемикання між вкладками, коли вони не вміщаються на екрані, однак це не допомагає з перестановкою вкладок -* динамічний віджет DynamicNotebook (https://valadoc.org/granite/Granite.Widgets.DynamicNotebook.html) в Elementary реалізує затримку зміни розміру після закриття вкладки, але це не завжди надійно; наприклад, він стрибає, коли стрілки прокрутки зникають, крім того, він може працювати лише тоді, коли вкладки не розширені +* динамічний віджет DynamicNotebook (valadoc.org/granite/Granite.Widgets.DynamicNotebook.html) в Elementary реалізує затримку зміни розміру після закриття вкладки, але це не завжди надійно; наприклад, він стрибає, коли стрілки прокрутки зникають, крім того, він може працювати лише тоді, коли вкладки не розширені * ці особливості підкреслюють, що, хоча обидва додатки намагаються покращити управління вкладками, існують обмеження, які можуть призвести до непередбачуваного або незручного досвіду для користувачів; підсвічування стрілок може бути корисним, але не вирішує основну проблему з доступом до вкладок, які відкриваються за межами екрана; затримка зміни розміру може бути корисною, але її ненадійність може викликати додаткові труднощі Крім того, GtkNotebook містить як вміст, так і вкладки, і вони є невід'ємними, тому неможливо мати вкладки у повноекранному режимі, автоматично приховуючи їх з заголовної панелі, або розміщувати їх у панелі заголовку, відокремлено від вмісту. @@ -94,7 +94,7 @@ Отже, з урахуванням усіх цих обмежень, я вважаю, що найчистішим шляхом вперед є створення абсолютно нового віджета, який реалізує специфічно динамічні вкладки. Таким чином, також зможемо відокремити перегляд вкладок і панель вкладок в окремі віджети, так само як GtkStack і GtkStackSwitcher - є окремими. -Реалізацію цього віджета було розпочато незадовго до GUADEC 2020 року, і до кінця вересня, на момент долучення до Purism (https://puri.sm) - її було майже завершено. У січні ми з Адрієном нарешті знайшли час, щоб закінчити, переглянути та впровадити його. +Реалізацію цього віджета було розпочато незадовго до GUADEC 2020 року, і до кінця вересня, на момент долучення до Purism (puri.sm) - її було майже завершено. У січні ми з Адрієном нарешті знайшли час, щоб закінчити, переглянути та впровадити його. Результатом цього стали два віджети під назвою HdyTabView і HdyTabBar, доступні в бібліотеці libhandy, починаючи з версії 1.2: diff --git a/public/uk/linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi b/public/uk/linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi index d9fc076..0f0d4c7 100644 --- a/public/uk/linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi +++ b/public/uk/linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi @@ -1,10 +1,10 @@ # Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK -В матеріалі наведено приклад ізоляції віртуальної операційної системи Linux (та відповідно - усіх її програм) від вхідних та вихідних з'єднань в Інтернет, без додаткових правил в iptables. Зв'язок передбачається виключно засобами локальної мережі Yggdrasil з використанням технології VSOCK (https://man7.org/linux/man-pages/man7/vsock.7.html), а Інтернет-інтерфейс - буде відсутній як такий. +В матеріалі наведено приклад ізоляції віртуальної операційної системи Linux (та відповідно - усіх її програм) від вхідних та вихідних з'єднань в Інтернет, без додаткових правил в iptables. Зв'язок передбачається виключно засобами локальної мережі Yggdrasil з використанням технології VSOCK (man7.org/linux/man-pages/man7/vsock.7.html), а Інтернет-інтерфейс - буде відсутній як такий. Кому потрібен доступ в Інтернет, це можна зробити окремо - засобами локальних проксі DNS та дзеркал репозиторіїв. Тобто, така система не буде "сліпою" та з певними доопрацюваннями буде здатна оновлюватись і взаємодіяти зі світом, але робити це без витоків через дірки софту та пропущені опції в конфігах. -Нижче розглядається налаштування засобами GUI Virtual Machine Manager (https://virt-manager.org), що зручно для десктоп образів. Користувачі CLI, зокрема системні адміністратори - можуть цей допис не читати. +Нижче розглядається налаштування засобами GUI Virtual Machine Manager (virt-manager.org), що зручно для десктоп образів. Користувачі CLI, зокрема системні адміністратори - можуть цей допис не читати. ## VSOCK diff --git a/public/uk/mat2-meta-data-cleaner.gmi b/public/uk/mat2-meta-data-cleaner.gmi index 7981208..7b6233b 100644 --- a/public/uk/mat2-meta-data-cleaner.gmi +++ b/public/uk/mat2-meta-data-cleaner.gmi @@ -109,7 +109,7 @@ $ mat2 -show /path/to/file.pdf creator: Mozilla Firefox 145.0.1 format: PDF-1.7 mod-date: -1 - producer: cairo 1.18.0 (https://cairographics.org) + producer: cairo 1.18.0 (cairographics.org) ``` то його "очищена" версія виглядатиме так: diff --git a/public/uk/misfin-postal-satellite-of-geminispace.gmi b/public/uk/misfin-postal-satellite-of-geminispace.gmi index 8d4572d..b9dc5c7 100644 --- a/public/uk/misfin-postal-satellite-of-geminispace.gmi +++ b/public/uk/misfin-postal-satellite-of-geminispace.gmi @@ -1,8 +1,8 @@ # Misfin - поштовий сателіт Geminispace -Про Misfin я знаю давно, декілька разів намагався ним користуватись, але жодного - не доводилось перевірити його в реальних умовах. Зокрема, через брак аудиторії та відсутність такої необхідності в сучасному світі месенджерів, де й сама пошта є епохою динозаврів. Утім, хотілось би трішки освітити цю альтернативну технологію для широкого загалу, адже з протоколом Gemini - знайомий не заочно і вже встиг написати для його специфікації, у свій час, повнофункціональний GTK браузер Yoda (https://github.com/YGGverse/Yoda) а також ряд інших серверних рішень різними мовами. +Про Misfin я знаю давно, декілька разів намагався ним користуватись, але жодного - не доводилось перевірити його в реальних умовах. Зокрема, через брак аудиторії та відсутність такої необхідності в сучасному світі месенджерів, де й сама пошта є епохою динозаврів. Утім, хотілось би трішки освітити цю альтернативну технологію для широкого загалу, адже з протоколом Gemini - знайомий не заочно і вже встиг написати для його специфікації, у свій час, повнофункціональний GTK браузер Yoda (github.com/YGGverse/Yoda) а також ряд інших серверних рішень різними мовами. -Протокол доставки повідомлень Misfin - названо на честь космічного проєкту MSFN, Manned Space Flight Network (https://en.wikipedia.org/wiki/Manned_Space_Flight_Network) і є спробою реалізації мінімалістичної альтернативи класичній пошті e-mail, за образом і подобою концепції протоколу Gemini. +Протокол доставки повідомлень Misfin - названо на честь космічного проєкту MSFN, Manned Space Flight Network (en.wikipedia.org/wiki/Manned_Space_Flight_Network) і є спробою реалізації мінімалістичної альтернативи класичній пошті e-mail, за образом і подобою концепції протоколу Gemini. З офіційного маніфесту: diff --git a/public/uk/my-first-impressions-of-flarum.gmi b/public/uk/my-first-impressions-of-flarum.gmi index cc4e6de..d952bf1 100644 --- a/public/uk/my-first-impressions-of-flarum.gmi +++ b/public/uk/my-first-impressions-of-flarum.gmi @@ -1,10 +1,10 @@ # Мої перші враження від Flarum -Я знаю, що тема вибору рушія для форуму й досі актуальна для адмінів, тому лишу деякі спостереження після свого першого досвіду користування Flarum (https://flarum.org) впродовж місяця. +Я знаю, що тема вибору рушія для форуму й досі актуальна для адмінів, тому лишу деякі спостереження після свого першого досвіду користування Flarum (flarum.org) впродовж місяця. ## Сподобалося -* Мінімалістичний. Якщо порівнювати з популярним Discourse (https://www.discourse.org) - я не втопився в налаштуваннях, а також не мучусь з усіляким задротним JS типу кастомних Ctrl+F (та їх вимиканням) +* Мінімалістичний. Якщо порівнювати з популярним Discourse (www.discourse.org) - я не втопився в налаштуваннях, а також не мучусь з усіляким задротним JS типу кастомних Ctrl+F (та їх вимиканням) * Зручно писати довгі дописи, статті. Усі навороти організовані модулями, я просто вимкнув BBCode і лишив Markdown, тому усі мої попередні дописи вдалося просто портувати. Також тут зручна форма редагування: вона влаштована так, що вікно можна просто масштабувати, при цьому текст вирівняно до ширини реального блоку стандартної теми; оновлення існуючого блоку відбувається прямо під час написання. * Правильна архітектура на базі Symfony / Laravel: це значить що тут використовуються промислові, перевірені часом стандарти, а не самопал. Це трохи ускладнює модифікації в плані часових витрат на розгортання середовища але воно того варте, плюсую. * Є більш-менш робочий сценарій перегляду форуму без JavaScript. Це може бути зручно для користувачів Інтернет в плані SEO просування а також альт-мереж, в плані приватності - бо тут часто зустрічаються садомазохісти що орієнтуються без ~світла~ JS. @@ -13,13 +13,13 @@ ## Не сподобалося * Повільний. Реально настільки, що я спочатку не розумів які такі функції працюють на бекграунді, але вимкнувши дебаг режим, інших не знайшов. Тут можна грішити на SSD і той факт, що я не налаштував сесії в пам'яті, але в мене на цьому ж диску працює βtracker (btracker-bittorrent-tracker-in-rust.gmi), який швиденько собі шукає по нинішнім 500 торентам, враховуючи час на bencode парсинг, scrape та повнотекстовий пошук файлів, яких там буває до десятка тисяч на торент. Не знаю коротше, поки загадка для мене. -* Немає RSS з коробки. Це сабж другої версії рушія, котру я поставив від балди як "профі" не боючись бета-тестів і можливих доопрацювань - я потім не хочу мігрувати, мені простіше почати з другої. Отже, я поцікавився (https://discuss.flarum.org/d/38016-rss-feed-for-v2) сабжем, та зрозумів, що адміни ультра-модні, RSS для них вже не камільфо - враховуйте. -* Немає української локалізації і покищо хз як натягнути першу версію локалізацію рушія на другу, хоча б частково, я думаю там має бути спільний скелет. Майнейнеру на моє питання - пофіг (https://discuss.flarum.org/d/31921-ukrainian-language-pack-for-flarum/54). +* Немає RSS з коробки. Це сабж другої версії рушія, котру я поставив від балди як "профі" не боючись бета-тестів і можливих доопрацювань - я потім не хочу мігрувати, мені простіше почати з другої. Отже, я поцікавився (discuss.flarum.org/d/38016-rss-feed-for-v2) сабжем, та зрозумів, що адміни ультра-модні, RSS для них вже не камільфо - враховуйте. +* Немає української локалізації і покищо хз як натягнути першу версію локалізацію рушія на другу, хоча б частково, я думаю там має бути спільний скелет. Майнейнеру на моє питання - пофіг (discuss.flarum.org/d/31921-ukrainian-language-pack-for-flarum/54). * Налаштування теми. Зокрема - теґів: тут якийсь фільтр палітри, дрочусь і по цей день: бо в темній темі одне а в світлій інше. Утім, це не є великою траблою якщо зайнятись питанням фундаментально. -* Хоч і наявне сховище файлів для аватарок, не можливо просто додати вкладення до повідомлення, тому наприклад, далекі від технічних приколів адміни сусіднього форуму `zabytki.in.ua` - публікують історичні фото на сторонніх сервісах, типу `twimg.com` про що я їм своєчасно нагадав (https://zabytki.in.ua/community/d/618-zovnisnye-sxovishhe-dlya-zobrazen) +* Хоч і наявне сховище файлів для аватарок, не можливо просто додати вкладення до повідомлення, тому наприклад, далекі від технічних приколів адміни сусіднього форуму `zabytki.in.ua` - публікують історичні фото на сторонніх сервісах, типу `twimg.com` про що я їм своєчасно нагадав (zabytki.in.ua/community/d/618-zovnisnye-sxovishhe-dlya-zobrazen) * З коробки немає функціональності відтермінованих дописів, чернеток та автозбереження, що б могло бути зручним в локальних умовах перебоїв з живленням. * Немає підтримки альтернативних URL парсером Markdown, зокрема - сирих IPv6 і усіляких протоколів (схем) Gemini (gemini-protocol-as-http-alternative.gmi), Nex (nex-lightweight-gemini-alternative.gmi) тощо: й досі вісять не клікабельні лінки, знаю, але фікситиму потім - тут в нас під капотом патерни Symfony / Laravel. -* Немає підтримки кастомних E-mail та альтернативної системи авторизації зокрема. Є окремі модулі OAuth, але в рамках моєї спільноти не актуально. Думаю, це частково вирішується модулями але з побаченого я зустрів залежність від констант filter_var аж на рівні хвалених вище компонентів Symfony. Також є науково-популярні рішення від типових веб-розробників, які мені замість дебатів, таки довелось просто вирішити для себе форком фреймворку (https://github.com/YGGverse/flarum-framework/commit/bd421ee6604b358a9c81e59d4f100c93e2ce264d). +* Немає підтримки кастомних E-mail та альтернативної системи авторизації зокрема. Є окремі модулі OAuth, але в рамках моєї спільноти не актуально. Думаю, це частково вирішується модулями але з побаченого я зустрів залежність від констант filter_var аж на рівні хвалених вище компонентів Symfony. Також є науково-популярні рішення від типових веб-розробників, які мені замість дебатів, таки довелось просто вирішити для себе форком фреймворку (github.com/YGGverse/flarum-framework/commit/bd421ee6604b358a9c81e59d4f100c93e2ce264d). ## Висновки diff --git a/public/uk/mycelium-network-integration-with-i2pd.gmi b/public/uk/mycelium-network-integration-with-i2pd.gmi index 3751656..857d41f 100644 --- a/public/uk/mycelium-network-integration-with-i2pd.gmi +++ b/public/uk/mycelium-network-integration-with-i2pd.gmi @@ -6,7 +6,7 @@ Чи доведу почате до кінця - не знаю, але до відома, така ініціатива реалізується в гілці: => https://github.com/YGGverse/i2pd/tree/mycelium -UPD. експериментально поколупавшись (https://github.com/YGGverse/i2pd/pull/1) в реалізації транспорту, прийшов до висновку, що варто або створити окремий реєстр `eNTCP2V6MeshIdx` або перейменувати самі опції конфігу з `ygg` на щось типу `mesh` щоб воно відповідало логіці. +UPD. експериментально поколупавшись (github.com/YGGverse/i2pd/pull/1) в реалізації транспорту, прийшов до висновку, що варто або створити окремий реєстр `eNTCP2V6MeshIdx` або перейменувати самі опції конфігу з `ygg` на щось типу `mesh` щоб воно відповідало логіці. Наразі, кому потрібна підтримка Mycelium тут і зараз - простіше додати умову: => https://github.com/PurpleI2P/i2pd/pull/2245/commits/b079fb63c759a27ef090ad759a102d1b108f5650 "OR" diff --git a/public/uk/mycelium-network-services.gmi b/public/uk/mycelium-network-services.gmi index f9fbe5f..aa51e6e 100644 --- a/public/uk/mycelium-network-services.gmi +++ b/public/uk/mycelium-network-services.gmi @@ -1,6 +1,6 @@ # Каталог сервісів Mycelium -Наразі існує один відомий мені, вручну модерований (через PR) список [YGGverse](https://github.com/YGGverse/mycelium-catalog). Нижче його локальна копія, якщо маєте чим поділитись - пишіть в коментарях, може згодом піднімемо якийсь аналог [Web-directory](http://[21e:a51c:885b:7db0:166e:927:98cd:d186]), але з більш широкою підтримкою протоколів / портів. +Наразі існує один відомий мені, вручну модерований (через PR) список (github.com/YGGverse/mycelium-catalog). Нижче його локальна копія, якщо маєте чим поділитись - пишіть в коментарях, може згодом піднімемо якийсь аналог Web-directory (http://[21e:a51c:885b:7db0:166e:927:98cd:d186]), але з більш широкою підтримкою протоколів / портів. ## BitTorrent diff --git a/public/uk/news/the-end-of-cdma-in-ukraine.gmi b/public/uk/news/the-end-of-cdma-in-ukraine.gmi index ef59fda..c185cf1 100644 --- a/public/uk/news/the-end-of-cdma-in-ukraine.gmi +++ b/public/uk/news/the-end-of-cdma-in-ukraine.gmi @@ -1,12 +1,12 @@ # CDMA в Україні - всьо -Згадалась мені альтернативна стільникова мережа CDMA (https://uk.wikipedia.org/wiki/Code_Division_Multiple_Access) - rолись користувався нею для оформлення міського номеру в мобільному форматі для тодішнього бізнес-проєкту. +Згадалась мені альтернативна стільникова мережа CDMA (uk.wikipedia.org/wiki/Code_Division_Multiple_Access) - rолись користувався нею для оформлення міського номеру в мобільному форматі для тодішнього бізнес-проєкту. -Технологічно, CDMA відрізняється низьким рівнем випромінення, близьким або таким що не перевищує "фонове". Тобто гіпотетично, це була також менш шкідлива для здоров'я альтернатива GSM (https://uk.wikipedia.org/wiki/GSM), де під час роботи останнього є характерні звукові сигнали, якщо розмістити активний телефон поряд з динаміками. CDMA також був нішевим продуктом в сфері мобільного Інтернет. +Технологічно, CDMA відрізняється низьким рівнем випромінення, близьким або таким що не перевищує "фонове". Тобто гіпотетично, це була також менш шкідлива для здоров'я альтернатива GSM (uk.wikipedia.org/wiki/GSM), де під час роботи останнього є характерні звукові сигнали, якщо розмістити активний телефон поряд з динаміками. CDMA також був нішевим продуктом в сфері мобільного Інтернет. Через довжину хвилі робочого діапазону, якість зв'язку мала свої переваги - наприклад, зв'язок був доступний в пішохідних переходах (ще тоді без встановлених там локальних станцій ретрансляції) і недоліки - при низькому рівні сигналу, було чути специфічний шум під час голосового виклику. Вторинним недоліком, була й більш висока ціна, через більшу поширеність в Україні GSM, утім це було лише локальною проблемою. Вища ціна стосувалася не тільки тарифних планів, але й "заліза" адже сім-картки також мали технологічні відмінності і звичайні GSM пристрої (телефони, модеми) були не сумісними. -Власне, останнє мабуть і стало причиною його остаточного витіснення: у січні 2025 року компанія «Інтертелеком» перейшла на надання послуг у стандарті GSM (https://www.intertelecom.ua/aboutcompany). Стосовно 2025 року я не впевнений, адже цікавився питанням декілька років тому, і вже тоді підтримки CDMA не було - можливо на сайті переплутані дати серверу, бо в копірайті зараз 2028 рік :) +Власне, останнє мабуть і стало причиною його остаточного витіснення: у січні 2025 року компанія «Інтертелеком» перейшла на надання послуг у стандарті GSM (www.intertelecom.ua/aboutcompany). Стосовно 2025 року я не впевнений, адже цікавився питанням декілька років тому, і вже тоді підтримки CDMA не було - можливо на сайті переплутані дати серверу, бо в копірайті зараз 2028 рік :) -Була також інша організація - CDMA Україна (https://uk.wikipedia.org/wiki/CDMA_UKRAINE), але особисто послугами цього провайдера не користувався і сьогодні їх сайт вже взагалі не доступний, його можна відкрити тільки через веб-архів +Була також інша організація - CDMA Україна (uk.wikipedia.org/wiki/CDMA_UKRAINE), але особисто послугами цього провайдера не користувався і сьогодні їх сайт вже взагалі не доступний, його можна відкрити тільки через веб-архів => https://web.archive.org/web/20120922025805/http://www.cdma.ua/ \ No newline at end of file diff --git a/public/uk/notblood-multiplayer-with-ipv6-support.gmi b/public/uk/notblood-multiplayer-with-ipv6-support.gmi index c329aa6..d9855f3 100644 --- a/public/uk/notblood-multiplayer-with-ipv6-support.gmi +++ b/public/uk/notblood-multiplayer-with-ipv6-support.gmi @@ -69,7 +69,7 @@ UPD. видача з гугла, сумісність поки не переві => https://www.gog.com/en/game/blood_refreshed_supply => https://store.epicgames.com/en-US/p/blood-refreshed-supply-f8bb7c -В залежності від способу отримання, файли вказані в README (https://github.com/clipmove/NotBlood#installing) копіюються до теки з бінарником `notblood`: +В залежності від способу отримання, файли вказані в README (github.com/clipmove/NotBlood#installing) копіюються до теки з бінарником `notblood`: * BLOOD.INI * BLOOD.RFF diff --git a/public/uk/personal-snac-instance-for-yggdrasil-network.gmi b/public/uk/personal-snac-instance-for-yggdrasil-network.gmi index d0ab755..043d70a 100644 --- a/public/uk/personal-snac-instance-for-yggdrasil-network.gmi +++ b/public/uk/personal-snac-instance-for-yggdrasil-network.gmi @@ -8,9 +8,9 @@ ## Що таке Snac -Snac (https://codeberg.org/grunfink/snac2) - це мінімалістична, JS-less, написана мовою C альтернатива серверу Mastodon, яка також не потребує інсталяції PostgreSQL, натомість зберігає усі дані профілю у файлах JSON. Нещодавно, до цього серверу було додано підтримку IPv6 (PR#256), а отже - він буде працювати й з діапазоном Yggdrasil `0200::/7` +Snac (codeberg.org/grunfink/snac2) - це мінімалістична, JS-less, написана мовою C альтернатива серверу Mastodon, яка також не потребує інсталяції PostgreSQL, натомість зберігає усі дані профілю у файлах JSON. Нещодавно, до цього серверу було додано підтримку IPv6 (PR#256), а отже - він буде працювати й з діапазоном Yggdrasil `0200::/7` -Оскільки Yggdrasil дозволяє безкоштовно генерувати не обмежену кількість статичних IP (на базі приватного ключа Ed25519), тут немає звичної потреби в DNS. Хоча, можна опціонально прикрутити Alfis (https://github.com/Revertron/Alfis), але особисто я цим ділом не користуюсь (зокрема, й через досі не вирішену проблему #364, тому також не хочу нав'язувати його в рамках протоколу ActivityPub - буде просто формат `username@IPv6`, який мені не потрібно а ні оновлювати, а ні майнити потім. +Оскільки Yggdrasil дозволяє безкоштовно генерувати не обмежену кількість статичних IP (на базі приватного ключа Ed25519), тут немає звичної потреби в DNS. Хоча, можна опціонально прикрутити Alfis (github.com/Revertron/Alfis), але особисто я цим ділом не користуюсь (зокрема, й через досі не вирішену проблему #364, тому також не хочу нав'язувати його в рамках протоколу ActivityPub - буде просто формат `username@IPv6`, який мені не потрібно а ні оновлювати, а ні майнити потім. ## Встановлення @@ -234,7 +234,7 @@ location /theme.css { ### Специфіка клієнтських застосунків -Особисто, я встиг перевірити тільки Tuba (https://tuba.geopjr.dev/). Як виявилось, даний клієнт має захардкожену обробку схеми HTTPS, тому якщо користуєтесь цим застосунком, доведеться налаштувати окремий інтерфейс Nginx на порті `443` з використанням сертифікату, хоч у випадку з Yggdrasil - це зайва "капуста" і мабуть поки що лишусь на веб-інтерфейсі або зроблю і викладу потім патч. +Особисто, я встиг перевірити тільки Tuba (tuba.geopjr.dev/). Як виявилось, даний клієнт має захардкожену обробку схеми HTTPS, тому якщо користуєтесь цим застосунком, доведеться налаштувати окремий інтерфейс Nginx на порті `443` з використанням сертифікату, хоч у випадку з Yggdrasil - це зайва "капуста" і мабуть поки що лишусь на веб-інтерфейсі або зроблю і викладу потім патч. UPD 1. розробник виявився супер-оперативним і вже створив гілку з патчем: @@ -281,7 +281,7 @@ flatpak-builder --force-clean build\ ### Моніторинг трафіку -Оскільки сервер Snac не передбачає користування JS інтерфейсом, а поточна конфігурація використовує Nginx, можу по ходу справи також порадити goaccess (https://goaccess.io/) - CLI утиліту для зручного моніторингу статистики користувацького трафіку, якщо такий буде: +Оскільки сервер Snac не передбачає користування JS інтерфейсом, а поточна конфігурація використовує Nginx, можу по ходу справи також порадити goaccess (goaccess.io) - CLI утиліту для зручного моніторингу статистики користувацького трафіку, якщо такий буде: ``` bash goaccess /var/log/nginx/access.log @@ -289,7 +289,7 @@ goaccess /var/log/nginx/access.log ### Приватний режим -Yggdrasil дозволяє маскувати реальний IP, якщо ви користуєтесь власним вихідним вузлом (https://publicpeers.neilalexander.dev/). Звісно, таку можливість не варто розглядати в контексті анонімізації окремо без додаткових шарів, оскільки використання протоколу Yggdrasil без наприклад таких проксі, як Shadowsocks - легко виявляється. +Yggdrasil дозволяє маскувати реальний IP, якщо ви користуєтесь власним вихідним вузлом (publicpeers.neilalexander.dev). Звісно, таку можливість не варто розглядати в контексті анонімізації окремо без додаткових шарів, оскільки використання протоколу Yggdrasil без наприклад таких проксі, як Shadowsocks - легко виявляється. Ця тема виходить за рамки матеріалу, але зверну увагу на деякі аспекти, якщо ви плануєте користуватись збіркою Snac + Yggdrasil в режимі "інкогніто". Протокол ActivityPub передбачає "спілкування" між серверами для обміну івентами. Тобто потенційний фоловер може відправити запит підписки на на дозволений у фаєрвол інтерфейс `0200::/7`, але вказати в заголовках події ActivityPub - зворотній DNS на вузол в мережі Інтернет. Таким чином, ваша система здійснить транзакцію з білого IP через системний резольвер або без нього, використовуючи локальний Curl API від Snac. diff --git a/public/uk/pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi b/public/uk/pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi index 405d460..5fc5fdf 100644 --- a/public/uk/pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi +++ b/public/uk/pyseeder-i2p-ecosystem-support-with-yggdrasil.gmi @@ -4,7 +4,7 @@ ## Pyseeder -pyseeder (https://github.com/PurpleI2P/pyseeder) - утиліта командного рядка, написана мовою Python. Вона використовується для різних задач, зокрема для генерації файлу i2pseeds.su3, необхідного для пошуку вузлів при першому запуску роутера I2P (в i2pd, він звичайно вказується в i2pd.conf). Це працює приблизно так, як DNS сід гаманців BitCoin. +pyseeder (github.com/PurpleI2P/pyseeder) - утиліта командного рядка, написана мовою Python. Вона використовується для різних задач, зокрема для генерації файлу i2pseeds.su3, необхідного для пошуку вузлів при першому запуску роутера I2P (в i2pd, він звичайно вказується в i2pd.conf). Це працює приблизно так, як DNS сід гаманців BitCoin. Інструкції з користування pyseeder описані в README.md проєкту: => https://github.com/PurpleI2P/pyseeder/blob/master/README.md diff --git a/public/uk/radicle-is-decentralized-p2p-git-dvcs.gmi b/public/uk/radicle-is-decentralized-p2p-git-dvcs.gmi index 37567c3..df0d7bd 100644 --- a/public/uk/radicle-is-decentralized-p2p-git-dvcs.gmi +++ b/public/uk/radicle-is-decentralized-p2p-git-dvcs.gmi @@ -252,7 +252,7 @@ Git - по своїй архітектурі, вже є децентралізо Мені досі не дуже зрозумілий Web-UI Radicle. Вони перейменували Pull в Patch, це вже збиває з толку. Я безнадійно звик до GitHub. З іншого боку, активно експериментую з переходом на протокол Gemini, а з ним - зміною концепції взаємодії з контентом: для текстових сторінок - свій застосунок, для месенджера - інший, для медіа - третій. Тобто намагаюсь відучити себе від Веб-браузеру, в який перекочувало буквально все моє життя. -В соціальному плані, тут немає властивих Веб-прошаркам тікетів, пул-реквестів та смайликів: спілкування розробників відбувається в середовищі командного рядка і більше нагадує концепцію ngit (https://gitworkshop.dev/ngit). Технічно, я думаю, що це може бути реалізовано в перспективі, утім зараз тільки Git-like CLI. +В соціальному плані, тут немає властивих Веб-прошаркам тікетів, пул-реквестів та смайликів: спілкування розробників відбувається в середовищі командного рядка і більше нагадує концепцію ngit (gitworkshop.dev/ngit). Технічно, я думаю, що це може бути реалізовано в перспективі, утім зараз тільки Git-like CLI. Тому, суб'єктивно, Radicle - це інструмент в першу чергу для людей, які готові змінювати свідомість та власні звички, чий розум відкритий для нового досвіду і тестування на цьому ясному розумі нових концепцій, у даному випадку - на базі старих технологій. Цей проєкт однозначно вартий уваги через як мінімум свою інтенсивність розробки і я особисто за ним з цікавістю спостерігаю. diff --git a/public/uk/radicle-web-service-deployment.gmi b/public/uk/radicle-web-service-deployment.gmi index 952fe7c..3bfcb9e 100644 --- a/public/uk/radicle-web-service-deployment.gmi +++ b/public/uk/radicle-web-service-deployment.gmi @@ -239,7 +239,8 @@ npm install VITE_RUNTIME_CONFIG=true npm run build tar -czvf radicle-explorer.tar.gz -C build . ``` -* рекомендую збирати з підтримкою динамічного `config.json` (`VITE_RUNTIME_CONFIG=true`), інакше після кожної зміни конфігурації, доведеться заново перезбирати весь білд і перезаливати його на сервер; детальніше про це написано [тут](https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az4V1sjrXqjvFdnCUbxPFqd5p4DtH5/tree/README.md#run-time-configuration). +* рекомендую збирати з підтримкою динамічного `config.json` (`VITE_RUNTIME_CONFIG=true`), інакше після кожної зміни конфігурації, доведеться заново перезбирати весь білд і перезаливати його на сервер; детальніше про це написано тут: +=> https://app.radicle.xyz/nodes/iris.radicle.xyz/rad%3Az4V1sjrXqjvFdnCUbxPFqd5p4DtH5/tree/README.md#run-time-configuration ### Встановлення diff --git a/public/uk/reticulum-meshchat-with-connection-over-yggdrasil.gmi b/public/uk/reticulum-meshchat-with-connection-over-yggdrasil.gmi index 3fbdabc..f679a77 100644 --- a/public/uk/reticulum-meshchat-with-connection-over-yggdrasil.gmi +++ b/public/uk/reticulum-meshchat-with-connection-over-yggdrasil.gmi @@ -1,14 +1,14 @@ # Reticulum / MeshChat з підключенням через Yggdrasil -Reticulum (https://github.com/markqvist/Reticulum) - відносно новий протокол зв'язку, створений в першу чергу для радіо-мереж з метою захищеної, децентралізованої передачі даних в умовах високої затримки сигналу, але може працювати в оверлейному режимі (поверх інших мереж). На відміну від наявних реалізацій локальних мереж CJDNS, Yggdrasil, Mycelium та інших, в основі не використовує стек IP як такий, натомість реалізує передачу даних в етері через пірингові ретранслятори, вже знайомі користувачам I2P як "хопи". +Reticulum (github.com/markqvist/Reticulum) - відносно новий протокол зв'язку, створений в першу чергу для радіо-мереж з метою захищеної, децентралізованої передачі даних в умовах високої затримки сигналу, але може працювати в оверлейному режимі (поверх інших мереж). На відміну від наявних реалізацій локальних мереж CJDNS, Yggdrasil, Mycelium та інших, в основі не використовує стек IP як такий, натомість реалізує передачу даних в етері через пірингові ретранслятори, вже знайомі користувачам I2P як "хопи". -Сфери застосування технології Reticulum можуть бути різними: в цивільному сегменті - розробляються такі протоколи обміну даними як LXMF (https://github.com/markqvist/lxmf) та вже функціонуюча його засобами соціальна платформа NomadNet (https://github.com/markqvist/NomadNet), що віддалено може нагадувати гібрид ZeroNet і Gemini Protocol поверх I2P, з функціональністю месенджера. +Сфери застосування технології Reticulum можуть бути різними: в цивільному сегменті - розробляються такі протоколи обміну даними як LXMF (github.com/markqvist/lxmf) та вже функціонуюча його засобами соціальна платформа NomadNet (github.com/markqvist/NomadNet), що віддалено може нагадувати гібрид ZeroNet і Gemini Protocol поверх I2P, з функціональністю месенджера. В технічну складову роботи мережі вдаватись не буду, оскільки сам в ній тільки розбираюсь. Натомість, пропоную ознайомитись з Reticulum на рівні користувача, встановивши клієнтське програмне забезпечення соціальної платформи та налаштувавши вузол ретрансляції для локальних користувачів мереж Yggdrasil та Mycelium. ## Клієнт -Оригінальний клієнт NomadNet я пробував встановлювати багато разів, але інтерфейс TUI видавався не зручним; через вибраний мною не стабільний пір я також не міг підключитися до внутрішніх сайтів і зрозуміти як це працює. Невдовзі, перечитуючи документацію, вирішив спробувати MeshChat (https://github.com/liamcottle/reticulum-meshchat), який використовує ті само технології, але надає їх в сучасному та інтуїтивно зрозумілому форматі Web UI (засобами Vue / Node.js) +Оригінальний клієнт NomadNet я пробував встановлювати багато разів, але інтерфейс TUI видавався не зручним; через вибраний мною не стабільний пір я також не міг підключитися до внутрішніх сайтів і зрозуміти як це працює. Невдовзі, перечитуючи документацію, вирішив спробувати MeshChat (github.com/liamcottle/reticulum-meshchat), який використовує ті само технології, але надає їх в сучасному та інтуїтивно зрозумілому форматі Web UI (засобами Vue / Node.js) Окрім перегляду ресурсів NomadNet, текстового месенджера та голосових викликів, MeshChat надає деякі інструменти адміністрування і візуалізації мережі Reticulum. @@ -172,7 +172,7 @@ enable_transport = true target_host = 505:6847:c778:61a1:5c6d:e802:d291:8191 target_port = 4242 ``` -* ви можете додати будь які інші піри (https://github.com/markqvist/Reticulum/wiki/Community-Node-List) та інтерфейси (https://reticulum.network/manual/interfaces.html) з поміж доступних, в тому числі UDP або навіть I2P (зробити це можна також через Веб-адмінку MeshChat) +* ви можете додати будь які інші піри (github.com/markqvist/Reticulum/wiki/Community-Node-List) та інтерфейси (reticulum.network/manual/interfaces.html) з поміж доступних, в тому числі UDP або навіть I2P (зробити це можна також через Веб-адмінку MeshChat) Для доступу до сервера, в залежності від його типу, потрібно також відкрити відповідні порти (у прикладі це 4242) diff --git a/public/uk/rssto-convert-rss-feeds-into-multiple-formats.gmi b/public/uk/rssto-convert-rss-feeds-into-multiple-formats.gmi index b4a8bac..885736f 100644 --- a/public/uk/rssto-convert-rss-feeds-into-multiple-formats.gmi +++ b/public/uk/rssto-convert-rss-feeds-into-multiple-formats.gmi @@ -115,7 +115,7 @@ StandardError=file:///home/rssto/error.log [Install] WantedBy=multi-user.target ``` -* значення "User" і "Group" та шляхів у мене вказані як користувач створеного мною сервера [Nexy](https://github.com/YGGverse/nexy), але якщо він у вас окремим обліковим записом, то створіть його командою `useradd -m rssto` +* значення "User" і "Group" та шляхів у мене вказані як користувач створеного мною сервера Nexy (github.com/YGGverse/nexy), але якщо він у вас окремим обліковим записом, то створіть його командою `useradd -m rssto` * `sudo systemctl enable rssto` - додати до авто-запуску при старті системи * `sudo systemctl start rssto` - запуск * `sudo systemctl status rssto` - перевірка статусу diff --git a/public/uk/rust-crates-mirroring-with-kellnr.gmi b/public/uk/rust-crates-mirroring-with-kellnr.gmi index 0a04868..315330a 100644 --- a/public/uk/rust-crates-mirroring-with-kellnr.gmi +++ b/public/uk/rust-crates-mirroring-with-kellnr.gmi @@ -317,11 +317,13 @@ crates.io-index > _↑ | * `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), знімок репозиторію на момент написання матеріалу: +Не офіційне дзеркало Kellnr в Radicle: ``` rad:z4VnEyS5YXnFpEgY1iheHneRPeSX6 ``` +* знімок репозиторію на момент написання матеріалу +=> radicle-is-decentralized-p2p-git-dvcs.gmi Radicle: децентралізований P2P хостинг Git/DVCS ### Дивіться також diff --git a/public/uk/rust-cross-compilation-with-cross-crate.gmi b/public/uk/rust-cross-compilation-with-cross-crate.gmi index 441c83a..40c1670 100644 --- a/public/uk/rust-cross-compilation-with-cross-crate.gmi +++ b/public/uk/rust-cross-compilation-with-cross-crate.gmi @@ -28,7 +28,7 @@ cross build --release --target armv7-unknown-linux-gnueabihf У більшості випадків, все має працювати так само як з cargo, але деякі користувачі мають кастомні рецепти, які я збиратиму нижче. -### [mycelium](https://github.com/threefoldtech/mycelium) +### mycelium (github.com/threefoldtech/mycelium) > Если бы было всё так просто. У меня еще надо: ``` bash diff --git a/public/uk/setup-anonymous-ftp-server.gmi b/public/uk/setup-anonymous-ftp-server.gmi index 817a06d..b87d23b 100644 --- a/public/uk/setup-anonymous-ftp-server.gmi +++ b/public/uk/setup-anonymous-ftp-server.gmi @@ -67,7 +67,7 @@ vsftpd_log_file=/var/log/vsftpd.log Тепер важливо відкрити потрібні порти. Так як я не використовую режим SSL, мені потрібно дозволити тільки порти 20, 21 і 10000-10100 (pasv_min_port і pasv_max_port відповідно). -На Fedora, я досі не навчився користуватись новомодним firewalld через командний рядок, тому зробив це через GUI Firewall / firewall-config (https://firewalld.org). Тут важливо додати ці правила до групи Permanent щоб вони не злетіли після ребуту. +На Fedora, я досі не навчився користуватись новомодним firewalld через командний рядок, тому зробив це через GUI Firewall / firewall-config (firewalld.org). Тут важливо додати ці правила до групи Permanent щоб вони не злетіли після ребуту. В Debian, для перманентної зміни iptables, я користуюсь ufw: diff --git a/public/uk/setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi b/public/uk/setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi index a4d2b12..f981a7d 100644 --- a/public/uk/setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi +++ b/public/uk/setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi @@ -4,7 +4,7 @@ I2P - це альтернативна мережа, характерною ри Утім, для підключення до I2P глобально, часто використовується Інтернет. Особливістю цього гайду є спосіб підключення до мережі I2P без прямих звернень Інтернет, через додатковий шар Yggdrasil. Може бути корисним у випадках, якщо ваш провайдер блокує піринговий трафік. -* В інших випадках, такий спосіб може бути менш "анонімним" через можливість генерації необмеженої кількості адрес Yggdrasil з підміною ними "незалежних" вузлів (https://uk.wikipedia.org/wiki/Атака_Сивілли) - таким чином, для себе важливо правильно обирати пріоритети налаштувань і розуміти мету, з якою використовується I2P. Адже якщо метою є саме анонімізація а не наприклад ретрансляція певного сервісу для користувачів з обмеженим доступом - то для таких цілей, на мою думку, краще використовувати звичайний Інтернет піринг або приватний ботнет. +* В інших випадках, такий спосіб може бути менш "анонімним" через можливість генерації необмеженої кількості адрес Yggdrasil з підміною ними "незалежних" вузлів (uk.wikipedia.org/wiki/Атака_Сивілли) - таким чином, для себе важливо правильно обирати пріоритети налаштувань і розуміти мету, з якою використовується I2P. Адже якщо метою є саме анонімізація а не наприклад ретрансляція певного сервісу для користувачів з обмеженим доступом - то для таких цілей, на мою думку, краще використовувати звичайний Інтернет піринг або приватний ботнет. Метою цього матеріалу не є детальний опис принципу роботи мережі I2P і анонімізація зокрема. Матеріал створено лише у якості нотатки, з досвіду публікації Веб-сайту для української спільноти адміністраторів альтернативних мереж на прохання деяких користувачів, для чого й був потрібен локальний роутер. Якщо вам не потрібно публікувати сайт чи анонімно користуватися мережею I2P, можна просто скористатися наявними вихідними SOCKS/HTTP проксі, в т.ч. для Yggdrasil. @@ -54,7 +54,10 @@ useradd -m i2pd nano /etc/i2pd.conf ``` -Оригінальний файл конфігурації [доступний в репозиторії](https://github.com/PurpleI2P/i2pd/blob/openssl/contrib/i2pd.conf), нижче я наведу тільки змінені його опції, але буде правильним звірити їх актуальність на момент встановлення: +Оригінальний файл конфігурації доступний в репозиторії: +=> https://github.com/PurpleI2P/i2pd/blob/openssl/contrib/i2pd.conf + +Нижче я наведу тільки змінені його опції, але буде правильним звірити їх актуальність на момент встановлення: ``` /etc/i2pd.conf # рівень деталізації журналів, я змінив щоб не засмічувати пам'ять @@ -157,7 +160,7 @@ WantedBy=multi-user.target ### Ініціальний запуск роутера -При першому запуску, ініціалізація мережі в мене відбувалась не одразу: системний сервіс вилітав з помилками підключення до вузлів. Наскільки я розумію, це пов'язано з відсутністю або малою кількістю ресідів Yggdrasil в мережі I2P. Якщо у вас вже є аналогічний вузол, що працює на такому (локальному) конфігі, можна спробувати імпортувати профіль мережі з нього або підняти звідти ресід: це робиться утилітою [pyseeder](https://github.com/PurpleI2P/pyseeder). Якщо ви знаєте адресу Yggdrasil вузла онлайн, то можете просто спробувати додати його в конфігурацію `reseed.yggurls` і перезапустити i2pd. +При першому запуску, ініціалізація мережі в мене відбувалась не одразу: системний сервіс вилітав з помилками підключення до вузлів. Наскільки я розумію, це пов'язано з відсутністю або малою кількістю ресідів Yggdrasil в мережі I2P. Якщо у вас вже є аналогічний вузол, що працює на такому (локальному) конфігі, можна спробувати імпортувати профіль мережі з нього або підняти звідти ресід: це робиться утилітою pyseeder (github.com/PurpleI2P/pyseeder). Якщо ви знаєте адресу Yggdrasil вузла онлайн, то можете просто спробувати додати його в конфігурацію `reseed.yggurls` і перезапустити i2pd. Якщо конекту досі немає, і ваш роутер по якимось причинам вже пускався в режимі Інтернет, варто (після зупинки сервіса i2pd) спробувати видалити теку: diff --git a/public/uk/setup-icecast-ezstream-web-radio-on-linux.gmi b/public/uk/setup-icecast-ezstream-web-radio-on-linux.gmi index a4442b4..d666e35 100644 --- a/public/uk/setup-icecast-ezstream-web-radio-on-linux.gmi +++ b/public/uk/setup-icecast-ezstream-web-radio-on-linux.gmi @@ -6,7 +6,7 @@ ## Icecast -Icecast (https://icecast.org) - це класичний сервер, на базі якого створюється публічний сервіс для слухачів (клієнтів). Його можна порівняти з проксі сервером Nginx для Веб-сайтів, от тільки створений він спеціально для операцій з потоковими даними. Цей сервер ніяк не взаємодіє з медіа-колекціями напряму, він просто отримує на себе сирий потік аудіо (або інших) даних з бекенду (по API) та розподіляє його на активні підключення, виступаючи в ролі хабу, своєрідної "радіо-вежі". +Icecast (icecast.org) - це класичний сервер, на базі якого створюється публічний сервіс для слухачів (клієнтів). Його можна порівняти з проксі сервером Nginx для Веб-сайтів, от тільки створений він спеціально для операцій з потоковими даними. Цей сервер ніяк не взаємодіє з медіа-колекціями напряму, він просто отримує на себе сирий потік аудіо (або інших) даних з бекенду (по API) та розподіляє його на активні підключення, виступаючи в ролі хабу, своєрідної "радіо-вежі". ### Встановлення @@ -177,7 +177,7 @@ server { Коли "станцію" Icecast налаштовано, нам потрібно надіслати їй дані для трансляції. Такі дані можуть бути голосовими / потоковими або зберігатись у бінарних файлах. Оскільки мені потрібен останній варіант, з ним є одна не очевидна на перший погляд проблема: усі вони мають різні формати (`ogg`, `flac`, `mp3`, тощо) а також різні бітрейти та інші характеристики (в яких не торопаю). Оскільки вихідний стрім для слухача завжди має один формат, нам потрібно якимось чином відформатувати нашу колекцію до уніфікованого потоку: для цієї задачі й потрібен такий софт як Ezstream. -На відміну від популярної комбінації Icecast2 + Ices2 (https://icecast.org/ices/), Ezstream (https://icecast.org/ezstream/) відрізняється тим, що підтримує більше медіа-форматів з коробки та є простішим в налаштуванні (для поточних завдань) +На відміну від популярної комбінації Icecast2 + Ices2 (icecast.org/ices), Ezstream (icecast.org/ezstream) відрізняється тим, що підтримує більше медіа-форматів з коробки та є простішим в налаштуванні (для поточних завдань) ### Встановлення diff --git a/public/uk/sha1-collision-attack-can-serve-backdoored-torrents.gmi b/public/uk/sha1-collision-attack-can-serve-backdoored-torrents.gmi index 8665a3b..11d8e29 100644 --- a/public/uk/sha1-collision-attack-can-serve-backdoored-torrents.gmi +++ b/public/uk/sha1-collision-attack-can-serve-backdoored-torrents.gmi @@ -1,6 +1,6 @@ # Колізії SHA1 в BitTorrent v1 можуть використовуватися з метою відстеження -Випадково натрапив на цікавий матеріал 2017 року, хоча він і не новий - технологія BitTorrent v1 є поширеною і можна сказати основою по цей день. Зокрема, такі "новітні" проєкти як rqbit (https://github.com/ikatson/rqbit/issues/70) і досі не мають підтримки v2 / sha256. Не зважаючи на наявність такої опції в libtrorrent / qBittorrent, сучасні торент-трекери вимагають створення роздач саме в v1 для "кращої сумісності". +Випадково натрапив на цікавий матеріал 2017 року, хоча він і не новий - технологія BitTorrent v1 є поширеною і можна сказати основою по цей день. Зокрема, такі "новітні" проєкти як rqbit (github.com/ikatson/rqbit/issues/70) і досі не мають підтримки v2 / sha256. Не зважаючи на наявність такої опції в libtrorrent / qBittorrent, сучасні торент-трекери вимагають створення роздач саме в v1 для "кращої сумісності". ## Джерело diff --git a/public/uk/twister-p2p-decentralized-microblogging-platform.gmi b/public/uk/twister-p2p-decentralized-microblogging-platform.gmi index 4f00eca..a0957ed 100644 --- a/public/uk/twister-p2p-decentralized-microblogging-platform.gmi +++ b/public/uk/twister-p2p-decentralized-microblogging-platform.gmi @@ -1,10 +1,10 @@ # twister - децентралізована платформа мікроблогів -twister (твістер, пишеться саме в нижньому регістрі) - це альтернативна пірингова платформа мікроблогів, створена на базі технологій BitTorrent і Bitcoin у 2013 році @miguelfreitas (https://github.com/miguelfreitas) як альтернатива колишньому централізованому сервісу twitter.com +twister (твістер, пишеться саме в нижньому регістрі) - це альтернативна пірингова платформа мікроблогів, створена на базі технологій BitTorrent і Bitcoin у 2013 році @miguelfreitas (github.com/miguelfreitas) як альтернатива колишньому централізованому сервісу twitter.com У 2020 році, розробник платформи припинив (http://twister.net.co/archives/617) її супровід, але оскільки мережа є децентралізованою, вона все ще продовжує функціонувати у своєму первинному стані, хоча кількість користувачів значно знизилась і наразі мережа близька до колапсу. -Дана стаття носить історично-інформаційний характер, і створена більше для зацікавлених у децентралізованих мережах користувачів з базовим досвідом програмування мовою C++ та адміністрування Linux, а ніж рядових споживачів сучасного контенту. Також нижче я не описуватиму весь досвід, оскільки наразі працюю над книгою (https://twisterarmy.github.io/book/) у форматі документації mdBook (англійською мовою), яку планую також в релізі перекласти українською. +Дана стаття носить історично-інформаційний характер, і створена більше для зацікавлених у децентралізованих мережах користувачів з базовим досвідом програмування мовою C++ та адміністрування Linux, а ніж рядових споживачів сучасного контенту. Також нижче я не описуватиму весь досвід, оскільки наразі працюю над книгою (twisterarmy.github.io/book/) у форматі документації mdBook (англійською мовою), яку планую також в релізі перекласти українською. ## Принцип роботи @@ -32,7 +32,7 @@ twister (твістер, пишеться саме в нижньому регі Для тих, хто хоче нативно зібрати повністю робоче ядро під свою систему, напишу коротеньку інструкцію для Linux (на базі матеріалу з книги), оскільки мережа все ще жива і можливо буде комусь цікавою у якості постійної іграшки. -Наразі є дві опції встановлення: офіційний twister-core (https://github.com/miguelfreitas/twister-core) та twister-core від спільноти (https://github.com/twisterarmy/twister-core). Різниця полягає лише в тому, що останній має додаткові DNS вузли для ініціалізації та підтримку IPv6, тобто є більш конективним. Замініть адресу репозиторію у прикладі нижче - вашим вибором! +Наразі є дві опції встановлення: офіційний twister-core (github.com/miguelfreitas/twister-core) та twister-core від спільноти (github.com/twisterarmy/twister-core). Різниця полягає лише в тому, що останній має додаткові DNS вузли для ініціалізації та підтримку IPv6, тобто є більш конективним. Замініть адресу репозиторію у прикладі нижче - вашим вибором! ### Системні залежності diff --git a/public/uk/unexpected-connection-leaks-in-qbittorrent.gmi b/public/uk/unexpected-connection-leaks-in-qbittorrent.gmi index 9713367..c57ca59 100644 --- a/public/uk/unexpected-connection-leaks-in-qbittorrent.gmi +++ b/public/uk/unexpected-connection-leaks-in-qbittorrent.gmi @@ -11,7 +11,7 @@ Отже, скачав я цей образ Debian і втупу додав його в свій призначений для мешів клієнт qBittorrent (бо бачив на βtracker були роздачі). Ну і що: а то що пішов конект на Інтернет IPv4 і я хз чи це дійсно Веб сід чи реально підсосався якийсь пір. -Таке, депресія з приборканням норовливої BitTorrent. Я було думав писати свій клієнт на Rust, але ліба кандидат librqbit взагалі не заточена на параноїків і не вміє (https://github.com/ikatson/rqbit/issues/469) вимикати PEX. Я обходжу ситуацію через костиль блек-ліст: +Таке, депресія з приборканням норовливої BitTorrent. Я було думав писати свій клієнт на Rust, але ліба кандидат librqbit взагалі не заточена на параноїків і не вміє (github.com/ikatson/rqbit/issues/469) вимикати PEX. Я обходжу ситуацію через костиль блек-ліст: => bittorrent-blocklist-examples-for-ipv6-range.gmi Блокування вихідних з'єднань BitTorrent по діапазону IPv6 ## Посилання diff --git a/public/uk/yggmail-messenger-with-email-protocol.gmi b/public/uk/yggmail-messenger-with-email-protocol.gmi index 8cd6275..1e71844 100644 --- a/public/uk/yggmail-messenger-with-email-protocol.gmi +++ b/public/uk/yggmail-messenger-with-email-protocol.gmi @@ -48,7 +48,7 @@ yggmail -help Запуск відбувається однойменною командою, утім декілька слів про режими підключень: * Мультикаст -* Підключення через певний публічний пір (https://publicpeers.neilalexander.dev) +* Підключення через певний публічний пір (publicpeers.neilalexander.dev) * Обидва варіанти Відповідно: diff --git a/public/uk/znc-irc-bouncer-setup.gmi b/public/uk/znc-irc-bouncer-setup.gmi index 3a088cd..ff13289 100644 --- a/public/uk/znc-irc-bouncer-setup.gmi +++ b/public/uk/znc-irc-bouncer-setup.gmi @@ -195,7 +195,7 @@ http 127.0.0.1 8118 ### Halloy -> Halloy (https://halloy.chat) - відносно сучасний клієнт IRC, написаний мовою Rust. Наразі користуюсь саме ним, через особисту цікавість до фреймворку Iced, хоча назвати його супер-зручним та функціональним теж не можу: на момент написання матеріалу він не підтримує проксування на окремі сервери а також має трохи загальмований інтерфейс без контекстних меню та інших підручних наворотів. +> Halloy (halloy.chat) - відносно сучасний клієнт IRC, написаний мовою Rust. Наразі користуюсь саме ним, через особисту цікавість до фреймворку Iced, хоча назвати його супер-зручним та функціональним теж не можу: на момент написання матеріалу він не підтримує проксування на окремі сервери а також має трохи загальмований інтерфейс без контекстних меню та інших підручних наворотів. Приклад підключення Halloy до ZNC наведено в офіційній документації: