nginx com serviço rtmp

Brevemente um post sobre este processo
tps://johnathan.org/rtmp-nginx-apt/
instalado na pasta /tmp

Pretendia criar uma forma de redireccionar o streaming para vários serviços, como youtube e twitch, uma das maneiras é fazer uso da aplicação Nginx e adicionar o serviço RTMP, muito usado para streamimng.
O problema é que aplicação Nginx não inclui o serviço RTMP e não é possível adicionar como módulo externo, a solução passa por re-compilar Nginx com adição do módulo. A re-compilação, por si, nem é muito complexa, existem tutoriais, o mais complexo é ter já instalado com o próprio pacote de Ubuntu, para além de a versão actual de Nginx ser divergente com a de Ubuntu, os locais de instalação também divergem. assim tive que re-compilar o pacote Nginx do Ubuntu.

Apesar de estar a usar Armbian, a base é Ubuntu e o próprio sistema inclui as flags necessário para compilar. Atenção que Armbian não usa sudo, existem acções que requerem poderes de root.

Antes de iniciar o trabalho de recompilação, é importante actualizar o sistema.

apt-get update
apt-get upgrade

Agora é preciso criar a “cama” para re-compilar o pacote, criar a pasta para receber o código ao descarrega-lo e aplicações necessárias para compilar.

mkdir /tmp/src
cd /tmp/src
apt-get build-dep nginx
apt-get source nginx

Exemplo do conteúdo da pasta /tmp/src.

drwxr-xr-x 10 root root    300 Jan  2 18:24 nginx-1.10.3
-rw-r--r--  1 root root 649900 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.debian.tar.xz
-rw-r--r--  1 root root   3158 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.dsc
-rw-r--r--  1 root root 911509 Feb 11  2017 nginx_1.10.3.orig.tar.gz

Será necessário ir à pasta modules e descarregar o módulo adicionar.

cd nginx-1.10.3/debian/modules
git clone https://github.com/arut/nginx-rtmp-module

Os próximos passos são a preparação para o processo mais doloroso de todo.
A seguir é preciso alguma cautela, vai ser necessário editar um ficheiro, construção errada e pode representar perda de tempo.
Realizar backup é sempre a melhor recomendação, apesar de não mexer em nada crítico do sistema, nada melhor que aproveitar o momento para ter um ponto de restauro actualizado.
Abrir o ficheiro /tmp/src/nginx-1.10.3/debian/rules, procurar pela linha que contenha common_configure_flags, se usarem o nano carregar em ctrl+w para fazer a pesquisa, ctrl+o para gravar e ctrl+x para sair. Adicionar –add-module=$(MODULESDIR)/nginx-rtmp-module à flag.

nano /tmp/src/nginx-1.10.3/debian/rules
common_configure_flags := \
                        --with-cc-opt="$(debian_cflags)" \
(...)
                        --with-http_auth_request_module \
                        --add-module=$(MODULESDIR)/nginx-rtmp-module

Na edição do texto é preciso ter atenção que no final de cada linha existe a barra \, EXCEPTO a última, o que essa barra faz é “dizer” que a linha ainda não acabou e continua na próxima linha. Se a intenção é terminar o comando na última linha, não pode conter a barra, caso contrário irá gerar erro na compilação.
Se tudo estiver como esperado, está tudo pronto para criar o novo pacote com o processo de compilação, este será o tal processo mais doloroso que tinha falado anteriormente, vários MINUTOS de espera, os minutos dependem da performance da máquina, CPU e capacidade de ler e escrever dados, durante o processo de compilar estive a ver o uso de CPU, com o htop, pareceu-me que o CPU tinha pouca intensidade de trabalho [teste do youtube], estando mais dependente da leitura e escrita do dispositivo.

cd /tmp/src/nginx-1.10.3
dpkg-buildpackage -uc -b

Exemplo dos ficheiro obtidos.

drwxr-xr-x 10 root root    4096 Jan  2 18:24 nginx-1.10.3
-rw-r--r--  1 root root   26042 Jan  2 20:12 nginx_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root    5026 Jan  2 20:13 nginx_1.10.3-0ubuntu0.16.04.2_armhf.changes
-rw-r--r--  1 root root  649900 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.debian.tar.xz
-rw-r--r--  1 root root    3158 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.dsc
-rw-r--r--  1 root root  911509 Feb 11  2017 nginx_1.10.3.orig.tar.gz
-rw-r--r--  1 root root   47360 Jan  2 20:12 nginx-common_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root  495184 Jan  2 20:12 nginx-core_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 4046964 Jan  2 20:12 nginx-core-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root   37562 Jan  2 20:12 nginx-doc_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root  676372 Jan  2 20:13 nginx-extras_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 6537274 Jan  2 20:13 nginx-extras-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root  516808 Jan  2 20:12 nginx-full_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 4485050 Jan  2 20:12 nginx-full-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root  394328 Jan  2 20:12 nginx-light_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 3106048 Jan  2 20:12 nginx-light-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb

O pacote está pronto a ser instalado, mas antes de iniciar o processo de instalação, é preciso remover o que já existe no sistema.

apt-get remove nginx [nginx-core]

O passo mais esperado, a instalação.

dpkg --install /usr/src/nginx-common_1.10.3-0ubuntu0.16.04.2_all.deb

Ou outro pacote, como nginx-full_1.10.3-0ubuntu0.16.04.2_armhf.deb. Verificar se o módulo está funcional.

nginx -V

Deve existir no meio do texto com –add-module=/usr/src/nginx-1.10.1/debian/modules/nginx-rtmp-module.
Para que os updates do sistema não passe por cima da alteração.

apt-mark hold nginx-full

Com este trabalho todo, se tudo estiver como esperado, o Nginx contem o módulo para o serviço RTMP.
Mais tarde, caso seja necessário reverter e permitir o update alterar, basta usar o comando.

apt-mark unhold

Assim termino o meu tutorial de como compilar e instalar Nginx com o serviço RTMP integrado.

scanner HP em linux

Aqui deixo os passos que usei para que seja possível usar o scanner em linux.
Para instalar em ARMbian

apt install hplip
apt install sane-utils
apt install netpbm

Para instalar em Ubuntu

sudo apt-get install hplip
sudo apt-get install sane-utils
sudo apt-get install netpbm

Ambas as distribuições são baseadas em debian, sendo possível comutar os comandos tanto em ARMbian como em Ubuntu até mesmo distro base Debian, no entanto debian tem realeases mais lentas podendo instalar versões mais antigas. Como ubuntu não fornece no terminal acesso directo a privilégios de root, requer o uso de sudo.
Aproveito para deixar uma breve explicação do que cada aplicação faz ou a sua razão de sr necessário instalar.

  • hplip – base para multifunções da HP
  • sane-utils – para obter a imagem do scanner em pbm
  • netpbm – converter pbm em jpg, png, etc
  • libjpeg-progs – obter dados do ficheiro jpg

A aplicação libjpeg-progs tinha como objectivo obter os meta-dados do ficheiro em jpg para depois poder manipular, mas por enquanto o projecto foi abandonado.