Встановлення основних версій Python на Debian Trixie

24/Грудень/2025 pythontrixie

Python та Debian 1600x904 debian-python.png
Python та Debian

Дуже, дуже часто доводиться стикатися з необхідністю використання певної версії Пітона, наприклад, для torch, або чогось специфічного.
Використовувати conda або Docker у зв’язці з nvidia-container-toolkit і потім налаштовувати образи наприклад nvidia/cuda:13.0.1-runtime-ubuntu22.04 мені відчувається протиприродно, хоча часто так робив.
Та й у контейнері доводиться встановлювати додаткові пакети.

Простіше і зручніше зібрати все на хостовій системі, але при цьому не допустити контамінації всієї системи сторонніми бібліотеками та файлами.

Далі наводиться приклад компіляції кількох версій Python тільки для групи verpy, що дещо зручніше, ніж встановлення лише для одного користувача.

  • ai - довільний користувач, від якого здійснюється компіляція.
  • verpy - група, якою буде дозволено використання.
1
2
3
4
apt install \
    build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
    wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
    liblzma-dev libgdbm-dev libnsl-dev libgdbm-compat-dev

mkdir /opt/openssl
mkdir /opt/python
groupadd --gid 42398 verpy
usermod -aG verpy ai

Встановлення основних версій...

Помилка підключення GitLab Agent: Unauthorized

25/Листопад/2025 kubernetesgitlabagentk

Помилка підключення GitLab Agent 1400x350 kubernetes_gitlab_agent_error.png
Помилка підключення GitLab Agent

Не вдаючись до подробиць, як саме і чому все організовано, доступ здійснюється по наступному ланцюжку:

1
Nginx stream ingress <> Main Nginx Frontend <> Nginx Backend inside GitLab instance.

Основний фронтенд управляє піддоменом gitlab, який закритий для зовнішнього доступу за допомогою авторизації auth_basic.

Помилка підключення GitLab...

Встановлення Kubernetes на LXC

21/Листопад/2025 kubernetesk8slxc

Kubernetes на LXC 1000x1040 kubernetes-on-lxc.png
Kubernetes на LXC

У цьому прикладі показана установка поверх LXC, тоді як для будь-якого більш-менш серйозного застосування це абсолютно неприйнятно і вимагає використання KVM з додатковими заходами безпеки.
І, крім того, встановлення на KVM буде набагато, набагато простіше.
LXC не забезпечує адекватної безпеки, оскільки для правильної роботи потрібне монтування розділів /sys та /proc з хоста, які доступні всім примірникам LXC.
Крім того, цей приклад потребує використання привілейованого контейнера LXC.
Однак LXC дозволяє легко налаштувати тестову інфраструктуру без накладних витрат, пов’язаних з KVM.
Тому деякі аспекти в цьому прикладі будуть пов’язані виключно з налаштуванням в LXC.


Хост

Спочатку давайте підготуємо хост-систему.

nano /etc/modules

1
2
3
4
5
6
7
8
9
10
11
overlay
nf_nat
br_netfilter
xt_conntrack
rbd
fuse
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
iptable_nat

nano /etc/sysctl.d/35-lxc-kubernetes.conf

1
2
3
4
5
6
7
8
9
10
11
kernel.dmesg_restrict = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.bridge.bridge-nf-call-iptables = 1
# --conntrack-max-per-core Default: 32768 * N
net.netfilter.nf_conntrack_max=131072
# net.bridge.bridge-nf-call-arptables
# kernel.pid_max=100000
# user.max_user_namespaces=15000
vm.compact_memory = 1
vm.overcommit_memory = 1
Встановлення Kubernetes на...

Чому стандартні плагіни 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
Чому стандартні плагіни...

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 лімітування кількості...
Сторінка 2 з 6