Showing posts with label debian. Show all posts
Showing posts with label debian. Show all posts

Wednesday, October 23, 2019

Building RTPEngine with Docker

Idea is quite simple.
To build rtpengine packet on Debian system, but not having all build dependencies on target machine.
So, we'll use Docker to generate deb files for target system and than - just remove image. This way system will held only minimum needed packets.

As a target, Debian 10 (buster) will be used, as I succeed to install rtpengine mr8.0 (with G.729 support) on it and can't get it working on Debian 9 (maybe use lower version?)

So. All is done on Debian 10 netinst.
  • First step - install Docker

    apt update
    apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
    curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    apt update
    apt install -y docker-ce
  • Prepare Dockerfile

    FROM debian:buster
    MAINTAINER Igor Olhovskiy <igorolhovskiy@gmail.com>

    ENV DEBIAN_FRONTEND noninteractive
    ENV RTPENGINE_VERSION mr8.0
    ENV BCG729_VERSION 1.0.4

    RUN apt-get update && \
        apt-get upgrade -y && \
        apt-get install -y git \
                    dpkg-dev \
                    cmake \
                    unzip \
                    wget \
                    debhelper-compat \
                    default-libmysqlclient-dev \
                    gperf \
                    iptables-dev \
                    libavcodec-dev \
                    libavfilter-dev \
                    libavformat-dev \
                    libavutil-dev \
                    libbencode-perl \
                    libcrypt-openssl-rsa-perl \
                    libcrypt-rijndael-perl \
                    libcurl4-openssl-dev \
                    libdigest-crc-perl \
                    libdigest-hmac-perl \
                    libevent-dev libglib2.0-dev \
                    libhiredis-dev libio-multiplex-perl \
                    libio-socket-inet6-perl libiptc-dev \
                    libjson-glib-dev libnet-interface-perl \
                    libpcap0.8-dev \
                    libpcre3-dev \
                    libsocket6-perl \
                    libspandsp-dev \
                    libssl-dev \
                    libswresample-dev \
                    libsystemd-dev \
                    libxmlrpc-core-c3-dev \
                    markdown \
                    curl \
                    wget \
                    zlib1g-dev && \
        cd /usr/src && \
        curl https://codeload.github.com/BelledonneCommunications/bcg729/tar.gz/$BCG729_VERSION > bcg729_$BCG729_VERSION.orig.tar.gz && \
        tar zxf bcg729_$BCG729_VERSION.orig.tar.gz && \
        cd bcg729-$BCG729_VERSION && \
        git clone https://github.com/ossobv/bcg729-deb.git debian && \
        dpkg-buildpackage -us -uc -sa && \
        cd /usr/src && \
        dpkg -i *.deb && \
        cd /usr/src && \
        git clone -b $RTPENGINE_VERSION https://github.com/sipwise/rtpengine.git && \
        cd rtpengine && \
        dpkg-buildpackage && \
        apt-get clean && \
        rm -rf /var/lib/apt/lists/*

    RUN mkdir -p /opt/deb && \
        mv /usr/src/*.deb /opt/deb

    VOLUME ["/opt/deb"]
  • Build and get deb files

    docker build -t rtpengine:build .
    docker create --name rtpengine-build rtpengine:build
    docker cp rtpengine-build:/opt/deb .
  • Install rtpengine


    cd deb
    dpkg -i libbcg729-0*.deb
    dpkg -i ngcp-rtpengine-daemon_*.deb
    apt-get install -f
    dpkg -i ngcp-rtpengine-recording-daemon_*.deb

    apt-get install -f
    dpkg -i ngcp-rtpengine-utils_*.deb

    apt-get install -f
    dpkg -i ngcp-rtpengine-iptables_*.deb

    apt-get install -f
    dpkg -i ngcp-rtpengine-kernel-dkms_*.deb
    dpkg -i ngcp-rtpengine_*.deb
    Idea of repeating apt-get install -f is to apt to add missing packets.
    Next - configure rtpengine as usual

Friday, April 27, 2012

Учим PHP + Asterisk = Автообзвон

Ввиду некоего стопора в изучении Астериска приходится копать исключительно вглубь. На этот раз мои кривые руки дошли до php.
А так как не раз спрашивали функцию, и вообще это еще тот холивар, то я решил написать систему автозвонилки да так, чтобы из браузера можно было юзать.
Скажу сразу, это первый проект на php, который я пишу. Поэтому говнокод неизбежен.
Также скажу, что использовать его  в продакшене - убийство. Ибо код не факт, что отлажен, так еще и звонит пока только по очереди, никакой мультилинейности. Может, будет потом.


Также небольшой дисклеймер:
Делалось для себя, как учебный проект, поэтому с документацией и комментами плохо. Спамерство - зло, поэтому особо расписывать принципы не буду, в коде все понятно.

Говнокод

upd: Версия 0.02 Добавил мультилинейность. Теперь можно спамить в 30 потоков.

Monday, March 12, 2012

Система совместной работы PHProjekt

Возникла проблема учета оборудования, которое находится в ремонте, тесте... Да и вообще чтобы сотрудники были в курсе, что вообще происходит на работе. А то тех. отдел в своем соку, менеджеры в своем, а потом куча криков, что кому и когда обещал. Такая себе корпоративная записная книжка.

До этого пользовались phpcollab, но она как-то с русским не особо. Точнее, дружит, но не utf8. Смотрел еще на некоторые, на тот же Microsoft Project, но нужно было веб-ориентированное.

В общем, выбор пал на PHProjekt. На данный момент стабильная версия 6.0.6, ее и поставил на отдельной виртуалке.

В принципе, все это описано в руководстве и на сайте, но как-то все в разных местах.

Система - Debian Lenny 6.0

Собсно, ставим все необходимое:

# apt-get install mysql-server mysql-client apache2 php5 libapache2-mod-php5 php5 php5-mysql php5-gd php5-ps php5-cgi zlibc

Создаем базу и пользователя для MySQL:

# mysql -u root -p
      mysql> CREATE DATABASE phprojekt;
      mysql> GRANT ALL PRIVILEGES ON phprojekt.* TO 'phprojekt'@'localhost'
      mysql> IDENTIFIED BY 'password' WITH GRANT OPTION;

Создаем каталог для некоторых данных :) Туда сохраняются файлы, кэш:

# chmod -R 0755 /var/www
# mkdir /srv/private/phprojekt
#chmod -R 0770 /srv/private/phprojekt/

Копируем phprojekt в папку и запускаем в браузере настройку.

Теперь к некоторой настройке: настраиваем оповещение через мыло. Я завел специальный ящик на ЖМыле, чтобы было проще фильтры настраивать.

/var/www/configuration.php

mailTransport = 0

smtpAuth     = "login"
smtpUser     = "@gmail.com"
smtpPassword = ""
; You may specify SSL and Port, if the SMTP server of your choice requires them.
smtpSsl      = "tls"
smtpPort     = "587"

front.notificationEnabledByDefault = true


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

Система простая, как угол дома. Вопрос в привыкании, да и уведомления очень приятны. Хотя и часть проектов по привычке в ГуглоДоках ведется.

В случае всяческого ремонта - очень полезно. Не звонить в техотдел и не вспоминать, кто, что, когда, и починил ли вообще....

Monday, July 26, 2010

Про сборку asterisk на свежеустановленном Debian Lenny 5.0/6.0

Что касается необходимых пакетов:

apt-get install zlib1g-dev libnewt-dev bison ncurses-dev procps flex automake build-essential autoconf libtool libssl-dev libncurses5-dev linux-headers-$(uname -r) libxml2-dev libsqlite3-dev


Сборка и установка:

Dahdi:
tar -xvf dahdi-linux-complete-XXX.tar.gz
cd dahdi-linux-complete-XXX

make (возможно надо указать make MODULES_EXTRA=dahdi_dummy)
make install
make config


Asterisk:
tar -xvf asterisk-XXX.tar.gz
cd asterisk-XXX
./configure
make menuselect
make
make install
make samples

make config

Астериск теперь на виртуальной консоли 9 (Ctrl+Alt+F9)

UPD: Примечание для Ubuntu. В скрипте safe_asterisk надо поменять #! /bin/sh на #! /bin/bash