Como implantar o servidor do Seafile com o Docker para hospedar sua própria solução de sincronização e compartilhamento de arquivos

Quer se autodomer uma solução de nuvem para uso doméstico ou pessoal?Este tutorial passa por tudo que você precisa para implantar seafile com o Docker.

Como implantar o servidor do Seafile com o Docker para hospedar sua própria solução de sincronização e compartilhamento de arquivos

Primeiro, o que é o Seafile?

Seafile é um programa de sincronização de arquivos auto-hospedados que funciona com o modelo de servidor-cliente, em que você tem vários dispositivos como seu laptop e telefone que se conectam a um servidor central.

Ao contrário de algumas alternativas mais populares como NextCloud ou OwnCloud, o Seafile tenta seguir a filosofia de "fazer apenas uma coisa, mas fazer bem". Da mesma forma, o Seafile não tem frescuras extras construídas como contatos ou integração de calendário.

Seafile, em vez disso, concentra-se unicamente na sincronização de arquivos, compartilhamento e as coisas que o rodeiam, e é isso. Como resultado disso, acaba fazendo isso extremamente bem.

Implantando o servidor do Seafile com Docker e NginX

Tutorial avançado: A maioria dos tutoriais aqui está focada em iniciantes. Este não é. Destina-se a usuários avançados que se mexem muito com projetos DIY e preferem auto-host.

Este tutorial presume que você está confortável ao usar a linha de comando, e que você é pelo menos decentemente experiente com os programas que estaremos usando.

Embora todo o processo pudesse ser feito sem usar o NGINX, usar o NGINX permitirá uma configuração mais fácil, além de torná-lo significativamente mais fácil de hospedar mais serviços no futuro.

Se você quiser usar uma configuração de docker completa, poderá configurar NGINX dentro do Docker também, mas só tornará as coisas mais complexas e não adicionarão muito benefício, e também não será coberto neste tutorial.

Instalando e configurando o NGINX

Eu estarei usando o Ubuntu neste tutorial e, portanto, estarei usando apt para instalar pacotes. Se você usa Fedora ou alguma outra distribuição não Debian, use o Gerenciador de pacotes.

Nginx, além de ser um servidor da Web, é o que é conhecido como proxy. Ele funcionará como a conexão entre o servidor do Seafile e a Internet, enquanto também facilita várias tarefas.

Para instalar o NginX, use o seguinte comando:

Comandos para usar no terminal

sudo apt install nginx

Se você quiser usar https (aquele pequeno cadeado no seu navegador), você também precisará instalar Certbot:

Comandos para usar no terminal

sudo apt install certbot python3-certbot-nginx

Em seguida, você precisa configurar o NGINX para se conectar à instância do Seafile que configuramos mais tarde.

Primeiro, execute o seguinte comando:

Comandos para usar no terminal

sudo nano /etc/nginx/sites-available/seafile.conf

Digite o seguinte texto no arquivo:

 server_name localhost;
 location / {
   proxy_pass http://localhost:8080;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
 }
}

IMPORTANTE: Substitua localhost na linha server_name com o endereço que você estará acessando seu servidor (ou seja, seafile.example.com ou 192.168.0.0). Não tem certeza do que colocar?

  • Se você está testando apenas por uma questão de curiosidade, use localhost. Esta configuração só permitirá que você acesse o servidor do seu computador e é isso.
  • Se você quiser usar o Seafile em toda a sua conexão WiFi local (qualquer dispositivo na mesma rede WiFi que você), você deve inserir o endereço IP do seu computador. Você também pode querer definir um endereço IP estático, embora não seja necessário.
  • Se você tiver um endereço IP público que conhece pontos para o seu sistema, use isso.
  • Se você tiver um nome de domínio (ou seja,example.com, exemplo.org) e um endereço IP público para o seu sistema, altere suas configurações de DNS para apontar o nome do domínio para o endereço IP do seu sistema. Isso também exigirá que o endereço IP público aponte para o seu sistema.

Agora você precisa copiar o arquivo de configuração para o diretório NGINX aparece para arquivos e, em seguida, reiniciar o NGINX:

Comandos para usar no terminal

sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf

sudo systemctl restart nginx

Se você configurar o CERTBOT, também precisará executar o seguinte para configurar HTTPS:

Comandos para usar no terminal

sudo certbot

Se solicitado a redirecionar o tráfego HTTP para HTTPS, escolha 2.

Agora seria um bom momento para ter certeza de que tudo o que montamos até agora está funcionando. Se você visitar seu site, você deve obter uma tela que diz algo nas linhas de 502 Bad Gateway.

Nginx Bad Gateway

Instalar Docker e Docker Compose

Agora começa a parte divertida!

Antes de mais nada, você precisa ter Docker e Docker Compose instalado. O Docker Compose é necessário para utilizar um arquivo docker-compose.yml, que tornará o gerenciamento dos vários conteineres necessários mais fácil.

O Docker e o Docker Compose podem ser instalados com o seguinte comando:

Comandos para usar no terminal

sudo apt install docker.io docker-compose

Para verificar se o Docker está instalado e em execução, execute o seguinte:

Comandos para usar no terminal

sudo docker run --rm hello-world

Você deve ver algo ao longo das linhas deste em seu terminal se for concluído com sucesso:

FileFile Docker Helloworld

Se você quiser evitar adicionar sudo ao início do comando docker, você pode executar os seguintes comandos para adicionar-se ao grupo docker:

Comandos para usar no terminal

sudo groupadd docker

sudo usermod -aG docker $USER

O resto deste tutorial assume que você executou os dois comandos acima. Se você não fez, adicione sudo a todos os comandos que começam com docker ou docker-compose.

Instalando o servidor do Seafile

Esta parte é significativamente mais fácil do que a parte anterior. Tudo o que você precisa fazer é colocar algum texto em um arquivo e executar alguns comandos.

Abra um terminal. Em seguida, crie um diretório onde você deseja que o conteúdo do servidor Seafile seja armazenado e entre no diretório:

Comandos para usar no terminal

mkdir ~/seafile-server && cd ~/seafile-server

dir

Vá para o diretório que você criou e execute o seguinte:

Comandos para usar no terminal

nano docker-compose.yml

Em seguida, insira o texto abaixo na janela que aparece:

version: '2.0'
services:
 db:
   image: mariadb
   container_name: seafile-mysql
   environment:
     - MYSQL_ROOT_PASSWORD=password
     - MYSQL_LOG_CONSOLE=true
   volumes:
     - ./data/mariadb:/var/lib/mysql
   networks:
     - seafile-net

 memcached:
   image: memcached
   container_name: seafile-memcached
   entrypoint: memcached -m 256
   networks:
     - seafile-net

 seafile:
   image: seafileltd/seafile-mc
   container_name: seafile
   ports:
     - "8080:80"
   volumes:
     - ./data/app:/shared
   environment:
     - DB_HOST=db
     - DB_ROOT_PASSWD=password
     - TIME_ZONE=Etc/UTC
     - [email protected]
     - SEAFILE_ADMIN_PASSWORD=password
     - SEAFILE_SERVER_LETSENCRYPT=false
     - SEAFILE_SERVER_HOSTNAME=docs.seafile.com
   depends_on:
     - db
     - memcached
   networks:
     - seafile-net

networks:
 seafile-net:

Antes de salvar o arquivo, algumas coisas precisarão ser alteradas:

  • MYSQL_ROOT_PASSWORD: Alterar para uma senha mais forte, você não precisa lembrar disso, então não tente escolher qualquer coisa fácil. Se você precisar de ajuda para fazer um, use um gerador de senha. Eu recomendo 20 caracteres e evitar quaisquer caracteres especiais (todos os símbolos *!@#$%^&**).
  • DB_ROOT_PASSWD: Alterar para o valor definido para MYSQL_ROOT_PASSWORD.
  • SEAFILE_ADMIN_EMAIL: Define o endereço de e-mail para a conta de administrador.
  • SEAFILE_ADMIN_PASSWORD: Define a senha da conta de administrador. Evite tornar isso o mesmo que MYSQL_ROOT_PASSWORD ou DB_ROOT_PASSWD.
  • SEAFILE_SERVER_HOSTNAME: Definir para o endereço definido na configuração do Nginx.

Com isso, você pode ligar tudo com docker-compose:

Comandos para usar no terminal

docker-compose up -d

Pode demorar um ou dois minutos dependendo da sua conexão com a Internet, pois tem que baixar vários contêineres que o Seafile precisa para ser executado.

Depois disso, dê mais alguns minutos para terminar. Você também pode verificar o status dele executando o seguinte:

Comandos para usar no terminal

docker logs seafile

Quando terminar, você verá a seguinte saída:

Correndo do Seafile

Em seguida, basta digitar o endereço que você definiu para SEAFILE_SERVER_HOSTNAME no seu navegador e você deve estar em uma tela de login.

Login do Seafile

E aí está! Tudo está agora totalmente funcional e pronto para ser usado com os clientes.

Instalando os clientes do Seafile

O Seafile no celular está disponível em Google Play, F-Droid e na iOS App Store. O Seafile também possui clientes desktop disponíveis para Linux, Windows e Mac, disponíveis aqui.

O Seafile está prontamente disponível nos sistemas Ubuntu através do pacote seafile-gui:

Comandos para usar no terminal

sudo apt install seafile-gui

O Seafile também está no AUR para usuários do Arch através do pacote seafile-client.

Conclusão

Sinta-se à vontade para explorar os clientes e tudo o que eles têm para oferecer. Eu vou detalhar tudo o que os clientes do Seafile são capazes em um artigo futuro (fique atento 😃).

Se algo não está funcionando direito, ou você só tem uma pergunta em geral, sinta-se à vontade para deixá-la nos comentários abaixo - vou tentar responder sempre que puder!

Última atualização deste artigo: 18 de abril de 2021

PROPAGANDA
PROPAGANDA