LINUX.ORG.RU

Сообщения Goganchic

 

Базовые хотелки от Asterisk PBX

Форум — Admin

Разбираюсь в настройке Asterisk. Научился собирать его из исходников, подключать к нему софтовые и физические телефоны, писать базовые dialplan-ы.

Недавно задумался: а есть какой-то стандартный набор хотелок от PBX? Что имею ввиду: я знаю как подключить телефон по SIP-у к Asterisk, знаю как настроить условный SIP Trunk, но вот что обычно люди хотят от PBX, так сказать, стандартный набор хотелок — никак не могу нагуглить.

Для себя пока вижу следующее:

  • возможно какой-то web-интерфейс для управления (FreePBX?);
  • добавление endpoint-ов;
  • голосовая почта;
  • настройка роутинга между endpoint-ами внутри Asterisk;
  • настройка маршрутов в мобильную сеть и из нее;
  • какая-то стандартная статистика в виде cdr-ок;
  • аудиоконференции.

Что еще обычно хотят от среднестатистической PBX-системы, будь то Asterisk или какое-то проприетарное решение?

Перемещено hobbit из general

 ,

Goganchic
()

Настройка btrbk на хранение N последних бекапов

Форум — General

Настраиваю бекапирование файловой системы ноутбука (btrfs) с помощью btrbk на внешний жесткий диск, подключенный по USB. Хочу, чтобы на жестком диске хранились N последних бекапов независимо от того, когда они были сделаны. Например, я бекаплюсь каждый день - значит на жестком диске должны сохраниться 3 последних дня. Если я по каким-то причинам месяц не бекапился и решил сегодня забекапиться, то на жестком диске должны остаться 2 бекапа с прошлого месяца и один сегодняшний.

В конфиге btrbk можно указать сколько часовых, дневных и месячных бекапов хранить. При этом, если я указываю target_preserve_min 3d, то все бекапы старше трех дней удаляются.

Подскажите пожалуйста, возможно ли реализовать желаемое поведение и если да, то как?

 ,

Goganchic
()

Раздача WiFi дома

Форум — General

Хочу дома (квартира) в коридоре запрятать роутер в шкаф. Понимаю, что это может повлиять на сигнал WiFi, поэтому думаю сделать следующим образом:

  1. В шкаф засунуть роутер без WiFi.
  2. В комнатах поставить точки доступа, которые будут образовывать mesh-сеть.

Возникает 2 вопроса:

  1. Насколько такая схема вообще реализуема?
  2. Какой безвайфайный роутер выбрать? К роутеру будут подключены точки доступа и проводные устройства (десктоп, тв и т.п.). Поэтому роутер нужен минимум на 7 портов.

Linux при том, что точки будут Xiaomi Router AX3200 на OpenWRT.

 , ,

Goganchic
()

Сборка KDE из исходников

Форум — Desktop

Как пропатчить KDE 2 под FreeBSD?

Простите, не удержался.

Во многих дистрибутивах часто лежит неактуальная версия KDE. Например, в Kbuntu 24.04 до сих пор KDE 5. Конечно, можно использовать Fedora, KDE Neon или Alt Linux, но это не всегда выход. С другой стороны при должном желании можно собрать любой софт под любой дистрибутив. Например, условный asdf позволяет поставить Ruby/Java/Python различных версий во многие системы.

Как быть, если хочется собрать окружение рабочего стола? Гуглил, нашел статью про kde-builder и установку разных версий Qt с помощью aqt.

Пытался собрать таким образом KDE в виртуалке с Ubuntu 24.04 (т.е. как-будто мейнстримнее некуда) и словил такую ошибку:

-- Looking for libinotify_direct_readv
-- Looking for libinotify_direct_readv - not found
CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Python3 (missing: Python3_INCLUDE_DIRS Development
  Development.Module Development.Embed) (found suitable version "3.12.3",
  minimum required is "3.9")
Call Stack (most recent call first):
  /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.28/Modules/FindPython/Support.cmake:3862 (find_package_handle_standard_args)
  /usr/share/cmake-3.28/Modules/FindPython3.cmake:545 (include)
  CMakeLists.txt:101 (find_package)

Библиотека libinotify у меня установлена, в Интернете по libinotify_direct_readv ничего не гуглится. Пока победить данную ошибку не смог.

Возникает 2 вопроса:

  1. А вообще правильным ли путем я иду? Сейчас я пытаюсь запустить сборку и на каждую ошибку гуглю решения и устанавливаю недостающие пакеты. Возможно есть какой-то список всех библиотек от которых зависит условная Plasma? На сайте KDE ответа на этот вопрос не нашел.
  2. Предоположим что я всё собрал и у меня есть рабочая плазма. Как мне её распихать по rpm/deb пакетам? Может быть есть какой-то гайд по опакечиванию DE? Уточню: написать rpmspec и собрать условную rpm-ку я могу, вопрос в том, как побить весь KDE на пакеты? Быть может есть какой-то гайд на эту тему?

Пока что думаю посмотреть на Gentoo или srpm из Альта, но вдруг есть какой-то более простой путь?

 

Goganchic
()

Какой российский дистрибутив Linux выбрать для домашнего пользователя?

Форум — Desktop

Я давно использую Linux на рабочих и домашних компьютерах, на десктопах и серверах. Недавно задумался, а не посмотреть ли что-нибудь отечественное для домашнего использования. Круг моих домашних активностей ограничен серфингом веба, просмотром видео, играми, которые нативно идут под Linux (openmw, openarena, vcmi и т.п.) разработкой и админскими экспериментами. Также есть небольшой домашний сервер, используемый под файлопомойку и раздачу видео на телевизор через Jellyfin.

Что хочется от домашней системы?

  1. Стабильность и поддержка хотя бы несколько лет. Не хочу устанавливать новую версию системы каждый год (как в Fedora) или обнаружить, что комп не загружается после очередного апдейта (как в Gentoo).
  2. Достаточный набор софта в репозиториях. Было бы круто не ходить по GitHub и не собирать все зависимости условного Asterisk-а руками.
  3. Минимальные отличия от ванильных версий софта. Возможно в каких-то кейсах весь софт пропатченный про какую-то самобытную мандатную систему управления доступами это важно и нужно, но в домашних условиях мне бы хотелось иметь софт в том виде, как его задумывал изначальный автор, чтобы при необходимости я мог нагуглить решение той или иной проблемы.
  4. Совместимость с open source скриптами и инструментами. В интернетах есть много готовых штук, типа скриптов для автоматической настройки WireGuard или подготовки системы к разработке. Хочется, чтобы эти штуки работали на домашней системе без сильного допиливания.
  5. Отсутствие или минимальное количество супер-самобытных решений. Понимаю, что авторы некоторых дистрибутивов могут решать свои конкретные задачи и для их решения может потребоваться выбрать какой-то особый путь, но для домашнего использования хочется иметь что-то похожее на мейнстримные дистрибутивы, типа Ubuntu или RHEL, чтобы проблемы легко гуглились.
  6. Подъемная цена. Я не против заплатить денег за то или иное решение, но, конечно, система не должна строить как чугунный мост.

Резюмируя, у меня два вопроса:

  1. Стоит ли мне в принципе смотреть на отечественные дистрибутивы с такими вводными?
  2. Какой дистрибутив выбрать?

 , , ,

Goganchic
()

Установка Linux на USB жесткий диск в VirtualBox

Форум — General

Раньше устанавливал Kubuntu 22.04 на внешний жесткий диск следующим образом:

  1. создаю raw vmdk с помощью команды VBoxManage internalcommands createrawvmdk -filename ~/sda.vmdk -rawdisk /dev/sda
  2. монтирую его в виртуальную машину как жесткий диск
  3. устанавливаю на него систему
  4. подключаю его к компу
  5. загружаюсь с внешнего жесткого диска

Недавно решил повторить это на Fedora 42 и Alt 11 и столкнулся с проблемой: после установки всё нормально грузится в VirtualBox, но не может загрузиться на настоящем железе: говорит, что не может найти устройство по uuid, т.е. начальный загрузчик нормально загружается, initramfs стартует, но дальше ничего не происходит.

Если подключать USB жесткий диск к VirtualBox-у как USB-устройство, а не как raw vmdk, то всё устанавливается и потом загружается нормально, но при этом скорость работы с USB-устройством в VirtualBox значительно медленнее.

У меня два вопроса:

  1. есть ли какие-то предположения почему старый способ перестал работать?
  2. как сделать так, чтобы после установки на raw vmdk система нормально загружалась на настоящем железе?

 , ,

Goganchic
()

Альтернатива Plex с оффлайн конвертацией

Форум — Desktop

У меня есть коллекция фильмов на домашнем сервере, раздаю их на свои девайсы через SMB. И все работает хорошо до тех пор пока я не пытаюсь смотреть тяжелые фильмы через мобильный интернет через WG. Было бы круто иметь опцию автоматической конвертации фильмов под более низкое качество. Сервер слабый, онлайн конвертация требует очень много ресурсов. Есть достаточно свободного места, поэтому я готов хранить несколько версий одного и того же фильма в разном качестве.

Пробовал plex, emby и jellyfin. Plex предоставляет опцию оффлайн конвертации, но требует залогиниться на их сервере. Таким образом без Интернета он не работает. Для меня это критично. Emby хочет, чтобы я занес им денег за подписку для оффлайн конвертации, что нежелательно. В jellyfin вообще нет опции оффлайн конвертации.

В целом мне не нужны функции категоризации, не нужен онлайн плеер (использую smb + vlc), не нужно скачивание метаданных, а вот оффлайн конвертация в заранее заданный формат - нужна.

Есть ли что-нибудь, что автоматом конвертирует видео в более низкое качество для просмотра на мобильном или баш скрипт по отслеживанию файлов и запуску ffmpeg писать?

 , ,

Goganchic
()

Подключение к ocserv в KDE

Форум — Desktop

Настроил ocserv на роутере и пытаюсь подключиться к нему из внешнего мира. Подключение через терминальный openconnect работает как часы, в Ubuntu 24.04 в Gnome подключение через GUI тоже работает корректно, а вот в KDE возникают проблемы:

  • устанавливаю пакет network-manager-openconnect
  • через графический интерфейс настраиваю соединение типа «Совместимое с Cisco AnyConnect VPN (openconnect)»
  • подключаюсь
  • на запрос логина и пароля ввожу требуемые корректные данные

Получаю ошибку «Не удалось установить соединение». В логах journald ничего полезного, только информация о том, что соединение установить не удалось.

Пробовал воспроизвести проблему на Kubuntu 24.04 и RedOS 8 с разными версиями KDE и NetworkManager. Проблема одинаково постоянно воспроизводится.

В интернетах ничего полезного по теме не нагуглил.

Подскажите пожалуйста, может быть кто-то сталкивался с похожей проблемой? И если да, то как решали.

 , openconnect

Goganchic
()

Установочные пакеты Asterisk

Форум — General

Начал изучать Asterisk. Решил поставить его на Ubuntu/Rocky. Все мануалы, которые я нахожу в сети говорят о сборке из исходников. В репозиториях дистрибутивов вижу deb/rpm-пакеты Asterisk. Почему в каждом мануале предлагают собрать его из исходников? В дистрибутивах нет каких-то расширений? Или версия слишком старая? Или есть какая-то еще причина?

 

Goganchic
()

Перенос данных между жесткими дисками

Форум — Desktop

Есть домашний компьютер на Rocky Linux 9, который используется как файловый сервер, в нем 2 жестких диска по 512 Гб, объединенные с помощью lvm в 1 логический том в режиме RAID0, файловая система - XFS. Логический том монтируется в корень / и на нем лежит всё вместе: и ОС и данные.

Хочу изменить конфигурацию системы: саму систему установить на SSD на 512 Гб, смонтировать её в корень, а два диска по 10 Тб объединить в RAID 1 с помощью LVM и смонтировать полученный раздел в /var.

Как лучше провернуть такое?

Вижу такой план:

  • подключаю новые диски в систему;
  • на SSD с помощью fdisk создаю 2 раздела: основной и раздел для /boot/efi
  • с помощью LVM создаю физический том на основном разделе SSD, создаю отдельный логический том LVM;
  • с помощью LVM создаю по одному физическому тому на 10 Тб HDD и объединяю их в логический том RAID1;
  • на новых разделах инициализирую файловую систему XFS;
  • загружаюсь через Live USB;
  • монтирую разделы:
    • старый корень в /mnt/old_root;
    • старый efi в /mnt/old_root/boot/efi;
    • SDD в /mnt/new_root;
    • новый efi в /mnt/new_root/boot/efi;
    • новые HDD в /mnt/new_root/var;
  • копирую все файлы из /mnt/old_root в /mnt/new_root с помощью cp;
  • правлю /mnt/new_root/etc/fstab, чтобы он отражал новую конфигурацию дисков;
  • устанавливаю загрузчик на SSD;
  • выключаю комп;
  • отключаю старые диски;
  • загружаюсь в новую систему.

Подскажите, что мог упустить?

 , ,

Goganchic
()

Восстановление данных PostgreSQL

Форум — Admin

Бывает проблема когда кто-то по ошибке или умышленно удаляет WAL-файлы и после этого PostgreSQL не стартует. Понимаю, что без WAL состояние базы неконсистентное. Понимаю, что можно принудительно заставить PostgreSQL стартануть без WAL и попытаться что-то вытащить из базы. Но это все не панацея. Поэтому решил рассмотреть другой путь: чаще всего на моих серверах в качестве файловой системы используется ext4 и xfs.

Решил провести эксперимент:

  1. Поднимаю виртуалку на Rocky 9 (отдельный раздел под /var/lib/pgsql).
  2. Устанавливаю PostgreSQL 16 из стандартных репозиториев.
  3. Создаю пустую базу, в ней таблица с 2 полями, в таблицу помещаю тестовую запись.
  4. Останавливаю PostgreSQL.
  5. Удаляю WAL-файл из /var/lib/pgsql/16/data/pg_wal.
  6. Отмонтирую /var/lib/pgsql.
  7. Пытаюсь восстановиться.

Итог:

  • extundelete не видит удаленный файл (искал по имени и размеру)
  • xfs_undelete не видит удаленный файл (искал по имени и размеру)
  • R-Studio не видит удаленный файл (искал по имени и размеру)

При этом, если создать какой-нибудь текстовый файл и удалить его, то все средства восстановления видят и восстанавливают файл.

Имхо, условия максимально комфортные для восстановления. Что я делаю не так?

 , ,

Goganchic
()

Есть ли альтернативы Netscaler aaa

Форум — General

Хочу открыть в Интернет один внутренний сервис, но сделать это более-менее безопасно. Видел кейсы, где подобное делалось с помощью Netscaler. При этом алогоритм следующий:

  • пользователь хочет зайти на GitLab-инстанс компании;
  • пользователь вводит в браузере gitlab.my-super-mega-corp.com;
  • его перекидывает на Netscaler;
  • Netscaler проверяет наличие какой-то куки и если её нет - предлагает пользователю авторизоваться с помощью логина/пароля/второго фактора (LDAP);
  • В случае успешного логина Netscaler проставляет куку и дальнейшие запросы пробрасывает в целевой сервис (GitLab).

В таком случае мы получаем защиту от перебора паролей, DDOS-атак и т.п. При этом никаких доработок на стороне целевого сервиса (GitLab) делать не требуется.

Замечу, что GitLab - это просто пример, вместо него может быть любая другая система, так что не хочется привязываться к решениям, которые подходят только для GitLab.

Есть ли похожее решение на базе Open Source технологий, например Nginx + что-нибудь? Пытался гуглить, но всё что попадалось имело мало общего с моими хотелками.

 ,

Goganchic
()

Почему браузеры в Linux игнорируют глобальное хранилище сертификатов

Форум — Desktop

Недавно заметил, что браузеры в Linux (Chrome, Firefox) не подхватывают CA, добавленные в /etc/ssl/certs. Погуглил, везде пишут, что браузеры имеют свое собственное хранилище сертификатов. Как добавлять сертификаты в эти хранилища — понятно, но вот почему так сделано — нет. Типичный кейс в средних и больших организациях - добавить свой внутренний CA и выпускать сертификаты внутренних ресурсов, подписанные этим CA. Централизованное хранилище сертификатов Linux в этом случае подходит как нельзя лучше. Почему все браузеры его игнорируют?

 , ,

Goganchic
()

Вспомогательные задачи в Spring-приложении

Форум — Development

Пишу Spring-приложение: обычный Web-сервер, получает данные из базы — рисует HTML-странички. Возникла необходимость реализации нескольких вспомогательных задач, таких как загрузка данных из дампа базы. Раньше в основном разрабатывал на Ruby on Rails и там для задач использовался rake, например, для миграции базы данных нужно было зайти в проект с приложением и набрать rake db:migrate.

Как нечто похожее принято реализовывать в типовом Java-приложении на Spring? На мой взгляд логично было бы передавать параметры при запуске jar-ки, например, если я запускаю приложение без параметров (java -jar myapp.jar), то поднимается Web-сервер, а если с каким-то параметром (java -jar myapp.jar import-dump db.dump), то запускается вспомогательная задача, отрабатывает и завершает проецсс. Или в Spring-приложениях принято делать как-то по-другому?

 ,

Goganchic
()

Что использовать для разработки на Java вместо Idea Ultimate

Форум — Development

Сейчас достаточно сложно с легальной покупкой Idea Ultimate на территории России, поэтому возникает справедливый вопрос: что использовать вместо Idea для разработки типового ынтырпрайз-приложения на Spring? Рассматривал разные варианты, начиная от Idea Community и заканчивая VS Code. Все они имеют свои плюсы и минусы. Хотелось бы услышать у опытных ЛОР-овцев что выбирают они.

 , ,

Goganchic
()

Как связаны колонки shared и cache в выводе free

Форум — Admin

Смотрю состояние памяти на виртуалке:

[user@server ~]$ free -h -w
              total        used        free      shared     buffers       cache   available
Mem:          7,5Gi       385Mi       138Mi       4,1Gi       0,0Ki       7,0Gi       2,8Gi
Swap:         1,0Gi       140Mi       883Mi

На виртуалке запущен PostgreSQL, который использует 4Гб shared_buffers. Пытаюсь интерпретировать вывод free.

  • total — объем физической памяти;
  • used — память, выделенная через malloc (used = total - free - shared - buffers - cache);
  • free — свободная память;
  • shared — память под tmpfs и shmget/mmap; buffers — память, используемая для буферизации ввода/вывода;
  • cache — файловый кеш;
  • available — сколько памяти можно получить с учетом free и освобождения части cache.

Возникает вопрос: как связаны колонки shared и cache в выводе? Изначально я думал, что shared никак не пересекается с cache и used + free + shared + buffers + cache должны давать в сумме total. Но в представленном выше листинге видно, что это не так.

 , ,

Goganchic
()

Странности с восстановлением PostgreSQL из бекапа

Форум — Admin

Есть кластер PostgreSQL 15. ОС хоста Rocky 8. Конфигурация кластера: master + реплика. Репликацию настраивал через repmgr. В кластере настроены бекапы с помощью PgBackRest на внешнее S3 хранилище. WAL льется с мастера, файлы данных — с реплики. Все как здесь написано: https://habr.com/ru/articles/518232/.

Если грохнуть базу и восстановить последнее состояние с помощью sudo -u postgres pgbackrest --stanza=cluster restore, то всё отрабатывает как положено.

Хочу протестировать кейс с Point in Time Recovery.

  1. Создаю базу данных.
  2. Наполняю её тестовыми данными.
  3. Делаю полный бекап sudo -u postgres pgbackrest --stanza=cluster --log-level-console=info --type=full backup. Запоминаю время окончания бекапа.
  4. Дропаю таблицу. PostgreSQL делает чекпоинт и отправляет WAL в S3. Хочу восстановиться на момент, когда таблица не была удалена (т.е. WAL, который после бекапа из п.3 восстанавливать не надо).
  5. Останавливаю master и replica systemctl stop postgresql-15.
  6. Удаляю все файлы с master и replica sudo -u postgres find /var/lib/pgsql/15/data -mindepth 1 -delete.
  7. Смотрю в какое время завершился бекап с помощью sudo -u postgres pgbackrest --stanza=cluster info.
  8. Запускаю команду вида sudo -u postgres pgbackrest --stanza=cluster --type=time --target="время-завершения-бекапа" restore.
  9. Запускаю master.
  10. Вижу, что master находится в recovery, поэтому выполняю на select pg_wal_replay_resume();.
  11. С помощью repmgr standby clone наливаю реплику.
  12. Запускаю реплику и повторно регистрирую ее в master: repmgr standby register -F.

Вижу предупреждение вида

WARNING: following issues were detected
  - WAL replay is paused on node "192.168.1.126" (ID: 2) with WAL replay pending; this node cannot be manually promoted until WAL replay is resumed

Вопросы:

  1. Что я делаю не так?
  2. Как поднять реплику после восстановления из бекапа?

 pgbackrest, , repmgr

Goganchic
()

Зависает Redis Sentinel, куда копать?

Форум — Admin

Внезапно обнаружил, что на виртуалке с Rocky 8 завис Redis Sentinel (ставил пакет @redis:6). Выглядит это так:

$ ps ax | grep redis-sentinel
   1209 ?        Dsl   14:09 /usr/bin/redis-sentinel 192.168.1.2:26379 [sentinel]

Статус D — Uninterruptible sleep (usually IO).

Решил посмотреть с помощью lsof что происходит. Теперь у меня есть еще несколько процессов lsof в состоянии D:

sudo ps ax | grep lsof
  51819 ?        D      0:00 lsof
  51820 ?        Z      0:00 [lsof] <defunct>
  51864 ?        D      0:00 lsof
  51865 ?        Z      0:00 [lsof] <defunct>
  51957 ?        D      0:00 lsof -b
  52971 ?        D      0:00 lsof
  52972 ?        Z      0:00 [lsof] <defunct>

Вопрос: как понять на каком именно IO подвис Redis Sentinel и что бы это могло быть?

 ,

Goganchic
()

Почему journalctl потребляет так много места

Форум — Admin

Хочу посмотреть сколько места занимает Systemd лог:

$ sudo journalctl --disk-usage
Archived and active journals take up 9.7G in the file system.

Дамплю все логи в файл и смотрю его размер:

sudo journalctl > logs.txt
ls -lh logs.txt
-rw-rw-r--. 1 user user 679M Dec  4 16:34 logs.txt

Почему так?

 ,

Goganchic
()

В чем фишка Qt Quick

Форум — Development

Изучаю Qt. Вижу, что есть два подхода к разработке приложения: Qt Widgets и Qt Quick. Судя по всему за Qt Quick активно топят. На официальной странице нашел сравнение этих технологий. И вроде как пишут, что Qt Quick для стильных модных молодежных, а Qt Widgets если не Deprecated, то для старперов. На всяких Reddit-ах тоже активно нахваливают QML.

Интуитивно кажется, что Quick потянет за собой либо какой-то встроенный интерпретатор JavaScript, либо какой-то хитрый компилятор, но в любом случае добавит накладные расходы на взаимодействие между JavaScript и C++ кодом. Кажется, что это будет работать медленнее, чем если всё написано сразу на C++.

С другой стороны, если хочется быстрой разработки, чтобы раз-два и в продакшен - это же точно не про C++. Для этого есть Electron или Web в браузере. C++ для GUI, на мой взгляд, имеет смысл выбирать только если хочется максимальной производительности и минимального расхода ресурсов, а сроки разработки не особо важны.

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

Поэтому возникает вопрос: какой практический смысл в Qt Quick?

 , ,

Goganchic
()

RSS подписка на новые темы