Чому стандартні плагіни jekyll далекі від ідеалу

11/Березень/2025 jekyllstructured-datanginx

У цій статті я не буду наводити повний код для всіх компонентів, тільки дам сніпети та підказки, на що варто звернути увагу при складанні сайту на jekyll.

Jekyll Structured Data and sitemap.xml 1535x697 jekyll-structured-data-sitemap-and-nginx.png
Jekyll Structured Data and sitemap.xml

Час модифікації файла

Кожна сторінка має щонайменше три точки відображення позначки часу в різних файлах, елементах сторінки або відповіді сервера, і всі вони повинні бути однаковими.

  • ld+json "dateModified": "2025-03-07T15:43:42+00:00"
  • sitemap <lastmod>2025-03-07T15:43:42+00:00</lastmod>
  • headres last-modified: Fri, 07 Mar 2025 15:43:42 GMT
Чому стандартні плагіни...

Блок голівок жорсткого диска

22/Жовтень/2024 hdd

Блок магнітних голівок 4032x3024 24-04-26_13-47-18.jpg
Блок магнітних голівок


Блок голівок жорсткого диска з чотирма пластинами - всього 8 магнітних голівок, для двостороннього читання/запису інформації з пластин.

Блок голівок жорсткого...

Згорілий SpaceX Starlink

1/Вересень/2024 starlink

Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-53-38.jpg
Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-54-23.jpg
Плата роутера Starlink
Плата роутера Starlink 4032x3024
24-09-01_14-54-42.jpg


Згорілий SpaceX Starlink...

Token-based лімітування кількості з'єднань

22/Червень/2024 nginx

Nginx - автентифікація на основі токенів 1600x896 nginx_api_token.png
Nginx - автентифікація на основі токенів

Усі знають про ліміти кількості підключень з одного IP (IP-based), але що робити, якщо ми хочемо обмежити кількість підключень до деякого API на один токен авторизації?
І не важливо, скільки різних IP буде використано.

Частина конфігу nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
map $request_uri $client_token {
    "~*(?i)(token=)([a-f0-9]{32})" $2;      # regex return <32str>
    default                        "";      # Fallback to limit_req_zone:global
}

limit_req_zone  $binary_remote_addr   zone=global:32m       rate=100r/s;    # Rule_1
limit_req_zone  $client_token         zone=tokenlimit:32m   rate=5r/s;      # Rule_2
limit_req       zone=global           burst=25;

server {
        location / {
            index index.html;
            root /var/www/html;
        }
        location = /api {
            index index.html;
            root /var/www/api/html;
            limit_req   zone=tokenlimit   burst=5 nodelay;  # api location
            limit_req   zone=global;                        # Fallback
            limit_req_status              429;              # 503
Token-based лімітування кількості...

Xorg від непривілейованого користувача

12/Січень/2024 gdm3xorgkvmsecurity

Cage for an unprivileged user 1600x900 unprivileged-user-cage.png
Cage for an unprivileged user

Абстрактно.
Є якийсь софт, якому потрібні ікси.
Здавалося б, завантажив, встановив, запустив – користуйся.
Але ось, проблема, подібний софт (для мене подібний - абсолютно весь, який не входить у штатний репозиторій Debian) я не хочу запускати:

  1. На своєму хості.
  2. Від мого користувача.
  3. Під Xorg мого користувача.
  4. Допускати у мої мережі, у тому числі 127.0.0.0

Крім того, той же браузер для “полазити” по сайтах і браузер для клієнт-банку, це не той же самий браузер, користувач і, іноді, система.
Пункти 1, 2, 4, зараз не розглядаємо, мова йтиме про X.

У Debian при стандартних налаштуваннях системи як display-manager використовується LightDM.
У ньому можна увімкнути listen tcp, але процеси Xorg він запускає від root.
У gdm3 навпаки, за умовчанням, він запускає Xorg від користувача, який логіниться в оточення, але в ньому зламали можливість увімкнути listen tcp.
Точніше залишили можливість вимкнути nolisten tcp,
але не увімкнути listen tcp.

Для цього потрібно відредагувати обгортку над X.

Xorg від непривілейованого...
Сторінка 5 з 14