O Seafile é uma plataforma de compartilhamento e sincronização de arquivos open-source e auto-hospedada. Os usuários podem armazenar e, opcionalmente, criptografar dados em seus próprios servidores, tendo o espaço de armazenamento como única limitação. Com o Seafile, você pode compartilhar arquivos e pastas usando links de sincronização multi-plataformas e protegidos por senha para arquivos com datas de validade. O recurso de versionamento de arquivo significa que os usuários podem restaurar arquivos ou pastas excluídos e modificados.
Neste tutorial, você instalará e configurará o Seafile em um servidor Debian 10. Você usará o MariaDB (a variante padrão do MySQL no Debian 10) para armazenar dados para os diferentes componentes do Seafile e o Apache como servidor proxy para lidar com o tráfego web. Após concluir este tutorial, você poderá usar a interface web para acessar o Seafile a partir de clientes móveis ou desktops, permitindo sincronizar e compartilhar seus arquivos com outros usuários ou grupos no servidor ou com o público.
Antes de começar este guia, você precisará do seguinte:
Um servidor Debian com no mínimo de 2GB de RAM configurado seguindo o tutorial Initial Server Setup with Debian 10, incluindo um usuário sudo não-root e um firewall.
Um servidor web Apache com um virtual host configurado para o domínio registrado seguindo o guia How To Install the Apache Web Server on Debian 10. Ao seguir este guia, certifique-se de configurar um virtual host que aponte para o seu nome de domínio.
Um servidor de banco de dados MariaDB instalado e configurado. Siga os passos no tutorial How To Install MariaDB on Debian 10 para configurar isso. Pule o Passo 3 deste tutorial - “(Optional) Adjusting User Authentication and Privileges”. Você fará apenas conexões locais com o servidor de banco de dados, portanto, não é necessário alterar o método de autenticação para o usuário root.
Um certificado SSL instalado em seu servidor seguindo o tutorial How To Secure Apache with Let’s Encrypt on Debian 10.
Um nome de domínio totalmente qualificado. Usaremos seu_domínio
ao longo deste tutorial.
Os dois registros DNS a seguir configurados para o seu servidor. Você pode seguir esta documentação Introduction to DigitalOcean DNS para detalhes de como adicioná-los.
seu_domínio
apontando para o endereço IP público do seu servidor.www.seu_domínio
apontando para o endereço IP público do seu servidor.O Seafile requer três componentes para funcionar corretamente:
Cada um desses componentes armazena seus dados separadamente em seu próprio banco de dados. Neste passo, você criará os três bancos de dados MariaDB e um usuário antes de prosseguir com a configuração do servidor.
Primeiro, efetue login no servidor usando SSH com seu nome de usuário e endereço IP:
ssh sammy@ip_do_seu_servidor
Conecte-se ao servidor de banco de dados MariaDB como administrador (root):
- sudo mysql
No prompt do MariaDB, use o seguinte comando SQL para criar o usuário do banco de dados:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'senha';
Em seguida, você criará os seguintes bancos de dados para armazenar os dados dos três componentes do Seafile:
ccnet-db
para o servidor Ccnet.seahub-db
para o frontend web Seahub.seafile-db
para o servidor Seafile.No prompt do MariaDB, crie seus bancos de dados:
- CREATE DATABASE 'ccnet-db' CHARACTER SET = 'utf8';
- CREATE DATABASE 'seafile-db' CHARACTER SET = 'utf8';
- CREATE DATABASE 'seahub-db' CHARACTER SET = 'utf8';
Em seguida, conceda todos os privilégios ao seu usuário de banco de dados para acessar e fazer alterações nesses bancos de dados:
- GRANT ALL PRIVILEGES ON 'ccnet-db'.* to 'sammy'@localhost;
- GRANT ALL PRIVILEGES ON 'seafile-db'.* to 'sammy'@localhost;
- GRANT ALL PRIVILEGES ON 'seahub-db'.* to 'sammy'@localhost;
Saia do prompt do MariaDB digitando exit
:
- exit
Agora que você criou um usuário e os bancos de dados necessários para armazenar os dados de cada um dos componentes do Seafile, você instalará as dependências para baixar o pacote do servidor Seafile.
Algumas partes do Seafile são escritas em Python e, portanto, requerem módulos e programas adicionais em Python para funcionar. Neste passo, você instalará essas dependências necessárias antes de baixar e extrair o pacote do servidor Seafile.
Para instalar as dependências usando o apt
, execute o seguinte comando:
- sudo apt install python-setuptools python-pip python-urllib3 python-requests python-mysqldb ffmpeg
As dependências python-setuptools
e python-pip
supervisionam a instalação e o gerenciamento de pacotes Python. Os pacotes python-urllib3
e python-orders
fazem solicitações aos websites. Finalmente, o python-mysqldb
é uma biblioteca para usar o MariaDB no Python e o ffmpeg
lida com arquivos multimídia.
O Seafile requer o Pillow
, uma biblioteca python para processamento de imagens, e o moviepy
para lidar com as miniaturas dos arquivos de filmes. Estes módulos não estão disponíveis no repositório de pacotes Debian, então instale-os com o pip
:
- sudo pip install Pillow moviepy
Agora que você instalou as dependências necessárias, pode fazer o download do pacote do servidor Seafile.
O Seafile cria diretórios adicionais durante a instalação. Para mantê-los todos organizados, crie um novo diretório e mude para ele:
- mkdir seafile
- cd seafile
Você pode baixar a versão mais recente (7.0.4
no momento em que este artigo foi escrito) do servidor Seafile a partir do website do projeto executando este comando:
- wget https://download.seadrive.org/seafile-server_7.0.4_x86-64.tar.gz
O Seafile distribui o download como um arquivo tar compactado, o que significa que você precisará extraí-lo antes de continuar. Extraia o arquivo usando tar
:
- tar -zxvf seafile-server_7.0.4_x86-64.tar.gz
Agora mude para o diretório extraído:
- cd seafile-server-7.0.4
Nesta fase, você baixou e extraiu o pacote do servidor Seafile e também instalou as dependências necessárias. Agora você está pronto para configurar o servidor Seafile.
O Seafile precisa de algumas informações sobre sua configuração antes de iniciar os serviços pela primeira vez. Isso inclui detalhes como o nome do domínio, a configuração do banco de dados e o caminho em que os dados serão armazenados. Para iniciar a série de solicitações de perguntas para fornecer essas informações, você pode executar o script setup_seafile_mysql.sh
, incluído no arquivo que você extraiu na etapa anterior.
Execute o script usando o bash
:
- bash setup-seafile-mysql.sh
Pressione ENTER
para continuar quando solicitado.
O script agora fará uma série de perguntas. Onde quer que os padrões sejam mencionados, pressionar a tecla ENTER
utilizará esse valor.
Este tutorial usa Seafile
como o nome do servidor, mas você pode alterá-lo se desejar:
Question 1
What is the name of the server?
It will be displayed on the client. 3 - 15 letters or digits
[ server name ] Seafile
Para Question 2
, digite o nome de domínio para esta instância do Seafile.
Question 2
What is the ip or domain of the server?.
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] seu_domínio
Pressione ENTER
para aceitar o valor padrão para a Question 3
. Se você configurou o armazenamento externo, por exemplo, usando NFS ou armazenamento em bloco, precisará especificar o caminho para esse local aqui.
Question 3
Where do you want to put your seafile data?
Please use a volume with enough free space
[ default "/home/sammy/seafile/seafile-data" ]
Para Question 4
pressione ENTER
para aceitar o número da porta padrão.
Question 4
Which port do you want to use for the seafile fileserver?
[ default "8082" ]
O próximo prompt permite confirmar a configuração do banco de dados. Você pode criar novos bancos de dados ou usar bancos de dados existentes para configuração. Para este tutorial, você criou os bancos de dados necessários no Passo 1, então selecione a opção 2
aqui.
-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------
[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases
[ 1 or 2 ] 2
As perguntas 6 a 9 estão relacionadas ao servidor de banco de dados MariaDB. Você precisa fornecer o nome de usuário e a senha do usuário MySQL que você criou no Passo 1, mas você pode pressionar ENTER
para aceitar os valores padrão para host
e port
.
What is the host of mysql server?
[ default "localhost" ]
What is the port of mysql server?
[ default "3306" ]
Which mysql user to use for seafile?
[ mysql user for seafile ] sammy
What is the password for mysql user "seafile"?
[ password for seafile ] senha
Após fornecer a senha, o script solicitará os nomes dos bancos de dados do Seafile. Use ccnet-db
, seafile-db
, e seahub-db
para este tutorial. O script verificará se há uma conexão bem-sucedida aos bancos de dados antes de continuar exibindo um resumo da configuração inicial.
Enter the existing database name for ccnet:
[ ccnet database ] ccnet-db
verifying user "sammy" access to database ccnet-db ... done
Enter the existing database name for seafile:
[ seafile database ] seafile-db
verifying user "sammy" access to database seafile-db ... done
Enter the existing database name for seahub:
[ seahub database ] seahub-db
verifying user "sammy For this tutorial you have" access to database seahub-db ... done
---------------------------------
This is your configuration
---------------------------------
server name: Seafile
server ip/domain: seu_domínio
seafile data dir: /home/sammy/seafile/seafile-data
fileserver port: 8082
database: use existing
ccnet database: ccnet-db
seafile database: seafile-db
seahub database: seahub-db
database user: sammy
--------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------
Pressione ENTER
para confirmar.
OutputGenerating ccnet configuration ...
done
Successly create configuration dir /home/sammy/seafile/ccnet.
Generating seafile configuration ...
done
Generating seahub configuration ...
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
creating seafile-server-latest symbolic link ... done
-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------
run seafile server: ./seafile.sh { start | stop | restart }
run seahub server: ./seahub.sh { start <port> | stop | restart <port> }
-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------
port of seafile fileserver: 8082
port of seahub: 8000
When problems occur, Refer to
https://github.com/haiwen/seafile/wiki
for information.
Você estará executando o Seafile atrás do Apache, o que você já permitiu através do firewall do servidor. Portanto, você não precisa se preocupar em abrir as portas 8082
e 8000
e pode ignorar essa parte da saída.
Você concluiu a configuração inicial do servidor. No próximo passo, você configurará o servidor web Apache antes de iniciar os serviços do Seafile.
Nesta etapa, você configurará o servidor web Apache para encaminhar todas as solicitações ao Seafile. O uso do Apache dessa maneira permite que você use uma URL sem um número de porta, habilite conexões HTTPS com o Seafile e utilize a funcionalidade de armazenamento em cache fornecida pelo Apache para obter melhor desempenho.
Para começar a encaminhar solicitações, você precisará habilitar o módulo proxy_http
na configuração do Apache. Este módulo fornece recursos para fazer proxy de solicitações HTTP e HTTPS. O seguinte comando ativará o módulo:
- sudo a2enmod proxy_http
Nota: Os módulos Apache rewrite e ssl também são necessários para esta configuração. Você já ativou esses módulos como parte da configuração do Let’s Encrypt no segundo tutorial do Apache listado na seção de pré-requisitos.
Em seguida, atualize a configuração do virtual host do seu_domínio
para encaminhar solicitações ao servidor de arquivos Seafile e à interface web Seahub.
Abra o arquivo de configuração em um editor de texto:
- sudo nano /etc/apache2/sites-enabled/seu_domínio-le-ssl.conf
As linhas de ServerAdmin
até SSLCertificateKeyFile
fazem parte da configuração inicial do Apache e do Let’s Encrypt que você definiu nos tutoriais de pré-requisito. Adicione o conteúdo destacado, iniciando em Alias
e terminando com a diretiva ProxyPassReverse
:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@seu_domínio_de_email
ServerName seu_domínio
ServerAlias www.seu_domínio
DocumentRoot /var/www/seu_domínio/html
ErrorLog ${APACHE_LOG_DIR}/seu_domínio-error.log
CustomLog ${APACHE_LOG_DIR}/seu_domínio-access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/seu_domínio/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/seu_domínio/privkey.pem
Alias /media /home/sammy/seafile/seafile-server-latest/seahub/media
<Location /media>
Require all granted
</Location>
# seafile fileserver
ProxyPass /seafhttp http://127.0.0.1:8082
ProxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteEngine On
RewriteRule ^/seafhttp - [QSA,L]
# seahub web interface
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>
</IfModule>
A diretiva Alias mapeia o caminho da URL seu_domínio/media
para um caminho local no sistema de arquivos que o Seafile utiliza. A diretiva seguinte, Location
, habilita o acesso ao conteúdo deste diretório. As diretivas ProxyPass
e ProxyPassReverse
fazem o Apache agir como um proxy reverso para este host, encaminhando solicitações para /
e /seafhttp
para a interface web e para o servidor de arquivos Seafile em execução nas portas do host local 8000
e 8082
respectivamente. A diretiva RewriteRule
passa todas as solicitações para /seafhttp
inalteradas e interrompe o processamento de novas regras ([QSA,L]
).
Salve e saia do arquivo.
Teste se há algum erro de sintaxe na configuração do virtual host:
- sudo apache2ctl configtest
Se ele informar Syntax OK
, então não há problemas com sua configuração. Reinicie o Apache para que as alterações entrem em vigor:
- sudo systemctl restart apache2
Agora você configurou o Apache para atuar como um proxy reverso para o servidor de arquivos Seafile e o Seahub. Em seguida, você atualizará as URLs na configuração do Seafile antes de iniciar os serviços.
Agora que você está usando o Apache para fazer proxy de todas as solicitações para o Seafile, será necessário atualizar as URLs nos arquivos de configuração do Seafile no diretório conf
usando um editor de texto antes de iniciar o serviço Seafile.
Abra ccnet.conf
em um editor de texto:
- nano /home/sammy/seafile/conf/ccnet.conf
Perto do topo do arquivo, dentro do bloco [General]
, está a diretiva SERVICE_URL
. Ela parecerá assim:
. . .
SERVICE_URL=http://www.example.com:8000
. . .
Modifique essa configuração para apontar para o seu domínio. Verifique se a URL fornecida usa o protocolo HTTPS e se não inclui nenhum número de porta:
. . .
SERVICE_URL = https://seu_domínio
. . .
Salve e saia do arquivo depois de adicionar o conteúdo.
Agora abra seahub_settings.py
em um editor de texto:
- nano /home/sammy/seafile/conf/seahub_settings.py
Adicione uma configuração FILE_SERVER_ROOT
no arquivo para especificar o caminho onde o servidor de arquivos está atendendo a uploads e downloads de arquivos:
# -*- coding: utf-8 -*-
SECRET_KEY = "..."
FILE_SERVER_ROOT = 'https://seu_domínio/seafhttp'
# ...
Salve e saia do arquivo seahub_settings.py
.
Agora você pode iniciar o serviço Seafile e a interface Seahub:
- cd /home/sammy/seafile/seafile-server-7.0.4
- ./seafile.sh start
- ./seahub.sh start
Como esta é a primeira vez que você inicia o serviço Seahub, ele solicita que você crie uma conta de administrador. Digite um endereço de email válido e uma senha para este usuário administrador:
OutputWhat is the email for the admin account?
[ admin email ] admin@seu_domínio_de_email
What is the password for the admin account?
[ admin password ] senha
Enter the password again:
[ admin password again ] senha
----------------------------------------
Successfully created seafile admin
----------------------------------------
Seahub is started
Done.
Abra https://seu_domínio
em um navegador web e faça login usando seu endereço de e-mail e a senha de administrador do Seafile.
Uma vez logado com sucesso, você pode acessar a interface de administração ou criar novos usuários.
Agora que você verificou que a interface web está funcionando corretamente, você pode ativar esses serviços para iniciar automaticamente na inicialização do sistema no próximo passo.
Para permitir que o servidor de arquivos e a interface web iniciem automaticamente na inicialização, você pode criar seus respectivos arquivos de serviço systemd
e ativá-los.
Crie um arquivo de serviço systemd
para o servidor de arquivos Seafile:
- sudo nano /etc/systemd/system/seafile.service
Adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=Seafile
After=network.target mysql.service
[Service]
Type=forking
ExecStart=/home/sammy/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/sammy/seafile/seafile-server-latest/seafile.sh stop
User=sammy
Group=sammy
[Install]
WantedBy=multi-user.target
Aqui, as linhas ExecStart
e ExecStop
indicam os comandos que são executados para iniciar e parar o serviço Seafile. O serviço será executado com sammy
como User
e Group
. A linha After
especifica que o serviço Seafile será iniciado após o início da rede e do serviço MariaDB.
Salve o seafile.service
e saia.
Crie um arquivo de serviço systemd
para a interface web do Seahub:
- sudo nano /etc/systemd/system/seahub.service
Isso é semelhante ao serviço Seafile. A única diferença é que a interface web é iniciada após o serviço Seafile. Adicione o seguinte conteúdo a este arquivo:
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/sammy/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/sammy/seafile/seafile-server-latest/seahub.sh stop
User=sammy
Group=sammy
[Install]
WantedBy=multi-user.target
Salve o seahub.service
e saia.
Você pode aprender mais sobre arquivos de unidade do systemd no tutorial Understanding Systemd Units and Unit Files.
Por fim, para permitir que os serviços Seafile e Seahub sejam iniciados automaticamente na inicialização, execute os seguintes comandos:
- sudo systemctl enable seafile.service
- sudo systemctl enable seahub.service
Quando o servidor é reiniciado, o Seafile irá iniciar automaticamente.
Neste ponto, você concluiu a configuração do servidor e agora pode testar cada um dos serviços.
Neste passo, você testará a funcionalidade de sincronização e compartilhamento de arquivos do servidor que você configurou e garantirá que elas estejam funcionando corretamente. Para fazer isso, você precisará instalar o programa cliente do Seafile em um computador separado e/ou em um dispositivo móvel.
Visite a página de download no site da Seafile e siga as instruções para instalar a versão mais recente do programa cliente no seu computador. Os clientes do Seafile estão disponíveis para as várias distribuições do Linux (Ubuntu, Debian, Fedora, Centos/RHEL, Arch Linux), MacOS e Windows. Clientes móveis estão disponíveis para dispositivos Android e iPhone/iPad nas respectivas lojas de aplicativos.
Depois de instalar o cliente Seafile, você pode testar a funcionalidade de sincronização e compartilhamento de arquivos.
Abra o programa cliente do Seafile no seu computador ou dispositivo. Aceite o local padrão para a pasta Seafile e clique em Next.
Na próxima janela, digite o endereço do servidor, nome de usuário e senha e clique em Login.
Na página inicial, clique com o botão direito do mouse em My Library e clique em Sync this library. Aceite o valor padrão para o local no seu computador ou dispositivo.
Adicione um arquivo, por exemplo, um documento ou uma foto, na pasta My Library. Depois de algum tempo, o arquivo será carregado no servidor. A captura de tela a seguir mostra o arquivo photo.jpg copiado para a pasta My Library.
Agora, efetue login na interface web em https://seu_domínio
e verifique se seu arquivo está presente no servidor.
Clique em Share ao lado do arquivo para gerar um link de download para esse arquivo que você pode compartilhar.
Você verificou que a sincronização de arquivos está funcionando corretamente e que você pode usar o Seafile para sincronizar e compartilhar arquivos e pastas de vários dispositivos.
Neste tutorial, você configurou uma instância privada de um servidor Seafile. Agora você pode começar a usar o servidor para sincronizar arquivos, adicionar usuários e grupos e compartilhar arquivos entre eles ou com o público sem depender de um serviço externo.
Quando uma nova versão do servidor estiver disponível, consulte a seção upgrade do manual para verificar os passos para executar uma atualização.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!