sábado, 13 de abril de 2013

JDownloader no Raspberry Pi

Afinal o JDownloader também pode fazer parte dos programinhas que tenho instalado no meu económico e "headless system" que é o Raspberry Pi!

Usando os plugins do JDownloader como o Web Interface e o Remote Control podemos ter o mais popular dos gestores de download por http a rodar no pequeno RPi. Uma aplicação Java que até é reconhecida por ser bastante pesada a rodar muito bem no sistema Raspbian e usando até poucos recursos deste!


Para usar o JDownloader no Raspbian é preciso um servidor X11 a correr que no caso é o LXDE que vêm por defeito na distribuição do Raspbian oficial. Não é preciso nem recomendável ter o servidor X a arrancar no boot, já que vamos instalar o VNC com este a criar o "Display" virtual que o JDownloader precisa para correr. Não esquecer também que é preciso instalar o Java no Raspbian, com essa escolha a reservar-se só ao JavaFX da Oracle. Este é um Java optimizado para ARM e para o hardware do RPi usando às características "hard float" deste.

Noutro dos meus tutoriais instalei o pyLoad que é uma aplicação em python e uma excelente alternativa ao próprio JDownloader. Mas o JDownloader é uma aplicação mais popular e com um maior numero de aplicações e de extensões para acesso remoto a partir de outros computadores e de outros dispositivos moveis como é a intenção deste artigo e tutorial.

Possuindo já um cartão SD funcional com a imagem do Raspbian e acendendo ao RPi por SSH vamos lá começar... não se assustem por ser um howto bastante grande, pode ser feito em vários passos ;)

UPDATE (06-10-2013): Já existe uma versão oficial Java hard-float no Repo do Raspbian. Caso instalem essa versão, basta depois seguir este tutorial a partir do ponto 5. Não é preciso instalar o programa xdotool nem colocar os seus passos no script.

1 - Instalando o JavaFX que se encontra neste link ou diretamente para o RPi na consola com o comando wget + respectivo link:

wget http://www.java.net/download/JavaFXarm/jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz

2 - Criamos o directório e descompactámos o arquivo, é colocado na pasta criada:

sudo mkdir -p -v /opt/java

tar xvzf ~/jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz

sudo mv -v ~/jdk1.8.0 /opt/java

3 - O Raspbian precisa saber que o Java esta instalado, e para o caso de existirem outras instalações Java, esta nova terá que ser a usada por defeito:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0/bin/java" 1

sudo update-alternatives --set java /opt/java/jdk1.8.0/bin/java

4 - A primeira parte esta concluída e se tudo correu bem com o seguinte comando podemos ver o JavaFX instalado:

java -version

E isto que aparece:


java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)

5 - Vamos agora instalar o VNC e configura-lo com password de acesso:

sudo apt-get install tightvncserver

Definindo e confirmando a password:

tightvncserver

6 - Neste passo vamos instalar o JDownloader:

wget http://212.117.163.148/jd.sh

sudo chmod +x jd.sh

EDIT: Corram o seguinte comando dentro de uma sessão do VNC:

sh jd.sh

Este processo demora uns bons minutos já que o JDownloader vai efectuar download e configuração dos ficheiros necessários. Por isso não fechem a consola! 
Em alternativa abrimos outra sessão de SSH para continuarmos deixando a outra onde corre o processo do JDownloader aberta.

7 - Vamos precisar de um pequeno script de iniciação do VNC:

sudo nano sjd.sh

E copiamos o seguinte:

#!/bin/bash

VNCSERVER_NUMBER=0
vncserver :$VNCSERVER_NUMBER
export DISPLAY=localhost:$VNCSERVER_NUMBER
sleep 180
xdotool key Return

Fechem o editor nano gravando o ficheiro.

8 - Permissão para ficheiro executável:

sudo chmod a+x sjd.sh

9 - Precisamos instalar um outro programa (xdotool):

sudo apt-get install xdotool

Se repararem no ficheiro sjd.sh existe um comando no final "xdotool key Return". Este comando é para existir um pressionar virtual da tecla Return após 180 segundos depois de o Raspberry arrancar como irão ver mais à frente. Dai a instalação desta aplicação xdotool.

10 - Vamos colocar este script de iniciação do VNC no arranque do RPi:

sudo nano /etc/rc.local

Copiando o seguinte antes da linha exit0 ( o script corre como user pi):

su -c "sh /home/pi/sjd.sh" pi &

Fechem o editor nano gravando o ficheiro.

11 - Fica a faltar colocar o JDownloader a iniciar também no arranque do Raspberry o que poderíamos ter feito no script sjd.sh! 

Mas para ficar mais bonito vamos adicionar o JD aos menus do LXDE e coloca-no no arranque da sessão com às seguintes linhas (é para o user pi):

[Desktop Entry]
Encoding=UTF-8
Name=JDownloader
Comment=JDownloader Download Manager
Exec=java -jar /home/pi/.jd/JDownloader.jar
Icon=/home/pi/.jd/plugins/webinterface/favicon.png
Terminal=false
Type=Application
Categories=Network;
StartupNotify=True

Estas linhas são colocadas em dois ficheiros iguais que vão criar com o editor nano:

sudo nano /usr/share/applications/JDownloader.desktop

E no arranque da sessão X11:

sudo nano /home/pi/.config/autostart/JDownloader.desktop

Fechem sempre o editor nano gravando o ficheiro.

Se o JDownloader já estiver com a instalação concluída "Ponto 6" podem aplicar um reboot ao Raspberry para logo depois começar a usar o JDownloader ;)


Para configurarem inicialmente o JD usem um cliente de VNC acedendo a um dos seguintes endereço:
ip-do-raspberry:0
ip_do _raspberry:5900

A password de acesso é a que definiram no ponto 5.

Activem os plugins de web interface e de acesso remoto, bem como apliquem definições para que o JD inicie minimizado. Isto é muito importante e faz todo o sentido para usar o JD no Raspberry como maquina de downloads remota.

Explicações e notas finais:

O facto de esta versão JavaFX ser uma preview ainda, faz com que o JD não reconheça oficialmente  a versão. Por isso sempre que iniciem o JD, este irá pedir um OK na seguinte mensagem:


Este pequeno detalhe obviamente tornou-se num problema já que aqui pretende-se que o JD inicie no arranque do Raspberry sem qualquer intervenção da nossa parte!
A solução que arranjei foi aquele comando do "xdotool key Return" que aproveita o "focus" do botão OK, e aplica em "Enter" após 180 segundos dando tempo ao RPi de iniciar tudo e ficar a espera do tal pressionar da tecla que aqui acontece virtualmente ;)

Este tutorial foi feito por partes e não esta isento de algum erro ou algum pequeno problema que possa surgir, ou alguma coisa que possa faltar. Foi feito em cima do Raspbian que tenho usado nestes últimos meses já com muita coisa instalada e muita configuração alterada.

O arranque do JD no Raspbian demora menos de 1 minuto e a navegação pelos seus menus corre de forma razoavelmente fluída. Quando isto acontece o processador do RPi é ocupado quase na totalidade, mas se minimizarem o JD para a "system tray" os valores descem para menos de 5%, não passando dos 20 a 30% com o JD em descargas.... é muito bom!!!!

A data deste artigo já existe uma versão beta do JDownloader 2 que por sinal dizem ser 3 ou 4 vezes mais leve que o original. Não a usei porque este ainda não possui funções de Web Interface e de controlo remoto funcionais.

7 comentários:

  1. heeheheh mais um excelente artigo Nuno.
    Cada dia que passa o RP é sem dúvida um gadget que ganha cada vez mais moda.
    Excelente .

    Abraço Rodolfo

    ResponderEliminar
  2. Great job!!!!! Only one thing, at step 6, if you do 'sudo sh jd.sh', jd will be installed on root! You have to do 'sh jd.sh' to install on pi user in order to the desktop files will find the jar.

    ResponderEliminar
  3. Great job!!! But, at step 6, if you do 'sudo sh jd.sh' jd will be installed on root!!! You have to do only 'sh jd.sh' to install it on pi user in order to the desktop files will find the jar. Good alternative to pyLoad!!

    ResponderEliminar
    Respostas
    1. the script run on boot (rc.local) with the user pi...

      step 10

      su -c "sh /home/pi/sjd.sh" pi &

      Eliminar
    2. And the vncserver runs perfectly, but /home/pi/.jd/JDownloader.jar don't exists. It was installed on /root/pi/.jd/JDownloader.jar

      Eliminar
    3. Run the script with the user pi, you must start JD on raspbian boot.

      tried run this on console:

      su -c "sh /home/pi/sjd.sh" pi

      or copy the install dir, i think this work too:

      cp -R /root/pi/.jd/ /home/pi/

      Eliminar
  4. Agora já é mais facil instalar o JD no Raspberry com a versão da Oracle que esta nos repositórios oficiais do Raspbian.

    Adicionei a nota UPDATE (06-10-2013) com essa informação no artigo.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...

Popular no Blogue: