raspberry pi + xbmc + transmission + no-ip + nas + owncloud
24 Outubro 2014EDIT: Como o Raspberry Pi B+ é um pouco limitado, e como consegui comprar um B a um preço acessível, abandonei esta configuração. No entanto ainda é valida para algumas experiências que possam realizar. Aconselho a ver os meus posts mais recentes.
Comprei um Rasp Model B+ 512Mb ao Tiago Carrondo e desde aí tenho feito algumas incursões mais profundas no Debian através do meu “Raspi”.
A distribuição que escolhi, depois de ter experimentado o OpenELEC e não ter gostado muito por ser um pouco lento (sem mexer no overclock, como é óbvio) foi o RaspBMC, bem mais leve, fluido e com base de Debian que era aquilo que eu queria.
A instalação em Windows é relativamente fácil, é só sacar a aplicação que ela instala automaticamente para o uSD, permitindo configurar logo o IP fixo, caso seja necessário (como é o meu caso).
Depois de instalado, e de efectuar os devidos:
sudo apt-get update sudo apt-get upgrade sudo apt-ger dist-upgrade
Transmission
Passei à instalação do Transmission. Cedo descobri que os add-ons são apenas plugins que permitem interagir com aplicações instaladas, e portanto o Transmission não é instalado com o add-on e terá de ser instalado à parte.
Segui este tutorial, mas tive de fazer algumas correcções para que tudo funcionasse. Acrescento que devem sempre já ter ligado o vosso disco rígido externo, com um nome plausível e fácil de escrever (sem coisas esquisitas como maiúsculas e acentos e cedilhas). Então, instalar o transmission-daemon:
sudo apt-get install transmission-daemon
De seguida parar o serviço para o podermos configurar:
sudo /etc/init.d/transmission-daemon stop
Abrir o ficheiro de configuração:
sudo nano /etc/transmission-daemon/settings.json
E alterar os seguintes parâmetros:
"download-dir": "/media/HDD/Download", "incomplete-dir": "/media/HDD/Download/_incomplete", "incomplete-dir-enabled": true, "rpc-password": "password", "rpc-username": "username", "rpc-whitelist": "*.*.*.*",
download-dir é Directoria de descarregamentos, onde HDD é o nome do vosso disco. incomplete-dir é a directoria dos descarregamentos temporários, que pode ser activa ou inactiva pelo incomplete-dir-enabled, com true ou false. rpc-whitelist irá depois permitir o acesso a redes externas. rpc-password e rpc-username serão o user e pass respectivamente do acesso web ao Transmission (a pass será automaticamente encriptada). Reiniciar o serviço.
sudo /etc/init.d/transmission-daemon start
Depois terá de ser dado acesso de escrita ao transmission-daemon:
sudo chmod g+rw /media/HDD/Download sudo chgrp -R debian-transmission /media/HDD/Download
No entanto isto para mim não funcionou. Tive de fazer um “hack” e dar permissões de root ao transmission-daemon (se alguém souber uma solução melhor, agradeço o ajuda nos comentários). Abrir então a configuração do transmission-daemon:
sudo nano /etc/init.d/transmission-daemon
E atribuir “root” ao user, em vez de USER=debian-transmission:
USER=root
Agora é só instalar o add-on do Transmission no XBMC e atribuir o user e a pass definida anteriormente. E está feito.
No-ip
Para instalar o no-ip usei este how-to, mas também não foi à primeira, e tive de fazer um mix entre este e o anterior.
Para compilar o no-ip provavelmente terão de instalar em primeiro lugar o:
sudo apt-get install build-essential
Depois descarregar o no-ip:
sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
Descompactar:
sudo tar vzxf noip-duc-linux.tar.gz
Listar para ver que pasta foi criada e entrar dentro desta:
ls cd noip-2.*.*.*
Compilar e instalar:
sudo make sudo make install
Durante a instalação deverão ser pedidas as configurações do vosso no-ip. Para o iniciar:
sudo /usr/local/bin/noip2
No entanto insto não faz com que ele inicie automaticamente. Para isso é preciso criar um script no init.d para que ele corra cada vez que se reinicie. De notar que dei o nome do script igual ao programa.
cd /etc/init.d/ nano noip2
Este foi o script que funcionou, depois de ter utilizado o BEGIN INIT INFO daqui e o resto daqui (mais umas tentativas e erro):
#! /bin/sh # /etc/init.d/noip2 # Supplied by no-ip.com # Modified for Debian GNU/Linux by Eivind L. Rygge <eivind@rygge.org> # Updated by David Courtney to not use pidfile 130130 for Debian 6. # Updated again by David Courtney to "LSBize" the script for Debian 7. ### BEGIN INIT INFO # Provides: noip2 # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO # . /etc/rc.d/init.d/functions # uncomment/modify for your killproc DAEMON=/usr/local/bin/noip2 NAME=noip2 test -x $DAEMON || exit 0 case "$1" in start) echo -n "Starting dynamic address update: " start-stop-daemon --start --exec $DAEMON echo "noip2." ;; stop) echo -n "Shutting down dynamic address update:" start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON echo "noip2." ;; restart) echo -n "Restarting dynamic address update: " start-stop-daemon --stop --oknodo --retry 30 --exec $DAEMON start-stop-daemon --start --exec $DAEMON echo "noip2." ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
A seguir o script deverá ser tornado um executável/ com permissões de execução e também de seguida efectuar o registo no startup:
chmod 755 /etc/init.d/noip2 chown pi /usr/local/etc/no-ip2.conf update-rc.d noip2 defaults
Por fim testar com start e stop e verificar se corre como previsto e não retorna erros.
/etc/init.d/noip2 start /etc/init.d/noip2 stop
Caso seja necessário reconfigurar o no-ip, basta correr o seguinte comando:
/usr/local/bin/noip2 -C
NAS
A partir do momento que é instalado o XBMC, já dentro do RaspBMC, o vosso rasp passa a ser um NAS. No entanto tive alguns problemas com a velocidade do disco em NTFS. Para terem a ideia, a seguir apresento o resultado do comando:
sudo hdparm -tT /dev/sda
/dev/sda1:
Timing cached reads: 120 MB in 2.02 seconds = 59.38 MB/sec
Timing buffered disk reads: 52 MB in 3.05 seconds = 17.06 MB/sec
59.38 MB/sec é um pouquinho lento. Depois de alguma pesquisa encontrei este tópico (que convém ler) e este, e, não tendo erros no dmesg acabei por fazer o que se segue. Primeiro, para saber o meu UUID do disco externo:
sudo blkid /dev/sda1
Adicionar esta linha, em último (substituir o <UUID> pelo vosso):
UUID=<UUID> /media/HDD ntfs-3g noatime 0 0
ao fstab em:
sudo nano /etc/fstab
E estes forma os resultados:
/dev/sda1:
Timing cached reads: 128 MB in 2.02 seconds = 63.41 MB/sec
Timing buffered disk reads: 54 MB in 3.04 seconds = 17.75 MB/sec
/dev/sda1:
Timing cached reads: 256 MB in 2.00 seconds = 127.95 MB/sec
Timing buffered disk reads: 68 MB in 3.02 seconds = 22.55 MB/sec
Consideravelmente melhor, especialmente nos blocos de 256Mb.
Obviamente, se alguém tiver melhores sugestões/fixes, deixem nos comentários por favor.
Reconfigurar mounts
Depois de alguns problemas com a “potencia” que o rasp precisa (afinal é bem esquisitinho) especialmente quando temos um disco externo ligado, deixou de me montar este.
Depois de alguns reboots, decidiu não me montar nem por nada e lá tive de o fazer sozinho. Segui este tutorial para o fazer. Primeiro há que ver se ele está ligado:
sudo blkid
Isto vai listar os discos estão ligados. Cuidado que se o rasp não tiver power suficiente o disco pode simplesmente não arrancar e obviamente não ser detectado. O /dev/sda1 deverá ser o nosso disco. Depois confirmar se a pasta existe no /media/:
cd /media/ ls
Se não estiver lá, é porque provavelmente não está montado. Portanto há que criar a pasta:
sudo mkdir /media/<nome_do_disco>
E a seguir montar o disco:
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/<nome_do_disco>
E não esquecer de dar as permissões devidas ao mount:
sudo chmod 775 /media/<nome_do_disco>
Para garantir que o mount seja mantido depois de reiniciar, o melhor adicionar a seguinte linha ao fstab. Primeiro aceder ao fstab:
sudo nano /etc/fstab
Depois adicionar a seguinte linha:
UUID=<uuid_do_disco> /media/<nome_do_disco> ntfs-3g noatime 0 0
OwnCloud
Não instalem o OwnCloud através do apt-get no raspbian, a versão que está nos repositórios não é actualizada há um tempo (4.x) e para além disso mexe em muitas das configurações não abordadas aqui.
Para instalar a minha OwnCloud segui este tutorial, pois queria algo mais detalhado e que me permitisse também definir um disco externo como armazenamento.
Outra alteração que tive de fazer depois de ter posto tudo a funcionar, foi deixar de usar SQLi e mudar para MySQL. Pelo que percebi depois da análise de alguns fóruns deste erro que me deu:
Error PHP Session has been closed - no further changes to the session as allowed at /var/www/lib/private/session/memory.php#80 2014-11-13T12:42:21+00:00 Fatal remote An exception occurred while executing 'UPDATE "oc_filecache" SET "size"=? WHERE "fileid" = ?': SQLSTATE[HY000]: General error: 5 database is locked 2014-11-13T12:42:21+00:00
é que o SQLi é fraco quando toca a muitos ficheiros, e muitos deles grandes.
Também quando tentei instalar pela primeira vez o MySQL, tive alguns problemas na instalação, pois havia dependências quebradas. Segui a resolução daqui. Continuem a ler pois já actualizei para as novas configurações com MySQL.
Outro problema é que o XBMC já corre na porta 80 , e isto impede que o apache corra. Portanto, mais uma vez, tive de andar a dar uma voltas para por tudo a funcionar. Descobri isto pela lógica, e porque instalei primeiro apenas o apache:
sudo apt-get install apache2
Primeiro, na instalação do apache, obtive este erro: Starting web server: apache2apache2: Could not reliably determine the server’s fully qualified domain name, using ::1 for ServerName
Aceder ao:
sudo nano /etc/apache2/apache2.conf
E adicionar a linha seguinte mesmo debaixo do #ServerRoot:
#ServerRoot "/etc/apache2" # ServerName: the name of your server. ServerName localhost
A seguir obtive este erro: apache2(98)Address already in use: make_sock: could not bind to address [::]:80. Ora, isto porque obviamente a o nosso serviço xbmc.bin está a ocupar a porta do apache.
sudo netstat -ltnp | grep ':80'
Aqui há duas hipóteses, ou fecham o acesso web do XBMC (o que não é muito inteligente porque podem se esquecer e reactivar) ou mudar a porta do apache. Optei pela segunda:
sudo nano /etc/apache2/ports.conf sudo nano /etc/apache2/sites-enabled/000-default
Agora sim, arrancar o apache:
sudo service apache2 start sudo service apache2 status
Depois, em principio, é só instalar os seguintes pacotes (o smbclient já está no xbmc):
sudo apt-get install php5 php5-gd php-xml-parser php5-intl sudo apt-get installphp5-sqlitephp5-mysql curl libcurl3 php5-curl #sudo apt-get install smbclient #os seguintes é para o owncloud correr em mysql sudo apt-get install libmysqlclient-dev mysql-clientsudo apt-get install -f mysql-server
Agora é sacar o ultimo Owncloud (ver o link em http://owncloud.org/install/#, na opção Archive file>Unix):
sudo wget https://download.owncloud.org/community/owncloud-8.x.x.tar.bz2
Descomprimir:
tar -xjf owncloud-8.x.x.tar.bz2
Mover para a pasta /var/www:
sudo cp -r owncloud /var/www/
E dar as devidas permissões:
sudo chown -R www-data:www-data /var/www/
A seguir é preciso editar o seguinte ficheiro:
sudo nano /etc/apache2/sites-enabled/000-default
Para:
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
Permitindo assim o ownCloud fazer override ao tamanho máximo dos uploads. A seguir há que verificar se a pasta do ownCloud já tem o ficheiro .htaccess (ls -al), senão, há que o criar:
cd /var/www/owncloud ls -al sudo touch .htaccess sudo chown www-data:www-data .htaccess
Agora activar os dois seguintes módulos que irão ser necessários:
sudo a2enmod rewrite sudo a2enmod headers sudo service apache2 restart
Para melhorar a performance no rasp, pois ele coitado tem pouca memória, convém ajudar com o seguinte pacote:
sudo apt-get install php-apc
Pode-vos dar jeito olhar para a base de dados em MySQL, para isso instalem o phpMyAdmin.
sudo apt-get install phpmyadmin
Pelo meio dos vossos testes e configurações, não é má ideia de todo activar o log do PHP.
sudo nano /etc/php5/apache2/php.ini
E alterar as seguintes opções:
display_errors = off log_errors = on error_log = /var/log/php-errors.log
sudo touch /var/log/php-errors.log sudo chown www-data:www-data /var/log/php-errors.log
OwnCloud num disco externo (NTFS)
A seguir o objectivo é passar o ownCloud para o disco externo. Convém verificar se os mounts estão no sítio certo. Se o mount for automático, cuidado que o raspbmc pode mudar o os códigos (sda/sdb) dos discos ao reiniciar/ligar outro disco. Convem verificar sempre com o comando blkid. Primeiro que tudo há que parar o apache.
sudo service apache2 stop
Como no meu caso tenho uma pasta no apache e uma pasta também no disco externo para o owncloud, pretende-se mover a pasta para o local respectivo. Na primeira instalação, movi toda a pasta do owncloud como o tutorial recomendava, mas como o disco está em NTFS e posso precisar dele ainda neste formato, deu-me alguns problemas com as permissões e até que o servidor rebentou. No entanto inventei outra solução. Depois de instalar o owncloud e criar o meu utilizador, movi apenas a pasta do meu user. Desta maneira, corrigir para:
sudo mv /var/www/owncloud/data/<user> /media/<disco>/
A seguir, criar um symbolic link para a directoria do owncloud:
sudo ln -s /media/<nomedodisco>/<user>/ /var/www/owncloud/data
Depois há que atribuir as permissões correctas à pasta do owncloud:
sudo chown -R www-data:www-data /media/<nomedodisco>/<user>
Arrancar o apache, e está feito!
sudo service apache2 start
Testem de imediato, colocando uma pasta e vejam se sincroniza. O meu leva algum tempo, mas sincroniza lindamente. Agora preciso de uns tweeks para ver se ponho a interface web mais rápida.
Há outras opções que aconselho a ver, como estas:
- http://syncloud.org/raspberrypi.html
- http://sourceforge.net/projects/owncloud-raspberrypi/
- http://doc.owncloud.org/server/6.0/admin_manual/maintenance/update.html
- https://samhobbs.co.uk/2013/10/install-owncloud-on-your-raspberry-pi
Mesmo eu que uso linux acho que ? complexo. Qual será a diferença de despenho entre ntfs e ext4?
Paulo, não sou a melhor pessoa para te responder a isso. Mas uma coisa é óbvia, é sempre melhor um formato nativo, que um formato externo ao SO, por mais que o ntfs-3g melhore.
É possível também Gravar um microcnotrolador PIC online via porta USB de um Raspberry Pi:
https://www.youtube.com/watch?v=S30wVi9RWEs
Mais detalhes em: http://sanusb.blogspot.com.br/2015/02/gravando-pic-online-via-porta-usb-de-um.html
Adriano parabéns pelo tutorial sera que da pra vc fazer um ensinando usar com o osmc ?
Olá Juliano
OSMC é baseado no XBMC/Kodi, portanto as configuração não hão de fugir muito. Se me quiser oferecer um, faço o tutorial com todo o gosto.
Fala meu camarada, recentemente voce tentou utilizando o pi 2? eu tenho um servidor em um netbook e uso um raspberry para player, pensei em unir tudo em um rasp pi 2, sera que ele guenta o tranco da reproducao em fullhd e os servicos web rolando?
adriano boa tarde, hoje que voltei ao seu site e vi que tinha me respondido, o osmc “https://osmc.tv” e continuação do raspbmc, tenho um raspberry pi 2 e 2hd de 3tb e o bichinho roda os filmes full hd como muita facilidadade, gostaria e colocar o meu media center como o seu RASPBERRY PI + XBMC + TRANSMISSION + NO-IP + NAS + OWNCLOUD mas não tenho conhecimento para isso sou leigo no assunto sera que vc poderia fazer um tutorial mais passo a passo em texto no seu site ou em video no yotube, se der, gostaria que acrescentasse um passo a passo de como automatizar ele para baixar filmes series e musicas tipo esse aqui http://marcogomes.com/blog/2014/como-usar-o-raspberry-pi-para-ver-filmes-e-series-em-pt-br-na-sua-tv-com-download-automatico-de-lancamentos-em-full-hd/, outra duvida da pra colocar o retropie junto com o kodi em um unico sistema ? se não der sugiro fazer o tutorial com esse sistema aqui “http://pipplware.pplware.pt” aparentemente ele e o mais completo, mais uma vez meus agradecimentos, eu sei que isso vai dar muito trabalho e tomar muito tempo, mas por favor se sobrar um tempinho ai faz esse super tutorial para mim, valeu abraços
Tenho um Raspberry Pi 2 rodando redondinho a distribuição KODI/OpenElec. Gostaria de instalar o SickRage e o Transmission nele (Alias, já consegui instalar e fazer funcionar, porem não da maneira que eu gostaria). Minha duvida é a seguinte: Tenho um NAS da D-link com 4TB de espaço onde armazeno todos os meus arquivos e meus videos. Atualmente funciona perfeitamente meu media center, pois eu direciono dentro do XMBC a pasta da rede que onde esta os videos (//192.168.0.200/videos) e tudo funciona redondinho. Queria poder mapear essa unidade de rede dentro do linux para que transmission e o SickRage possa gravar nas pastas corretas do NAS e não na memoria interna do Raspberry. Alguém pode me dar uma luz?
Duvido que consigas fazer isso em OpenELEC, pois ele trás o Debian extremamente simplificado.
Para fazer isso só terias de montar o disco de rede:
sudo apt-get install smbfs
sudo mkdir /media/yoursharename
sudo mount -t cifs -o username=nicorellius //server/sharename /media/yoursharename
… [Trackback]
[…] Informations on that Topic: adrianoafonso.net/blog/2014/raspberry-pi-xbmc-transmission-no-ip-nas/ […]