<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Вячеслав Громов</title><subtitle>Работаем так, чтобы было нестыдно.
Ведущий специалист отдела внедрения.</subtitle><author><name>Вячеслав Громов</name></author><id>https://teletype.in/atom/slakwik</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/slakwik?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/slakwik?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-07T18:30:29.481Z</updated><entry><id>slakwik:k44kU6wtFD</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/k44kU6wtFD?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Свой СА-сервер</title><published>2025-05-29T19:18:40.379Z</published><updated>2025-05-29T19:18:40.379Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/80/24/802470af-cae4-4261-9f00-787e9616230d.png"></media:thumbnail><category term="rabota" label="Работа"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ad/01/ad012c6d-d34a-47d3-938c-18d2953b2e63.png&quot;&gt;Забавная ситуация: у клиента требуется свой собственный СА для выпуска внутренних сертификатов элподписи. Маленький сервис, казалось бы, но нет, из доступных (и не русских) только EJBCA... Поддержка вендора &quot;советует установить и использовать DogTag&quot; - так себе совет.</summary><content type="html">
  &lt;p id=&quot;NWwc&quot;&gt;Забавная ситуация: у клиента требуется свой собственный СА для выпуска внутренних сертификатов элподписи. Маленький сервис, казалось бы, но нет, из доступных (и не русских) только EJBCA... Поддержка вендора &amp;quot;советует установить и использовать DogTag&amp;quot; - так себе совет.&lt;/p&gt;
  &lt;p id=&quot;YxzR&quot;&gt;В итоге, как говорит коллега, следами cloud-программирования был написан вебсервис СА по выпуску сертификатов.&lt;/p&gt;
  &lt;figure id=&quot;wJnV&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ad/01/ad012c6d-d34a-47d3-938c-18d2953b2e63.png&quot; /&gt;
    &lt;figcaption&gt;Выглядит просто, но работает отлично.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZbH8&quot;&gt;Для внутренних и доменных сервисов в самый раз. Например, для 1С: СЭД или вообще для всего что связано с сертификатами - в самый раз.&lt;/p&gt;
  &lt;p id=&quot;Pi4O&quot;&gt;Конечно, важнее всего обезопасить вебсервис, чтобы избежать той же компроментации - но это уже другая история.&lt;/p&gt;
  &lt;p id=&quot;JJpG&quot;&gt;А пока - дело сделано.&lt;/p&gt;
  &lt;p id=&quot;1r18&quot;&gt;И слава Богу&lt;/p&gt;

</content></entry><entry><id>slakwik:Q6Y_HJGEnLI</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/Q6Y_HJGEnLI?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Трансляция потока музыки в сеть Интернет и на видеохостинги. Часть 3: Liquidsoap в контейнере</title><published>2025-04-23T21:47:01.380Z</published><updated>2025-04-23T21:47:01.380Z</updated><category term="cerkovnoe-sluzhenie" label="Церковное служение"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/66/03/6603daed-9d43-405d-ba4d-3fca5d20b51d.jpeg&quot;&gt;Описал, как запустить плеер стрима Liquidsoap в контейнере</summary><content type="html">
  &lt;h2 id=&quot;9AZU&quot;&gt;&lt;br /&gt;Настройка Liquidsoap в docker-контейнере&lt;/h2&gt;
  &lt;h2 id=&quot;t7Oh&quot;&gt;Настройка перед установкой&lt;/h2&gt;
  &lt;h3 id=&quot;Umsq&quot;&gt;debian/ubuntu&lt;/h3&gt;
  &lt;pre id=&quot;QcMf&quot;&gt;for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | \
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/pre&gt;
  &lt;h3 id=&quot;0QOb&quot;&gt;alma linux/centos stream/redos&lt;/h3&gt;
  &lt;pre id=&quot;sLWU&quot;&gt;
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin&lt;/pre&gt;
  &lt;h2 id=&quot;sLWU&quot;&gt;Запускаем службу Docker&lt;/h2&gt;
  &lt;pre id=&quot;sLWU&quot;&gt;sudo systemctl start docker.service
sudo systemctl enable docker.service&lt;/pre&gt;
  &lt;h2 id=&quot;dqhx&quot;&gt;Структура файлов  каталогов&lt;/h2&gt;
  &lt;pre id=&quot;dqhx&quot;&gt;/opt/radio				# Основной каталог
	    |
	    script.liq      # Скрипт работы Liquidsoap
	    music/			# Монтируемый каталог с медиа
	        |
	        songs       # Каталог с музыкой/подкастами
	          |
	          song1.mp3
	          song2.mp3
	          song3.mp3
	        jingles     # Каталог с джинглами
	          |
	          file1.mp3
	          file2.mp3
	          file3.mp3&lt;/pre&gt;
  &lt;h2 id=&quot;dYsZ&quot;&gt;Создаем каталоги&lt;/h2&gt;
  &lt;pre id=&quot;siaH&quot;&gt;sudo mkdir -p /opt/radio/liquidsoap
sudo mkdir -p /opt/radio/music/{songs,jingles}&lt;/pre&gt;
  &lt;h2 id=&quot;0BGw&quot;&gt;Редактируем файл /opt/radio/liquidsoap/docker-compose.yml&lt;/h2&gt;
  &lt;pre id=&quot;Z4uH&quot;&gt;services:
	liquidsoap:
	  image: pltnk/liquidsoap
	  container_name: liquidsoap
	  restart: always
	  volumes:
	    - /opt/radio/script.liq:/etc/liquidsoap/script.liq
	    - /opt/radio/music:/music&lt;/pre&gt;
  &lt;h2 id=&quot;EZ8F&quot;&gt;Редактируем файл /opt/radio/script.liq&lt;/h2&gt;
  &lt;pre id=&quot;4Uvk&quot;&gt;
## Внизу файла замените:
## IP-АДРЕС-ХОСТА заменяем на внутренний ip-адрес хоста, где запущен сервис icecast2, куда мы будет транслировать аудиопоток
## ПАРОЛЬ-СТРИМА заменяем на пароль стрима, который мы указали в конфигурационном файле в icecast2
## ТОЧКА-МОНТИРОВАНИЯ заменяем на имя точки монтирования, которую мы указали в конфигурационном файле icecast2

# плейлист с джинглами
# указываем каталог с мр3-файлами джинглов. например, &amp;#x27;/music/jingles&amp;#x27;
jingles = mksafe(playlist(id=&amp;quot;jingles&amp;quot;,mode=&amp;quot;randomize&amp;quot;,reload_mode=&amp;quot;watch&amp;quot;,&amp;#x27;/music/jingles&amp;#x27;))

# дополнительная рандомизация
# отслеживает, чтобы последние два часа песни в рандоме не повторялись
l = playlog()
def check(r)
  m = request.metadata(r)
  if l.last(m) &amp;lt; 17200. then
    false
  else
    l.add(m)
    true
  end
end

# плейлист с треками стрима
# указываем каталог с мр3-файлами стрима. например, &amp;#x27;/music/songs&amp;#x27;
s = playlist(check_next=check,mode=&amp;quot;randomize&amp;quot;,&amp;#x27;/music/songs&amp;#x27;)

# играем треки из каждого плейлиста, каждые 10 музыкальных треков - один джингл
radio = rotate(weights = [10, 1],[s,jingles])
radio = nrj(radio)

out = output.icecast(%mp3,
  host = &amp;quot;IP-АДРЕС-ХОСТА&amp;quot;,
  port = 8000,
  password = &amp;quot;ПАРОЛЬ-СТРИМА&amp;quot;,
  mount = &amp;quot;ТОЧКА-МОНТИРОВАНИЯ&amp;quot;,
  fallible=true,
  radio
)&lt;/pre&gt;
  &lt;h2 id=&quot;efCZ&quot;&gt;Размещаем медиа&lt;/h2&gt;
  &lt;p id=&quot;SZF9&quot;&gt;В каталог &lt;strong&gt;/opt/radio/music/songs&lt;/strong&gt; копируем все ваши mp3-файлы с музкальными композициями/подкастами&lt;br /&gt;В каталог &lt;strong&gt;/opt/radio/music/jingles&lt;/strong&gt; копируем все ваши джинглы&lt;/p&gt;
  &lt;h2 id=&quot;QV8j&quot;&gt;Запускаем liquidsoap&lt;/h2&gt;
  &lt;pre id=&quot;lZ9Q&quot;&gt;cd /opt/radio/liquidsoap
docker compose up&lt;/pre&gt;
  &lt;h2 id=&quot;ffMD&quot;&gt;Ожидаем запуск и наблюдаем за работой&lt;/h2&gt;
  &lt;p id=&quot;vClA&quot;&gt;Сначала пройдёт процедура скачивания базового образа, затем будут выполнены команды запуска контейнера&lt;br /&gt;Затем появятся журналы работы liquidsoap. Например, такие:&lt;/p&gt;
  &lt;pre id=&quot;vClA&quot;&gt;Container liquidsoap  Created
Attaching to liquidsoap
liquidsoap  | 2025/04/23 21:11:03 &amp;gt;&amp;gt;&amp;gt; LOG START
liquidsoap  | 2025/04/23 21:11:02 [main:3] Liquidsoap 2.0.3-1
liquidsoap  | 2025/04/23 21:11:02 [main:3] Using: graphics=[distributed with Ocaml] bytes=[distributed with OCaml 4.02 or above] pcre=7.4.6 sedlex=3.3 menhirLib=20211128 dtools=0.4.5 duppy=0.9.2 cry=0.6.7 mm=0.7.4 ogg=0.7.4 ogg.decoder=0.7.4 vorbis=0.8.0 vorbis.decoder=0.8.0 mad=0.5.3 dynlink=[distributed with Ocaml] lame=0.3.7 samplerate=0.1.6 taglib=0.3.10 camomile=1.0.2
liquidsoap  | 2025/04/23 21:11:02 [dynamic.loader:3] Could not find dynamic module for fdkaac encoder.
liquidsoap  | 2025/04/23 21:11:02 [clock:3] Using builtin (low-precision) implementation for latency control
liquidsoap  | 2025/04/23 21:11:03 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz main.
liquidsoap  | 2025/04/23 21:11:03 [frame:3] Video frame size set to: 1280x720
liquidsoap  | 2025/04/23 21:11:03 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples.
liquidsoap  | 2025/04/23 21:11:03 [frame:3] Targeting &amp;#x27;frame.duration&amp;#x27;: 0.04s = 1764 audio samples = 1764 ticks.
liquidsoap  | 2025/04/23 21:11:03 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks.
liquidsoap  | 2025/04/23 21:11:03 [sandbox:3] Sandboxing disabled
liquidsoap  | 2025/04/23 21:11:03 [video.converter:3] Couldn&amp;#x27;t find preferred video converter: ffmpeg.
liquidsoap  | 2025/04/23 21:11:03 [audio.converter:3] Using samplerate converter: libsamplerate.
liquidsoap  | 2025/04/23 21:11:03 [test.mp3:3] Connecting mount test.mp3 for source@93.191.60.93...
liquidsoap  | 2025/04/23 21:11:03 [test.mp3:3] Connection setup was successful.
liquidsoap  | 2025/04/23 21:11:03 [clock.main:3] Streaming loop starts in auto-sync mode
liquidsoap  | 2025/04/23 21:11:03 [clock.main:3] Delegating synchronisation to CPU clock
liquidsoap  | 2025/04/23 21:11:03 [switch_2:3] Switch to switch_1.
liquidsoap  | 2025/04/23 21:11:03 [switch_1:3] Switch to mksafe.
liquidsoap  | 2025/04/23 21:11:03 [mksafe:3] Switch to safe_blank.
liquidsoap  | 2025/04/23 21:11:03 [decoder.id3v2:2] Error while decoding file tags: Invalid_argument(&amp;quot;String.sub / Bytes.sub&amp;quot;)
liquidsoap  | 2025/04/23 21:11:03 [jingles:3] Prepared &amp;quot;/music/jingles/Спасён_v1.mp3&amp;quot; (RID 1).
liquidsoap  | 2025/04/23 21:11:03 [mksafe:3] Switch to jingles with transition.
liquidsoap  | 2025/04/23 21:11:03 [songs:3] Prepared &amp;quot;/music/songs/Псалом 51 (на стихи Н.Басовского).mp3&amp;quot; (RID 0).
&amp;#x60;&amp;#x60;&amp;#x60;&lt;/pre&gt;
  &lt;p id=&quot;vClA&quot;&gt;В этот момент можно перейти на icecast2 точку подключения и послушать, появился ли стрим.&lt;/p&gt;
  &lt;p id=&quot;aDBZ&quot;&gt;И если всё ОК, звук есть, то завершите работу контейнера, нажав комбинацию клавиш Ctrl+C и дождитесь завершения работы контейнера.&lt;/p&gt;
  &lt;p id=&quot;hQ1M&quot;&gt;Далее настроим автоматический запуск и работу нашего liquidsoap&lt;/p&gt;
  &lt;h2 id=&quot;2PDg&quot;&gt;Настройка работы liquidsoap, как сервис&lt;/h2&gt;
  &lt;h3 id=&quot;8TNX&quot;&gt;Редактируем файл сервиса /etc/systemd/system/liquidsoap.service&lt;br /&gt;&lt;/h3&gt;
  &lt;pre id=&quot;jqUp&quot;&gt;[Unit]
Description=liquidsoap as a docker container
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c &amp;quot;docker compose -f /opt/radio/liquidsoap/docker-compose.yml up --detach&amp;quot;
ExecStop=/bin/bash -c &amp;quot;docker compose -f /opt/radio/liquidsoap/docker-compose.yml stop&amp;quot;

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
  &lt;h2 id=&quot;LyIp&quot;&gt;Обновляем сервисы&lt;/h2&gt;
  &lt;pre id=&quot;ES5a&quot;&gt;sudo systemctl daemon-reload&lt;/pre&gt;
  &lt;h2 id=&quot;EPo9&quot;&gt;Запускаем liquidsoap, как службу&lt;/h2&gt;
  &lt;pre id=&quot;4yIc&quot;&gt;sudo systemctl start liquidsoap&lt;/pre&gt;
  &lt;h2 id=&quot;Jiie&quot;&gt;Переключаем службу в автозапуск&lt;/h2&gt;
  &lt;pre id=&quot;QX5Q&quot;&gt;sudo systemctl enable liquidsoap&lt;/pre&gt;
  &lt;h2 id=&quot;wLrv&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;rTFI&quot;&gt;Остаётся только дать ссылку на документацию к Liquidsoap &lt;a href=&quot;https://www.liquidsoap.info/doc-2.3.2/&quot; target=&quot;_blank&quot;&gt;https://www.liquidsoap.info/doc-2.3.2/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;z71K&quot;&gt;Надеюсь, что статьи помогут вам в работе ваших интернет-радиостанций.&lt;/p&gt;
  &lt;p id=&quot;NbUb&quot;&gt;С Богом всё получится!&lt;/p&gt;

</content></entry><entry><id>slakwik:YcIlmuuaG7G</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/YcIlmuuaG7G?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Трансляция потока музыки в сеть Интернет и на видеохостинги. Часть 2: Liquidsoap и Icecast2</title><published>2025-04-19T21:36:24.636Z</published><updated>2025-04-19T21:36:24.636Z</updated><category term="razrabotki" label="Разработки"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c5/19/c519375f-82dd-4fcf-959f-34ae14922d7b.jpeg&quot;&gt;Ранее описывал настройку стрима через Icecast+EZStream. Но со временем решил чуть «усложнить» стрим, разбавив стрим джинглами (аудиовставки с названием радиостанции) в случайном порядке и файлы для стрима брать просто из каталога (тоже, в случайном порядке). Да и в целом, Liquidsoap работает стабильнее – не даром его используют на физических радиостанциях и эфирных студиях.</summary><content type="html">
  &lt;p id=&quot;7Iz5&quot;&gt;Ранее, в статье https://teletype.in/@slakwik/WT_5jy3Ug6 описывал настройку стрима через Icecast+EZStream. Но со временем решил чуть «усложнить» стрим, разбавив стрим джинглами (аудиовставки с названием радиостанции) в случайном порядке и файлы для стрима брать просто из каталога (тоже, в случайном порядке).&lt;br /&gt;Да и в целом, Liquidsoap работает стабильнее – не даром его используют на физических радиостанциях и эфирных студиях.&lt;/p&gt;
  &lt;p id=&quot;QaLi&quot;&gt;Пост будет продолжением\дополнением\обновлением предыдущего, только вместо EZStream мы настроим Liquidsoap, как источник аудиопотока.&lt;/p&gt;
  &lt;h2 id=&quot;3Xzt&quot;&gt;Подготовка&lt;/h2&gt;
  &lt;p id=&quot;gEcs&quot;&gt;Установите пакеты icecast2, liquidsoap и, если будете транслировать на видеохостинги, ffmpeg&lt;/p&gt;
  &lt;p id=&quot;bRYF&quot;&gt;У меня радиостанция работает на Raspberry Pi 3B, версии пакетов:&lt;/p&gt;
  &lt;pre id=&quot;312L&quot; data-lang=&quot;bash&quot;&gt;icecast2:
  Installed: 2.4.4-4+b1
liquidsoap:
  Installed: 1:2.2.5-debian-bookworm-1
ffmpeg:
  Installed: 7:5.1.5-0+deb12u1  &lt;/pre&gt;
  &lt;p id=&quot;pJ8v&quot;&gt;Под разные операционные системы могут быть разные версии пакетов, но желательно подбирать посвежее. Так же обратите внимание, что Liquidsoap может менять синтаксис файлов стрима – указанное ниже подходит к указанной версии и выше.&lt;/p&gt;
  &lt;h2 id=&quot;jX9C&quot;&gt;Настраиваем Icecast2&lt;/h2&gt;
  &lt;p id=&quot;op2Z&quot;&gt;### Файл конфигурации для Icecast2 /etc/icecast2/icecast.xml&lt;br /&gt;&amp;quot;ПАРОЛЬСТРИМА&amp;quot; – паролья для подключения плеера ezstream&lt;br /&gt;&amp;quot;ПАРОЛЬРЕЛЕЯ&amp;quot; – пароль для перенаправления потока (в моем случае не используется, но оставлен)&lt;br /&gt;&amp;quot;ПАРОЛЬАДМИНА&amp;quot; – паролья от консоли администратора Icecast2&lt;br /&gt;&lt;/p&gt;
  &lt;pre id=&quot;sB8J&quot; data-lang=&quot;xml&quot;&gt;&amp;lt;icecast&amp;gt;
    &amp;lt;location&amp;gt;Saint-Petersburg, Russia&amp;lt;/location&amp;gt;
    &amp;lt;admin&amp;gt;slakwik@ya.ru&amp;lt;/admin&amp;gt;
    &amp;lt;limits&amp;gt;
        &amp;lt;clients&amp;gt;100&amp;lt;/clients&amp;gt;
        &amp;lt;sources&amp;gt;3&amp;lt;/sources&amp;gt;
        &amp;lt;queue-size&amp;gt;524288&amp;lt;/queue-size&amp;gt;
        &amp;lt;client-timeout&amp;gt;30&amp;lt;/client-timeout&amp;gt;
        &amp;lt;header-timeout&amp;gt;15&amp;lt;/header-timeout&amp;gt;
        &amp;lt;source-timeout&amp;gt;10&amp;lt;/source-timeout&amp;gt;
        &amp;lt;burst-on-connect&amp;gt;1&amp;lt;/burst-on-connect&amp;gt;
        &amp;lt;burst-size&amp;gt;65535&amp;lt;/burst-size&amp;gt;
    &amp;lt;/limits&amp;gt;

    &amp;lt;authentication&amp;gt;
    &amp;lt;source-password&amp;gt;ПАРОЛЬСТРИМА&amp;lt;/source-password&amp;gt;
    &amp;lt;relay-password&amp;gt;ПАРОЛЬРЕЛЕЯ&amp;lt;/relay-password&amp;gt;
    &amp;lt;admin-user&amp;gt;admin&amp;lt;/admin-user&amp;gt;
    &amp;lt;admin-password&amp;gt;ПАРОЛЬАДМИНА&amp;lt;/admin-password&amp;gt;
    &amp;lt;/authentication&amp;gt;

    &amp;lt;directory&amp;gt;
        &amp;lt;yp-url-timeout&amp;gt;15&amp;lt;/yp-url-timeout&amp;gt;
        &amp;lt;yp-url&amp;gt;http://dir.xiph.org/cgi-bin/yp-cgi&amp;lt;/yp-url&amp;gt;
    &amp;lt;/directory&amp;gt;

    &amp;lt;hostname&amp;gt;station.spbchurch.ru&amp;lt;/hostname&amp;gt;

    &amp;lt;listen-socket&amp;gt;
        &amp;lt;port&amp;gt;8000&amp;lt;/port&amp;gt;
    &amp;lt;/listen-socket&amp;gt;
    &amp;lt;http-headers&amp;gt;
        &amp;lt;header name=&amp;quot;Access-Control-Allow-Origin&amp;quot; value=&amp;quot;*&amp;quot; /&amp;gt;
    &amp;lt;/http-headers&amp;gt;

    &amp;lt;fileserve&amp;gt;1&amp;lt;/fileserve&amp;gt;

    &amp;lt;paths&amp;gt;
        &amp;lt;basedir&amp;gt;/usr/share/icecast2&amp;lt;/basedir&amp;gt;
        &amp;lt;logdir&amp;gt;/var/log/icecast2&amp;lt;/logdir&amp;gt;
        &amp;lt;webroot&amp;gt;/usr/share/icecast2/web&amp;lt;/webroot&amp;gt;
        &amp;lt;adminroot&amp;gt;/usr/share/icecast2/admin&amp;lt;/adminroot&amp;gt;
        &amp;lt;alias source=&amp;quot;/&amp;quot; destination=&amp;quot;/status.xsl&amp;quot;/&amp;gt;
    &amp;lt;/paths&amp;gt;

    &amp;lt;logging&amp;gt;
        &amp;lt;accesslog&amp;gt;access.log&amp;lt;/accesslog&amp;gt;
        &amp;lt;errorlog&amp;gt;error.log&amp;lt;/errorlog&amp;gt;
        &amp;lt;loglevel&amp;gt;3&amp;lt;/loglevel&amp;gt; &amp;lt;!-- 4 Debug, 3 Info, 2 Warn, 1 Error --&amp;gt;
        &amp;lt;logsize&amp;gt;10000&amp;lt;/logsize&amp;gt; &amp;lt;!-- Max size of a logfile --&amp;gt;
    &amp;lt;/logging&amp;gt;

    &amp;lt;mount&amp;gt;
        &amp;lt;mount-name&amp;gt;/radio.mp3&amp;lt;/mount-name&amp;gt;
        &amp;lt;charset&amp;gt;UTF-8&amp;lt;/charset&amp;gt;
    &amp;lt;/mount&amp;gt;
    &amp;lt;mount&amp;gt;
        &amp;lt;mount-name&amp;gt;/broadcast.mp3&amp;lt;/mount-name&amp;gt;
        &amp;lt;charset&amp;gt;UTF-8&amp;lt;/charset&amp;gt;
    &amp;lt;/mount&amp;gt;
    &amp;lt;security&amp;gt;
        &amp;lt;chroot&amp;gt;0&amp;lt;/chroot&amp;gt;
    &amp;lt;/security&amp;gt;
&amp;lt;/icecast&amp;gt;
&lt;/pre&gt;
  &lt;h2 id=&quot;J53L&quot;&gt;Настраиваем Liquidsoap&lt;/h2&gt;
  &lt;h3 id=&quot;Wt1x&quot;&gt;Изменяем файл конфигурации службы&lt;/h3&gt;
  &lt;p id=&quot;vyXb&quot;&gt;### Файл конфигурации службы Liquidsoap /etc/systemd/system/liquidsoap.service&lt;/p&gt;
  &lt;pre id=&quot;84LE&quot; data-lang=&quot;bash&quot;&gt;[Unit]
Description=Liquidsoap Streaming Service
After=network.target

[Service]
# Указываем путь к файлу стрима. Например, /opt/spbchurch.liq
ExecStart=/usr/bin/liquidsoap /opt/spbchurch.liq
#/opt/nsr.liq
#spbchurch.liq
Restart=always
RestartSec=5
User=liquidsoap
Group=liquidsoap

[Install]
WantedBy=multi-user.target&lt;/pre&gt;
  &lt;h3 id=&quot;44nz&quot;&gt;Настраиваем файл стрима Liquidsoap&lt;/h3&gt;
  &lt;p id=&quot;JpBD&quot;&gt;### Файл конфигурации стрима /opt/spbchurch.liq&lt;/p&gt;
  &lt;pre id=&quot;076u&quot; data-lang=&quot;shell&quot;&gt;# новый синтаксис настроек
# устанавливаем уровень 3 - для отладки достаточно
settings.log.level.set(3)
# если нужно - включаем вывод отладочной информации
#settings.log.stdout.set(true)
# если нужно включаем телнет-сервер для управления стримом (см. документацию ;-)
# server.telnet()

# включаем журналирование событий
log.file := true
# указываем путь к файлу-журналу
log.file.path := &amp;quot;/var/log/liquidsoap/stream.log&amp;quot;
log.stdout := false

# плейлист с джинглами
# указываем каталог с мр3-файлами джинглов. например, &amp;#x27;/media/mp3&amp;#x27;
jingles = mksafe(playlist(id=&amp;quot;jingles&amp;quot;,mode=&amp;quot;randomize&amp;quot;,reload_mode=&amp;quot;watch&amp;quot;,&amp;#x27;/media/jingles&amp;#x27;))

# дополнительная рандомизация
# отслеживает, чтобы последние два часа песни в рандоме не повторялись
l = playlog()
def check(r)
  m = request.metadata(r)
  if l.last(m) &amp;lt; 17200. then
    log.info(&amp;quot;Rejecting #{m[&amp;#x27;filename&amp;#x27;]} (played #{l.last(m)}s ago).&amp;quot;)
    false
  else
    l.add(m)
    true
  end
end

# плейлист с треками стрима
# указываем каталог с мр3-файлами стрима. например, &amp;#x27;/media/mp3&amp;#x27;
s = playlist(check_next=check,mode=&amp;quot;randomize&amp;quot;,&amp;#x27;/media/mp3&amp;#x27;)

# играем треки из каждого плейлиста, каждые 10 музыкальных треков - один джингл
radio = rotate(weights = [10, 1],[s,jingles])
radio = nrj(radio)
#radio = crossfade(radio)

out = output.icecast(%mp3,
  host = &amp;quot;127.0.0.1&amp;quot;,
  port = 8000,
  password = &amp;quot;ПАРОЛЬСТРИМА&amp;quot;,
  mount = &amp;quot;radio&amp;quot;,
  fallible=true,
  radio
)&lt;/pre&gt;
  &lt;h3 id=&quot;Z4Ge&quot;&gt;Обновляем службу, запускаем Icecast2 и Liquidsoap&lt;/h3&gt;
  &lt;pre id=&quot;dh27&quot; data-lang=&quot;shell&quot;&gt;# обновление служб
sudo systemctl daemon-reload
# перезапуск службы
sudo systemctl restart icecast2
sudo systemctl restart liquidsoap&lt;/pre&gt;
  &lt;h3 id=&quot;6esW&quot;&gt;Проверяем работу&lt;/h3&gt;
  &lt;pre id=&quot;uVmV&quot; data-lang=&quot;shell&quot;&gt;# проверка состояния Liquidsoap
# запускается долго, если сервер не самый мощный
# у меня на raspberry pi 3b запускается минут 5
#
# запускаем команду и ждем ответа Liquidsoap
# пошел ли стрим или ошибки при запуске стрима
sudo tail -f /var/log/liquidsoap/stream.log&lt;/pre&gt;
  &lt;p id=&quot;gN1c&quot;&gt;Открываем браузер, вводим адрес своего стрима. Например, &lt;a href=&quot;http://10.0.1.13:8000/broadcast.mp3&quot; target=&quot;_blank&quot;&gt;http://10.0.1.13:8000/broadcast.mp3&lt;/a&gt; &lt;br /&gt;И если всё настроено верно – должен пойти стрим&lt;/p&gt;
  &lt;h3 id=&quot;RmKL&quot;&gt;Настройка Ffmpeg для трансляции видеопотока с вашим стримом&lt;/h3&gt;
  &lt;p id=&quot;SAgz&quot;&gt;### Скрипт для запуска потока на видеохостинг&lt;/p&gt;
  &lt;pre id=&quot;2JmL&quot; data-lang=&quot;bash&quot;&gt;#!/bin/bash

# видеофайл, который будет являться &amp;quot;лицом&amp;quot; стрима. например, рядом с скриптом лежит файл vkradio.mp4
VIDEO=&amp;quot;vkradio.mp4&amp;quot;

# адрес стрима icecast2 с локальной точкой подключения. например, http://10.0.1.13:8000/broadcast.mp3
BROADCAST=&amp;quot;http://10.0.1.13:8000/broadcast.mp3&amp;quot;

# параметры стрима
RESOLUTION=&amp;quot;640x480&amp;quot;
BITRATE=&amp;quot;1500k&amp;quot;
FRAMERATE=&amp;quot;5&amp;quot;

# URL для подключения к видеохостингу, ниже пример для Youtube
URL=&amp;quot;rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxx&amp;quot;

# сам скрипт запуска трансляции
/usr/bin/ffmpeg  -re -stream_loop -1 -i &amp;quot;$VIDEO&amp;quot; -i &amp;quot;$BROADCAST&amp;quot; -c:a aac -s &amp;quot;$RESOLUTION&amp;quot; -ab 128k -b:v &amp;quot;$BITRATE&amp;quot; -threads 2 -crf 22 -preset fast -vcodec libx264 -pix_fmt yuv420p -maxrate 2048k -bufsize 2048k -framerate $FRAMERATE -g 2 -strict experimental -f flv &amp;quot;$URL&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;16jr&quot;&gt;Примерно так это всё работает у меня сейчас (апрель 2025) и размещено по адресу radio.spbchurch.ru&lt;/p&gt;
  &lt;p id=&quot;CkU3&quot;&gt;В следующей статье я опишу, как поднять вебсайт, создать веб-страницу с плеером стрима и создание простой страницы со списком текущих треков&lt;/p&gt;

</content></entry><entry><id>slakwik:RAV5JI0KfIZ</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/RAV5JI0KfIZ?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>msg2eml</title><published>2025-02-19T13:40:21.147Z</published><updated>2025-02-19T13:40:21.147Z</updated><category term="razrabotki" label="Разработки"></category><summary type="html">Написал механизм конвертации msg в eml.</summary><content type="html">
  &lt;p id=&quot;YJTs&quot;&gt;Написал механизм конвертации msg в eml.&lt;/p&gt;
  &lt;p id=&quot;GEDz&quot;&gt;За основу взят старый скрипт с гитхаба.&lt;/p&gt;
  &lt;p id=&quot;k7Xk&quot;&gt;Ссылка на репозиторий: &lt;a href=&quot;https://gitverse.ru/slakwik/msg2eml/content/master&quot; target=&quot;_blank&quot;&gt;https://gitverse.ru/slakwik/msg2eml/content/master&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>slakwik:CTLTXUEveb</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/CTLTXUEveb?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Завёл себе открытый репозиторий</title><published>2025-01-30T06:15:20.720Z</published><updated>2025-01-30T06:15:20.720Z</updated><category term="rabota" label="Работа"></category><summary type="html">Много накопилось за годы работы администратором всякого разного, но делиться буду свежими наработками (после внедрения клиентам).</summary><content type="html">
  &lt;p id=&quot;87mn&quot;&gt;Много накопилось за годы работы администратором всякого разного, но делиться буду свежими наработками (после внедрения клиентам).&lt;/p&gt;
  &lt;p id=&quot;QCbw&quot;&gt;&lt;a href=&quot;https://gitverse.ru/slakwik&quot; target=&quot;_blank&quot;&gt;https://gitverse.ru/slakwik&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>slakwik:vkvideobroadcast</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/vkvideobroadcast?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Настройка трансляции в ВКВидео</title><published>2025-01-06T09:56:10.490Z</published><updated>2025-01-06T09:56:10.490Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/22/ad/22ad3ad4-4883-44df-9732-7dfda4f2cd49.png"></media:thumbnail><category term="cerkovnoe-sluzhenie" label="Церковное служение"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/9a/68/9a684b75-49f8-4bdc-a725-7035f6fd3073.jpeg&quot;&gt;Как настроить и запустить трансляцию в ВКВидео</summary><content type="html">
  &lt;p id=&quot;7BNG&quot;&gt;- Переходим на страницу vkvideo.ru&lt;/p&gt;
  &lt;p id=&quot;5XXH&quot;&gt;- Сверху-справа нажимаем кнопку «&lt;strong&gt;+&lt;/strong&gt;» и выбираем «Начать трансляцию»&lt;/p&gt;
  &lt;figure id=&quot;tMv2&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/40/23/4023d632-1d1f-4a7f-bc0f-4ff3c052e350.png&quot; width=&quot;438&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3scG&quot;&gt;- Для трансляции из приложений (OBS, Wirecast и другие) выберите «Приложение»&lt;/p&gt;
  &lt;figure id=&quot;3JWu&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/32/7b/327bf5a0-c843-44fc-9008-0de0b145cc45.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8PRX&quot;&gt;- Добавьте обложку трансляции, название, описание и выберите категорию (Категория «Религия» есть только в RuTube) «Другое»&lt;/p&gt;
  &lt;figure id=&quot;5bsc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bf/9c/bf9c0b06-6a17-4acc-82eb-85023436ea6c.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4SQS&quot;&gt;- Укажите время начала трансляции – оно важно для отображения на странице трансляции, однако можно начать и раньше и позже указанного времени&lt;/p&gt;
  &lt;p id=&quot;eM5U&quot;&gt;- Скопируйте URL и KEY со страницы&lt;/p&gt;
  &lt;p id=&quot;B8Z2&quot;&gt;- Соедините URL и KEY. Например URL &amp;quot;&lt;strong&gt;rtmp://ovsu.okcdn.ru/input/&lt;/strong&gt;&amp;quot;, а KEY &amp;quot;&lt;strong&gt;7966703954х40_7283274680884_7ipхytpaiy&lt;/strong&gt;&amp;quot; одной строкой будет &lt;strong&gt;rtmp://ovsu.okcdn.ru/input/7966703954х40_7283274680884_7ipхytpaiy&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;znGf&quot;&gt;- Скопируйте полученную строку в ваше приложение (точно так же, как с Youtube)&lt;/p&gt;
  &lt;p id=&quot;f8hQ&quot;&gt;- Настройте параметры трансляции, выбрав нужные галочки&lt;/p&gt;
  &lt;figure id=&quot;GHHP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f5/57/f5570cf6-96c8-43e6-b6f1-ca0629f05820.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UzFs&quot;&gt;- Включите параметр «Предварительный просмотр», чтобы можно было увидеть входящий поток от вашего приложения до старта трансляции&lt;/p&gt;
  &lt;figure id=&quot;pk84&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5a/81/5a81d6a4-35dc-45f0-b873-a8bfe2eee017.png&quot; width=&quot;992&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pPbM&quot;&gt;- Укажите дополнительные параметры трансляции, выбрав кто может видеть и комментировать вашу трансляцию&lt;/p&gt;
  &lt;figure id=&quot;sgOD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b6/36/b636b4ca-132b-4461-a9bc-2c38c8f21f5f.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;El2o&quot;&gt;- Нажмите кнопку «Сохранить»&lt;/p&gt;
  &lt;p id=&quot;O7Rg&quot;&gt;- Запустите трансляцию в вашем приложении&lt;/p&gt;
  &lt;p id=&quot;LjgI&quot;&gt;- После получения потока с вашего приложения в окне трансляции будет видна картинка и будет слышен звук – проверьте, что всё настроено как надо&lt;/p&gt;
  &lt;figure id=&quot;HcgQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/41/d4/41d43ecd-ccb3-427a-92b8-4ce5ad5af358.png&quot; width=&quot;2528&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Dw43&quot;&gt;- Нажмите кнопку «Опубликовать», чтобы трансляция стала доступна вашим подписчикам (они получат уведомление)&lt;/p&gt;
  &lt;p id=&quot;TKdG&quot;&gt;- Прямая ссылка на трансляцию будет доступна по кнопке «Поделиться»&lt;/p&gt;
  &lt;p id=&quot;Gs3N&quot;&gt;Вот, собственно и всё. Как видите, ничего сложно нет.&lt;/p&gt;
  &lt;p id=&quot;cZV7&quot;&gt;:-)&lt;/p&gt;

</content></entry><entry><id>slakwik:2G5uuT-dQE9</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/2G5uuT-dQE9?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Функционал АЛД ПРО, который не нужен</title><published>2024-11-08T19:50:48.026Z</published><updated>2024-11-08T19:50:48.026Z</updated><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/ce/a0/cea01164-1946-4676-9764-4776085231a8.jpeg&quot;&gt;Какие части этого продукта не использую, а какие использую с удовольствием? И чем ненужные заменяю?</summary><content type="html">
  &lt;p id=&quot;NPVD&quot;&gt;Какие части этого продукта не использую, а какие использую с удовольствием? И чем ненужные заменяю?&lt;/p&gt;
  &lt;p id=&quot;EI5p&quot;&gt;Так вышло, что серьёзно работать с этим продуктом мне пришлось только с середины этого года.&lt;/p&gt;
  &lt;p id=&quot;VhkT&quot;&gt;И вот к концу года (уже) я отключил и не использую Групповые политики, редко использую развертывание ПК, не использую удаленный доступ на пк, сервер печати больше доставляет проблем, чем их решает, файловый сервер – так же, не использую dhcp-сервер изначально…&lt;/p&gt;
  &lt;p id=&quot;vFtF&quot;&gt;как раз сегодня подводил итоги под завершение проекта и делал скриншоты для документации и… снимков удивительно мало!&lt;/p&gt;
  &lt;p id=&quot;rljj&quot;&gt;ну, то есть продукт может быть и окей, но неясно для кого.&lt;/p&gt;
  &lt;p id=&quot;jNAz&quot;&gt;Чем заменил:&lt;/p&gt;
  &lt;p id=&quot;s8El&quot;&gt;- групповые политики (salt и мегакостыль salt+salt)) заменены на puppet&lt;/p&gt;
  &lt;p id=&quot;AY7Q&quot;&gt;- система развертывания и поддержания пользовательских пк Foreman&lt;/p&gt;
  &lt;p id=&quot;vbGH&quot;&gt;- dhcp-сервер берите любой, он всё равно будет лучше той конфигурации, что предлагает алд про&lt;/p&gt;
  &lt;p id=&quot;EwZn&quot;&gt;- удаленный доступ отлично справляется rudesktop. Да, он единственный, что может попросить денег (условно), но он того стоит в больших количествах пк&lt;/p&gt;
  &lt;p id=&quot;4hu6&quot;&gt;- файловый сервер лучше поднять отдельный (и даже не один, чтобы поднять  DFS), благо настраивать его не так и сложно, равно, как и сервер печати с сервером мониторинга – лучше поднять отдельно и управлять ими нормально.&lt;/p&gt;
  &lt;p id=&quot;Srdf&quot;&gt;Подвести итог, нужен алд про или нет… наверное нет.&lt;/p&gt;
  &lt;p id=&quot;4im2&quot;&gt;Freeipa, foreman+puppetserver и несколько сервисных серверов без графики (Файловый, Печати, DHCP, Мониторинг, Журналирования)&lt;/p&gt;
  &lt;p id=&quot;gTFu&quot;&gt;Вендор алд про говорит, что у них есть всё и сразу, но верить им не стоит – продукт даже в версии 2.3.0 – очень сырой. И даже дело не в болезнях, а просто – продукт молодой.&lt;/p&gt;
  &lt;p id=&quot;2L9J&quot;&gt;Что дальше?&lt;/p&gt;
  &lt;p id=&quot;PQQ9&quot;&gt;В некоторых предыдущих постах я начал упоминать почтовый сервер Communigate – тоже есть над чем подумать, но лучше я пока не видел, да и коллеги из отдела уже внесли несколько существенных изменений в структуру (например, кластер кластеров нормально работает пока только у нас, копировать календари из Exchange пока видимо только мы, и по загрузочным тестам мы смогли защититься даже для больших компаний)&lt;/p&gt;

</content></entry><entry><id>slakwik:1it92T0nW0A</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/1it92T0nW0A?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Радиостанция христианской музыки</title><published>2024-11-08T11:11:14.053Z</published><updated>2024-11-08T11:11:14.053Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/a4/30/a43071ca-95b0-484a-a578-a4e9148d135b.png"></media:thumbnail><category term="cerkovnoe-sluzhenie" label="Церковное служение"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b3/39/b339f93f-5f6d-45f1-b2fa-dc5ae0231816.jpeg&quot;&gt;«Наставляйте друг друга псалмами, гимнами и духовными песнопениями. Пойте и прославляйте Господа от всего сердца»</summary><content type="html">
  &lt;p id=&quot;gOgl&quot;&gt;Приведу текст со страницы радиостанции:&lt;/p&gt;
  &lt;p id=&quot;acLk&quot;&gt;На радиостанции играет пополняемая коллекция гимнов, песен и псалмов в различных музыкальных стилях.&lt;br /&gt;Изначальная идея заключалась в том, чтобы услышать традиционные гимны по-новому, но со временем это переросло в замену обычных песен.&lt;br /&gt;Но чем дольше мы живем, тем больше понимаем, что всё происходящее вокруг имеет отражение и в окружающей нас музыке, и наше «радио» помогает нам прославлять Бога даже в обычных, бытовых обстоятельствах.&lt;/p&gt;
  &lt;blockquote id=&quot;CTYl&quot;&gt;&lt;em&gt;«Наставляйте друг друга псалмами, гимнами и духовными песнопениями. Пойте и прославляйте Господа от всего сердца.»&lt;/em&gt;&lt;br /&gt; &lt;strong&gt;&lt;em&gt;Послание эфесянам 5:19 НРП&lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;blockquote id=&quot;U4vk&quot;&gt; &lt;em&gt;«Пусть в вас живет слово Христа во всем его богатстве. Учите и наставляйте друг друга со всякой мудростью, и с благодарностью в своих сердцах пойте Богу псалмы, гимны и духовные песнопения.»&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt; Послание колоссянам 3:16 НРП&lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;rSpS&quot;&gt;Тексты песен (стихи) мы берём из книги «Песнь Возрождения 3300» или получаем от авторов стихов. Присылайте свои стихи на адрес slakwik@ya.ru.&lt;br /&gt; Стили для песен, гимнов и псалмов подбираются не случайным образом, но с мыслью подчеркнуть текст и идею, а так же с целью дать послушать кому-то из тех людей, которым «не нравится слушать традиционные гимны».&lt;/p&gt;
  &lt;p id=&quot;MFHq&quot;&gt;&lt;a href=&quot;https://t.me/spbchurch_music&quot; target=&quot;_blank&quot;&gt;Ссылка на телеграм канал&lt;/a&gt;, где некоторые из музыкальных композиций можно скачать.&lt;/p&gt;
  &lt;p id=&quot;JO67&quot;&gt;Музыка распространяется свободно и может быть использована где угодно – мы будем только рады.&lt;/p&gt;
  &lt;p id=&quot;k33j&quot;&gt;Слушать онлайн можно тут: &lt;a href=&quot;https://spbchurch.ru/music.html&quot; target=&quot;_blank&quot;&gt;https://spbchurch.ru/music.html&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;0b6L&quot;&gt;На странице есть и ссылка на каталог песен - всё можно скачать в mp3-файлах.&lt;/p&gt;

</content></entry><entry><id>slakwik:2kj4-I79zNr</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/2kj4-I79zNr?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Скрипт синхронизации почтовых ящиков между CommuniGate и MSExchange</title><published>2024-11-08T10:52:45.342Z</published><updated>2024-11-08T10:52:45.342Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/94/ea/94ea6a8c-761f-47d5-9c12-3c9ec5f12d9c.png"></media:thumbnail><category term="razrabotki" label="Разработки"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/4d/b3/4db34a21-6d8b-4c09-9c76-9bf09236e9e9.png&quot;&gt;Небольшой скрипт, позволяющий копировать почтовые ящики между Exchange и Communigate</summary><content type="html">
  &lt;p id=&quot;hR7X&quot;&gt;Запускать можно везде, где установлены пакеты imapsync и parallel.&lt;/p&gt;
  &lt;p id=&quot;VTR2&quot;&gt;Заполните файл users_migrate.txt&lt;/p&gt;
  &lt;pre id=&quot;qMmq&quot;&gt;АЛИАС-В-MSAD,ЛОГИН-В-CG,ПАРОЛЬ-ЛОГИНА-В-CG,EXCHANGE-СЕРВЕР,CG-СЕРВЕР
АЛИАС-В-MSAD,ЛОГИН-В-CG,ПАРОЛЬ-ЛОГИНА-В-CG,EXCHANGE-СЕРВЕР,CG-СЕРВЕР&lt;/pre&gt;
  &lt;pre id=&quot;AtVG&quot;&gt;EXCHSVCLOGIN=&amp;quot;MSAD\\svc_mbxaccess&amp;quot; # Логин сервисной у-з в MS AD, которая имеет доступ к почтовым ящикам пользователей
EXCHSVCPWD=&amp;#x27;PaSSw0rd&amp;#x27; # Пароль от сервисной у-з в MS AD, которая имеет доступ к почтовым ящикам пользователей
PROCS=&amp;#x27;30&amp;#x27; # Количество одновременных сеансов
parallel --max-procs $PROCS --delay 1.4 --colsep &amp;#x27;,&amp;#x27; --arg-file users_migrate.txt --line-buffer --tagstring &amp;quot;from {1} on {4} to {2} via {5}: &amp;quot; \
        $DRYRUN imapsync --compress1 \
        --host1 {4} --user1 &amp;quot;$EXCHSVCLOGIN\\{1}&amp;quot; --password1 &amp;quot;$EXCHSVCPWD&amp;quot; \
        --host2 {5} --user2 {2} --password2 {3} \
        --syncinternaldates --useheader Message-ID --useheader Date --useheader Subject --useheader From --useheader To \
        --useheader Cc --useheader Bcc --useheader Reply-To --useheader In-Reply-To --useheader References --useheader Mime-Version \
        --useheader Content-Type --useheader Content-Transfer-Encoding --useheader Content-Disposition --useheader Content-Description \
        --useheader Content-ID --useheader Content-Location --useheader Content-Language --useheader Content-Base \
        --useheader Content-MD5 --sslargs2 SSL_verify_mode=0 --sslargs2 SSL_verify_mode=0 \
        --exclude &amp;#x27;^Calendar\$&amp;#x27; --exclude &amp;#x27;^Contacts\$&amp;#x27; --exclude &amp;#x27;^\&amp;amp;BBoEMAQ7BDUEPQQ0BDAEQARM-&amp;#x27; \
        --pidfile &amp;quot;/tmp/{2}_migrate.pid&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;VlS4&quot;&gt;Строка &amp;quot;^\&amp;amp;BBoEMAQ7BDUEPQQ0BDAEQARM-&amp;quot; - это папка &amp;quot;Календарь&amp;quot;, её синхронизировать нельзя, тк ломает Календарь в CG.&lt;/p&gt;

</content></entry><entry><id>slakwik:eT0WDI-VgUJ</id><link rel="alternate" type="text/html" href="https://teletype.in/@slakwik/eT0WDI-VgUJ?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=slakwik"></link><title>Avanpost FAM: Загадочные пропажи</title><published>2024-11-02T16:56:49.391Z</published><updated>2024-11-08T10:58:56.765Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e8/fc/e8fc4d11-c5b0-4c81-844d-69525a60af40.png"></media:thumbnail><category term="rabota" label="Работа"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/cd/ae/cdae75e9-3f7c-4536-9d7e-42b618441012.png&quot;&gt;Для организации двухфакторной проверки продукт от Avanpost достаточно хороший.</summary><content type="html">
  &lt;p id=&quot;vsTv&quot;&gt;Для организации двухфакторной проверки продукт от Avanpost достаточно хороший.&lt;/p&gt;
  &lt;p id=&quot;zu0a&quot;&gt;Поддерживаются отказоустойчивые конфигурации, модули есть под почти все операционные системы, ТОТР можно хранить даже в Яндекс.Ключ.&lt;/p&gt;
  &lt;p id=&quot;rjoX&quot;&gt;Пользователей можно создавать прямо там, брать из Microsoft AD, Samba, Freeipa (ALD Pro, Avanpost DS).&lt;/p&gt;
  &lt;p id=&quot;sCha&quot;&gt;База данных немного сложная связями, но специалистам будет просто сформировать отчётные скрипты для выгрузки нужных данных.&lt;/p&gt;
  &lt;p id=&quot;Rum1&quot;&gt;Веб-интерфейс Личного кабинета не сказать, чтобы удобный, но терпимый. &lt;br /&gt;Какие-то вещи отключить можно, но только через css-стили.&lt;/p&gt;
  &lt;p id=&quot;jX6i&quot;&gt;Веб-интерфейс Административный такой же. Минусы, в невозможности выбора количества отображаемых элементов; малое количество отчетности для ИБ; журналы не выгрузить.&lt;/p&gt;
  &lt;p id=&quot;cI2D&quot;&gt;Почти забыл, о чём хотел сказать…&lt;/p&gt;
  &lt;p id=&quot;U0PK&quot;&gt;Вернёмся к выгрузке пользователей из каталогов.&lt;/p&gt;
  &lt;p id=&quot;Tg43&quot;&gt;Базовые настройки описывать большого смысла нет, документация у Avanpost хорошая.&lt;/p&gt;
  &lt;p id=&quot;zj9Y&quot;&gt;Но, имейте ввиду, что выгрузки пользователей — это одно, а выгрузки групп — совсем другое.&lt;/p&gt;
  &lt;p id=&quot;Sx37&quot;&gt;В настройке списков пользователей мы можем указать большие, даже динамические группы по несколько тысяч пользователей.&lt;/p&gt;
  &lt;p id=&quot;AHRN&quot;&gt;Но в настройке выгрузки групп учитывайте нюанс, что каталоги выдают столько членов групп, сколько сможет.&lt;/p&gt;
  &lt;p id=&quot;YGzt&quot;&gt;Например, есть у вас группа allusers-g, которую вы настроили в каталоге, включили туда часть пользователей для тестирования, пусть даже 1000 пользователей. Тестирование прошло успешно и вы решаетесь развернуть на всех сотрудников. Добавляете остальные контейнеры в динамическую группу, количество пользователей в группе вырастает. И в какой-то момент вы обнаруживаете, что в Avanpost FAM пропали члены группы, которая раньше прекрасно синхронизировалась.&lt;/p&gt;
  &lt;p id=&quot;MbWR&quot;&gt;Окей, пользователи у вас остались и в аварийном режиме можно прокликать пару сотен страниц, чтобы добавить несколько тысяч пользователей в группу доступа.&lt;/p&gt;
  &lt;p id=&quot;YSmj&quot;&gt;Но в чём причина?&lt;/p&gt;
  &lt;p id=&quot;ZFYD&quot;&gt;А причина в особенностях взаимодействия с каталогами. Если менеджер задач Avanpost FAM не смог выгрузить членов, то список членов групп очищается. И в моём случае, только из-за того, что членов в группе превысило 1500 объектов.&lt;/p&gt;
  &lt;p id=&quot;VeLt&quot;&gt;Поэтому, учитывайте эти особенности, разбивайте доступа на небольшие группы.&lt;/p&gt;
  &lt;p id=&quot;CeNW&quot;&gt;А так, продукт очень неплох. Могу рекомендовать точно, как админам, так и ИБ.&lt;/p&gt;
  &lt;p id=&quot;BIk3&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qgag&quot;&gt;На неделе напишу про Avanpost DS. Пока скажу, что он мне тоже понравился, а как Каталог вообще отличный. Ничего особо лишнего, можно использовать в больших проектах, где есть свои системы развертывания и обслуживания устройств (мы у себя так сделали, тк ald pro, rudesktop и прочие системы слишком сырые, а где-то прикрутили что-то своё даже сбоку к ald pro))&lt;/p&gt;

</content></entry></feed>