Skip to content

bro2020/acestream-appimage

Repository files navigation

Stand For Ukraine

For those who don't understand Ukrainian, i recommend using a translator, like this: https://translate.google.com

appimage

Тут зібрані мій bash скрипт, і рецепт для створення AppImage пакета сервера AceStream в pkg2appimage. Скрипт, за допомогою Docker контейнера на базі docker імеджу debian:13-slim, або в поточній системі (потрібно встановлювати додаткові залежності), створює AppImage файл, що містить у собі AceStream-3.2.11, взятий на офіційному ресурсі wiki.acestream.media.

Загалом, цей проєкт задуманий так, щоб мати можливість збирати AppImage бінарники з різних рецептів, але далі одного діло не пішло.

Довгий час основним болем запуску цього сервера (Acestream) була залежність від python2.7, який давно вичищений на більшості сучасних десктопних linux операційних системах. На сьогоднішній день вже підтримується версія python3.10 для Ubuntu 22.04. Але я засмучений тим, що відбувається з Ubuntu останнім часом, тому тут збирається бінарник на базі Debian 13 Trixie. Docker контейнер використовується, щоб не встановлювати залежності для роботи pkg2appimage засмічуючи систему. Не вийшло організувати роботу скрипта без привілегій root, але скрипт досить простий, і не складно побачити, що sudo використовується для простих операцій з файлами, які створюються через docker mount. Для роботи pkg2appimage в docker контейнері довелося використовувати ключ --privileged. Без нього не працював fuse. Не вважаю це проблемою безпеки, тому що docker використовуэться тільки для створення пакету appimage. Бінарник pkg2appimage.appimage взято з офіційного репозиторію на GitHub. Наразі використовується актуаьна версія за 2 лютого 2025 року (1eceb30).

Передбачена можливість роботи сервера Acestream тільки в режимі --client-console, але як на мене цього достатньо. Весь проєкт займає близько 200 мб, при цьому пакет сервера займає приблизно 150 мб. Однак у процесі збірки знадобиться щонайменше 1 Гб вільного простору на диску. Варто зазначити, що скрипт автоматично видаляє після себе і docker контейнер і docker image і непотрібні файли після збірки.

Робота зі скриптом досить проста. Для створення appimage пакета з сервером AceStream потрібно, знаходячись у директорії проєкту, запустити скрипт:

  ./create-appimage.sh

За замовчуванням скрипт перевірить наявність у системі встановленого бінарника docker і якщо він буде виявлений, збірка буде відбуватись у контейнері. Якщо docker не буде знайдено, запуститься збірка appimage в поточному вікні терміналу. У процесі роботи скрипта в термінал буде виводитися багато інформації, що допоможе одразу з'ясувати причини помилок, якщо такі виникнуть. У разі відсутності помилок, буде відображено інформацію про успішне завершення роботи скрипта, і де можна знайти новостворений файл AppImage.

Є можливість примусово створити білд без використання docker. Для цього використовується ключ -t або --terminal, або передати скрипту змінну оточення TERMINAL:

  ./create-appimage.sh -t

Або

  TERMINAL=yes ./create-appimage.sh

Аргумент запуска скрипта -t має пріорітет над змінною оточення. Після успішної збірки, у терміналі також з'явиться підказка, за якою можна знайти новостворений файл AppImage.

Для запуску сервера Acestream можна використовувати файл конфігурації ./build/$BUILD/acestream.conf. Під час створення бінарника цей файл копіюється з корня проєкту автоматично і кладеться поряд з бінарником! У ньому налаштовуються параметри запуску. Мінімально повинен бути рядок --client-console і він повинен бути найпершим у файлі!

У версії 2.5 було додано підтримку використання конфігураційного файлу з /etc/acestream/acestream.conf. Щоб цим скористатись, обов'язково потрібно прибрати acestream.conf, який знаходиться поряд з бінарником.

Також з версії 2.5 за замовчуванням вимкнено інтеграцію з системою. Тому для того, щоб запуск acestream appimage автоматично встановлював .desktop і файл іконки, можна використати аргумент збірки -i або --integration, або передати скрипту змінну оточення DESKTOP_INTEGRATION:

  ./create-appimage.sh -i

Або

  DESKTOP_INTEGRATION=yes ./create-appimage.sh

Аргумент запуска скрипта -i має пріорітет над змінною оточення. Або не використовувати цей аргумент при збірці (бо він вмикає інтеграцію перманентно в бінарнику), натомість при запуску acestream appimage передавати змінну оточення ACESTREAM_DESKTOP_INTEGRATION:

  ACESTREAM_DESKTOP_INTEGRATION=yes ./build/$BUILD/AceStream-$ACE_VERSION-$VER.AppImage

Або

  export ACESTREAM_DESKTOP_INTEGRATION=yes
  ./build/$BUILD/AceStream-$ACE_VERSION-$VER.AppImage

Щоб просто запустити сервер AceStream, достатньо запустити бінарник:

  ./build/$BUILD/AceStream-$ACE_VERSION-$VER.AppImage

$BUILD - піддиректорія з номером білда (генерується під час виконання скрипту create-appimage.sh) $ACE_VERSION-$VER - версія сервера acestream та версія даного проєкту

У версії 2.6 покращена праметризація збірки. Тепер ключові змінні оточення можна задавати в файлі .env або безпосередньо передавати скрипту, як в прикладах вище. Існують значення за замовчуванням, тому ця параметризація не є обов'язковою. Для зручності був створений файл env.example в який занесено значення за змовчуванням. Достатньо його скопіювати в новий файл з назвою .env і змінити потрібні значення.

acestream

Можна використовувати ключі(прапорці) користувача запускаючи бінарник AppImage. Вони будуть перевизначати параметри, прописані в конфігураційному файлі ./build/$BUILD/acestream.conf (крім параметра --client-console).

Якщо було увімкнено ACESTREAM_DESKTOP_INTEGRATION, то відразу після запуску бінарника AppImage відбувається автоматична інтеграція програми з системою:

  • створюється файл іконки /home/$USER/.local/share/icons/acestream-$ACE_VERSION.png
  • створюється файл запуску сервера /home/$USER/.local/share/applications/acestream-start-$ACE_VERSION.desktop
  • створюється файл зупинки сервера /home/$USER/.local/share/applications/acestream-stop-$ACE_VERSION.desktop

Після цього сервер AceStream має значки запуску та зупинки в меню програм вашого дестрибутива Linux.

Веб інтерфейс сервера доступний за адресою:

http://localhost:(--http-port)/webui/app/(--access-token)/server#proxy-server-main

--http-port и --access-token задаються або в терміналі ключем запуску або в конфігураційному файлі acestream.conf

Обов'язково замінити на більше складне значення --access-token перед запуском сервера!

Для того, щоб позбутись програми, достатньо виконати команду:

   rm -rf /home/$USER/.local/share/applications/acestream-st* /home/$USER/.local/share/icons/acestream-*

Але потрібно пам'ятати, що при запуску бінарника AppImage, сервер Acestream створює додаткові файли вказані як значення: --cache-dir, --state-dir, --log-file. Їхнє розташування за замовчуванням можна переглянути в конфігураційному файлі acestream.conf.