| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- FROM ubuntu:focal AS build-asterisk
- ENV DEBIAN_FRONTEND=noninteractive
- ARG ASTERISK_VER=18.2.0
- ARG BCG729_VER=1.1.1
- ARG ASTERISK_G72X_VER=master
- WORKDIR /usr/src
- RUN apt-get update && \
- apt-get install --no-install-recommends --yes \
- git build-essential subversion checkinstall autoconf automake bison flex graphviz cmake curl ca-certificates libresample1-dev libiksemel-dev libopus-dev pkg-config
- RUN cd /usr/src && \
- mkdir asterisk && \
- curl -fSL --connect-timeout 30 http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-${ASTERISK_VER}.tar.gz | tar xz --strip 1 -C asterisk && \
- cd asterisk && \
- ./contrib/scripts/get_mp3_source.sh && \
- ./contrib/scripts/install_prereq install
- RUN cd /usr/src/asterisk && git clone https://github.com/felipem1210/asterisk-res_json.git && ./asterisk-res_json/install.sh
- RUN cd /usr/src/asterisk && ./configure --prefix=/usr --libdir=/usr/lib --with-pjproject-bundled --with-jansson-bundled --with-resample --with-ssl=ssl --with-srtp && \
- make menuselect/menuselect menuselect-tree menuselect.makeopts && \
- menuselect/menuselect \
- --enable-category MENUSELECT_ADDONS \
- --enable-category MENUSELECT_CHANNELS \
- --enable-category MENUSELECT_APPS \
- --enable-category MENUSELECT_CDR \
- --enable-category MENUSELECT_FORMATS \
- --enable-category MENUSELECT_FUNCS \
- --enable-category MENUSELECT_PBX \
- --enable-category MENUSELECT_RES \
- --enable-category MENUSELECT_CEL \
- \
- menuselect/menuselect \
- --enable BETTER_BACKTRACES \
- --enable DONT_OPTIMIZE \
- --enable app_confbridge \
- --enable app_macro \
- --enable app_meetme \
- --enable app_mysql \
- --enable app_page \
- --enable binaural_rendering_in_bridge_softmix \
- --enable chan_motif \
- --enable codec_silk \
- --enable codec_opus \
- --enable format_mp3 \
- --enable res_ari \
- --enable res_chan_stats \
- --enable res_calendar \
- --enable res_calendar_caldav \
- --enable res_calendar_icalendar \
- --enable res_endpoint_stats \
- --enable res_pktccops \
- --enable res_snmp \
- --enable res_srtp \
- --enable res_xmpp \
- --disable-category MENUSELECT_CORE_SOUNDS \
- --disable-category MENUSELECT_EXTRA_SOUNDS \
- --disable-category MENUSELECT_MOH \
- --disable BUILD_NATIVE \
- --disable app_ivrdemo \
- --disable app_meetme \
- --disable app_saycounted \
- --disable app_skel \
- --disable cdr_pgsql \
- --disable cel_pgsql \
- --disable cdr_sqlite3_custom \
- --disable cel_sqlite3_custom \
- --disable cdr_mysql \
- --disable cdr_tds \
- --disable cel_tds \
- --disable cdr_radius \
- --disable cel_radius \
- --disable cdr_syslog \
- --disable chan_alsa \
- --disable chan_console \
- --disable chan_oss \
- --disable chan_mgcp \
- --disable chan_skinny \
- --disable chan_ooh323 \
- --disable chan_mobile \
- --disable chan_unistim \
- --disable res_digium_phone \
- --disable res_calendar_ews \
- --disable res_calendar_exchange \
- --disable res_stasis_mailbox \
- --disable res_mwi_external \
- --disable res_mwi_external_ami \
- --disable res_config_pgsql \
- --disable res_config_mysql \
- --disable res_config_ldap \
- --disable res_config_sqlite3 \
- --disable res_phoneprov \
- --disable res_pjsip_phoneprov_provider \
- && \
- make && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=asterisk-rrt --pkgversion=${ASTERISK_VER} && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=asterisk-rrt-dev --pkgversion=${ASTERISK_VER} make install-headers && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=asterisk-rrt-config --pkgversion=${ASTERISK_VER} make config && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=asterisk-rrt-samples --pkgversion=${ASTERISK_VER} make samples && \
- ldconfig && \
- cd /usr/src && \
- mkdir bcg729 && \
- curl -fSL --connect-timeout 30 https://github.com/BelledonneCommunications/bcg729/archive/${BCG729_VER}.tar.gz | tar xz --strip 1 -C bcg729 && \
- cd bcg729 && \
- cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_PREFIX_PATH=/usr && \
- make && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=bcg729-rrt --pkgversion=${BCG729_VER} --spec=none && \
- ldconfig && \
- cd /usr/src && \
- mkdir asterisk-g72x && \
- curl -fSL --connect-timeout 30 https://bitbucket.org/arkadi/asterisk-g72x/get/${ASTERISK_G72X_VER}.tar.gz | tar xz --strip 1 -C asterisk-g72x && \
- cd asterisk-g72x && \
- ./autogen.sh && \
- ./configure --prefix=/usr --with-bcg729 --enable-penryn && \
- make && \
- checkinstall --install=yes --default --pakdir=/usr/src/packages --pkgname=asterisk-g72x-rrt --pkgversion=0.${ASTERISK_G72X_VER} && \
- ldconfig
- FROM ubuntu:focal AS rrd-freepbx
- ENV DEBIAN_FRONTEND=noninteractive
- ARG ASTERISK_VER=18.2.0
- ARG BCG729_VER=1.1.1
- ARG ASTERISK_G72X_VER=master
- ARG FREEPBX_VER=15.0
- ENV APP_PORT_HTTP 80
- ENV APP_PORT_HTTPS 443
- ENV APP_PORT_PJSIP 5160
- ENV APP_PORT_SIP 5060
- ENV APP_PORT_IAX 4569
- ENV APP_PORT_RTP_START 10000
- ENV APP_PORT_RTP_END 10200
- ENV APP_PORT_MYSQL 3306
- ENV APP_UID=1000
- ENV APP_GID=1000
- ENV APP_USR="asterisk"
- ENV APP_GRP="asterisk"
- COPY --from=build-asterisk /usr/src/packages /usr/src/packages
- RUN apt-get update && \
- apt-get install --no-install-recommends --yes gpg gpg-agent dirmngr && \
- apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C && \
- echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" >> /etc/apt/sources.list.d/ondrej-php.list && \
- echo "deb http://ppa.launchpad.net/ondrej/apache2/ubuntu focal main" >> /etc/apt/sources.list.d/ondrej-apache2.list && \
- apt-get update && \
- apt-get upgrade --yes && \
- dpkg -i /usr/src/packages/*.deb && \
- apt-get install --no-install-recommends --yes \
- apache2 \
- binutils \
- certbot \
- codec2 \
- cron \
- curl \
- fail2ban \
- ffmpeg \
- file \
- freetds-bin \
- freetds-common \
- iptables \
- jq \
- lame \
- libaudiofile1 \
- libc-client2007e \
- libcap2 \
- libcfg7 \
- libcpg4 \
- libdbd-mysql \
- libdbi-perl\
- libeditline0 \
- libevent-2.1-7 \
- libfftw3-3 \
- libfftw3-bin \
- libgmime-3.0-0 \
- libical3 \
- libicu66 \
- libiksemel3 \
- libjansson4 \
- libjpeg-turbo8 \
- libltdl7 \
- libncurses5 \
- libneon27 \
- libnewt0.52 \
- libopus0 \
- libosptk4 \
- libportaudio2 \
- libproxy1v5 \
- libresample1 \
- libsensors5 \
- libsndfile1 \
- libsnmp35 \
- libsnmp-base \
- libspandsp2 \
- libspeexdsp1 \
- libsrtp2-1 \
- libtiff5 \
- libtiff-tools \
- libunbound8 \
- liburiparser1 \
- libvpb1 \
- libxml2 \
- lm-sensors \
- logrotate \
- lsof \
- mariadb-client \
- mpg123 \
- netcat \
- net-tools \
- nodejs \
- npm \
- odbc-mariadb \
- openssl \
- php7.3 \
- php7.3-mysql \
- php7.3-curl \
- php7.3-gd \
- php7.3-json \
- php7.3-mbstring \
- php7.3-xml \
- postfix \
- rsync \
- sox \
- speex \
- sqlite3 \
- strace \
- sudo \
- supervisor \
- unixodbc \
- unzip \
- uuid \
- wget \
- whois \
- zip
- RUN groupadd -g ${APP_GID} ${APP_GRP} && \
- useradd -u ${APP_UID} -c "Asterisk User" -g ${APP_GRP} -s /sbin/nologin ${APP_USR} && \
- usermod -aG sudo,www-data ${APP_USR} && \
- mkdir -p \
- /etc/pki/pbx \
- /home/asterisk \
- /var/lib/asterisk/moh \
- /var/lib/asterisk/sounds \
- /var/spool/asterisk \
- /var/run/fail2ban && \
- chown -R ${APP_USR}:${APP_GRP} \
- /etc/asterisk \
- /home/asterisk \
- /var/lib/asterisk \
- /var/spool/asterisk && \
- openssl req -subj '/CN=pbx/O=RRT/C=RU' -new -newkey rsa:2048 -sha256 -days 36500 -nodes -x509 -keyout /etc/pki/pbx/rrtpbx.key -out /etc/pki/pbx/rrtpbx.crt
- RUN cd /usr/src && \
- mkdir freepbx && \
- curl -fSL --connect-timeout 30 http://mirror.freepbx.org/modules/packages/freepbx/freepbx-${FREEPBX_VER}-latest.tgz | tar xz --strip 1 -C freepbx && \
- cd freepbx && \
- curl -fSL --connect-timeout 30 http://mirror1.freepbx.org/modules-${FREEPBX_VER}.xml -o modules-${FREEPBX_VER}.xml && \
- mkdir -p amp_conf/htdocs/admin/modules/_cache && \
- for MODULE in \
- announcement \
- arimanager \
- asteriskinfo \
- backup \
- calendar \
- callforward \
- callwaiting \
- cel \
- certman \
- cidlookup \
- contactmanager \
- daynight \
- donotdisturb \
- filestore \
- findmefollow \
- iaxsettings \
- ivr \
- manager \
- miscapps \
- miscdests \
- parking \
- phonebook \
- presencestate \
- printextensions \
- queues \
- soundlang \
- timeconditions \
- userman \
- ucp \
- bulkhandler \
- speeddial \
- weakpasswords \
- pm2 \
- ; do \
- mkdir -p amp_conf/htdocs/admin/modules/$MODULE && \
- MODULE_VER=$(php -r "echo json_encode(simplexml_load_file('modules-${FREEPBX_VER}.xml'));" | jq -r ".module[] | select(.rawname == \"${MODULE}\") | {version}".version) && \
- curl -sfSL --connect-timeout 30 http://mirror.freepbx.org/modules/packages/$MODULE/$MODULE-${MODULE_VER}.tgz | tar xz --strip 1 -C amp_conf/htdocs/admin/modules/$MODULE/ && \
- curl -sfSL --connect-timeout 30 http://mirror.freepbx.org/modules/packages/$MODULE/$MODULE-${MODULE_VER}.tgz.gpg -o amp_conf/htdocs/admin/modules/_cache/$MODULE-${MODULE_VER}.tgz.gpg \
- ; done && \
- su - ${APP_USR} -s /bin/bash -c "gpg --refresh-keys --keyserver hkp://keyserver.ubuntu.com:80" && \
- su - ${APP_USR} -s /bin/bash -c "gpg --import /usr/src/freepbx/amp_conf/htdocs/admin/libraries/BMO/1588A7366BD35B34.key" && \
- su - ${APP_USR} -s /bin/bash -c "gpg --import /usr/src/freepbx/amp_conf/htdocs/admin/libraries/BMO/3DDB2122FE6D84F7.key" && \
- su - ${APP_USR} -s /bin/bash -c "gpg --import /usr/src/freepbx/amp_conf/htdocs/admin/libraries/BMO/86CE877469D2EAD9.key" && \
- su - ${APP_USR} -s /bin/bash -c "gpg --import /usr/src/freepbx/amp_conf/htdocs/admin/libraries/BMO/9F9169F4B33B4659.key"
- EXPOSE ${APP_PORT_HTTP}/tcp \
- ${APP_PORT_HTTPS}/tcp \
- ${APP_PORT_PJSIP}/tcp \
- ${APP_PORT_PJSIP}/udp \
- ${APP_PORT_IAX}/tcp \
- ${APP_PORT_IAX}/udp \
- ${APP_PORT_SIP}/tcp \
- ${APP_PORT_SIP}/udp \
- ${APP_PORT_RTP_START}-${APP_PORT_RTP_END}/udp \
- ${APP_PORT_MYSQL}/tcp
- ADD filesystem /
- ENTRYPOINT ["/entrypoint.sh"]
- CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]
|