Criar um servidor ownCloud (debian 7/8)

As minhas aventuras no ownCloud não se limitaram ao raspberry pi. Tenho um servidor virtual assente em VMWare vSphere Hypervisor 4 para testes e decidi criar uma “nuvem” para mim e outra na empresa assente em Hypervisor 5 com suporte a 64bits.

Como quero aprender umas coisas decidi fazer tudo “à patinha” para ir aprendendo umas coisas em GNU/Linux. A distribuição por eleição que uso é Debian.

De notar que este post tem recebido várias actualizações e de momento já estou a trabalhar com as duas versões do debian, a Wheezy e a Jessie (7 e 8, respectivamente).

A principal diferença é a actualização do Apache que passa da versão 2.2.x para a 2.4.x e sofre algumas alterações ao nível dos ficheiros de configuração.

Para a configuração utilizei este tutorial adaptado por mim a seguir.

Servidor/Maquina Virtual

Para a distribuição fui buscar as versões mais mini, as netinstall disponíveis aqui, usado a versão i386 compatível com o meu servidor. Para a configuração em Debian 8, já usei as versões x64 noutro servidor e segui este tutorial.

Raspberry Pi

Para esta nova instalação usei o raspbian-ua-netinst que facilita bastante o trabalho de instalação. Basta descarregar e passar para o cartão SD com o Win32Disk Imager. Aconselho descarregar o ficheiro raspbian-ua-netinst-v1.x.x.img.bz2 e depois descompactar com o 7zip.

Para os mais avançados, existem duas distribuições para as duas versões (ver aqui), a armel (Rasp v1) e a armhf (Rasp v2). Fiz uso obviamente das versões mais mini, a netinstall igualmente disponível na página de descarregamentos. Escolham as que estão disponíveis debaixo de “CDs pequenos”.

Para escrever para o SD, usar o Win32Disk Imager. Não esquecer de usar uma partição/formatar o SD em FAT32.

Aconselho vivamente a não usarem o Raspebbry Pi 1 e sim o Raspberry Pi 2 nas instalações mais recentes do ownCloud, especialmente com PostGresSQL. Como podem ver pelo prt.sc do htop abaixo, os 4 processadores estão quase a 70% (o que acontece bastante). No Rasp 1 como podem calcular, está sempre a 100% quando está a sincronizar e comecei a receber bastantes erros de sincronização.

htop do rasp2 com owncloud
htop do rasp2 com owncloud

Preparação do servidor

A preparação do servidor teve como base, como já disse, a do meu raspberry pi, mas como esta nuvem pretende ser um servidor mais empresarial, decidi usar um ambiente mais estável e robusto assente em PostreSQL.

Durante a instalação do debian 7/8 escolher no Software selection o mais simples possível, seleccionando apenas o SSH server e Web Server.

Configuração de rede

Visto que este irá ser um servidor empresarial convém o mais possível que o IP seja fixo (até porque vão precisar dele fixo mais tarde). Usei a ajuda da Debian para o fazer, disponível aqui.

Para definir o IP fixo, editar:

nano /etc/network/interfaces

E depois definir à eth0 os seguintes valores (substituir pelos vossos):
PS: No Ubuntu14.x e Debian 8 é provável que encontrem algum texto novo, colocar a configuração estática debaixo de: “source-directory /etc/network/interfaces.d”.

auto eth0
iface eth0 inet static
        address 10.0.0.25
        netmask 255.255.255.0
        gateway 10.0.0.1
        network 10.0.0.0
        broadcast 10.0.0.255

A seguir convém sempre reiniciar a placa de rede para ela poder assumir o IP atribuído:

ifdown eth0
ifup eth0

Em alguns casos será também boa ideia definir os servidores de resolução de nomes:

 nano /etc/resolv.conf

E adicionar os seguintes, OpenDNS e Google DNS, respectivamente alterado:

nameserver 208.67.222.222
nameserver 8.8.8.8
nameserver 208.67.220.220
nameserver 8.8.4.4

Preparar o servidor SSH

Por defeito o servidor SSH também não vem instalado. Para continuarem a configuração no conforto do “sofá” basta seguir a help do Debian e:

apt-get install openssh-server

E em principio já podem aceder remotamente a partir da vossa rede interna. No entanto, no Debian 8 o acesso SSH remoto está desactivado por defeito. Para o activar, aceder a

nano /etc/ssh/sshd_config

e depois alterar a linha “PermitRootLogin without-password” para:

PermitRootLogin yes

Instalar o Apache

De notar que na versão Debian Whezzy será instalada a versão 2.2.x e no Debian Jenny será instalada a versão 2.4.x.

apt-get install apache2

Instalar o PostgreSQL

Depois das configurações típicas na instalação, na qual escolhi também a opção de servidor de base de dados, o Debian instalou-me automaticamente o PostgreSQL.  Se não instalaram de início podem instalar com:

apt-get install postgresql postgresql-contrib postgresql-client

O utilizador e a base de dados criadas por defeito têm o nome postgres.  Para o definir-mos, mudar de utilizador com:

su - postgres

E aceder ao servidor postgres:

psql

A password do utilizador deve ser mudada através de:

\password postgres 
Enter new password: 
Enter it again:

Aproveitamos já para instalar o admin pack

CREATE EXTENSION adminpack;
\q

\q permite sair do servidor postgres.

Uma alteração que deverá ser feita é a activação da autenticação por MD5. PostgreSQL-MD5 Authentication:

#debian7
nano /etc/postgresql/9.1/main/pg_hba.conf
#debian8
nano /etc/postgresql/9.4/main/pg_hba.conf

E encontrar as seguintes linhas e alterar de “peer” ou outro para “md5”.

local   all             postgres              md5
local   all             all                   md5

Por defeito todas as conexões TCP/IP estão desabilitadas. Para activar, aceder ao ficheiro:

#debian7
nano /etc/postgresql/9.1/main/postgresql.conf
#debian8
nano /etc/postgresql/9.4/main/postgresql.conf

E encontrar a linha #listen_addresses = ‘localhost’, descomentar e alterar para o IP fixo definido:

listen_addresses = '10.0.0.25'

NOTA: Por vezes não é necessário efectuar esta alteração. Se o owncloud, depois da introdução dos dados da base de dados, retornar um “Internal Server Error”, voltar a colocar em ‘localhost’.

E descomentar igualmente a linha:

password_encryption = on

Agora é só reiniciar o servidor (e ver se tudo corre bem):

service postgresql restart

Instalar o phpPgAdmin

Para preparar e administrar a base de dados, gosto sempre de ter à mão uma interface que me ajude a descortinar alguma coisa no meui de tanto preto e branco. Para isso costumo usar o phpMyAdmin para mySQL. No caso de PostgreSQL a solução é o phpPgAdmin.

apt-get install phppgadmin

Por defeito o phpPgAdmin não é acessível fora do sistema local (de fora da máquina). Para isso alterar o ficheiro:

#debian7
nano /etc/apache2/conf.d/phppgadmin
#debian8
nano /etc/apache2/conf-enabled/phppgadmin.conf

E descomentar a linha que diz:

#debian7
allow from all
#debian8
Require local
Require all granted

E por fim, reiniciar o apache:

service apache2 restart

Agora é só aceder ao vosso ip por http:

http://10.0.0.25/phppgadmin

Se ao tentar entrar com o utilizador postgres:password o phpPgAdmin devolver o erro:

Login disallowed for security reasons.

Editar a configuração do phpPgAdmin para:

nano /usr/share/phppgadmin/conf/config.inc.php

E alterar as seguintes linhas:

$conf['servers'][0]['host'] = '';
$conf['extra_login_security'] = false;

Agora com certeza é possível fazer login no phpPgAdmin, podendo ser possível criar utilizadores e bases de dados, e dar as respectivas permissões. Convém que façam já um utilizador e uma base de dados para o ownCloud.

Instalar o ownCloud 8/9/10

Para instalar o ownCloud basei-me não só já na minha instalação que tinha feito no meu raspberry pi, mas também obviamente na documentação oficial disponível aqui.

Em primeiro lugar instalar alguns pacotes que vamos precisar, primeiro os de PHP, e depois o SMB client (cliente samba para as partilhas).

apt-get install php5-gd php5-curl smbclient
apt-get install php5 curl libcurl3 php-xml-parser php5-intl
#caso não esteja instalado o bzip
apt-get install bzip2

Depois é descarregar o último Owncloud (ver o link em https://owncloud.org/install/#edition, na opção Archive file>Unix):

wget https://download.owncloud.org/community/owncloud-10.0.0.tar.bz2

Descomprimir:

tar -xjf owncloud-10.0.0.tar.bz2

Mover para a pasta /var/www:

#debian7
mv -r owncloud /var/www/
#debian8
mv -r owncloud /var/www/html/

E dar as devidas permissões:

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

A seguir há que verificar se a pasta do ownCloud já tem o ficheiro .htaccess (ls -al), senão, há que o criar:

#debian7
cd /var/www/owncloud
#debian8
cd /var/www/html/owncloud
ls -al
touch .htaccess
chown www-data:www-data .htaccess

Agora activar os dois seguintes módulos que irão ser necessários:

a2enmod rewrite
a2enmod headers
a2enmod ssl
a2ensite default-ssl

Reiniciar o servidor apache:

service apache2 restart

Agora é só aceder por http, colocar as configurações (utilizador, base de dados, etc) que criaram no phpPgAdmin e criar o vosso utilizador de Administração.

http://10.0.0.25/owncloud

Optimização

O ownCloud 8 pede algumas optimizações que deverão ser feitas, sob pena de impedir que alguns serviços extra, como as partilhas CIFS/SMB, funcionem correctamente. Primeiro há que instalar o php-apc/u que vai também instalar o modulo php5-apc/u. Provavelmente terão também de instalar o pacote memcached (ver aqui também)

#debian7
apt-get install php-apc php5-memcached memcached 
#debian8
apt-get install php5-apcu php5-memcached memcached

No meu caso, para que o APCu  funcionasse em Debian 8 correctamente, tive de ainda editar o ficheiro de configuração “pai” (retirado daqui) do PHP para que funcionasse correctamente, que é o abaixo, e não o que está dentro do apache (/etc/php5/apache2/php.ini):

#debian8
nano /etc/php5/cli/php.ini

e depois acrescentar as linhas (depois de ;opcache.enable_cli=0):

;opcache.enable_cli=0
apc.enabled=1
apc.enable_cli=1

Depois há que dizer ao ownCloud que o estamos a usar. Adicionar a seguinte linha ao config.php

#debian7
nano /var/www/owncloud/config/config.php
#debian8
nano /var/www/html/owncloud/config/config.php
#debian7
'memcache.local' => ‘\OC\Memcache\APC’
#debian8
'memcache.local' => '\OC\Memcache\APCu',

Convem igualmente aceder ao log do apache em /var/log/apache2/error.log e verificar se existe algum erro do tipo:

[Wed Sep 02 14:34:20.826082 2015] [:error] [pid 16501] [client 192.168.1.x:59750] PHP Fatal error:  Allowed memory size of 13421772

Se sim, aceder ao /etc/php5/apache2/php.ini e alterar as definições para, por exemplo:

memory_limit = 2048M

Aconselho vivamente a aumentar o valor exponencialmente acima dos 10 utilizadores.

O PHP per sí limita o tamanho dos uploads, mas o máximo por defeito é de 2GB, portanto há que ter algum cuidado na gestão de alguns ficheiros. No entanto estou a testar a alteração para 4GB. Para definir os máximos aconselho a alteração dos seguintes valores no php.ini:

nano /etc/php5/apache2/php.ini

e descomentar/activar a opção e aproveitar para alterar o tamanho dos uploads para o ownCloud:

always_populate_raw_post_data = -1
file_uploads = On
upload_max_filesize = 4096M
post_max_size = 4096M

Manutenção / Actualizar > ownCloud 9/10

Uma das coisas mais importantes que deve ser feita para que seja mais fácil actualizar e manter versões do ownCloud é retirar a pasta /data (dos dados dos utilizadores) para um sítio diferente. Desta forma tem a pasta /var/www/html/owncloud sempre “livre” para trabalhar, e em caso de necessidade de reinstalação, não há necessidade de andar a mover ficheiros.

Uma das hipóteses que tenho visto bastante é mover a pasta /data para dentro da /var, ficando assim atrás do acesso web, mas ao mesmo tempo a mão e fácil de encontrar.

ATENÇAO: Este passo deve ser dado logo a seguir a instalação, pode ser feito posteriormente, mas com cautela, e com o ownCloud em modo manutenção e todos os serviços parados.

#debian8
nano /var/www/html/owncloud/config/config.php

Adicionar  alinha, logo no início:

'maintenance' => true,

Depois parar os serviços e mover:

#debian8
service apache2 stop
service postgresql stop
mv /var/www/html/owncloud/data /var/

Depois da pasta movida, há que reconfigurar, quer as permissões da nova pasta, quer as configurações do ownCloud.

#debian8
chown -R www-data:www-data /var/data/
nano /var/www/html/owncloud/config/config.php

E redefinir a pasta em:

 'datadirectory' => '/var/data/',

O objectivo agora é actualizar para a ultima versão, neste caso a 9. Descarregar a ultima versão e descomprimir:

wget https://download.owncloud.org/community/owncloud-10.0.0.tar.bz2
tar -xjf owncloud-10.0.0.tar.bz2

Antes de movermos para a pasta principal que estamos a usar, aconselho sempre a renomear/mover a pasta antiga para algo como owncloud_old. Para além disso vamos precisar do ficheiro config.php que mexemos a pouco.

#debian8
cd /var/www/html/
mv owncloud owncloud_old

Agora sim podemos voltar a raiz e mover a nova versão para a pasta owncloud.

#debian8
cd \
mv owncloud /var/www/html/

Agora, não esquecer de recuperar para esta nova pasta as nossas configurações (-avr permite ver o que é que está a copiar):

cp -avr owncloud_old/config/config.php owncloud/config/

Agora há que remover o ownCloud do modo de manutenção e arrancar o Apache e o PostGreSQL.

nano /var/www/html/owncloud/config/config.php
'maintenance' => false,
service postgresql start
service apache2 start

Agora é só aceder a vossa página do ownCloud e correr o script de actualização (e rezar para que tudo corra bem). Comigo no rasp, foi limpinho, limpinho!

Owncloud 9.1.0 e 9.1.1

Caso estejam a obter o seguinte erro quando clicam no Updater:

[UnexpectedValueException] 
 Could not parse a response for config:list. Please check if the current shell user can run occ command.
 Raw output: 
 Not allowed

Há que aplicar um patch para corrigir o problema! Primeiro ir para a pasta do owncloud:

cd var/www/html/owncloud/
wget https://gist.githubusercontent.com/VicDeo/937a0172a06d693258b97b7132c4ba5b/raw/193a6c3f993adfe78ea26d92f2f916ac09dddc42/updater-910-911.patch
patch -p0 <updater-910-911.patch
rm updater-910-911.patch

 

Configurar correctamente o CronJob

Para que o cron ocupe menos recursos, o melhor é mesmo usar um cron do sistema. Na administração, em vez de estar seleccionado em modo AJAX, escolher a opção Cron. De seguida listar o que está configurado no crontab e verificar se a ultima linha tem alguma coisa.

crontab -u www-data -l

Se nada estiver na ultima linha, efectuar a seguinte alteração:

crontab -u www-data -e

E adicionar a linha, onde 15 é minutos (de 15 em 15 minutos):

#debian7
*/15 * * * * php -f /var/www/owncloud/cron.php
#debian8
*/15  *  *  *  * php -f /var/www/html/owncloud/cron.php > /dev/null 2>&1

Configurar acessos externos

Para que se possa aceder a partir de um acesso externo, é necessário configurar o ownCloud para que ele o permita. Aceder a:

#debian7
nano /var/www/owncloud/config/config.php
#debian8
nano /var/www/html/owncloud/config/config.php

E dentro dos trusted_domains, acrescentar cada um dos domínios, ou redireccionamentos configurados:

'trusted_domains' =>
 array (
 0 => '10.0.0.25',
 1 => 'mycloud.no-ip.info',
 2 => 'cloud.mydomain.net',
 ),

Configurar acessos SAMBA/CIFS

ownCloud 8.x/9.x

Em primeiro lugar, para que o ownCloud consiga aceder a partilhas windows ou samba, o cliente SMB tem de ser instalado. A partir da versão 8.1 há um pacote que melhora consideravelmente a performance do acesso SAMBA/CIFS que não está no repositório oficial do debian. Há que então adicionar o repositório do OC e instalar o smbclient e o novo pacote:

PS: pacote ainda não disponível para quaisquer dos Raspberry Pi, o que é pena.

#debian7
echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/php5-libsmbclient.list
#debian8
echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_8.0/ /' >> /etc/apt/sources.list.d/php5-libsmbclient.list
#debian7
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
apt-key add - < Release.key
#debian8
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_8.0/Release.key
apt-key add - < Release.key
#debian7/8
apt-get update
apt-get install smbclient php5-libsmbclient

A partir daqui as opções de acessos aos armazenamentos externos dentro de “Personal” e “Admin” passam a ter disponíveis as opções “SMB / CIFS” e “SMB / CIFS using OC login“. A configuração que consegui que funcionasse num ambiente Windows Server 2008 foi a de alterar o meu username windows para algo mais linux frendly e colocar as seguintes opções:

Folder name: Nome que se deseja dar à pasta
Host: IP do servidor SMB/CIFS ('10.0.0.5')
Share: caminho até à pasta do utilizador no domínio (sem o IP, ex: "/data/users/adrianoafonso") ou apenas "/"
Remote subfolder: caminho da partilha
Domain: Nome de domínio, se aplicável
Username: nome de utilizador do domínio
Password: password do utilizador no domínio

ownCloud 10 (CIFS via mount)

Confesso que tive imensos problemas com as configurações das patilhas CIFS, em que só as consegui ter a funcionar correctamente durante o ownCloud 8.1 até ao 9.1.5, com o pacote php5-libsmbclient (0.5.0-9.1) que mantive sem actualizar. Com a instalação do ownCloud 10, novamente rebentou. Tentei finalmente actualizar o pacote para a versão (0.7.0-11.1), mas mesmo assim não funcionou.

Decidi então usar um mount para a partilha que necessito aceder dentro do ownCloud. De notar que deve existir um utilizador configurado no servidor (no Windows Server, neste caso). No meu caso criei um utilizador [owncloud] com as devidas permissões às pastas a serem acedidas pelo servidor em que está instalado o ownCloud. Agora há que instalalar o pacote:

apt-get install cifs-utils

Criar a pasta que irá servir a partilha:

cd /mnt
mkdir partilha-cifs

Depois montar a partilha:

mount -vt cifs -o domain=<domínio>.local,username=<utilizador-owncloud>,password='<password>',rw,nounix,iocharse=utf8,file_mode=0777,dir_mode=0777,sec=ntlm //10.0.0.30/Data /mnt/partilha-cifs

Deve aparecer a seguinte mensagem:

mount.cifs kernel mount options: ip=10.0.0.30,unc=\\10.0.0.30\Data ,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm,user=<utilizador-owncloud>,,domain=<domínio>.local,pass=********

A partir de agora, poderá ser utilizado o método que indico mais à frente em “Adicionar disco (interno/externo) à directoria do user ownCloud“.

PS: Cuidado, se houve algum update de kernel anteriormente, há que reiniciar o server.

Dados do user ownCloud num disco externo USB (NTFS)

Nas implementações com Raspberry Pi, visto haver pouco espaço no disco principal, é comum passar a pasta de sincronização para outro disco. Convém em primeiro lugar 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. Convém verificar sempre com o comando blkid. Primeiro que tudo há que parar o apache e o servidor de base dados.

service apache2 stop
service postgresql 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.

Seguido este tutorial para o fazer, há que começar por adicionar um disco. Primeiro há que ver se ele está ligado:

blkid

Isto vai listar os discos estão ligados. Aproveitem para copiar já o UUID, vão precisar dele mais à frente. 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:

mkdir /media/<nome_do_disco>

Em muitos casos o pacote de reconhecimento de partições  NTFS não está instalado por defeito, há que o fazer através:

apt-get install ntfs-3g

E a seguir montar o disco:

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:

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:

nano /etc/fstab

Depois adicionar a seguinte linha, com o UUID que copiaram anteriormente::

UUID=<uuid_do_disco> /media/<nome_do_disco> ntfs-3g noatime 0 0

Reiniciem e verifiquem se tudo está como previsto. Agora há que mover a pasta do user para o respectivo disco que se acabou de montar:

#debian7
mv /var/www/owncloud/data/<user> /media/<disco>/
#debian8
mv /var/www/html/owncloud/data/<user> /media/<disco>/

A seguir, criar um symbolic link para a directoria do owncloud:

#debian7
ln -s /media/<nomedodisco>/<user>/ /var/www/owncloud/data
#debian8
ln -s /media/<nomedodisco>/<user>/ /var/www/html/owncloud/data

Depois há que (re)atribuir as permissões correctas à pasta do owncloud:

chown -R www-data:www-data /media/<nomedodisco>/<user>

Arrancar o Apache e o PostGreSQL, e está feito!

service apache2 start
service postgresql start

Testem de imediato, colocando uma pasta e vejam se sincroniza. O meu leva algum tempo, mas sincroniza lindamente.

Adicionar disco (interno/externo) à directoria do user ownCloud

ownCloud 7.x/9.x

Em primeiro lugar tenho que agradecer ao Sílvio André por esta dica, que me deu bastante jeito numa implementação caseira numa máquina de um cliente.

Se o disco já estiver ligado na máquina há que começar por o montar devidamente. Primeiro há que ver se ele está ligado:

blkid

Isto vai listar os discos estão ligados. Aproveitem para copiar já o UUID, vão precisar dele mais à frente.  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á automaticamente montado. Portanto há que criar a pasta:

mkdir /media/<nome_do_disco>

Em muitos casos o pacote de reconhecimento de partições  NTFS não está instalado por defeito, há que o fazer através:

apt-get install ntfs-3g

E não esquecer de dar as permissões devidas ao mount:

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:

nano /etc/fstab

Depois adicionar a seguinte linha, com o UUID que copiaram anteriormente:

UUID=<uuid_do_disco> /media/<nome_do_disco> ntfs-3g noatime 0 0

Outra configuração que poderá ser válida é a seguinte:

UUID=<uuid_do_disco> /media/<nome_do_disco> ntfs defaults,rw,group=33 0 0

Em que aqui aqui são os parâmetros de acesso, por exemplo, “rw”, indica que o disco permitirá a escrita e group=33, especifica que o disco está acessível ao apache. Reiniciem e verifiquem se tudo está como previsto.

De seguida há que aceder à interface do “ownCloud > Apps (canto supeior esquerdo) > Not enabled” e activar a app “External storage support“.

Para dar permissão de acesso a todos os utilizadores/grupo definido terem acesso ao disco, ir á página “Admin” e efectuar as seguintes configurações:

Folder name: Nome que se deseja dar à pasta
External storage: Local
Authentication: None
Configuration: caminho configurado em /media/<nome_do_disco>
Available for: Especificar o grupo que irá ter acesso ao disco

ownCloud 10.x

No ownCloud 10.x a opção “Local” da funcionalidade “External storage support” foi desactivada por uma razão muito forte, o administrador ownCloud nem sempre é o administrador do sistema, e esta funcionalidade permitia ao mesmo dar acesso a areas às quais não deve ter.

Desta forma é preciso alterar o ficheiro config.php:

#debian8
nano /var/www/html/owncloud/config/config.php

E adicionar duas novas linhas:

'files_external_deny_local' => false,
'files_external_allow_create_new_local' => true,

Desta forma já poderão adicional pastas locais, e obviamente os mounts, às pastas dos utilizadores. De notar também a diferença para as versões anteriores, é que agora estas pastas são adicionadas na administração em Settings > Admin > Storage e não em Personal > Storage. É também aqui que são dadas as atribuições e permissões a cada uma das pastas, por Grupo, ou por utilizador.


 

Configurar Acesso HTTPS/SSL (Debian 7.x)

NOTA: A partir da versão 8.x do ownCloud, este já vem com um certificado SSL instalado e a implementação SSL pré configurada.

Seguindo este tutorial, consegui implementar facilmente o acesso através de HTTPS, torando o meu owncloud bem mais seguro. Primeiro há que instalar o openSSL

apt-get install openssl

e de seguida activar o módulo SSL do apache.

a2enmod ssl
a2ensite default-ssl

Antes de criar o certificado, convém primeiro criar a pasta onde este irá ser instalado.

mkdir -p /etc/apache2/ssl

Agora podemos, sim, criar o certificado:

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/owncloud.pem -keyout /etc/apache2/ssl/owncloud.key

Para quem usa debian é provável que o ficheiro /etc/apache2/conf.d/owncloud.conf não exista. No entanto basta cria-lo.

#debian7
nano /etc/apache2/conf.d/owncloud.conf
#debian8
nano  /etc/apache2/conf-enabled/owncloud.conf

E a seguir colar as seguintes configurações, onde o IP poderá ser substituindo por “localhost“, dependo da configuração inicial do apache.

#debian7
<VirtualHost 10.0.0.25:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/€ 0,89 ($1) [NC,R,L]
</VirtualHost>
 
<VirtualHost 10.0.0.25:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/owncloud.pem
SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key
DocumentRoot /var/www/owncloud/
 
<Directory /var/www/owncloud>
AllowOverride All
order allow,deny
Allow from all
</Directory>
</VirtualHost>

#debian8
<VirtualHost localhost:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
 
<VirtualHost localhost:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/owncloud.pem
SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key
DocumentRoot /var/www/html/owncloud/
 
<Directory /var/www/html/owncloud>
AllowOverride All
order allow,deny
Require all granted
</Directory>

De seguida bastará reiniciar o apache:

sudo service apache2 restart

No entanto, no meu caso, ao aceder através da internet, o OwnCloud retornou-me o seguinte erro:

PHP is configured to populate raw post data. Since PHP 5.6 this will lead to PHP throwing notices for perfectly valid code. To fix this issue set always_populate_raw_post_data to -1 in your php.ini

Se isto vos acontecer, existe a seguinte solução, aceder ao ficheiro:

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

e descomentar/activar a opção e apoveitar para alterar o tamanho dos uploads para o ownCloud:

always_populate_raw_post_data = -1
file_uploads = On
upload_max_filesize = 2048M
post_max_size = 2048M

Aproveitar para alterar o charset para o mesmo da instalação, no meu caso UTF-8.

default_charset = "UTF-8"

Se mesmo assim ainda não funcionar, é provável que também tenham que editar igualmente o ini que está na pasta:

sudo nano /etc/php5/cli/php.ini

E em princípio está completa a activação do SSL. Cuidado para quem tem routers/firewall, o acesso agora será feito pela porta 443 e não pela 80.

OpenLDAP (outdated)

Como muito provavelmente terão um servidor Windows Server algures, seria interessante usar as contas já configuradas e intercalá-las com o OwnCloud. Usei este artigo para proceder à minha instalação. Para poder comunicar com o servidor através de LDAP, primeiro instalar os seguintes pacotes:

apt-get install slapd ldap-utils php5-ldap

Se durante a instalação vos der algum erro similar a este:

[warn] No configuration file was found for slapd at /etc/ldap/slapd.conf. ... (warning).
invoke-rc.d: initscript slapd, action "start" failed.
dpkg: erro ao processar slapd (--configure):
 subprocesso script post-installation instalado retornou erro do status de saída 1

Efectuar uma primeira configuração ao LDAP com:

nano /etc/ldap/ldap.conf

E alterar os seguinte parâmetros, onde “example” é o nome do dominio, e “com” é o tld, e o IP é o endereço da máquina Windows Server.:

BASE    dc=example,dc=com
URI     ldap://10.0.0.50 ldap://10.0.0.50:666

Depois sim forçar a configuração do LDAP

dpkg-reconfigure --force slapd

Em principio, o openLDAP ficará configurado e instalado correctamente agora. Para fazer a gestão dos utilizadores pode-se instalar o:

apt-get install phpldapadmin

que irá permitir criar e gerir utilizadores através do browser.

Para finalizar a conexão do owncloud ao servidor LDAP, não esquecer de activar o plugin “LDAP user and group backend” a partir das Apps, e proceder à sua configuração no Admin.

7 Replies to “Criar um servidor ownCloud (debian 7/8)”

  1. Silvio Andre Brazil Windows 7 Mozilla Firefox 42.0 says:

    Boa noite Adriano,

    Olha, da maioria da busca que fiz na internete para usar como base na preparação do meu raspberry, o seu é o que é completo e aborda de forma prática, muito bom e obrigado. Porém gostaria de uma ajuda, você tem idéia de como eu posso fazer o owncloud reconhecer os arquivos que já possuo no HD?, existe algum processo?

    Meu HD é um externo formatado em NTFS, sendo ele já configurado para permissões na hora de montagem.

    Obrigado pela atenção, fico no aguardo

  2. Olá Silvio
    Tem de dar uma olhada na documentação:
    https://doc.owncloud.org/server/8.1/admin_manual/configuration_files/external_storage_configuration_gui.html#local-storage
    Se quiser colocar os dados nesse disco, aconselho a seguir o meu tutorial que ainda funciona, em “OwnCloud num disco externo (NTFS)”:
    http://www.adrianoafonso.net/blog/2014/raspberry-pi-xbmc-transmission-no-ip-nas/

  3. […] Criar um servidor ownCloud (debian 7/8) […]

  4. Clemente Machado Brazil Linux Google Chrome 51.0.2704.63 says:

    Amigo estou deletando aquivo do diretorio data do user porem o mesmo não apaga do dashboard, vc sabe o que pode ser ?

  5. Sei. Sei que está a mexer onde não deve!!!
    Deixe-se lá de inventar e faça as coisas como deve ser… Isto é um sistema igual a uma base de dados, o que significa que se apagar um ficheiro à mão, quebra a integridade referencial.
    Deve apagar os ficheiros só e apenas a partir da interface web, ou com o cliente instalado numa outra maquina.

  6. Boa noite Adriano, desculpe não entendi quando você falou “Para finalizar a conexão do owncloud ao servidor LDAP, não esquecer de activar o plugin “LDAP user and group backend” a partir das Apps, e proceder à sua configuração no Admin.” como eu faço isso?

  7. […] já devem de saber, tenho o meu próprio servidor Nextcloud/ownCloud, também num RaspBerry Pi 2, pois neste momento, o único serviço em que confio, é nos meus. Por […]

Deixe uma resposta

ten + nine =