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.
Fiquei com uma duvida agora, onde exatamente esta a tecnologia em cloud? Pelo que entendi você estará usando um servidor na sua casa com um gerenciador gráfico bonitinho chamado owncloud. Realmente me desculpa mais o que deu a entender foi isso, e se realmente for isso então não se trata de cloud, pois um servidor na minha casa com o ssh me da o mesmo resultado e nem por isso se trata de cloud computing.
ResponderExcluirBela pergunta, levantou alguns tópicos a mais para pesquisa.
ExcluirMas vamos lá! O ownCloud não é apenas um "gerenciador bonitinho", eu até acho ele feio pacas. :)
Se você der uma conferida no site (owncloud.org) vai ver que pode replicar toda a infra de uma empresa como o Dropbox e eles já tem as ferramentas pra isso, com cliente multiplataforma pra windows, mac, linux, ios e android, contando com todo o sincronismo e tal, não só de arquivos, mas sim de fotos, ebooks, calendario, notas, musicas, contatos e tudo que os outros fazem, mas será necessário ativar alguns plug-ins.
E segundo nossa amiga wikipedia computação em núvem é: à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet.
Sim acredito que o ownCloud seja um serviço de núvem.
Desculpe pela imprecisão do texto e valeu pelo comentário, com isso sabemos onde podemos melhorar ;)
Valeu
Olá, obrigado pela resposta. Mais só mais um questionamento, um dos princípios básicos de computação nas nuvens é a capacidade de separação entre o software o hardware, ou seja, o meu servidor é em cloud, opera com memória e disco compartilhado de diversos servidores reais, o que significa que se um dos servidores for explodido o meu serviço continuará como se nada tivesse ocorrido pois os servidores físicos que restaram tem por obrigação assumir o "prejuízo". Sendo assim, se o seu servidor explodir (kkkk) o owncloud se vira sozinho?
ExcluirEsse é um dos problemas que eu encontrei. Isso involve mais o pilar de disponibilidade da Segurança da Informação, clusters e multiplos servidores.
ExcluirAinda não tenho isso, não tenho nem mesmo backup pra isso além de meus dados num HD externo, mas caso eu veja que isso funciona eu invisto um pouco mais em infra pra essa cloud.
Resumindo, no momento, se explodir além de perder tudo existe grandes chances de minha casa ir junto kkkkk
kkkk
ExcluirObrigado pelo retorno.
Você e sua equipe estão de parabéns. Ótimas matérias voltadas para a área de segurança e tecnologia em geral.