sábado, 21 de maio de 2016

MKV | Substituir faixa de áudio AC3 por AAC

Um ficheiro MKV continha uma faixa de áudio em AC3 que não permitia ser reproduzido em alguns equipamentos. Para se converter para AAC há diversas formas documentadas.

Aqui fica o registo da utilização do FFMPEG (ou avconv) para extração e substituição da faixa de áudio.

1. Extração do áudio
ffmpeg -i Video.mkv -ab 192000 audio.aac

A extração do áudio inicia-se e é feita a conversão de AC3 para AAC com uma qualidade média de 192kbps.

2. Substituição da faixa de áudio num ficheiro MKV
ffmpeg -i Video.mkv -i audio.aac -map 0:v -map 1:a -codec copy -shortest NovoVideo.mkv

São fornecidos dois inputs (-i Video.mkv - vídeo pretendido e o segundo -i audio.aac com o áudio pretendido) é feito o mapeamento dos streams de cada input (-map 0:v para obter apenas o vídeo do primeiro stream e -map:1a para obter apenas o áudio do segundo stream) e é tudo copiado como está sem encoding (-codec copy) terminando o vídeo quando terminar o stream mais curto (-shortest) e colocando tudo um novo ficheiro (NovoVideo.mkv).

terça-feira, 8 de março de 2016

Reverse Proxy com o nginx

A utilização de um reverse proxy permite que um servidor acessível a partir da Internet forneça serviços existentes na sua rede privada para a Internet.
Desta forma, basta uma única máquina com este serviço para depois permitir o acesso a, por exemplo, vários serviços web existentes na rede privada.

Requisitos

O serviço de reverse proxy será feito com recurso ao nginx num servidor ubuntu 14.04.

Servidores internos a disponibilizar na internet:

  • 192.168.1.11:80 - servidor web principal
  • 192.168.1.12:80 - servidor web de teste

Instalação do nginx

apt-get install nginx

Após isto o serviço HTTP fica disponível e acessível na porta 80
netstat -tap
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:http                  *:*                     LISTEN      8967/nginx      

Os ficheiros de configuração de cada site ficam disponíveis em: /etc/nginx/sites-available
Por defeito existe apenas o default que permite ver a página por defeito do nginx.

Configuração do reverse proxy

Como o reverse proxy não vai disponibilizar serviço web direto, a configuração default que pode ser removida:
rm /etc/nginx/sites-enabled/default

Após qualquer alteração deste género é necessário fazer o reload das configurações do servidor:
service nginx reload

Neste caso, após ser removido o site default, passará a ser dado um aviso que a página não está disponível.

Resta agora criar um ficheiro de configuração para cada servidor:
nano /etc/nginx/sites-avaiable/www
server {
    listen 80;
    server_name www.exemplo.org exemplo.org;

    location / {
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass http://192.168.1.11;
    }
}

nano /etc/nginx/sites-avaiable/test
server {
    listen 80;
    server_name test.exemplo.org;

    location / {
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass https://192.168.1.12;
    }
}

Resta agora ativar os sites, para tal é necessário criar um link simbólico de cada um dos ficheiros para o diretório sites-enabled:
ln -s /etc/nginx/sites-available/www /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/

E reiniciar o serviço
service nginx reload

Após isto caso o DNS esteja a apontar para o servidor correto e a porta 80 do router encaminhe tudo para o novo servidor, será possível aceder a cada um dos servidores pelo seu nome de domínio.

Esta configuração pode ser escalável para muitos mais serviços de forma semelhante.

Referências

[1] - Documentação Oficial: https://www.nginx.com/resources/admin-guide/reverse-proxy/
[2] - Exemplo: https://www.garron.me/en/linux/nginx-reverse-proxy.html

quarta-feira, 16 de dezembro de 2015

OpenELEC/Kodi autoplay de vídeos e playlists

Com o OpenELEC obtém-se rapidamente um media center completamente funcional mas com alguns ajustes é possível transformá-lo num kiosk que apresenta automaticamente um conjunto de vídeos num loop infinito.

Isto permite que sempre que seja ligado, arranque e inicie a reprodução sem qualquer intervenção humana (não é necessário rato/teclado/comando).

Assim, um sistema com uma televissão e um raspberry pi fica completamente autónomo para reprodução de vídeos de demonstração, divulgação, etc.

Criar uma playlist

A maneira mais fácil consiste em reproduzir um vídeo e depois ir adicionando novos vídeos à playlist.
Quando se tiver a playlist concluída resta guardar com um nome sugestivo, por exemplo: videos_loop

Por defeito fica guardada em /storage/.kodi/userdata/playlists/video.

Reproduzir automaticamente e ficar em loop

Para iniciar a reprodução automática de vídeos/playlists, é possível criar um ficheiro autostart.sh em /storage/.config com:
(
sleep 20 ;
kodi-send --action="PlayerControl(RepeatAll)" ;
kodi-send --action="PlayMedia(\"/storage/.kodi/userdata/playlists/video/videos_loop.m3u\")" ;
)&


É fácil perceber que inicialmente se esperam 2 segundos, depois é enviado o comando para o kodi alterar a forma de reprodução para RepeatAll e de seguida é dada a ordem de reprodução da playlist guardada.

Existem inúmeros comandos disponíveis para o kodi [1], permitindo personalizar e automatizar diversas tarefas.

A partir daqui resta ligar o raspberry pi com o OpenELEC e depois de carregar o Kodi, a playlist é iniciada e fica em loop até ser desligado.


Referências

[1] - http://kodi.wiki/view/List_of_built-in_functions

segunda-feira, 14 de dezembro de 2015

Kodi e Plex Media Server

Uma Raspberry Pi permite tornar qualquer televisão num centro multimédia de excelência a um custo extremamente acessível. Já foi visto aqui há muito tempo os diferentes "sabores" para utilização do Raspberry Pi como media center e o "sabor" aconselhado continua a ser o OpenELEC.

De facto as versões atuais do OpenELEC já trazem o Kodi (após o rebranding feito ao XBMC), mas continuam a caber num simples cartão de 512MB!!

Apesar de ser possível aceder ao Plex Media Server por DLNA, existe uma forma muito mais apelativa e que permite criar um autêntico cliente Plex no Kodi.

A solução passa pela instalação da skin Amber e do Add On PleXBMC.

1 - Instalação do PleXBMC

A instalação do PleXBMC está bem descrita [1] na página do projeto e aqui ficam as dicas.

A forma mais fácil é obter o ficheiro a partir do site [2]:
wget https://github.com/hippojay/plugin.video.plexbmc/archive/v4.0.0beta4.zip -O PleXBMC_latest.zip

Depois é necessário copiá-lo para o OpenELEC:
scp PleXBMC_latest.zip root@openelec:~

Para fazer a instalação resta aceder ao Kodi, ir aos Add Ons e instalar a partir de zip, selecionando o ficheiro copiado anteriormente.

2 - Instalação da skin Amber

Não há muito a dizer para além das instruções oficiais [3], no Kodi para ativar esta skin é necessário aceder à condiguração da Aparência, onde será necessário obter mais e escolher a Amber para descarregar e instalar.

Após este processo é perguntado se é pretendido ativar e utilizar esta skin.

Ao utilizar esta skin, no menu Settings aparece uma opção Go Plex que deverá ser utilizada para entrar em modo Plex e assim visualizar todos os conteúdos multimédia disponibilizados pelo Plex Media Server de forma muito apelativa.

Para reverter para o modo Kodi existe a opção Go Kodi.

3 - Configuração do PleXBMC para acesso ao servidor Plex

Com uma atualização do Plex Media Server deixou de ser tão transparente a configuração do cliente para quem não tenha ou não queira ter conta no plex.tv.
Assim, na configuração do servidor é necessário:
1 » definir o servidor primário com o IP do Plex Media Server;
2 » aceder a Manage MyPlex e quando aparecer se pretende definir uma conta, deve cancelar-se o processo;
3 » aceder a Select Master Server... e deverá aparecer o nome do Plex Media Server, que deverá ser selecionado.

Após tudo isto é possível aceder à opção Go Plex e navegar pela galeria de media de forma muito apelativa.

4 - Kodi 14 e a skin Amber

A versão OpenElec 5.0.8 vem com o Kodi 14.2 e a skin Amber esconde diversas opções das configurações do Kodi. Contudo, é possível alterar um ficheiro [4] para ativar novamente as Configurações. Assim, resta aceder por SSH ao OpenELEC e substituir o ficheiro ~/.kodi/addons/skin.amber/1080i/Includes.xml:
ssh root@IP_do_OpenELEC
cd ~/.kodi/addons/skin.amber/1080i
mv Includes.xml Includes.xml.old
wget http://sprunge.us/JOCj -O Includes.xml

De seguida é possível fazer o Reload da skin no Kodi para que sejam carregadas as novas opções do menu.

[1] - http://kodi.wiki/view/Add-on:PleXBMC
[2] - https://github.com/hippojay/plugin.video.plexbmc/releases
[3] - http://kodi.wiki/view/Add-on:Amber
[4] - http://forum.kodi.tv/showthread.php?tid=187051

Plex Media Server - Instalação e utilização

A utilização de um servidor de streaming para uma rede interna é muito útil pois permite que a partir de um único local de armazenamento sejam disponibilizados conteúdos multimédia para os diversos equipamentos da rede: televisões, telemóveis, tablets, portáteis, pc, etc.

Um servidor de streaming já visto anteriormente é o miniDLNA que é muito versátil e permite rapidamente ter um serviço básico de DLNA numa rede.

Uma alternativa muito apelativa é o Plex Media Server [1], apesar de ser proprietária é gratuita e existe uma versão para ubuntu a partir do 10.04.

1 - Instalação

Utilizando uma máquina com ubuntu, pelo menos 10.04, é necessário descarregar o instalador [2], por exemplo, para a versão disponível neste momento será:
wget https://downloads.plex.tv/plex-media-server/0.9.12.19.1537-f38ac80/plexmediaserver_0.9.12.19.1537-f38ac80_amd64.deb

Depois é necessário instalar o pacote com:
sudo dpkg -i plexmediaserver_0.9.12.19.1537-f38ac80_amd64.deb

A partir daqui tudo deve ser instalado, caso surjam dependências que seja necessário instalar, é possível automatizar esse processo com:
sudo apt-get install -f

2 - Configuração e Utilização

A partir do momento que está a executar, o PMS (Plex Media Server) pode ser acedido por browser a partir de qualquer localização da rede:
http://IP_do_servidor:32400/web/index.html

Depois é possível acrescentar uma Biblioteca (Library), por exemplo, para Filmes e indicar o local onde estão os ficheiros a disponibilizar.

Caso se tratem de filmes existem alguns scripts automáticos que fazem a inventariação dos filmes com capas e ficha técnica da produção.




Depois resta utilizar um cliente compatível, por exemplo, grande parte das televisões LG com DLNA têm a aplicação Plex cliente instalada, que ao ser utilizada apresenta uma ótima interface para acesso aos ficheiros multimédia disponibilizados pelo Plex Media Server.



[1] - https://plex.tv/
[2] - https://plex.tv/downloads

terça-feira, 8 de dezembro de 2015

Servidor HTTPS gratuito e confiável - Let's Encrypt

O projeto Let's Enrypt [1] juntou grandes empresas da rede na criação de uma entidade de certificação gratuita, automática e aberta. Permitindo assim que todos os websites possam ter certificados válidos para encriptação do tráfego que geram.

Para perceber melhor o conceito, pode dizer-se que toda a navegação feita em endereços URL que utilizam apenas http:// é aberta e pode ser facilmente acedida por qualquer "pessoa" na rede.
Quando se utilizam endereços URL que começam por https:// significa que existe uma negociação automática entre o servidor e o nosso browser, que lhes permite comunicar de uma forma que toda a informação que passa na rede está encriptada e ao ser apanhada não é perceptível o que lá está.

Para que se possa confiar no servidor, há muitos anos criou-se um esquema de empresas de certificação que se responsabilizam pela validade da identidade do servidor e pela segurança e fiabilidade das chaves utilizadas. Este processo envolvia quase sempre o pagamento dos certificados.

Sempre foi possível a criação de certificados manuais, que cada administrador criava para os seus servidores, contudo como eram manuais e não havia nenhuma entidade externa a validá-los, quase todos os browsers exibem avisos que o site é potencialmente perigoso e afins. Tornando-se assim uma solução pouco aceitável para uma utilização generalizada pois, apesar de as comunicações serem muito mais seguras, os utilizadores eram alertados para os perigos de segurança do certificado não ser reconhecido...

Com o projeto Let's Encrypt, grandes empresas como a Mozilla, Cisco, Akamai, Facebook, entre muitas outras, decidiram tornar o processo de criação e atribuição de certificados para servidores muito mais rápido, fácil e económico, permitindo assim que a proteção de todas as comunicações feitas online esteja ao alcance de todos.

Instalação do cliente

Para obter e instalar o software cliente do Let's Encrypt, a forma mais rápida é através do git:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Para instalar:
./letsencrypt-auto

Na documentação do projeto há imensas referências que permitem cobrir grande parte das configurações básicas [2], designados de plugins e que estão muito bem documentados.

Criação de um certificado manual

No meu caso particular tenho o tráfego HTTP (porta 80) a ir para um servidor e o HTTPS (porta 443) a ir para outro servidor. Assim, não é possível utilizar os plugins disponibilizados pelo cliente, pois este pressupõe que ambos os serviços são assegurados pela mesma máquina.

Desta forma foi instalado o cliente Let's Encrypt no servidor para HTTPS e executado como root:
./letsencrypt-auto certonly --manual

De seguida é necessário indicar o domínio alvo do certificado, podendo ser incluídos diversos domínios separados por vírgulas ou espaço, por exemplo: dominio.my.to

Depois é indicado que o nosso IP público será registado e associado ao pedido de certificado.

E são depois apresentadas algumas informações que deverão ser seguidas:
Make sure your web server displays the following content at
http://dominio.my.to/.well-known/acme-challenge/coJuntoDeL3trasENumerosMUUIIIITOOOgrande before continuing:

coJuntoDeL3trasENumerosMUUIIIITOOOgrande-876kjjhasd982134

E fica à espera que seja feito o setup necessário, após o qual devemos dar enter.

Como se pode observar pelas indicações dadas, o serviço do Let's Encrypt vai tentar aceder a um ficheiro em HTTP no mesmo domínio, assim é necessário criar as pastas necessários no servidor HTTP e criar o ficheiro indicado com o conteúdo pretendido:
mkdir -p /var/www/html/.well-known/acme-challenge
printf "%s" coJuntoDeL3trasENumerosMUUIIIITOOOgrande-876kjjhasd982134 > /var/www/html/.well-known/acme-challenge/coJuntoDeL3trasENumerosMUUIIIITOOOgrande

Para testar deve abrir-se o browser o endereço http://dominio.my.to/.well-known/acme-challenge/coJuntoDeL3trasENumerosMUUIIIITOOOgrande e verificar se aparece o texto pretendido:
coJuntoDeL3trasENumerosMUUIIIITOOOgrande-876kjjhasd982134

Quando isto estiver pronto, resta voltar ao cliente do Let's Encrypt e finalizar com enter e, caso tudo corra bem, aparecerá a seguinte informação:
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/dominio.my.to/fullchain.pem. Your cert will
   expire on 2016-03-07. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Configuração do apache para o certificado Let's Encrypt

Agora que existe um certificado válido, resta alterar a configuração do apache para que utilize este novo certificado.
Os certificados estão disponíveis em /etc/letsencrypt/live/dominio.my.to/ e explicados na documentação [3].

No ficheiro de configuração do HTTPS no apache, por exemplo, /etc/apache2/sites-available/default-ssl.conf, deverão ser refletidos os novos certificados:
####Configuration for SSL #####
SSLEngine on
# LET'S ENCRYPT
SSLCertificateFile /etc/letsencrypt/live/dominio.my.to/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dominio.my.to/privkey.pem
#### End of SSL Configuration ####

De seguida resta reiniciar o apache e começar a utilizar o novo certificado válido
service apache2 restart

Ao aceder ao serviço HTTPS no browser já será apresentado como seguro sem as mensagens normais que o certificado não é válido.



[1] - https://letsencrypt.org/
[2] - https://letsencrypt.readthedocs.org/en/latest/using.html#installation
[3] - https://letsencrypt.readthedocs.org/en/latest/using.html#where-are-my-certificates

domingo, 8 de novembro de 2015

RF24 - Utilizar o nRF24L01+ para comunicações com Raspberry Pi e Arduino

O chip nRF24L01+ permite a comunicação sem fios na faixa dos 2.4GHz de forma económica [1] (menos de 1 euro, é questão de se procurar nos diversos sites).

Com dois desses chips é possível efetuar comunicações entre dois dispositivos eletrónicos, neste caso um Raspberry Pi 2 B e um arduino uno.

A primeira questão são so drivers necessários para ambas as plataformas. Existem diversas implementações, aqui será utilizada a RF24, fornecida por TMRh20 [2].

Ligações

nRF24L01+ possui oito pinos mas apenas se utilizam os primeiros 7.

pinnRF24L01+arduino
UNO
RPi
pin
RPi
GPIO
1GNDGND25GND
2VCC3.3V173v3
3CED715GPIO22
4CSND824GPIO8
5SCKLD1323SCKL
6MOSID1119MOSI
7MISOD1221MISO

É necessário efetuar as ligações de um nRF24L01+ ao arduino UNO e de outro nRF24L01+ ao Raspberry Pi.

Instalação do Software

arduino
Abrir o arduino IDE e ativar a biblioteca RF24 (testado em 1.6.5):
Sketch > Include Library > Manage Libraries...
Pesquisar por RF24 e clicar em Install

Obter o exemplo [3] fazer o upload para o arduino e abrir a consola CTRL+SHIFT+M, introduzir T para começar a enviar pings.

Raspberry Pi
No Raspbian garantir que o sistema está atualizado:
sudo apt-get update
sudo apt-get upgrade

Ativar o SPI
sudo raspi-config
Advanced > enable the SPI kernel module

Instalar as bibliotecas RF24 do TMRH20 [4]:
wget http://tmrh20.github.io/RF24Installer/RPi/install.sh
chmod +x install.sh
./install.sh

Depois resta entrar no diretório de exemplos para o RPi e experimentar:
cd rf24libs/RF24/examples_RPi
make
sudo ./gettingstarted

Depois é necessário pressionr 0 (zero) para receber os pings do arduino.

Referências

[1] - http://www.aliexpress.com/w/wholesale-nrf24l01.html
[2] - http://tmrh20.github.io/RF24/index.html
[3] - http://tmrh20.github.io/RF24/GettingStarted_8ino-example.html
[4] - http://tmrh20.github.io/RF24/RPi.html
[5] - Projeto com comunicação entre o Raspberry Pi e o arduino (em inglês): https://www.coconauts.net/blog/2014/09/03/send-readings-from-arduino-to-raspberry-via-radio/
[6] - Referências para o arduino e o nRF24L01+ (em inglês): http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01
[7] - Projeto mais antigo para comunicação entre o Raspberry Pi e o arduino (em inglês): http://blog.the-jedi.co.uk/2013/10/07/nrf24l01-and-raspberry-pi/

terça-feira, 27 de outubro de 2015

Proxmox/OpenVZ contentor sem permissões de escrita em /dev/null

Algumas VPS OpenVZ ao reiniciarem ficavam com permissões erradas (rw- --- ---, ou seja, 600) em alguns devices:
/dev/null
/dev/full
/dev/zero
/dev/random
/dev/urandom

A partir daqui [1] foi possível obter uma regra para o udev aplicar sobre estes devices e permitir que a cada arranque as permissões sejam as corretas.

Como neste caso o ficheiro não existe é necessário criá-lo e adicionar o conteúdo abaixo.
# nano /etc/udev/rules.d/50-fix-permission.rules
SUBSYSTEM=="mem", KERNEL=="null|zero|full|random|urandom", MODE="0666"

Guardar com CTRL + X e Y

[1] - https://bbs.archlinux.org/viewtopic.php?pid=1123209#p1123209

sábado, 11 de julho de 2015

VPN: Criar chave para cliente android e configuração

0. Introdução

As vantagens na utilização de um servidor VPN têm duas vertentes essenciais:
  • Aumentar a segurança na utilização de redes inseguras (redes wireless avulsas ou sem encriptação)
  • Ligar a uma rede local remota
O primeiro aspeto é essencial nos dias que correm pois grande parte dos equipamentos de lazer (centros comerciais, cafés, restaurantes, parques, etc) possuem redes sem fios gratuitas e/ou de fácil ligação e com muitos utilizadores em simultâneo.
A utilização de uma ligação VPN nestes cenários aumenta muito o nível de segurança da nossa navegação.

O segundo aspeto permite que o nosso dispositivo esteja "fisicamente" ligado à rede remota. Muito útil no caso de aplicações de ISP que apenas funcionam dentro da rede local de cada cliente (por exemplo, aplicações para visualização da emissão de TV e afins).
Desta forma, com acesso à Internet e ativando a ligação VPN é possível navegar a partir de qualquer lugar como se estivéssemos na rede local do servidor VPN e, assim, utilizar as referidas aplicações como se estivéssemos fisicamente na rede local.

1. Requisitos

1. Acesso a um servidor VPN.
2. Instalação da aplicação OpenVPN Connect no dispositivo cliente, designado de tabuleta

O teste foi feito com um sistema Android 4.x, mas existem diversas instruções para outros dispositivos ([1] ver Step 5 - Installing the Client Profile).
Para equipamentos Android de versões 2.x é necessário acesso root ao equipamento [2].

2. Criação de Certificados, Chaves e afins

Para cada dispositivo cliente é necessário criar um conjunto de ficheiros que permitem encriptar a ligação de forma muito segura.

Assim, acedendo ao servidor VPN, basta utilizar:
cd /etc/openvpn/easy-rsa/
./build-key tabuleta

Serão perguntadas diversas questões que para utilização normal podem ser confirmadas todas com ENTER e no final com dois 'y' para confirmação.

Este processo cria vários ficheiros na pasta /etc/openvpn/easy-rsa/keys, nomeadamente: tabuleta.crt e tabuleta.key.

3. Criação de um Perfil para o OpenVPN Connect

A criação de um perfil permite combinar num único ficheiro todos elementos necessários para a configuração de um cliente VPN.

1. Copiar o exemplo base de perfil:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/tabuleta.ovpn

2. Editar o perfil tablet.ovpn:
nano /etc/openvpn/easy-rsa/keys/tabuleta.ovpn

3. Alterar a linha remote my-server-1 1194 para ter o domínio do servidor, por exemplo qualquercoisa.no-ip.org:
remote qualquercoisa.no-ip.org 1194

4. Se o cliente não é Windows, devem descomentar-se as linhas:
user nobody
group nogroup

5. Deve comentar-se depois as linhas que fazem referência aos certificados e chaves:
#ca ca.crt
#cert client.crt
#key client.key

6. De seguida é possível acrescentar e copiar/colar de forma a que o ficheiro tabuleta.ovpn fique:
(conteúdo existente)
<ca>
(colar conteúdo do ca.crt)
</ca>
<cert>
(colar conteúdo do tabuleta.crt)
</cert>
<key>
(colar conteúdo do tabuleta.key)
</key>

Para auxiliar a este processo criei um bash script que está disponível aqui [3].

7. Copiar o perfil tabuleta.ovpn de forma segura para o cliente.

4. Configuração do OpenVPN Connect no cliente

Para que um dispositivo se possa ligar ao servidor VPN necessita ter um cliente instalado e configurado. Neste caso o dispositivo tabuleta é um equipamento Android 4.x.

1. Instalar a aplicação OpenPVN Connect [4]

2. Abrir o OpenVPN Connect e importar o perfil copiado anteriormente com a opção:
Import > Import Profile from SD card

3. Selecionar o ficheiro tabuleta.ovpn e posteriormente deverá aparecer o perfil na aplicação

4. Quando estiver com acesso à Internet é possível fazer Connect e todo o tráfego passará pelo servidor VPN.

Este processo está muito bem explicado com diversas capturas de exemplos aqui [1Step 5 - Installing the Client Profile.

Referências

[1] - Página com muita informação sobre criação e configuração do servidor e dos clientes
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04

[2] - Instruções para instalação no GingerBread 2.3
https://my.hostvpn.com/knowledgebase/15/OpenVPN-for-Android-rooted-Gingerbread-23x.html

[3] - Script para criação de um perfil para OpenVPN
http://librehacks.blogspot.pt/2015/07/vpn-script-para-criacao-de-perfis.html

[4] - Aplicação OpenVPN Connect
https://play.google.com/store/apps/details?id=net.openvpn.openvpn

VPN: Script para a criação de perfis OpenVPN

O script seguinte permite criar um perfil para um cliente OpenVPN após serem criados os seus certificados e chaves (./build-key tabuleta).

Deve ser guardado em /etc/openvpn/easy-rsa/keys/mergeKeys.sh

E deve ser invocado a partir dessa localização com o argumento do nome do cliente. Por exemplo:
./mergeKeys.sh tabuleta

Para criar tabuleta.ovpn, a partir de ca.crt, tabuleta.crt e tabuleta.key.

Deve copiar-se o perfil de exemplo OVPN para template.ovpn e configurá-lo de acordo com o servidor.


mergeKeys.sh

#!/bin/bash
# Check for client name
echo -e "Checking for client name... "
if [ $# -eq 0 ]; then
    echo -e "ERROR: No client name provided.\nAborting."
    echo -e "\nYou have to supply the client name for the certificate. eg:\n$0 client1\n"
    exit 1
else
    echo -e "Using $1 to find certificates..."
fi

# Check for client.ovpn
if [ -f "$1.ovpn" ]; then
  echo -e "WARNING: $1.ovpn already exist."
  echo -e "\nAborting."
  exit 1
fi

FILE=template.ovpn
echo -e "Checking for template profile $FILE... "
if [ ! -f $FILE ]; then
  echo -e "ERROR: $FILE not found."
  echo -e "\nAborting."
  exit 1
fi

FILE=ca.crt
echo -e "Checking for $FILE... "
if [ ! -f $FILE ]; then
  echo -e "ERROR: $FILE not found."
  echo -e "\nAborting."
  exit 1
fi

FILE="$1.crt"
echo -e "Checking for $FILE... "
if [ ! -f $FILE ]; then
  echo -e "ERROR: $FILE not found."
  echo -e "\nAborting."
  exit 1
fi

FILE="$1.key"
echo -e "Checking for $FILE... "
if [ ! -f $FILE ]; then
  echo -e "ERROR: $FILE not found."
  echo -e "\nAborting."
  exit 1
fi

# All files exist
echo -e "All files exist.\n"

FILE=client.ovpn
echo "Creating $1.ovpn base file with $FILE..."
cp "$FILE" "$1.ovpn"
if [ ! -f "$1.ovpn" ]; then
  echo -e "ERROR: $1.ovpn couldn't be created. Check permissions."
  echo -e "\nAborting."
  exit 1
fi

FILE=ca.crt
echo "Append $FILE to $1.ovpn..."
echo "<ca>" >> "$1.ovpn"
cat "$FILE" >> "$1.ovpn"
echo "</ca>" >> "$1.ovpn"

FILE="$1.crt"
echo "Append $FILE to $1.ovpn..."
echo "<cert>" >> "$1.ovpn"
cat "$FILE" >> "$1.ovpn"
echo "</cert>" >> "$1.ovpn"

FILE="$1.key"
echo "Append $FILE to $1.ovpn..."
echo "<key>" >> "$1.ovpn"
cat "$FILE" >> "$1.ovpn"
echo "</key>" >> "$1.ovpn"

echo -e "Done.\n"