Установка сертификатов от МинЦифры в ОС и браузеры

Недавно мне попался первый проект с привязкой функционала к мессенджеру Макс. Первым делом зарегистрировал бота через местного БотФазера (max.ru/business_bot) и пошёл смотреть официальную документацию (dev.max.ru/docs). Кстати, создание бота и его модерация прошла за несколько минут, буквально за 3-4, хотя я слышал о каких-то невиданных сроках проверки и великих сложностях, на деле оказалось всё просто. После поверхностного знакомства с документацией, как обычно, захотелось покидать тестовые запросы для проверки работоспособности. Начал с получения общей информации:

curl -X GET "https://platform-api2.max.ru/me" \
  -H "Authorization: МойТокен"

Но получил вот такую ошибку:

curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

Проблема оказалась в следующем: Макс использует сертификаты от Национального удостоверяющего центра Минцифры России, а в стандартных хранилищах доверенных сертификатов многих операционок никак не связанных с РФ эти корневые и промежуточные сертификаты отсутствуют. Поэтому curl не может построить цепочку доверия и выдаёт ошибку 60.

Исправить всё это дело можно через официальную инструкцию с ГосУслуг — gosuslugi.ru/crt. На этой странице подробно расписано как добавить сертификаты в различные ОС (Windows, MacOS, Linux, Android и iOS). Я установил для домашней Windows 11 через скачивание и установку (почти как обычную программу, в статье есть даже видео инструкция), а в Ubuntu под WSL с помощью этих команд:

1. Скачал в downloads и разархивировал.
2. sudo cp linux_russian_trusted_root_ca_pem/russian_trusted_root_ca_pem.crt /usr/local/share/ca-certificates/
3. sudo cp russian_trusted_sub_ca_pem/russian_trusted_sub_ca_pem.crt /usr/local/share/ca-certificates/
4. sudo update-ca-certificates

И на выходе получил:

Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
2 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

После этого запрос с получением общей информации о боте к platform-api2.max.ru через curl начал работать корректно.

Полезные ссылки по разработке Телеграм-ботов и Телеграм-приложений (мини-приложений)

Документация по Телеграм-приложениям — core.telegram.org/bots/webapps

Документация по Телеграм-ботам — core.telegram.org/bots/api

Список эмодзи — apps.timwhitlock.info/emoji/tables/unicode

Определение источников трафика по UTM-меткам — graspil.com/ru/post/utm_for_telegram_bot

Большой гайд по UTM-меткам — habr.com/ru/companies/click/articles/478758

Отправка видео через Телеграм-бот — core.telegram.org/bots/api#sendvideo

Функция «Поделиться» в Телеграм-приложении:

Верификация запроса от Телеграм-приложения к серверу:

Обзорные статьи по созданию Телеграм-ботов и Телеграм-приложений:

Шпаргалка по развёртыванию Ларавел

Что нужно сделать (минимально) для развертывания проекта на рабочем сервере? Инструкция ниже применима к серверам без автодеплоя, например, для небольших заказов размещаемых на обычных хостингах клиентов.

(далее…)

Ремонт apt:

apt download python3-minimal
sudo apt install --reinstall ./python3-minimal_*.deb
sudo apt install -f

Заметки об Олламе (ollama)

Что такое Оллама (ollama)? Это инструмент для запуска больших языковых моделей (LLM — Large Language Model). С помощью Олламы можно запускать на своём сервере или домашнем компьютере публичные языковые модели. Языковых моделей много, даже очень много, и можно найти подходящую под свои задачи и доступные вычислительные мощности.

(далее…)

Удаление ollama из Линукса (Linux) и Виндоуз (Windows)

Что такое ollama описывать сейчас не буду, кто в теме, тот в теме, тут нужно полноценное видео или внушительных размеров статью писать. На это, как обычно, времени не хватает. Теперь к делу. После установки ollama в свою систему вы наверняка обрадуетесь её функционалу, также как и я, но заметите одну странность — отсутствие штатной возможности остановить сервис. Да, вы можете остановить сервис в Линуксе как и любой другой вот так:

systemctl stop ollama.service

Сервис остановится, но при повторном запуске начнёт выдавать ошибки, по крайнём мере в моём случае было так. Да еще при запуске языковых моделей начнёт скачивать их заново, причём, даже тех, которые уже скачаны и настроены. Исходя из всего этого я решил использовать ollama через Докер, а из текущей системы полностью удалить. Скорее всего, к подобным выводам пришли и вы, раз попали на эту страницу.

Удаление в Линуксе:

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
 
sudo rm /usr/local/bin/ollama
 
sudo userdel ollama
sudo groupdel ollama

Удаление в Виндоуз как обычно проще, оно осуществляется через стандартные «Программы и компоненты». Команд нет, выбираете из списка ollama и нажимаете «Удалить».

Проверка установленных версий .NET на Windows 10 через PowerShell

Краткий вариант:

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version
(далее…)

Изменение hostname в WSL2 (Ubuntu) навсегда

Для изменения имени хоста в терминале достаточно войти в WSL с помощью команды wsl и ввести:

sudo hostname MY_NEW_HOST_NAME

Имя хоста изменится, но после перезагрузки WSL система создаст новое имя и присвоит вашей машине. Это происходит при каждом запуске WSL по умолчанию. Для изменения этого поведения необходимо добавить в конфигурацию WSL (/etc/wsl.conf) следующие настройки:

...
hostname = MY_NEW_HOST_NAME
generateHosts = false
...

Также необходимо указать новое наименование хоста в /etc/hosts вместо созданного системой:

...
127.0.0.1 MY_NEW_HOST_NAME MY_NEW_HOST_NAME
...

После этих манипуляций новое наименование хоста останется навсегда. Для проверки этого выключите WSL и включите заново:

wsl --shutdown
wsl

Настройка прав на файлы и директории в Docker-контейнере для Linux-систем

При использовании стека PHP+DOCKER (+ все остальное) на Linux-системах у вас, скорее всего, возникнут проблемы с правами в контейнере. Нельзя будет записать какой-либо файл в директорию, начнут вылетать ошибки при сохранении логов и всё в таком духе. При использовании фреймворков, например, такого как Laravel, эта проблема уже решена его разработчиком, а во всех других случаях решать коллизию с правами нужно своими руками. Ниже приведён один из простых вариантов решения.

(далее…)