Hoje em dia um dos assuntos do momento é a computação em nuvem. Com seus arquivos na nuvem você pode ter acesso a eles de qualquer lugar e de qualquer dispositivo, seja ele PC, smartphone ou tablet. Estou testando este serviço e montei um servidor com uma nuvem local para testar a viabilidade, se essa solução for viável e funcional vou expandir para acessar externamente.
Ai neste momento alguém deve ter se perguntado, com Skydrive, Google Drive, Dropbox e outros, porque criar meu próprio servidor? Basicamente por dois fatores, o primeiro deles, privacidade, e o segundo, espaço.
Antes de mais nada, sei que isso não vai resolver o problema de privacidade como um todo, como publicamos a algum tempo o podcast do Cocatech falando sobre o CALEA, se o governo americano quiser meus dados ele vai conseguir, mas pelo menos tendo meu próprio servidor não deixo dados importantes na mão de outras empresas, nunca se sabe o que pode acontecer.
Mas privacidade nem era o foco principal, o que mais importa pra mim é espaço de armazenamento e esta informação estar disponível em qualquer lugar a qualquer hora para consultas. A quantidade de arquivos que eu tenho é muito superior a quanto os serviços de armazenamento em nuvem oferecem. Para minha necessidade, acho que apenas o Dropbox, o Mega e a Amazon me cederia essa quantidade de espaço, mas isso custaria muito mais caro que um servidor próprio.
Com isso surge uma segunda pergunta: Por que diabos eu não uso pendrives ou HD externos?
Simples, eu tenho tudo salvo em um HD externo, mas nem sempre estou com ele ou caso eu tenha que passar algum arquivo para alguém que não esteja no mesmo lugar que eu, sem falar que fazendo isso eu tenho um backup do HD ou um backup do servidor, dependendo do ponto de vista :)
Mas nem tudo é uma maravilha, temos alguns problemas em manter um servidor particular e é o que eu vou testar agora que está tudo funcionando.
Restrições: Pelo que eu ja pude notar, mesmo eu tendo acesso ao sistema e podendo customizar como eu quero o software de cloud me limita bastante. Seria necessário um conhecimento considerável de programação para alterar no código algumas coisas para melhor atender minhas necessidades, coisa que não tenho.
Downtime: Provavelmente eu não vou conseguir manter o servidor rodando 24/7, é necessário analisar a disponibilidade e ver se é possível conviver com o downtime.
Segurança: Outro ponto chave que pode inviabilizar o processo de ter um servidor pessoal. Quando você conecta seu servidor para acesso externo, você tem grandes chances de ser atacado, e neste caso inicial, sem dúvida um DoS qualquer derrubaria o servidor ou cortaria o acesso. Existem proteções contra DoS/DDoS, mas ainda não tenho nada no momento. Também estou rodando uma aplicação web no apache, o que pode também estar vulnerável, nunca se sabe.
Deixando os problemas de lado, vamos a instalação e com o tempo verificamos isto.
O sistema de cloud que eu encontrei e achei interessante é o ownCloud, um projeto open source justamente para criar seu próprio servidor em nuvem. Muito simples de usar e muito parecido com o Dropbox.
Instação
Primeiro de tudo você precisa ter uma distribuição Linux já instalada. No meu caso eu utilizei o Debian que já uso a algum tempo, mas qualquer distro serve.
O ownCloud é escrito em PHP5, então você vai precisar ter instalado. Também é necessário um banco de dados, cliente SMB, curl e um web server.
Se você não tem tudo isso instalado, será necessário alguns comandos para instalar e configurar tudo. Se você usa uma distro baseada no Debian pode usar o comando abaixo:
$ sudo apt-get install apache2 php5 php5-gd php-xml-parser php5-intl php5-sqlite php5-mysql smbclient curl libcurl3 php5-curl mysql-server
Durante a instalação será pedido um usuário e senha do banco de dados.
Após tudo instalado vamos baixar e instalar o ownCloud. Você pode tanto baixar pelo navegador ou pelo terminal do site oficial. Se optar pelo terminal pode usar o comando abaixo:
$ wget http://download.owncloud.org/community/owncloud-5.0.12.tar.bz2
Descompacte e envie para a pasta do web server (padrão: /var/www/):
$ tar xjf owncloud-5.0.12.tar.bz2
$ cp -r -v owncloud/ /var/www/
Com isso pronto, acesse a pasta do owncloud e crie dentro dela uma pasta chamada data que não vem por padrão e é onde será salvo os dados dos usuários.
$ cd /var/www/owncloud
$ sudo mkdir data
Agora para finalizar a instalação só precisamos mudar o dono dos diretórios para o usuário do apache:
$ sudo chown -R www-data:www-data data
$ sudo chown -R www-data:www-data config
$ sudo chown -R www-data:www-data apps
E por ultimo, só temos que mudar algumas configurações no apache para que tudo funcione. Primeiro, será necessário mudar o parâmentro "AllowOverride" no arquivo 000-default. Você precisa mudar de No para All, como no exemplo abaixo:
$ vim /etc/apache2/sites-enabled/000-default
<Directory /var/www/>
Options IndexesFollowSymLinks MultiViews
AllowOverride All
Order allow,deny allow from all
</Directory>
Precisamos também iniciar 2 módulos do apache, e para finalizar reiniciar o serviço.
$ sudo a2enmod rewrite
$ sudo a2enmod headers
$ service apache2 restart
Agora é só acessar o IP da máquina com o diretório do ownCloud (ex: 192.168.0.4/owncloud) e se tudo estiver correto você verá uma tela solicitando um usuário administrador para o serviço.
Prontinho! Só começar a upar seus arquivos.
P.S.: Não lembro agora como que faz para redirecionar direto para o diretório do ownCloud digitando somente o IP. Assim que eu descobrir edito aqui :)
P.S.2: Com essa configuração ainda não será possível acessar seus arquivos de fora da rede. Vou procurar um método bom e seguro para isso e quando descobrir coloco um post no blog.