domingo, 17 de maio de 2020

Kodi - Netflix e HBO Portugal

Utilização de um Raspberry Pi com OSMC e Kodi para ver Netflix e HBO Portugal

Ao longo dos anos a utilização de um raspberry pi para transformar uma televisão estúpida numa televisão esperta foi uma opção muito válida.

Agora com os serviços de streaming legais e disponíveis em Portugal a sua utilização num simples Raspberry Pi eleva ainda mais a inteligência de qualquer televisão.

Mais, qualquer televisão que tenha ficado burra (porque deixou de ter suporte para as atualizações dos serviços de streaming) pode recuperar alguma inteligência.

O sistema está operacional num Raspberry Pi 3 B+, com o OSMC num cartão de 32GB (é necessário ter algum espaço, no mínimo deverá utilizar-se um cartão de 8GB).

Atualização: Recentemente testei o setup num Raspberry Pi 4 B e, como o OSMC ainda não tem suporte para este dispositivo, utilizei o LibreELEC num cartão de 16GB.
Assim, pude verificar que o processo para instalação do Netflix pode ser mais simples tendo funcionado sem instalar os pacotes extra como referido pelo pimylife.


HBO Portugal

A instalação do Add-On para a HBO Portugal é simples e encontra-se disponível no repositório oficial.

Assim, basta aceder aos Add-Ons e Instalar a partir de um repositório. Na secção de Vídeos Add-Ons é necessário procurar por hGO EU e instalar.

Durante a instalação será necessário instalar o WidevineCDM (ver) que demora algum tempo.

Na configuração do Add-On é necessário escolher o País e no caso de Portugal escolher o tipo de utilização, neste caso foi escolhido o HBO Portugal. A lista de países suportadas é extensa.

Na primeira inicialização será preciso introduzir as credenciais de acesso à HBO Portugal e começar a utilizar o Add-On que funciona muito bem.


Netflix

Há pouco tempo experimentei novamente a instalação do AddOn Netflix utilizando o LibreELEC com a última versão do Kodi e os passos dados foram substancialmente mais simples.

Acedendo por SSH é possível descarregar o ZIP do repositório CastagnaIT diretamente para o raspberry pi (também é possível transferir utilizando outras formas, por exemplo, por pen ou SAMBA):

ssh root@LibreELEC
wget https://github.com/castagnait/repository.castagnait/raw/master/repository.castagnait-1.0.1.zip

Após estes comandos podemos aceder ao Kodi e será necessário ir a Sistema e ativar Fontes Desconhecidas para ser possível utilizar o repositório CastagnaIT.

Nos Add-Ons é necessário aceder a Instalar a partir de um ZIP e escolher o ficheiro ZIP descarregado anteriormente (que deve estar na pasta home).

Depois de instalado é possível entrar no repositório CastagnaIT e instalar o Add-On Netflix que está em Video Add-Ons.

A instalação demora um pouco e depois é possível abrir o Add-On.

Mesmo que não esteja instalado o Widevine CDM o AddOn funciona deixando navegar por todo o conteúdo e apenas pedindo para ser instalado aquando da primeira reprodução de um qualquer conteúdo.


Para estes AddOns funcionarem será necessário ter instalado o Widevine CDM. Qualquer um deles, caso seja necessário, pedirá para se instalar o Widevine CDM e basta seguir os diferentes passos. Só é necessário instalar uma vez.

Atenção que será necessário bastante espaço para fazer as operações necessárias (>3GB) por isso convém ter um cartão com espaço e aguardar que a instalação termine (ainda é um processo demorado).


Problemas
Caso a imagem esteja desfasada do som/legendas pode ser necessário aceder às Definições do Add-on e baixar a qualidade. No Raspberry Pi 3 B+ standard é possível utilizar a qualidade 720p sem qualquer problema. O 1080p funciona bem em animação mas não dá para ver conteúdos de imagem real de forma minimamente aceitável.

Referências


quarta-feira, 22 de janeiro de 2020

Clonezilla - Clonar HDD para SSD mais pequeno

Gparted ou Windows Disk Management

Reduzir o tamanho das partições até ficar com espaço não alocado no final do disco. O tamanho total das partições deverá ser inferior à capacidade do SSD.


Clonezilla - Expert

device-device
-g
-icds


-k (a tabela de partições foi criada manualmente pelo layout do disco de origem setor de início, setor de fim e tipo de partição)


Nota: Ao clonar uma imagem maior para um disco mais pequeno que tenha a tabela de partições semelhante é possível utilizar as opções -g e -icds e utilizar a tabela de partições do disco de destino -k.

Referências:


domingo, 10 de novembro de 2019

Recuperar ficheiros apgados num RAID com LVM

Neste caso foi utilizada uma máquinacom 2 discos de 1TBem RAID por mdadm e LVM.


- /dev/sdb e /dev/sdc - Espelhados em RAID 1 com mdadm
- /dev/md0 - Com LVM
- /dev/vg0/swap e /dev/vg0/data


- /dev/vg0/data é montado como /home

Para recuperar ficheiros apagados em /home é necessário iniciar o sistema sem montar /home.

Uma das formas é arrancar um sistema live (por exemplo, USB) e ligar um outro disco para guardar as recuperações.

Ativar RAID
- Confirmar se RAID não está montado:
cat /proc/mdstat

- Ativar RAID
mdadm --assemble --scan





- Confirmar se LVM está ativo
lvscan

- Ativar LVM com
vgchange -ay

- Depois é necessário montar a partição como readonly e com a opção noload para evitar escritas
mount -o ro,noload /dev/vg0/data /mnt/data


- Finalmente é possível utilizar o photorec para procurar e recuperar os ficheiros pretendidos.

Cartão de Cidadão em Linux

 

Atenção: Está disponível uma nova versão mais atualizada aqui.


Após diversas tentativas foi possível colocar o leitor de cartões do cartão de cidadão a funcionar em Debian GNU/Linux - buster 64bits.


1. Descarregar plugin do site: https://autenticacao.gov.pt/fa/ajuda/autenticacaogovpt.aspx

É possível descarregar o plugin para Debian/Ubuntu e fazer a sua instalação manual:
dpkg -i plugin-autenticacao-gov.deb

Um dos problemas estava em arrancar o plugin utilizando o OpenBox... Acedendo ao conteúdo do .deb é possível obter o ficheiro .desktop que contém a informação de arranque:
[Desktop Entry]
Version=1.0
Name=plugin Autenticação.Gov
GenericName=plugin Autenticação.Gov
GenericName[pt]=plugin Autenticação.Gov
Comment=Autenticação com o Cartão de Cidadão
Exec=/usr/bin/java -Dsun.java2d.xrender=false -jar /usr/share/plugin-autenticacao-gov/plugin-autenticacao-gov.jar sj
Icon=plugin-autenticacao-gov
Terminal=false
Type=Application
Categories=Utility


Assim, resta arrancar o plugin:
/usr/bin/java -Dsun.java2d.xrender=false -jar /usr/share/plugin-autenticacao-gov/plugin-autenticacao-gov.jar sj

O ícone aparece na barra de tarefas do tint2 e a opção Diagnosticar Plugin abre uma página indecifrável com uma impossibilidade qualquer relativa ao DNS e a um *.mordomo...

Alguma pesquisa e um comentário no PPLware indica a razão da questão:
«N'uno 7 de Dezembro de 2017 às 13:21
Continuas a depender de uma aplicação que faz o mesmo que as applets java faziam mas usa uma comunicação com o browser incompatível com alguns routers. No meu caso, num ambiente linux ligado a um router com DD-WRT, esta aplicação batia sempre na impossibilidade de resolver nomes para o IP do localhost. O serviço de DNS do DD-WRT não permite tal coisa, logo não funcionava. Contactei o suporte deles e a solução foi mesmo martelar os múltiplos nomes que eles usam com o 127.0.0.1 no ficheiro de hosts…»


Assim, deve editar-se o /etc/hosts para conter:
127.0.0.1 m1.mordomo.gov.pt
127.0.0.1 m2.mordomo.gov.pt
127.0.0.1 m3.mordomo.gov.pt
127.0.0.1 m4.mordomo.gov.pt
127.0.0.1 m5.mordomo.gov.pt
127.0.0.1 m6.mordomo.gov.pt
127.0.0.1 m7.mordomo.gov.pt
127.0.0.1 m8.mordomo.gov.pt
127.0.0.1 m9.mordomo.gov.pt
127.0.0.1 m10.mordomo.gov.pt
127.0.0.1 m11.mordomo.gov.pt
127.0.0.1 m12.mordomo.gov.pt
127.0.0.1 m13.mordomo.gov.pt
127.0.0.1 m14.mordomo.gov.pt
127.0.0.1 m15.mordomo.gov.pt
127.0.0.1 m16.mordomo.gov.pt
127.0.0.1 m17.mordomo.gov.pt
127.0.0.1 m18.mordomo.gov.pt
127.0.0.1 m19.mordomo.gov.pt
127.0.0.1 m20.mordomo.gov.pt


Ao que parece o leitor de cartões anuncia-se como webserver com um domínio *.mordomo.gov.pt e o router não permite essa alteração.

Situação resolvida, é possível utilizar o cartão de cidadão com o leitor para realizar as operações, correu tudo bem com o Opera, resta testar com outros browsers.


terça-feira, 19 de março de 2019

RAID 1 - substituir drive com mdadm

Apesar de o array não ter qualquer problema o SMART do disco indica problemas. A troca do disco é aconselhada.

Verificar o array

Para ver o estado do array:
cat /proc/mdstat

md0 : active raid1 sdb1[0] sdc1[1]
      976629760 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

Para ver os detalhes do array:
mdadm --detail /dev/md0
 /dev/md0:
        Version : 1.2
  Creation Time : Sat Jan 21 17:33:16 2017
     Raid Level : raid1
     Array Size : 976629760 (931.39 GiB 1000.07 GB)
  Used Dev Size : 976629760 (931.39 GiB 1000.07 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Mar 19 08:48:42 2019
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : data:0  (local to host hostname)
           UUID : f047a10d:ae9c8424:c469fb59:5f6773bd
         Events : 13799

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1



Verificar erros nos discos

É possível os discos com a ferramenta  smartctl, fazendo o teste curto (cerca de 2 minutos) ou o teste longo (mais demorado):
smartctl -t short /dev/sdb
smartctl -t long /dev/sdb

Assim, apesar de o array indicar que está tudo bem, um dos disco apresenta erros nos testes SMART.
smartctl -a /dev/sdb(...)
=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Green
Device Model:     WDC WD10EARX-00N0YB0
Serial Number:    WD-WMC0T0383723

(...)
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     33281         296
# 2  Short offline       Completed: read failure       90%     33281         296
(...)

Substituir disco do array

Para substituir o disco é necessário provocar uma falha no disco:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

cat /proc/mdstat
md0 : active raid1 sdb1[0](F) sdc1[1]      976629760 blocks super 1.2 [2/1] [_U]
      bitmap: 3/8 pages [12KB], 65536KB chunk


Depois é necessário remover o disco do array:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

Agora é necessário:
  1. desligar a máquina;
  2. retirar o disco em falha (é possível ver o serial number com o smartctl -a para remover o disco correto);
  3. colocar o novo disco;
  4. ligar a máquina.

Como o novo disco está vazio é necessário clonar a tabela de partições do disco bom do array para o novo:


sfdisk -d /dev/sdc | sfdisk /dev/sdb
Checking that no-one is using this disk right now ... OK

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0xd6ec1f12.
/dev/sdb1: Created a new partition 1 of type 'Linux raid autodetect' and of size 931.5 GiB.
/dev/sdb2: Done.

New situation:

Device     Boot Start        End    Sectors   Size Id Type
/dev/sdb1        2048 1953523711 1953521664 931.5G fd Linux raid autodetect
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


Após esta operação pode adicionar-se o novo disco ao array:

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

O array inicia o processo de espelho do disco bom para o novo.

Como o processo é demorado, pode ser acompanhado com:
watch cat /proc/mdstat
md0 : active raid1 sdb1[2] sdc1[1]
      976629760 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  1.0% (10220864/976629760) finish=122.3min speed=131660K/sec
      bitmap: 7/8 pages [28KB], 65536KB chunk



Referências:


[1] - Replacing a Failed Mirror Disk in a Software RAID Array (mdadm) - https://www.thegeekdiary.com/replacing-a-failed-mirror-disk-in-a-software-raid-array-mdadm/

[2] - mdadm cheat sheet - http://www.ducea.com/2009/03/08/mdadm-cheat-sheet/

quinta-feira, 31 de maio de 2018

Regras iptables - webserver SYN flood

Algumas regras para o iptables proteger um webserver contra alguns ataques. Por exemplo, o ataque SYN flood [0].

Descartar os pacotes SYN que não são recebidos:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Descartar pacotes com fragmentos:
iptables -A INPUT -f -j DROP

Descartar pacotes mal criados XMAS:
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Descartar pacotes nulos:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

Bloquear um IP externo de aceder ao servidor:
iptables -A INPUT -s IP-ADDRESS -j DROP

Bloquear um IP externo de aceder a uma porta do servidor:
iptables -A INPUT -s IP-ADDRESS -p tcp --destination-port 80 -j DROP


[0] - https://en.wikipedia.org/wiki/SYN_flood

[1] - https://www.cyberciti.biz/tips/linux-iptables-10-how-to-block-common-attack.html

[2] - https://www.cyberciti.biz/faq/how-do-i-block-an-ip-on-my-linux-server/

sábado, 24 de fevereiro de 2018

Rsync em servidor Windows

Tendo um servidor SSH na rede torna-se fácil efetuar cópias eficientes utilizando o rsync.

O problema surge ao tentar fazer o mesmo com uma máquina Windows e automatizar esse processo.

Dmitry Leskov documentou bem este processo em Inglês aqui.

Utilizando a versão gratuita do cwRsync (rsync que corre em windows com a biblioteca cygwin que garante a execução de comandos UNIX/Linux em Windows).


Para apagar ficheiros com mais de x dias em Windows encontra-se aqui:

forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"


quarta-feira, 26 de julho de 2017

owncloud upgrade para ubuntu 16.04

O setup inicial era este:
- ubuntu 14.04.5 LTS
- owncloud 8.1.9.2

Após o upgrade para ubuntu 16.04 pretendia também atualizar o owncloud. Contudo no repositório a última versão era a 9... E não é possível fazer upgrades de vários major.

Assim, é necessário ir fazendo o upgrade entre as diversas versão major:
https://owncloud.org/changelog/#latest8.0

Neste caso
- 8.1.9.2 » 8.1.11
- 8.1.11 » 8.2.11
- 8.2.11 » 9.0.10
- 9.0.10 » 9.1.6

Fazer backup da instalação anterior
cd /var/www
mv owncloud owncloud_8.1.9

Obter última versão e extrair
tar xjvf owncloud-8.1.11.tar.bz2

Copiar configuração da versão anterior (neste caso não é necessária a pasta data porque na configuração está definida noutro local e não dentro da pasta owncloud)
cp owncloud_8.1.9.2/config/config.php owncloud/config/config.php

chown www-data:www-data -R owncloud

Executar o upgrade
cd /var/www/owncloud
sudo -u www-data ./occ upgrade

Repetir os passos para cada uma das versões.

Configurar repositórios

wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.key
apt-key add - < Release.key
Run the following shell commands as root to add the repository and install from there.

sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud.list"
apt-get update
apt-get upgrade


PlexMediaServer e minidlna no ubuntu 16.04

Plex Media server

Ao fazer o upgrade do ubuntu 14.04.5 LTS para o 16.04 o plexmediaserver não funcionava e não era instalado a partir do repositório oficial.

Havia um bug no instalador plexmediaserver_1.7.5.4035-313f93718_amd64.deb e entretanto foi lançada uma versão que ainda não está nos repositórios, a 4036.

Assim, é necessário remover a versão instalada, descarregar manualmente a nova e instalar:
apt-get remove plexmediaserver

wget "https://doc-04-7o-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/726psu5fkd99d3vha2cvlf3t71h6elik/1501056000000/17568712713587208033/*/0B57qR6p2QjXpVWtZYjVUcVI1WjQ?e=download" -O plexmediaserver_1.7.5.4036-fef9bbe02_amd64.deb

dpkg -i plexmediaserver_1.7.5.4036-fef9bbe02_amd64.deb

Mais informações aqui:
https://forums.plex.tv/discussion/277748/cant-install-plex-1-7-5-on-ubuntu-16-04

minidlna

Também o minidlna ficou com problemas após a atualização.
A solução passou por remover o pacote e voltar a instalar mantendo a configuração (/etc/minidlna.conf)

apt-get remove minidlna

apt-get install minidlna

sábado, 10 de junho de 2017

Recuperação do arranque após instalação do Windows

Após a instalação do Microsoft Windows o grub, utilizado para o arranque do Linux, é substituído pelo bootloader do Windows.
De seguida apresentam-se os passos para voltar a colocar o grub como bootloader principal do computador.

Arranque com um LiveCD ou pen do Linux Mint (ou outro).

Acedendo à consola deve confirmar-se quais as partições, deve colocar-se a letra do disco pretendido, normalmente será 'a' ou seja, /dev/sda:

sudo fdisk -l /dev/sdX
Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     2048 62500863 62498816 29.8G 83 Linux
...

Deve ter-se atenção e procurar a partição linux, normalmente identificada com o código 83 (etx3, etx4 ou afins)

De seguida deve montar-se a partição para ser utilizada (neste caso seria /dev/sda1):

sudo mount /dev/sdXY /mnt

Após estar montada é possível restaurar o grub através da sua instalação no disco (neste caso /dev/sda):

sudo grub-install --root-directory=/mnt/ /dev/sdX

Esta operação deve concluir com sucesso e após isto é possível reiniciar o computador.
Ao arrancar o grub deverá ser carregado e deverá estar igual ao que estava antes da instalação do Windows.

Deve arrancar-se então com o Linux instalado e no final atualizar o grub para procurar outros sistemas operativos:

sudo update-grub

O sistema operativo Windows deverá ser reconhecido e pode reiniciar-se o computador para confirmar que já é possível escolher o Linux e o Windows.