From 732c29f2b38deb15662eace79b1c8d468d16c9b5 Mon Sep 17 00:00:00 2001 From: postscriptum Date: Fri, 21 Nov 2025 21:17:15 +0200 Subject: [PATCH] add `about-gemlog-administration.gmi` --- public/uk/about-gemlog-administration.gmi | 151 ++++++++++++++++++++++ public/uk/index.gmi | 1 + 2 files changed, 152 insertions(+) create mode 100644 public/uk/about-gemlog-administration.gmi diff --git a/public/uk/about-gemlog-administration.gmi b/public/uk/about-gemlog-administration.gmi new file mode 100644 index 0000000..fa3fa2f --- /dev/null +++ b/public/uk/about-gemlog-administration.gmi @@ -0,0 +1,151 @@ +# Про адміністрування блогів Gemini + +Оскільки надаю перевагу децентралізації, мій блог розміщено на різних платформах і мережах. Щоб не синхронізувати все вручну, для автоматизованих релізів, я користуюсь певною структурою проєкту і скриптами з публікації оновлень на всіх ресурсах одночасно. + +Цей огляд стосується адміністрування статичного формату файлів, CMS я тут не користуюсь принципово. + +## Редагування + +Тут в мене все типово для програміста: редактор коду VSCodium з плагіном gemini-improved: +=> https://open-vsx.org/extension/printfn/gemini-improved +=> https://github.com/printfn/gemini-vscode + +Щоб переглянути сторінку в форматі Gemtext до її публікації, я просто відкриваю локальний файл у браузері (Yoda або Lagrange). Були думки зробити редактор GTK з прев'ю, але поки не доходять руки. + +## Публікація + +### Git + +Цей блог має локальний та публічний апстрім-репозиторії, де зберігається історія змін: +=> https://codeberg.org/postscriptum/gemlog + +### Хостинг + +Окрім Git/HTTP, сайт публікується на безкоштовному хостингу Yesterweb: +=> gemini://ps.cities.yesterweb.org + +Також планую додати ще одне дзеркало на платформі Flounder, де є вбудований агрегатор оновлень: +=> gemini://ps.flounder.online +* утім, досі (і вже не вперше) очікую на підтвердження облікового запису + +Віднедавна, організував для анонів локальне дзеркало в мережі I2P: +=> gemini://shxxkkrws2m6qowjse5jpgmu64vzupnnhxrhdzrn6fr6m7ynddbq.b32.i2p + +Стосовно самої зв'язки Gemini+I2P, рекомендую наступні матеріали: +=> i2p-capsule-in-gemini-space-with-agate.gmi Публікація капсули Gemini в I2P на прикладі сервера Agate +=> agate-virtual-host-usage-examples.gmi Специфіка роботи з віртуальними хостами Agate + +Повний перелік дзеркал актуалізується тут: +=> mirrors.gmi Список офіційних дзеркал + +## Синхронізація + +Донедавна, для відвантаження файлів на віддалені сервери, користувався такими плагінами: +=> https://github.com/Natizyskunk/vscode-sftp Форк SFTP +=> https://github.com/YGGverse/vscode-webdav Форк плагіна vscode-webdav (з функцією авто-відвантаження при збереженні файлу) + +Але згодом, втомився від глюків розсинхронізації потоків VSCode. Мені потрібно було ходити на кожен сервер і вручну перевіряти чи не заглючило відвантаження певного файлу: іноді URL матеріалу підмінявся індексним файлом та відбувалась всяка інша містика, властива плагінам на JS. + +Щодо хостингу Yesterweb - в мене є окрема нотатка, де я пройшов довгий шлях до поточної моделі релізів: +=> /en/yesterweb-connection-with-webdav.gmi Yesterweb connection with WebDAV +* внизу є приклад скрипта, яким користуюся й досі; нижче коротко опишу, як він працює + +### Скрипт bash + +Актуальна версія скрипта є в репозиторії блогу, продублюю поточну його версію з коментарями: + +``` bash +#!/bin/bash + +# базові змінні конфігурації деплойменту, +# що залежать від конкретного проєкту, відносно якого знаходиться цей скрипт +SRC="public" +ZIP="ps.zip" + +# створення архіву файлів для завантаження +# використовується для офлайн читання та як додатковий бекап +# таким чином, юзерам не потрібно грабати сайт різними скриптами типу gemini-dl +echo "snap $SRC > $ZIP ..." +cd $SRC +rm $ZIP +zip -r -9 $ZIP ./ +cd ../ + +# реєстрація змін в локальному репозиторії та публікація в апстрім +# якщо перед виконанням скрипта не робити ручний коміт з коментарем, +# для цього коміту буде використовуватись поточна дата у форматі UT +echo "update repository ..." +git pull +git add . +git commit -m "$(date +%s)" +git push + +# синхронізація дзеркала I2P/SFTP +echo "update remote host (localnet) ..." +rclone sync $SRC localnet:ps/public --update -v + +# синхронізація з хостингом Yesterweb/WebDAV +echo "update remote host (yesterweb) ..." +rclone sync $SRC yesterweb:/ --update --no-check-certificate -v + +# тут планую додати Flaunder/FTP (та інші хостинги) +# ... +``` + +### Конфігурація rclone + +В скрипті вище можна побачити, що в останніх рядках використовується rclone. Спочатку я користувався більш легким rsync, але згодом перейшов на більш функціональний інструмент з підтримкою WebDAV - rclone. + +Щоб описаний вище скрипт міг відвантажувати файли, потрібно спочатку викнути усі додатки синхронізації для поточного проєкту VSCode (SFTP і WebDAV) і налаштувати локальний профіль rclone (власне як і git). Налаштування профілів rclone відбувається командою: + +``` bash +rclone config +``` +* і далі відповідаємо на питання + +На замітку, лишу тільки нотатку стосовно специфіки налаштування Yesterweb/WebDAV. +Після реєстрації на цьому хостингу, можна побачити наступний текст вітання з подробицями підключення: + +> Success! +> +> Your account has been created. You may now access your page from gemini://.cities.yesterweb.org/ +> +> To edit your site, connect via WebDAV +> Hostname: cities.yesterweb.org +> Port: 1994 +> Encryption: SSL/TLS +> Username and Password are the same as the ones you just set +> (username must be all lowercase!) +> +> OR +> +> Use our gemini/titan file manager +> Over here! + +Отже, коли конфігуруєте rclone, потрібно обрати WebDAV, вказати у якості логіну ваш юзернейм Yesterweb і наступний "host" у форматі URL: + +``` +https://.cities.yesterweb.org:1994 +``` +* як бачимо, цей рядок повинен містити схему https (замість davs), і не типовий порт 1994 + +### Дерево файлів + +Я довго експериментував зі структурою дерева, але врешті зупинився на такому варіанті: + +* створюю кореневу теку проєкту для VSCode +* додаю в цей корінь описаний вище скрипт деплойменту +* створюю в ній теку ./public, де власне будуть розміщуватись публічні файли + +Таким чином, локальна структура файлів виглядатиме наступним чином: + +``` +/ + .git/ + .vscode/ + .gitignore + public/ + index.gmi + pu.sh +``` +* pu.sh або push - це скрипт, який я виконую в терміналі (або хоткеєм) для публікації ресурсу в 1 крок \ No newline at end of file diff --git a/public/uk/index.gmi b/public/uk/index.gmi index c0856f1..5cfabf9 100644 --- a/public/uk/index.gmi +++ b/public/uk/index.gmi @@ -14,6 +14,7 @@ ### Нотатки +=> about-gemlog-administration.gmi 2025-11-21 Про адміністрування блогів Gemini => bitcoin-core-in-rust.gmi 2025-11-20 Реалізація вузла BitCoin на базі Rust => agate-virtual-host-usage-examples.gmi 2025-11-19 Специфіка роботи з віртуальними хостами Agate => custom-proxy-option-per-server-in-the-halloy-irc.gmi 2025-11-18 Реалізував опцію вибіркового проксі в IRC-клієнті Halloy