Como instalar o ownCloud

 
Introdução:

OwnCloud é um programa que permite a criação de uma cloud privada no servidor do usuário, alternativo ao Dropbox e ao Google Drive, mas com mais funcionalidades, como a sincronização de calendário, notas e favoritos, por exemplo.

O ownCloud possui programas cliente para Linux, Android, iOS, Windows e Mac OS.


ATUALIZAÇÃO (setembro de 2016): a versão 9 do Owncloud trouxe algumas alterações que forçam a atualização deste tutorial.


Requisitos:

1) LAMP:


O ownCloud utiliza o MySQL e o PHP que, por sua vez, necessita do servidor Apache. Se ainda não os tiver instalado em sua máquina, utilize este tutorial para tanto.


2) Atribuição de IP:


Nota: se preferir, é possível fixar o IP do Raspberry PI via atribuição e reserva, nas configurações de seu roteador.


Para que o Raspberry PI funcione corretamente com o ownCloud é necessário atribuir-lhe um IP fixo. Comece rodando o comando abaixo:

sudo pluma /etc/network/interfaces

No painel de notificações do Ubuntu-Mate, clique com o botão da direita no ícone de rede e selecione a opção "Informações da conexão". Na janela que se abre, colete as informações de IP, Gateway, Netmask, Network e broadcast. Em seguida, localize a entrada "auto eth0" no documento de texto aberto acima e o preencha de forma similar ao exemplo abaixo, utilizando os valores encontrados em sua pesquisa:

auto eth0
  iface eth0 inet static
  address 192.168.1.118
  gateway 192.168.1.1
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255

Salve, saia do Pluma e rode o comando abaixo para resetar as configurações de rede:

sudo /etc/init.d/networking restart

3) Configuração do HD externo:


Adicionalmente, é interessante criar partições em seu HDD externo especificamente para o ownCloud. Para tanto, com o auxílio do Gparted, crie 4 partições no HDD: swap, com 2GB, formatada como swap; ocfiles, com o tamanho que desejar, formatada como ext4, dbfiles, com 30GB, formatada como ext4 e backup, com 30Gb, também formatada como ext4.

Com as partições devidamente formatadas, abra o programa Disks para, como mostrado neste tutorial, configurá-los para montagem automática no carregamento. Renomeie os pontos de montagem para:

/mnt/ocfiles
/mnt/dbfiles
/mnt/backup 


Para o swap, vamos transferí-lo para o HDD externo pois, além de mais rápido, preserva-se a vida útil do cartão SD. Comece rodando o seguinte comando no Terminal:

update-rc.d -f dphys-swapfile remove

Agora, abra o arquivo "fstab" com o comando:

sudo pluma /etc/fstab

... e insira a seguinte linha, não esquecendo de adaptá-la à atribuição que o sistema deu à sua própria partição de swap:


/dev/sdb2 swap swap defaults 0 0

Salve, feche o editor de texto e rode o comando abaixo, no Terminal:

sudo mount -a

Por fim, ative o swap na partição correspondente. Não esqueça de substituir a atribuição do disco, no caomando, por aquela correspondente a de sua própria partição de swap:


sudo swapon /dev/sdb2

Confira permissão ao Apache para modificar a partição de arquivos "ocfiles" com o comando:

sudo chown www-data:www-data -R /mnt/ocfiles 

Instalação:

Com o Apache, o MySQL e o PHP instalados e funcionando, é possível iniciar a instalação do ownCloud.

Para certificar-se de que baixará a última versão, acesse o seguinte link e clique em "tar.bz2" no item "1".

Copie o arquivo baixado para sua "Pasta pessoal" e digite no Terminal (Ctrl+Alt+T):

tar -xjf owncloud+Tab

Dica: ao apertar a tecla "Tab" ao final do comando acima (sem o espaço), o sistema o completará com o nome correto do arquivo a ser descompactado. Apenas certifique-se de que não há mais de uma arquivo que inicie com "owncloud" em sua "Pasta pessoal".

Copie a pasta "owncloud" para a raiz do servidor-web com o comando abaixo:

sudo cp -r owncloud /var/www

Confira permissão de acesso do Apache à pasta do ownCloud:

sudo chown -R www-data:www-data /var/www/owncloud/

Configuração do MySQL:
Comece criando o banco de dados que será utilizado pelo ownCloud. Rode o comando abaixo para acessar o MySQL. Será necessário entrar com a senha que foi introduzida no tutorial de instalação do LAMP.

mysql -u root -p

...em seguida, rode o seguinte comando para criar o banco de dados chamado "ownclouddb":

CREATE DATABASE ownclouddb;
   
Agora, crie um usuário para este banco de dados, que será chamado "ownclouduser", e uma senha para ele. Atenção: não utilize a mesma senha usada na configuração do MySQL, e use uma senha forte. O comando seguinte é de uma linha.
 
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'nova_senha_aqui';

Rode, agora, o comando abaixo, para conferir ao usuário "ownclouduser" acesso pleno ao banco de dados "ownclouddb":

GRANT ALL ON ownclouddb.* TO ownclouduser@localhost;

Por fim, rode os comandos abaixo, um por vez, para resetar a tabela de permissões e para sair do MySQL:

FLUSH PRIVILEGES;
exit

Configuração do Apache (PHP):

1) Arquivo de configuração do Apache:


Para configurar o PHP, é preciso alterar o tamanho máximo de upload. Comece abrindo o arquivo de configuração no Pluma com o comando abaixo:


a) PHP 7:

sudo pluma /etc/php/7.0/apache2/php.ini


b) PHP 5:

sudo pluma /etc/php5/apache2/php.ini

Procure as linhas "upload_max_filesize" e "post_max_size" e altere os valores para 10G. Nas linhas "max_input_time" e "max_execution_time" altere o tempo para 360000 segundos, o que representa 6 horas.


Não esqueça de alterar o ponto de montagem da pasta de  dados.

upload_max_filesize = 10G
 
post_max_size = 10G

upload_tmp_dir = /mnt/ocfiles/tmp
 

max_input_time = 360000

max_execution_time = 360000

memory_limit = 512M

2) Módulos adicionais:


Para que o ownCloud funcione corretamente, são necessários os seguintes módulos, que podem ser ativados pelos comandos (um por linha):

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime

3) Alteração do diretorio raiz do servidor:

Por padrão, o diretório raiz do Apache é  var/www/html. Ocorre que o diretório owncloud é instalado diretamente no diretório "www", não sob o diretório "html". Para que o navegador consiga achar o programa, é necessário fazer com que o diretório raiz suba um nível. Para tanto, no Terminal, rode o comando:


sudo pluma /etc/apache2/sites-enabled/000-default.conf


Esse comando abre as configurações gerais do Apache. Procure a linha

'DocumentRoot /var/www/html" e a substitua por:


DocumentRoot /var/www


Salve o arquivo e feche o editor.

4) Arquivo de configuração do Owncloud:


No Ubuntu e seus derivados, é necessário editar o arquivo owncloud.conf:


sudo pluma /etc/apache2/sites-available/owncloud.conf


Copie as seguinte linhas para o arquivo:

Alias /owncloud /var/www/owncloud
 <Directory /var/www/owncloud/>
  Options +FollowSymlinks
  AllowOverride All
  Satisfy Any


  <IfModule mod_dav.c>
  Dav off
  </IfModule>

  SetEnv HOME /var/www/owncloud
  SetEnv HTTP_HOME /var/www/owncloud

 </Directory>

 

 

O ownCloud requer acesso ao ".htaccess". As configurações do arquivo owncloud.conf autorizam esse acesso no comando "AllowOverride All".


Nota: Se você for utilizar SSL para acesso remoto, desabilite o ".htaccess" mudando o parâmetro "All" para "None".


Salve, saia do programa e, em seguida, crie um link simbólico para o arquivo editado. (comando de uma linha):

sudo ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf 


5) Arquivo de configuração .htaccess:

A partir da versão 9 do OwnCloud, o arquivo .htaccess já vem configurado. Não o altere. Apenas garanta que o servidor possui permissão para editá-lo:

sudo chown www-data:www-data /var/www/owncloud/.htaccess


6) Reinicie o Apache:


sudo service apache2 restart

Acesso seguro via SSL:
Se você pretende acessar o ownCloud remotamente, altere o arquivo de configuração do Apache para habilitar o SSL.


sudo pluma /etc/apache2/sites-enabled/owncloud.conf

No editor de texto, altere "AllowOverride" de "All" para "None", salve e feche o Pluma. Este comando desabilita o ".htaccess".


Execute os comandos abaixo no Terminal:

sudo a2enmod ssl
sudo a2ensite default-ssl 


Reinicie o Apache:

sudo service apache2 restart


Para configurar o SSL, rode os seguintes comandos, um a um:


sudo openssl genrsa -des3 -out server.key 1024 

sudo openssl rsa -in server.key -out server.key.insecure

sudo openssl req -new -key server.key -out server.csr

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

sudo cp server.crt /etc/ssl/certs

sudo cp server.key /etc/ssl/private

sudo a2enmod ssl

sudo a2ensite default-ssl

Configuração final do ownCloud:

Abra o navegador e insira o endereço abaixo. Em seguida, siga as instruções de configuração fornecidas pelo próprio ownCloud:

http://seu_domínio.com/owncloud

Insira seu nome de usuário e uma senha para a conta do administrador, clique no link para "Advanced options" e insira o caminho de armazenamento dos arquivos a serem sincronizados - no exemplo deste tutorial: /mnt/ocfiles - (ou deixe o diretório padrão), em seguida, insira o nome do usuário do banco de dados (ownclouduser), a senha do banco de dados e seu nome (ounclouddb), o servidor (localhost) e clique em "Finish setup".


Com isso você já pode rodar o ownCloud em sua rede privada. Não deixe de conferir o tutorial "Como otimizar o ownCloud" para aprender como realizar alterações que o deixarão mais eficiente.

Domínio confiável:

Nota: parece que a configuração aqui proposta já é feita pelo script de configuração do ownCloud, quando de sua instalação, a partir de sua versão. Teste o acesso remoto pelo browser e apenas implemente a alteração aqui proposta se ele não funcionar.


Para acessar sua conta do ownCloud pelo browser, a partir de outro computador - o que é muito útil, para não ter que acessar a interface web pelo próprio Raspberry PI, mais lento - é preciso incluir o IP da máquina com o servidor do ownCloud na lista de domínios confiáveis.


Para tanto, abra o arquivo config.php pára edição, com o seguinte comando no Terminal (Ctrl+Alt+T):


sudo pluma /var/www/owncloud/config/config.php


Edite a entrada "trusted_domains" e inclua o IP da sua máquina. Abaixo segue um exemplo para a máquina com IP 192.168.1.110:


     'trusted_domains'  =>

  array  (

         0  =>  '192.168.1.110' ,

         1  =>  'localhost' ,

   ),


Salve o arquivo, feche o editor e reinicie o Apache com o comando:


sudo service apache2 restart

Configuração final do MySQL - transferir os dados para o HDD externo:

Para mover os dados do banco para o HDD externo é preciso, antes, parar o MySQL e colocar o Owncloud em manutenção. Para tanto, feche a janela do navegador que está acessando o ownCloud e rode os seguintes comandos no Terminal (um por linha):

sudo /etc/init.d/mysql stop


cd /var/www/owncloud 


sudo -u www-data php occ maintenance:mode --on


Acesse o Terminal em modo root:


sudo su


Crie um novo diretório:


mkdir /mnt/dbfiles/mysql


Copie os arquivos que interessam usando o comando a seguir:


sudo rsync -av /var/lib/mysql /mnt/dbfiles


Agora, é preciso fazer um backup do arquivo de configuração my.cnf:


cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bck


Abra o arquivo para edição:


pluma /etc/mysql/mysql.conf.d/mysqld.cnf


Altere todas as antigas menções ao datadir para que o arquivo fique da seguinte forma:

[mysqld]
datadir = /mnt/dbfiles/mysql


Salve, feche o editor e rode o seguinte comnado para editar o arquivo usr.sbin.mysqld:

sudo pluma /etc/apparmor.d/usr.sbin.mysqld
Substitua as seguintes linhas:

/var/lib/mysql/ r, 
/var/lib/mysql/** rwk,
...por:


/mnt/dbfiles/mysql/ r,
/mnt/dbfiles/mysql/** rwk,


Salve, feche o Pluma e atualize as permissões de escrita do novo diretório. No Terminal, digite:


chown -R mysql:mysql /mnt/dbfiles/mysql


Faça uma cópia de segurança do antigo diretório com o seguinte comando:


cp -R /var/lib/mysql /var/lib/mysql-old


Apague o diretório antigo:


rm -R /var/lib/mysql


Crie um link simbólico dos arquivos no HD externo para a localização antiga, no diretório original dos MYSQL, só por conta:


ln -s /mnt/dbfiles/mysql /var/lib/mysql


Atribua permissões de escrita ao MYSQL:


chown -R mysql:mysql /var/lib/mysql


Saia do modo root:


exit


Reinicie o mysql:


sudo systemctl start mysql


Saia do modo de manutenção do Owncloud:


cd /var/www/owncloud


sudo -u www-data php occ maintenance:mode --off

Para acessar o ownCloud remotamente:

O ownCloud já possui aplicativos para Android, iOS e Windows para facilitar a sua vida. Porém o servidor foi configurado em uma rede interna, o que quer dizer que o IP que lhe foi atribuído não poderá ser alcançado pela internet.

Para resolver isso você tem duas saídas:

a) Contratar um serviço de IP fixo na sua provedora de internet.

b) Configurar um serviço de DNS dinâmico, como o DynDNS por exemplo. Alguns destes serviços são pagos, mas neste link tem um tutorial bem explicado para configuração do Free DNS.

Nota: o ownCloud é uma ferramenta que eventualmente recebe atualizações, e em alguns casos, a forma de configuração e as aplicações necessárias podem mudar. Para isso, visite sempre o manual de administrador do ownCloud.