Servidor de Mídia com 128 MB de RAM

A ideia

Aposentando CDs, USB, etc.

Essa ideia começou quando eu me deparei com um Laptop muito antigo, que a minha esposa tinha guardado no “sarcófago” chamado porão. Esse Laptop é tão antigo que, quando eu vi, fiquei surpreso. Ela me disse que podia jogar fora, porque o sistema era o Windows 2000 e quando ela tentou instalar o Windows XP, ele não aguentou o upgrade. 🙂

Assim, eu pensei: “Um GNU/Linux vai rodar nesse museu”. E não é que rodou? 🙂

Agora aqui vai a receita, caso você queira fazer o mesmo com o seu computador que já foi condenado pelos seus familiares. Caso você tenha um com mais recursos, é claro que será melhor, porém, o meu foco é deixar o sistema com o mínimo de carga na memória e ainda assim, lidar com arquivos de filmes em HD e músicas com 320 kb (qualidade de CD High Definition), fotos em formato digital sem “maquiagem”, direto da câmera para o seu servidor. 

Para isso, vamos usar os seguintes softwares:

  • CrunchBang Linux;
  • Apache;
  • MySQL;
  • MediaTomb;
  • Webmin;
  • ssh-server.

E o seguinte Hardware, na teoria…

  • Laptop Sony “VÉIO” VAIO PCG600 HEK 850 Mhz P3 – 128 MB RAM – 20 GB de HD
  • 2 HD externos (1 TB e 500 GB);
  • 1 Roteador sem fio.

Quantos dispositivos forem necessários para acessar o conteúdo, no meu caso, eu estarei usando e explicando como usar:

  • 1 PS3;
  • 1 Sangsung Galaxy S4;
  • 1 Acer Iconia A500 (Android tablet velhinho);
  • 1 Computadores na rede;
  • 1 TV. 🙂

Sendo que a TV deve ser das atuais, que conectam na rede ou alguma que você usa junto com um dispositivo que conecte à Internet, como o Xbox ou PS3. Caso a sua TV não tenha entrada para cabo RJ45 (de rede), VGA, RCA ou HDMI, você não vai poder assistir em sua TV.

Porém, não é o fim do mundo, você pode assistir em um dos outros dispositivos aqui mencionados, mas, por favor, aproveite que já fazem 2 anos que a profecia do calendário Maia deu errado e compre uma TV melhor. 😉

Embora eu saiba que é possível usar o iTunes, iPad e iPhone, eu não tenho esses dispositivos, porém, se você tem e quiser comentar qual aplicação e como fazer para acessar o conteúdo, fique à vontade para postar o seu comentário.

O nosso objetivo final, seria mais ou menos como esse:

Na prática…

Claro, se você quiser manter esse monte de fio de maneira mais organizada em sua sala, a esposa agradece. 🙂

O plano

Primeiro, vamos começar com as instalações.

Lembrando que se trata de um computador com recursos limitados, eu vou instalar as aplicações e fazer alterações em todas elas, para que rodem de forma satisfatória nesse ambiente.

Porém, se você tem um computador com mais recursos, não precisa seguir esse artigo à risca, você pode instalar as aplicações e não aplicar as alterações que eu vou fazer, porque em matéria de instalação e bem direto apt-get install e já era!!!

Se você está no mesmo barco que eu e tem um computador limitado, por favor, procure fugir das suas distros preferidas e aventure-se em um mundo, talvez, desconhecido.

Eu sei que existe uma multidão de usuários do Ubuntu lendo esse artigo e eu digo sem ofensas, o Ubuntu é muito carregado para esse ambiente de 128 MB, você pode até dizer que vai rodar sem o X11, mas acredite, mesmo sem o X11, se você instalar um Ubuntu aqui, você não vai ter o desempenho total que você poderia ter com outra distro. Por favor, não atire a primeira pedra sem antes testar o que eu estou falando.

Antes de decidir qual GNU/Linux usar nesse computador, eu fiz o teste com três distros; eu tentei instalar mais que três, porém, sempre esbarrava em alguma coisa que não funcionava, monitor, mouse, rede sem fio, etc. As únicas três distros que rodaram sem problemas, foram Debian Squeeze, CrunchBang e ArchBang.

Minha opinião final é a seguinte:

  • Debian :: apesar de rodar nesse ambiente, não é o mais apropriado se você não o conhece, pois ele vai precisar de algumas configurações extras.
  • CrunchBang :: excelente para esse ambiente, é uma alternativa para quem vem da família do Ubuntu, apesar do Crunch não ser baseado no Ubuntu, ele é baseado no pai do Ubuntu, o Debian. Porém, ele é mais pré-configurado que o Debian.
  • ArchBang :: se você não tem medo de experimentar algo novo e quer o máximo de proveito da sua máquina, Arch é o sistema para você.

Caso contrário, você prefere não se aventurar, quer uma coisa mais segura no sentido que você sabe o que está fazendo e quer evitar recorrer ao Google toda vez que esbarrar em problemas, mantenha-se com o Crunch.

Eu vou explicar à maneira do CrunchBang, bem que eu gostaria de ensinar à maneira Arch, porém, como o Arch é um mundo novo para mim e eu estou ensinando, é melhor evitar falar besteira. Eu vou explicar a maneira que eu já sei.

Caso alguém queira comentar a respeito do Arch, os problemas que eu enfrentei foram somente dois: um, eu não consegui converter o script de inicialização para o systemd para fazer da aplicação um serviço do sistema e, o segundo problema, é que ao fazer um pacman -Syyu, eu quebrei o meu sistema. 🙁

Mas uma coisa é certa, tudo o que eu estou fazendo aqui, é possível ser feito em todas as distros, caso você tenha um Gentoo, Arch, Sabayon, etc, você sabe como converter os scripts de inicialização de serviços para systemd, vá em frente. Se alguma aplicação aqui indicada, não tem um binário no seu repositório, veja o site do criador do software, lá você vai ter acesso ao código-fonte e pode compilar.

Para instalar o CrunchBang, siga as instruções pelo nosso amigo VOLeiro “Removido”. Sério, é esse nome mesmo, e de acordo com o perfil dele, ele tem 113 anos de experiência. 🙂

MediaTomb – é o nosso programa principal que vai fazer o Stream do conteúdo na rede, portanto, todo o poder da RAM vai ser exclusivo dele, não vamos limitar ele, correto?

ERRADO, ele é sim a peça mais importante, porém, vamos limitá-lo. Nada de transcoding ou escaneamento por inodes, no caso de você ter mais de 1000 mídias no seu HD, aposente o SQLite e use o MySQL. Eu sei que tem gente que vai dizer que isso não faz sentido, porém, isso faz sim.

MySQL – o banco de dados MySQL usa mais recursos que o SQLite em base de dados com poucas entradas, para tal, o SQLite é melhor, porém, se você tem uma base de dados que passam de 1000 entradas, os valore se invertem e o SQLite começa a empacar. Assim sendo, vamos usar o MySQL com recursos reduzidos.

Eu sei que o MySQL é mais cheio de bugs que o SQLite, porém, os dados armazenados serão links para mídia, ou seja, se um ficar errado, é só recarregar a database e pronto, links serão corrigidos.

Apache – o mais experiente dos servidores. Nessa escolha, você pode até dizer que eu falhei, pois existem forks do Apache que são melhores. Alguns podem até citar nomes, como Cherokee, lighttpd, thttpd, etc. Porém, aqui, eu preferi uma tática mais segura.

Já que eu não conheço outro servidor HTTP, eu preferi me manter seguro no que eu já conheço e não me aventurar, assim sendo, eu vou reduzir os recursos do Apache também.

Como você pode ver pela explicação que eu dou, esse artigo e bem modulado, quer dizer, tem coisas que eu vou falar aqui que podem ser ignoradas e outras que podem ser aprimoradas, se você encontrar alguma configuração que faz o trabalho melhor que o que eu apresento aqui, por favor, poste seu comentário e enriqueça o artigo.

Instalando o sistema

Não vou cobrir aqui a instalação do CrunchBang, porque ela já é muito bem documentada e fácil, assim sendo, se você já sabe, instale e siga as instruções aqui, logo após a instalação.

Caso você não saiba instalar uma distro em seu computador, observe aqui mesmo no site, lá em cima na barra onde tem o logo do VOL, ao lado direito tem uma caixinha do Google, aquela caixinha vai ser a sua melhor amiga. 🙂

Digite ali que você quer “instalar crunchbang” e clique em “Buscar”… tchan-tchan-tchan-tchaaaaan!!! Ou você pode ver na página anterior, o link para o artigo.

Instalando o software no CrunchBang é muito fácil, tao fácil que, na primeira inicialização do sistema, já tem um script que abre caminhos para você instalar quase todos os programas que vamos usar aqui.

Caso você perdeu essa chance, você pode rodar o script quantas vezes for necessário:

$ cb-welcome

Esse simples comando vai dar conta do recado. Lembre-se, não fique ansioso e queira instalar tudo, esse sistema é tem recursos limitados. Não instale coisas que não serão necessárias, como LibreOffice, Java, etc.

Assim sendo, quando o script for iniciado, siga as seguintes instruções:

* Atenção: dependendo da versão do script, a ordem da instalação pode ser diferente, porém, se você aprender quais pacotes eu indico para instalar, se aparecer a opção para tal, aceite. Caso contrário, rejeite:

  • Aperte Enter para continuar ao aparecer a introdução do script;
  • Enter para fazer o update;
  • Enter para o upgrade da distro;
  • S para Skip (Pular) a instalação do CUPs e “amigos”;
  • S para LibreOffice;
  • Enter para SSH;
  • S para Xfce Desktop;
  • Enter para pacotes de desenvolvimento;
  • S para Git e “amigos”;
  • Enter para SSH-Server;
  • Enter para LAMP;
  • Enter uma nova senha para o root do MySQL duas vezes (não é a mesma senha do root do sistema, essa senha é para a base de dados);
  • Se aparecer a configuração para o Apache, você quer ele escutando na porta 80 e ligado ao IP 127.0.0.1, que é o padrão;
  • Enter para pacotes de ambiente.

Depois de feito isso, vamos às demais dependências para instalar o MediaTomb:

$ sudo apt-get install wget libextractor ffmpeg ffmpegthumbnailer libexif mysql
$ sudo /etc/init.d/mysqld start

Agora, digite:

$ sudo apt-get install mediatomb

No final da instalação, virá uma mensagem dizendo para você ajustar no config a tag <ui enabled=no>, não siga esse exemplo ainda, pois vamos usar a interface da WEB para configurar nosso MediaTomb.

Inicie o MediaTomb pela primeira vez, digitando no terminal:

$ mediatomb

Uma vez iniciado, aperte Ctrl+c para terminar. Essa iniciação, foi para criar os arquivos na pasta do seu usuário, assim, você pode configurar ele depois. Agora, vamos iniciar como daemon, que permite ao programa ser usado por todos os usuários do sistema:

$ sudo /etc/init.d/mediatomb start

Pronto, agora você vai checar o /var/log/mediatomb.log, e ali, você vai ver a mesma mensagem que você viu da primeira vez que iniciou o MediaTomb. Só que agora, você já tem um config criado para ele, permitindo que façamos algumas alterações para o usuário comum, ou seja, você.

Com o seu editor preferido, abra ~/.mediatomb/config.xml, ou para todos os usuários do sistema, em ${diretório de instalação}/mediatomb/config.xml. Em algumas distros, esse diretório de instalação está em /var/lib, em outros está em /usr/share, porém, o padrão mais usado é /etc/mediatomb/config.xml.

Para saber o seu, digite:

$ whereis mediatomb

Webmin

Para não forçarmos o nosso computador com o X11, vamos configurar ele usando outro computador conectado remotamente em uma interface WEB.

Esse é o Webmin, com ele, você configura o seu GNU/Linux sem precisar manualmente editar arquivos de texto, ou painéis de controle que carregam a memória do nosso velho amigo.

$ wget http://prdownloads.sourceforge.net/webadmin/webmin_X.XXX_all.deb
$ sudo dpkg -i webmin_X.XXX_all.deb

Onde X.XXX, e a versão do software. 1.680 é a versão atualizada no momento em que escrevo esse tutorial.

Você pode encontrar a versão atual, em:

E para outras distros, no link: Webmin « download

Configurações

Configurando Apache

O Apache é o servidor de páginas WEB que usaremos. Ele em si é leve, porém, se não for configurado bem em uma máquina com recursos limitados, ele pode dar dor de cabeça.

As “dores” mais comuns, são:

  • WSD (White Screen of Death) ou como é mais conhecido: “Falta de memória para o PHP”.
  • MySQL falhando ao iniciar ou tendo o processo morto pelo sistema.
  • MySQL não consegue criar uma nova instância e retorna com o erro de Pthread 11. Por não conseguir criar uma nova instância o MySQL, decide abortar o pedido de acesso à base de dados.

Para evitar esse tipo de problema, vamos configurar o Apache mudando o arquivo /etc/Apache/conf/httpd.conf:

MaxSpareServers 5
MinSpareServers 1
StartServers 3

Caso você queira fazer mais ajustes, cheque esse documento:

Verdade, eu estou te indicando a leitura do manual do Apache. 🙂

Infelizmente, não há uma tradução em Português desse manual ainda (até aonde eu sei, não há, pode ser que alguém, em algum canto da Internet, já traduziu.)

Configurando o MySQL

MySQL é uma base de dados que cada vez cresce em números. Sites com tráfico pesado, como Facebook, YouTube, Google, Wikipedia, etc, usam a base de dados MySQL porque, em si, ela não é pesada. Porém, quando você usa scripts malfeitos ou websites “prontos”, cheios de scripts e templates, como Joomla! e WordPress, o MySQL pode facilmente ter 10 chamadas à base de dados em uma só página que é carregada.

Vamos traduzir isso em MB: um RSS fazendo mais de 10 chamadas à base de dados vai produzir um documento de 35 KB, mas, para gerar esse simples documento, ele pode consumir 25 MB de RAM só em processamento de dados.

O que não é tão ruim, quando você tem um computador com bastante RAM. Agora, para o nosso experimento com 128 MB um RSS carregando 25% da memória, como fica o armazenamento para os outros programas? Então, vamos reduzir isso.

Esses parâmetros abaixo, são do meu /etc/mysql/my.cnf, se você quiser usar um exemplo já feito, pode encontrar na pasta /usr/share/doc/my-server-5.0/examples, no caso dos “filhos” do Debian. 🙂

Caso em sua distro não exista esses exemplos, copie o meu my.cnf:

[mysqld]
port      = 3306
socket     = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
skip-bdb
skip-innodb

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

Foi adicionado o seguinte skip-bdb e skip-innodb, assim, você não carrega o suporte para BSD DB ou InnoDB. Já que ambos são águas passadas, obsoletos, velhos, desnecessários para o nosso projeto.

key_buffer tem somente 16 K, o que já é mais que suficiente. key_buffer é um dos parâmetros mais importantes para as tabelas MyISAM; seria bom deixar com 1 MB, se você quer fazer um blog ou algo parecido, o que não é o nosso caso, então, deixe com 16 K.

A mesma coisa para o table_cache – 4 e muito pequeno para outro tipo de aplicação. Uma página do WordPress vai chamar 10, facilmente; e muito mais no caso do Drupal ou MediaWiki. Nosso projeto não vai carregar nada parecido com esse tipo de website.

Depois destes simples ajustes, o seu MySQL deve estar rodando com uma velocidade boa e carregando a memória com menos dados. Se você fazer o teste com o RSS, puxando a informação do MySQL, em vez de carregar com 25 MB, agora você vai ver que ele vai carregar com 5~6MB. Deixando assim, mais espaço na RAM para as outras aplicações.

Configurando o MediaTomb

Vamos iniciar com o MySQL. Precisamos criar uma base de dados para o MediaTomb.

Assim, vamos digitar no terminal:

# mysql -u <usuario> -p
mysql> mysql -u root -p 

mysql> CREATE DATABASE nome-da-base-de-dados;
 mysql> CREATE DATABASE mediatomb; 

mysql> GRANT ALL ON <database name>.* TO ‘<user name>’@'<hostname>’ IDENTIFIED BY ‘<password>’;
 mysql> GRANT ALL ON mediatomb.* TO ‘mediatomb’@’%’ IDENTIFIED BY ‘suasenha’; 

mysql> flush privileges;
 mysql> quit; 

# mysql [-u <username>] [-p] <database name> < <install prefix>/share/mediatomb/mysql.sql
 mysql> mysql -u mediatomb -p mediatomb < /usr/share/mediatomb/mysql.sql
[digite a senha do MediaTomb] 

mysql> mysql -u mediatomb -p mediatomb
 [senha do MediaTomb, no meu exemplo “suasenha”] 

mysql> show tables;

Se até aqui você não recebeu nenhuma mensagem de erro e o resultado desses comandos foram:

 mt_autoscan
mt_cds_active_item
mt_cds_object
mt_internal_setting 

Parabéns, você criou a base de dados para o MediaTomb no MySQL. Agora, vamos ativá-la no próprio MediaTomb.

Para sair do MySQL, digite:

mysql> quit;

Para ajustar a configuração, abra o seu editor ${diretório padrão da distro}/mediatomb/config.xml:

$ sudo nano /etc/mediatomb/config.xml

* Atenção: não copie e cole o código abaixo, leia o seu conf e ajuste como necessário. Vamos modificar onde existe e inserir onde não existe, os seguintes valores:

<protocolInfo extend=”yes”/>
<ui enabled=”yes” poll-interval=”2″ poll-when-idle=”no” show-tooltips=”yes”/>
<accounts enabled=”yes” session-timeout=”30″/>
<account user=”name” password=”password”/>
<storage caching=”yes”>
<sqlite enabled=”no”>
<mysql enabled=”yes”/>
<username>mediatomb</username>
<password>suasenha</password>
<database>mediatomb</database>
<ffmpegthumbnailer enabled=”no”>
<map from=”avi” to=”video/divx”/>
<map from=”ogg” to=”audio/ogg”/>
<lastfm enabled=”no”>
<virtual-layout type=”disabled”>
<extension-mimetype ignore-unknown=”yes” case-sensitive=”no”>
<transcoding enabled=”no”>
<treat mimetype=”audio/ogg” as=”ogg”/>

Se tem algum outro parâmetro não mencionado aqui, deixe como está.

Pronto. Feita essas alterações, reinicie o MediaTomb:

$ sudo /etc/init.d/mediatomb restart

Tendo reiniciado com sucesso, abra o seu navegador em:

http://localhost:49152
Ou:
http://numero_do_ip:49152

Entre com o nome do usuário e a senha definidos no arquivo /etc/mediatomb/config.xml. Você deve, então, estar na tela inicial, vendo duas opções no lado esquerdo da página Database e File System na parte da database.

Não existe nada ainda, porque estaremos entrando os dados das pastas que o MediaTomb vai acessar. Clique em File System para acessar todo o sistema de arquivos do seu computador, navegue até a pasta que você quer compartilhar. No meu caso, eu tenho 2 HDs, um com vídeos e outro com fotos e músicas.

Eu vou então navegar até as pastas de vídeos que eu quero compartilhar e, ao selecionar a pasta no canto direito, eu vou ter dois sinais de soma (+), um normal e outro com duas setas, dando a ideia de um ciclo, clique nesse sinal com o ciclo.

Isso vai determinar que a pasta selecionada em um determinado tempo, será escaneada pelo MediaTomb em procura de novos arquivos. Se algum arquivo teve o nome modificado, o MediaTomb, automaticamente, vai mudar o nome na database para que você continue tendo acesso ao arquivo.

Em Scan Mode, selecione Timed, Inodify toma muito tempo e recursos do sistema. E Timed, vai determinar que, ao passar o intervalo determinado o escaneamento, será reiniciado. Para garantir que todas as pastas abaixo da pasta seleciona sejam escaneadas, selecione Scan Level como Full.

Assim, assumindo a seguinte estrutura, será automaticamente escaneada:

/Series/IT Crowd/Season 1/Episodio 1.mp4
/Series/IT Crowd/Season 2/Episodio 1.mp4

Nesse caso, selecionando Series, todas as pastas depois disso não precisam ser configuradas. Agora, se entre as séries você só quer compartilhar o Season 2 do IT Crowd, ao invés de selecionar Series, você deve navegar até Season 2 e aplicar ali a configuração.

Deixe o Recursive e Include hidden a seu critério. Eu aconselharia deixar o Recursive ligado e Hidden desligado.

Depois disso confira que as pastas foram escaneadas e agora estão disponíveis na opção Database no canto superior esquerdo.

HD como dispositivo permanente

Depois de configurado, devemos colocar os HDs como dispositivos permanentes no computador, assims sempre que o MySQL procurar pelos arquivoss ele vai encontrars já que o HD não é móvel, porém, instalado dentro do computador.

Caso você não tem a coragem de abrir a capa do seu HD externo e ligar ele como interno, ou se você está no meu caso, você tem um Laptop e não há espaço físico para HDs internos, gracas a Deus você usa o GNU/Linux, então, você pode fazer o computador reconhecer o seu HD e montar ele automaticamente na pasta correta.

Como fazer isso?
Primeiro, vamos descobrir o número único de identificação do seu HD. Ao conectar o USB do HD no computador, será designado um dispositivo para ele.

Para descobrir qual é, digite no terminal, logo depois de conectar o USB:

# dmesg | grep sd | grep GB

Você verá algo identificando seu HD como sdX, onde X é uma letra qualquer selecionada pelo sistema. Para o nosso exemplo, sdb.

* CUIDADO: você pode cometer algum erro nessa parte e identificar o HD errado, portanto, preste atenção qual é o dispositivo correto para os seus HDs. Veja o tamanho de cada um listado, para saber com certeza qual é qual.

No terminal, digite:

# blkid /dev/sdb1

Esse comado deve retornar algo como:

 /dev/sdb1: UUID=”7fa9c421-0054-4555-b0ca-b470a97a3d84″ TYPE=”ext4″ 

Algumas distros só autorizam os administradores do sistema usarem blkid, caso sua distro seja uma delas, digite o sudo antes do comando.

A parte importante aqui, é o UUID do seu HD, vamos usar ele no /etc/fstab. Na última linha do arquivo /etc/fstab, digite:

UUID=”7fa9c421-0054-4555-b0ca-b470a97a3d84″ /media/HD ext4 defaults,nobootwait,noatime 0 0

O formato é:

[UUID] [pasta para montar] [sistema de aquivo] [opções] [backup] [checar o sistema durante inicialização]

Considere que o meu HD já está formatado em ext4, assim sendo, eu coloquei o sistema de arquivos como ext4. Caso você não queira formatar o seu HD, por padrão, ele deve ter o sistema de arquivos como NTFS. Assim, a entrada no fstab deveria ser assim:

UUID=”7fa9c421-0054-4555-b0ca-b470a97a3d84″ /media/HD ntfs defaults,uid=1000,gid=1000,dmask=022,nobootwait 0 0

Permissões para NTFS e VFAT, devem ser configuradas por opções de dmaskfmask and umask.

Onde:

  • dmask controla as permissões dos diretórios.
  • fmask controla as permissões dos arquivos.
  • umask controla os dois.

Um truque para saber o valor numérico das permissões para NTFS e VFAT: retire do valor 777, o valor da permissão que você quer no GNU/Linux.

Por exemplo, rwx para o dono dos arquivos e rw para os outros, em GNU/Linux seria 755, então, para o Windows, o equivalente seria:

777 – 755 = 022

Para fazer você ser o dono do dispositivo, use o UID e GID para usuários e grupos. Você pode achar o seu UID com o comando echo $UID. Para encontrar o GID, use cat /etc/group. Esses valores são geralmente 1000, para o seu usuário padrão.

Um ajuste muito comum para NTFS, é: uid=1000,gid=1000,dmask=027,fmask=137. Esse ajuste te faz o dono do drive, e dão as permissões drwxr-x—.

Agora você entende porque eu prefiro deixar o meu HD como ext4? Claro que, deixando ele como ext4, o meu HD só será reconhecido por sistemas como GNU/Linux. Se eu colocar ele em um Windows, o mesmo vai pedir de cara para você formatar o drive (nunca faça isso, ou você perde tudo em seu HD). Já no Mac, ele nem reconhece, salvo se o seu Mac tem drivers para ext* instalados.

Para evitar problemas como esse, quando eu coloco algum arquivo vindo de origem Windows ou Mac, eu acesso o meu HD pelo SSH. Já que SSH e SFTP, são tecnologias presentes em todos os três sistemas.

Para saber mais sobre o SSH, veja o artigo que eu escrevi sobre ele:

Você pode, então, usar programas como o FileZilla para transferir os seus arquivos; outra opção muito viável, se você tem outros computadores com o Windows ou Mac, é fazer uma pasta compartilhada usando o Samba.

Não vou entrar em detalhes nesse assunto, porque aí já seria um outro artigo dentro desse artigo. Mas a ideia, é a seguinte:

Monte os seus HDs em pastas criadas pelo root em /media/NN onde NN é o nome qualquer das pastas:

$ sudo mkdir -p /media/HD1

Mude a permissão para rwx (ler, escrever e executar) nessas pastas para todos os usuários e grupos:

$ sudo chmod 777 /media/HD1

Aponte o SSH, FTP ou Samba, para essas pastas:

SSH e FTP: Edite o arquivo /etc/ssh/sshd_config:

$ sudo nano /etc/ssh/sshd_config

Certifique que esta linha esteja presente:

Subsystem sftp /usr/lib/openssh/sftp-server

E adicione estas linhas para o seu usuário:

Match User mauricio
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server

Se você tem vários usuários, não precisa fazer um por um, apenas adicione o grupo ao qual eles todos pertencem.

Match Group users
ChrootDirectory /media/HD1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server

Samba: edite o /etc/samba/smb.conf:

$ sudo nano /etc/samba/smb.conf

No final do arquivo, onde você deve criar o compartilhamento, escreva:

[HD1]
comment = Primeiro HD
path = /media/HD1
force user = nobody
force group = nogroup
read only = No
create mask = 0664
directory mask = 0775
guest ok = Yes

Essas opções são para tornar o seu HD público na rede, assim, todos têm acesso a ele.

Caso você queira modificar alguns detalhes, como guest ok = nocreate mask, etc, fique à vontade. Como eu disse, não vou me aprofundar nestes detalhes, uma procura aqui no VOL vai dar as respostas que você quer. Ou mande uma mensagem neste artigo e eu vou tentar te ajudar no que estiver a meu alcance.

Agora, o passo final. 🙂

Acesso aos arquivos

Para acessar o conteúdo do seu HD, você deve usar aplicações de UPNP ou DLNA. Existem vários programas disponíveis para os mais diversos aparelhos, como eu mencionei no início, estarei explicando como acessar com o PS3, Samgsung Galaxy S4, computador, etc.

Caso a sua TV tenha acesso a conteúdo DLNA, o MediaTomb deve aparecer entre os servidores na rede, selecione e navegue pelo seu conteúdo.

Caso você queira usar o celular, ou o tablet, existem vários aplicativos, alguns gratuitos, porém limitados, outros pagos, e ainda outros gratuitos e sem limites.

Um dos melhores aplicativos para isso, em minha opinião, é o Twonky. Você pode baixar para o Android aqui, ou para o iPhone aqui.

Embora o iPhone só vai tocar o conteúdo que você tem em MP4, MOV ou M4a. Para tocar MKV, OGG, AVI, etc, você deve comprar os codecs (I hate Apple !!!!). Por essa e outras razões, eu não tenho iPhone, iPad, etc.

No PS3, você já vai ver no menu na seleção de fotos, música e vídeos, o MediaTomb na lista, acesse o conteúdo ali.

Através do computador, você pode acessar os vídeos de diversas formas, duas que eu recomendo, seriam VLC e XBMC.

O VLC demora um pouco para achar o seu computador na rede, mas, uma vez encontrado, ele disponibiliza todos os vídeos organizados por pastas.

Para fazer isso, clique em: Visualizar → Lista → Universal Plug’n’Play
Depois de encontrar o seu computador, navegue nas pastas e selecione o filme, música, etc.

As músicas podem ser abertas pelo Amarok, usando um plugin de UPNP ou, se você preferir, use o Samba e aponte a coleção do Amarok, para aquela pasta onde você montou o compartilhamento do Samba.

Já o XBMC, faz um estilo visual muito melhor e também tem muito mais opções, com ele, você pode usar o método UPNP…
..selecionando: Vídeos > Add Video Location

No menu ao lado, selecione UPNP e espere o XBMC encontrar seu servidor (isso pode demorar um pouco).

Ou, você pode adicionar o compartilhamento do Samba que você criou.

Quando você terminar esse processo, os seus vídeos serão todos catalogados, e o XBMC vai buscar online as informações de cada vídeo que você tem em seu servidor. Para isso, selecione qual o tipo de vídeo que você tem no HD (filmes, shows, etc).

Se por acaso, algum filme sair errado, como o da imagem abaixo, selecione o arquivo que está errado e aperte a tecla i, depois selecione Recarregar/Refrescar (Refresh), e confirme que você quer buscar na Internet as informações.

Caso haja mais de um filme com o mesmo título, ele mostra a seleção com o título e o ano de lançamento, selecione o correto e pronto.

Linux: Servidor de Mídia com 128 MB de RAM   

Dá para você salvar as informações dos filmes em seu servidor, assim, o XBMC não precisa ir online, toda vez para mostrar a informação do filme. Ao invés disso, ele pega do seu servidor, só que isso é assunto para outro artigo.

Fazendo a manutenção

Agora que você tem a sua mídia na palma da mão e não precisa ficar carregando aqueles montes de CDs e USBs de um lado para o outro, você está dentro de uma nova era, onde sua mídia está virtualmente em todos os seus dispositivos e não ocupam o espaço no seu celular, Tablet e Laptop.

Que legal! Agora temos que ter certeza que esse sistema continue ativo, acidentes podem acontecer. Especialmente se você tem criança em casa (que não é o meu caso), ou o seu cachorro adora morder os seus cabos, ou se a faxineira puxa todos os plugs das tomadas antes de limpar a área onde o seu servidor está. 🙂

O que fazer se algo der errado e você tem que intervir, seja com um comando de reinicialização até um upgrade no sistema?

Lembra quando instalamos o Webmin e o SSH?
Agora você já sabe porque, né?

Eu não vou me estender neste assunto também, porém, eu tenho que fazer referência desses dois, porque eles são verdadeiros salvadores em momentos críticos.

Já que o nosso servidor está rodando em recursos limitadíssimos, não devemos usar o X11, porque ele vai carregar demais a memória, então, entre através de outro computador na rede e digite no browser a seguinte URL:

  • https://numero-do-ip:10000

Se o meu servidor está em 192.168.30.26, eu vou entrar em: https://192.168.30.26:10000

Vou me logar com o usuário que tem acesso ao sudo ou o root e ali, eu posso executar todas as minhas tarefas administrativas do sistema.

Veja o sumário do meu servidor, na tela principal do Webmin:

Fazendo upgrade do próprio Webmin, sem sair dele:

Já, se você gosta do terminal simples e puro, use o SSH para efetuar as alterações, usando o terminal:

$ ssh usuario@host

Exemplo:

$ ssh [email protected]

Depois de entrar já como usuário com acesso ao sudo, eu posso fazer alterações administrativas ou logar como root.

Espero que tenham gostado do artigo.

Agora, é só estourar algumas pipocas, colocar o som em todas alturas e apreciar as suas fotos na telona. 🙂

Rolar para cima