Como instalar o Pydio Web File Manager no Debian 9
Nesta página
- Requisitos
- Pré-requisitos
- Instalar Apache e PHP
- Configurar o Firewall
- Instalar MariaDB
- Ajuste as configurações do PHP
- Baixe e instale o Pydio
O Pydio é um poderoso software de solução de compartilhamento e sincronização de arquivos da web de código aberto para colaboração online, semelhante ao Gdrive ou outros serviços de compartilhamento de arquivos online. Principalmente escrito em linguagem de programação PHP e Ajax, o Pydio pode ser instalado em um servidor privado virtual Linux ou servidor físico em servidores web Apache/Nginx, sistema de gerenciamento de banco de dados PHP e MySQL/MariaDB (também conhecido como pilha LAMP ou LEMP), ou pode ser implantado na nuvem também.
Neste tutorial, abordaremos o processo de instalação e configuração do Pydio Community Edition da fonte na versão Debian 9, no topo da pilha LAMP. Cobriremos todo o processo de instalação do zero com todas as etapas necessárias que você precisa executar em seu servidor Debian para construir uma nuvem online privada para compartilhar documentos, filmes, músicas ou qualquer outro tipo de arquivo.
Requisitos
Você precisa atender aos seguintes requisitos para implantar uma solução de nuvem de compartilhamento de arquivos Pydio em suas instalações:
- Um servidor físico dedicado ou uma máquina virtual ou um VPS com no mínimo 2Gb de RAM e a versão mais recente do Debian 9 instalada.
- Uma das placas de interface de rede do servidor deve ser configurada com um endereço IP estático ou o servidor DHCP deve ser configurado para conceder o mesmo endereço IP para a NIC do servidor
- Privilégios root do console do servidor remotamente via SSH ou localmente ou um usuário local ou LDAP com privilégios root para o sistema via utilitário sudo.
- Um nome de domínio registrado publicamente ou um nome de domínio local privado configurado por meio de seu próprio servidor DNS em suas instalações. O nome de domínio deve ser configurado com todos os registros DNS necessários, como registros A e CNAME para apontar para www. No entanto, você ainda pode implantar o Pydio e acessar a nuvem da Web por meio do endereço IP do seu servidor, caso não possua um nome de domínio.
- Um servidor de e-mail configurado em suas instalações para usar o registro do Pydio ou outros recursos. Você também pode usar um serviço de correio público neste caso, como Gmail ou Yahoo!
Pré requisitos
Para começar, faça login no console do servidor com a conta root ou uma conta com poderes de root e execute os seguintes comandos para garantir que seu sistema Debian esteja atualizado com os últimos patches de segurança, software, repositórios e kernel atualizações.
apt update
apt upgrade
Na próxima etapa, configure um nome descritivo para o nome do host da sua máquina com o comando abaixo (substitua a variável do nome do host de acordo).
hostnamectl set-hostname www.mysharedfiles.com
Verifique o nome do host da máquina e o registro aplicado no arquivo de hosts do sistema emitindo os seguintes comandos.
hostnamectl
cat /etc/hostname
hostname –f
hostname –s
Por fim, reinicie o servidor para aplicar as atualizações do kernel e o nome do host será alterado corretamente.
systemctl reboot
Na próxima etapa, faça login novamente no sistema com privilégios de root e instale os seguintes utilitários do sistema, como zip, unzip (para descompactar arquivos zip), curl e wget (baixar arquivos online) e preenchimento automático da linha de comando bash-completion.
su -
apt install bash-completion zip unzip curl wget imagemagick unoconv
Para editar, compor ou converter diferentes formatos de imagem e converter documentos por meio da interface da web Pydio, instale o software ImageMagick e os utilitários unoconv - Universal Office Converter executando o seguinte comando.
apt install imagemagick unoconv
Se você tiver compartilhamentos Samba que precisam ser montados em espaços de trabalho Pydio, instale o cliente samba no Debian com o seguinte comando.
apt-get install smbclient
Instalar Apache e PHP
Na próxima etapa, começaremos instalando os componentes do lado do servidor da pilha LAMP exigida pela nuvem de arquivo de compartilhamento da web Pydio: o servidor Apache HTTP e o interpretador de linguagem de programação PHP. Também instalaremos todos os módulos e extensões Pydio PHP necessários. Emita o seguinte comando para instalar todos os componentes de software descritos que acabamos de discutir.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-cli php7.0-curl php7.0-zip php7.0-xmlrpc php7.0-intl php-imagick php-smbclient
Em seguida, verifique se todos os módulos PHP instalados estão habilitados em seu sistema, algo que você pode fazer executando o seguinte comando.
php7.0 –m
Na próxima etapa, habilite a reescrita do servidor Apache HTTP e os módulos SSL que permitirão o uso de arquivos .htaccess no caminho raiz do documento do servidor da Web para que possamos forçar os visitantes a navegar com segurança no site por meio do protocolo HTTPS. O módulo SSL protegerá o tráfego entre o servidor e os navegadores do cliente com um certificado autoassinado emitido automaticamente pelo Apache. Habilite o arquivo de configuração Apache SSL para que o módulo SSL funcione corretamente. Execute o seguinte comando para ativar todas as configurações necessárias.
a2enmod ssl rewrite
a2ensite default-ssl.conf
Em seguida, abra o arquivo de configuração do site SSL padrão do Apache com um editor de texto e adicione as linhas de código das regras de reescrita de URL após a diretiva DocumentRoot, conforme mostrado no exemplo abaixo.
nano /etc/apache2/sites-enabled/default-ssl.conf
Trecho do arquivo de configuração do site SSL:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Salve e feche o arquivo SSL Apache conf e também abra o arquivo vhost conf padrão para edição. Aqui, adicione as mesmas regras de regravação de URL do arquivo de configuração SSL. Insira as linhas de código após a instrução DocumentRoot conforme mostrado no exemplo abaixo.
nano /etc/apache2/sites-enabled/000-default.conf
000-default.conf trecho do arquivo:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Para aplicar todas as alterações feitas até agora, você precisa reiniciar o daemon do Apache emitindo o comando abaixo.
systemctl restart apache2
Configurar o Firewall
Antes de visitar seu nome de domínio ou endereço IP do servidor por meio de um navegador da web aberto em um computador em suas instalações, primeiro adicione as regras de firewall necessárias para permitir que o tráfego da web passe pelo firewall. Se o seu servidor Debian vem com o aplicativo de firewall UFW, você deve adicionar algumas novas regras para permitir que o tráfego HTTP/S passe pelo firewall emitindo os seguintes comandos.
ufw allow 'WWW Full'
ou
ufw allow 80/tcp
ufw allow 443/tcp
Você também deve permitir que o tráfego SSH passe pelo firewall UFW em caso de conexões remotas com o servidor.
ufw allow 22/tcp
Se o seu servidor Debian estiver atrás de um firewall iptables, adicione as seguintes regras iptables raw para permitir que o tráfego de entrada das portas 80 e 443 passe pelo firewall para que visitantes externos possam navegar no aplicativo.
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service
Caso você esteja conectado ao servidor Debian remotamente via SSH, você deve primeiro adicionar a regra abaixo para permitir que o tráfego SSH passe pelo firewall iptables. Caso contrário, você ficará bloqueado, porque o firewall começará a descartar todo o tráfego de entrada na porta 22.
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
Por fim, para testar se você pode acessar o servidor Apache HTTP de um computador remoto em sua LAN, abra um navegador e visite seu nome de domínio ou endereço IP do servidor via protocolo HTTPS. Para exibir o endereço IP do servidor, execute ifconfig ou ip um comando no terminal. Se sua máquina fizer parte de sua rede de infraestrutura interna e estiver oculta atrás de uma rede NAT-ed, execute o comando abaixo para obter o endereço IP público.
curl ipinfo.io/ip
Como você está usando os pares de certificados autoassinados automaticamente emitidos pelo Apache na instalação, o certificado será marcado como não confiável pelo navegador e um aviso de erro deve ser exibido no navegador. Clique em continuar para ignorar este aviso, aceite o certificado não confiável e continue a ser redirecionado para a página da Web padrão do Apache.
https://seudominio.tld
Até agora, instalamos apenas o servidor web Apache e o interpretador PHP em nosso servidor Debian. Para completar a pilha LAMP, necessária para instalar a solução de compartilhamento de arquivos Pydio, precisamos instalar um componente final que está faltando: um back-end de banco de dados RDBMS.
Instalar MariaDB
Neste tutorial, instalaremos o Pydio com o servidor de banco de dados MariaDB como back-end. No banco de dados MariaDB, o aplicativo Pydio armazenará usuários, configurações de sites e outros dados diversos. Para instalar o servidor e cliente de banco de dados MariaDB e a extensão PHP MySQL no Debian 9, execute o seguinte comando.
apt install mariadb-server mariadb-client php7.0-mysql
Por padrão, a conta raiz do banco de dados pode ser acessada fornecendo uma senha no Debian 9. Para superar esse problema de segurança e proteger o servidor de banco de dados, primeiro faça login no console do MySQL e execute os seguintes comandos para proteger a conta raiz do MariaDB.
mysql -h localhost
Bem-vindo ao monitor MariaDB. Comandos terminam com ; ou \g.
Seu ID de conexão MariaDB é 2
Versão do servidor: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Direitos autorais (c) 2000, 2017, Oracle, MariaDB Corporation Ab e outros.
Digite ajuda; ou \h para obter ajuda. Tipo
MariaDB [(none)]> use mysql;
Lendo as informações da tabela para completar os nomes das tabelas e colunas
Você pode desativar esse recurso para obter uma inicialização mais rápida com -A
Banco de dados alterado
MariaDB [mysql]> update user set plugin='' where user='root';
Consulta OK, 1 linha afetada (0,00 seg)
Linhas correspondidas: 1 Alterado: 1 Avisos: 0
MariaDB [mysql]> flush privileges;
Consulta OK, 0 linhas afetadas (0,00 seg)
MariaDB [mysql]> exit
Na próxima etapa, comece a proteger o servidor MariaDB executando o script mysql_secure_installation. Uma série de perguntas destinadas a proteger o banco de dados MariaDB serão feitas por este script. Responda \sim a todas as perguntas: remova usuários anônimos, desabilite o login root remoto e exclua o banco de dados de teste. Além disso, certifique-se de configurar uma senha forte para a conta root do banco de dados, conforme mostrado no trecho abaixo.
mysql_secure_installation
==========================================================================================
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
======================================================================================
Após a conclusão do script, tente efetuar login no banco de dados a partir do console sem senha de root. O acesso ao banco de dados deve ser negado se nenhuma senha for fornecida para a conta root, conforme ilustrado no trecho de comando abaixo:
mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Se a senha for fornecida, o processo de login deve ser concedido ao console MySQL, conforme mostrado na amostra de comando. Digite exit para sair do console do banco de dados.
mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
Ajustar as configurações do PHP
Em seguida, abra o arquivo de configuração padrão do PHP para edição e altere as seguintes variáveis do PHP conforme descrito abaixo. Defina a configuração de fuso horário do PHP para corresponder à localização geográfica do seu sistema. A variável date.timezone do PHP pode ser encontrada consultando a lista de fusos horários fornecida pela documentação do PHP no seguinte link http://php.net/manual/en/timezones.php
Primeiro, faça um backup do arquivo de configuração do PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
Pesquise, edite e altere as seguintes variáveis no arquivo de configuração php.ini:
file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
output_buffering = 0
date.timezone = Europe/London
Você deve aumentar a variável upload_max_file_size no arquivo de configuração do PHP para suportar anexos de arquivos grandes.
Você também deve adicionar configurações de plug-in OPCache para PHP7 para aumentar a velocidade de carregamento do aplicativo da web. Edite o arquivo php.ini e anexe as seguintes linhas de código na parte inferior do arquivo, sob a instrução [opcache], conforme detalhado abaixo:
nano /etc/php/7.0/apache2/php.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Depois de adicionar todas as linhas de código descritas abaixo, feche o arquivo de configuração php.ini e verifique se as variáveis OPCache foram adicionadas corretamente emitindo o seguinte comando.
grep opcache /etc/php/7.0/apache2/php.ini
Para criptografar e proteger arquivos Pydio via codificação PHP, instale o software Ioncube em seu servidor Debian emitindo os seguintes comandos:
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfz ioncube_loaders_lin_x86-64.tar.gz
cp ioncube/ioncube_loader_lin_7.0.so /usr/lib/php/20151012/
Em seguida, edite o arquivo de configuração do ioncube e adicione a seguinte linha.
nano /etc/php/7.0/apache2/conf.d/00-ioncube.ini
00-ioncube.ini trecho do arquivo:
zend_extension=ioncube_loader_lin_7.0.so
Reinicie o servidor Apache para aplicar a extensão Ioncube.
systemctl restart apache2
Como etapa final na configuração da pilha LAMP, crie um arquivo de informações PHP no caminho webroot do servidor web executando o seguinte comando.
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
Visite o arquivo de script de informações do PHP em um navegador no URL a seguir e verifique se o Ioncube Zend foi carregado com sucesso e, também, role para baixo até a configuração de data para verificar a configuração do fuso horário do PHP. As configurações de fuso horário devem refletir a localização geográfica do PHP configurada anteriormente.
https://domain.tld/info.php
Baixe e instale o Pydio
Agora que todos os requisitos do sistema foram atendidos para instalar o software da comunidade Pydio, abra um navegador e navegue até a página de download oficial do Pydio em https://pydio.com/en/community e copie o link de download para obter o arquivo zip mais recente em seu sistema através do utilitário wget.
wget https://download.pydio.com/pub/core/archives/pydio-core-8.0.2.zip
Depois que o download do arquivo zip do Pydio terminar, extraia o arquivo zip para o diretório de trabalho atual e liste os arquivos extraídos com o comando ls.
unzip pydio-core-8.0.2.zip
ls
Em seguida, remova o arquivo index.html padrão instalado pelo servidor web Apache para o caminho webroot e também exclua o arquivo info.php criado anteriormente.
rm /var/www/html/index.html
rm /var/www/html/public/info.php
Copie os arquivos de instalação do Pydio localizados em seu diretório de trabalho atual no diretório pydio-core-8.0.2/. Emita o comando ls para listar os arquivos desse diretório para arquivos ocultos. Copie todo o conteúdo do diretório extraído para o caminho raiz do documento do servidor da Web emitindo o seguinte comando. Além disso, certifique-se de copiar o arquivo oculto .htaccess para o caminho webroot.
ls -al pydio-core-8.0.2
cp -rf pydio-core-8.0.2/* /var/www/html/
cp pydio-core-8.0.2/.htaccess /var/www/html/
Em seguida, conceda ao usuário de tempo de execução do Apache permissões de gravação completas para o caminho raiz do documento executando o seguinte comando. Use o comando ls para listar as permissões dos arquivos instalados do aplicativo no diretório /var/www/html/.
chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/
Em seguida, abra o arquivo de configuração Pydio bootstrap_conf.php localizado no caminho webroot e modifique as linhas abaixo, conforme mostrado no trecho do arquivo abaixo:
nano /var/www/html/conf/bootstrap_conf.php
exemplo de arquivo bootstrap_conf.php:
setlocale(LC_ALL, "en_US.UTF-8");
define("AJXP_LOCALE", "en_EN.UTF-8");
Na próxima etapa, faça login no console do banco de dados MariaDB e crie o banco de dados do aplicativo Pydio. Além disso, adicione um novo usuário MySQL para gerenciar o banco de dados Pydio e configure uma senha forte para esse usuário. Emita os comandos abaixo para criar banco de dados e usuário e certifique-se de substituir o nome do banco de dados, usuário e senha usados neste guia por suas próprias configurações.
mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 305
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE pydio_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on pydio_db.* to 'pydio_user'@'localhost' identified by 'mypass123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Depois de criar o banco de dados, abra um navegador e navegue até o endereço IP do seu servidor ou nome de domínio por meio do protocolo HTTPS para iniciar o processo de instalação da Web do Pydio. Na primeira tela de instalação, selecione seu idioma e clique no botão Iniciar assistente para iniciar o processo de instalação.
Na próxima tela de instalação, adicione um título de aplicativo e a mensagem de boas-vindas para o aplicativo Pydio e pressione o botão Avançar para passar para a próxima tela de configuração.
Em seguida, adicione o nome e o nome completo do administrador do aplicativo Pydio. Forneça e confirme uma senha forte para a conta de administrador e clique no botão Avançar para passar para a próxima tela de configuração.
Na próxima tela, defina as configurações de conexão do banco de dados. Selecione MySQL como tipo de banco de dados, use localhost como host de banco de dados e adicione o nome do banco de dados Pydio, usuário e senha criados anteriormente para se conectar ao banco de dados. Pressione o botão Testar conexão do banco de dados para fazer login no banco de dados Pydio e prosseguir com o processo de instalação.
Na tela de opções avançadas, altere o conjunto de dados de codificação do aplicativo e o endereço do URL do servidor, caso não tenham sido detectados corretamente, ative a configuração de cache, adicione seu endereço de e-mail e idioma padrão e clique no botão Instalar Pydio para iniciar a instalação.
Após a conclusão do processo de instalação, o assistente de instalação o redirecionará automaticamente para o formulário da página de login do Pydio. Forneça o nome de usuário e a senha do administrador do aplicativo configurados durante o processo de instalação para fazer login no painel do Pydio.
Você também pode fazer login no aplicativo de compartilhamento da web Pydio visitando seu nome de domínio ou endereço IP do servidor por meio do protocolo HTTPS.
https://www.seudominio.tld
Depois de fazer login no painel de administração do Pydio, você pode seguir o tour do assistente que aparecerá para aprender rapidamente como gerenciar o aplicativo por meio do painel de administração da web.
Alguns visitantes podem navegar pelo aplicativo Pydio de maneira não segura por meio do protocolo HTTP. Para forçar todos os visitantes a navegar com segurança na interface do Pydio via protocolo HTTPS, volte ao console do seu servidor e edite o arquivo .htaccess localizado no diretório raiz da web, emitindo o seguinte comando.
nano /var/www/html/public/.htaccess
Depois que o arquivo .htaccess for aberto para edição, procure a linha que começa com RewriteEngine on e adicione as regras de redirecionamento abaixo nesta linha.
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Além disso, se você quiser alterar as configurações do servidor PHP para poder aumentar os tamanhos de upload de arquivos ou outras variáveis PHP, anexe as linhas abaixo na parte inferior do arquivo .htaccess, conforme mostrado no trecho abaixo.
php_value upload_max_filesize 50M
php_value post_max_size 50M
Parabéns! Você instalou com sucesso o aplicativo de sincronização e compartilhamento de arquivos Pydio no servidor Debian 9. Para outros tipos especiais de procedimentos de instalação e configurações do aplicativo, visite a página de documentação do Pydio no seguinte endereço: https://pydio.com/en/docs/administration-guides