Criar um servidor ownCloud (debian 7/8)
11 Dezembro 2014As 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.
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-contribpostgresql-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 #debian8Require localRequire 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 smbclientapt-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.
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
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/
[…] Criar um servidor ownCloud (debian 7/8) […]
Amigo estou deletando aquivo do diretorio data do user porem o mesmo não apaga do dashboard, vc sabe o que pode ser ?
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.
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?
[…] 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 […]
[…] definido no upload_max_filesize do php.ini do servidor de destino. Se assim não for, os clientes ownCloud/Nextcloud não serão capazes de fazer upload dos ficheiros (maiores que […]