Servidor de arquivos com Raspberry Pi e Nextcloud 34

Como já vimos, a Raspberry Pi é uma placa muito poderosa para seu tamanho, que permite rodar o sistema operacional Linux. É de se esperar que várias aplicações diferentes surjam, levando recursos antes somente do desktop para a diminuta peça. Dessa vez, porém, vamos além do desktop, mirando nas nuvens com a criação de um servidor de arquivos usando Nextcloud!

Quem já usou serviços como Google Drive, Microsoft OneDrive e Dropbox, frequentemente deve se perguntar se os serviços se preocupam com a privacidade dos dados. Por mais que as empresas responsáveis garantam que a privacidade é a primeira premissa em seu desenvolvimento, muitos usuários se sentem inseguros em deixar os arquivos nas mãos de terceiros. Afinal de contas, “não existe nuvem, é apenas o computador de outra pessoa”

Apresentando Nextcloud

O Nextcloud vem justamente resolver esse problema. Ele é um servidor de arquivos que permite acesso externo e seguro, basicamente um servidor de arquivos em nuvem privada! Foi criado a partir de outro servidor, o Owncloud. A escalabilidade dele é muito consistente, permitindo a utilização desde à uma interface web para arquivos de um cartão SD, até um cluster de arquivos privados de qualquer lugar do mundo, dependendo apenas da sua conexão com a Internet. Se você tiver a intenção de trafegar/sincronizar vários arquivos fora da rede simultaneamente, e ininterruptamente, a velocidade total vai depender quase em sua totalidade da própria conexão.

Nextcloud

Além de uma interface web, o Nextcloud conta com aplicativos mobile (Android e iOS), e um cliente desktop (Windows, macOS e Linux) que lhe permite usá-lo como sincronizador de arquivos, dependendo somente da rede local.

Instalação Apache e PHP

Como dito anteriormente, o Nextcloud possui versões para Windows, macOS e Linux. Nesse exemplo iremos utilizar a distribuição Raspbian Stretch para instalação do Nextcloud na Raspberry Pi 3 Model B. Para tal, precisamos que o cartão SD rodando na placa esteja com o Raspbian Stretch configurado e conectado à rede. Antes de mais nada, atualizar o sistema é sempre uma boa prática, com os comandos a seguir executados no Terminal:

sudo apt-get update 
sudo apt-get upgrade

O Nextcloud roda em cima de um servidor web, pois ele provê uma interface via browser para gerenciamento dos arquivos. Como é desenvolvido usando linguagem PHP, precisaremos instalar o servidor web Apache para sua execução satisfatória. Em teoria, qualquer servidor web que rode PHP suporta a instalação do Nextcloud, mas nesse tutorial seguiremos com o Apache.

sudo apt-get install apache2

É necessário verificar se o Apache foi instalado corretamente. Para isso, no browser, devemos digitar o endereço IP ao qual a Raspberry está vinculada. O comando ifconfig permite descobrir o IP de maneira mais fácil. Se a placa estiver conectada via cabo, retornaremos o IP através do comando

ifconfig eth0

Para conexões sem fio, através do adaptador wireless, teremos

ifconfig wlan0

Em ambos os casos, o endereço IP atribuído estará próximo à palavra “inet”, na segunda linha. Informando o endereço no browser, teremos a seguinte tela, caso o Apache tenha sido instalado corretamente.

Página web padrão

Precisamos agora instalar o PHP7 e demais componentes para que se integrem ao Apache, permitindo que aplicações web escritas em linguagem PHP (como o Nextcloud!) possam rodar sem problemas. Vamos instalar diversos pacotes, por isso o processo pode ser demorado

sudo apt-get install php7.0 php7.0-bz2 php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-intl php7.0-json php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-sqlite3 php7.0-xml php7.0-zip php-apcu php-pear libapache2-mod-php7.0

Após a instalação dos pacotes do PHP, reiniciamos o servidor apache através do comando

sudo service apache2 restart

Instalação Nextcloud

O Apache possui uma pasta onde as aplicações rodam nativamente. Antes de baixar/instalar o Nextcloud, mudamos para ela

cd /var/www/html

Agora sim, fazemos o download da última versão do Nextcloud, descompactando-o em seguida

curl https://download.nextcloud.com/server/releases/latest.tar.bz2 | sudo tar -jxv

Mudamos para a pasta do Nextcloud, criada após o download

cd /var/www/html/nextcloud

Criamos uma pasta de data

sudo mkdir -p /var/www/html/nextcloud/data

E alteramos as permissões da pasta para que o Nextcloud possa escrever nela

sudo chown www-data:www-data /var/www/html/nextcloud/data 
sudo chmod 750 /var/www/html/nextcloud/data 
sudo chown www-data:www-data config apps

Tudo instalado, agora vamos à configuração

Configurando Nextcloud na primeira execução

Para acessar o Nextcloud, vamos diretamente ao browser, informando o endereço http://MEUENDERECOIP/nextcloud, o que nos retorna a seguinte página

Configuração Nextcloud

Informe um usuário e senha que você se lembre, e estamos prontos para concluir a configuração, exibindo uma lista de arquivos e pastas previamente configurados!

Servidor de arquivos com Nextcloud

Considerações Finais sobre o servidor de arquivos com Nextcloud

Essa é apenas a interface web do Nextcloud. É possível abrí-lo para acesso externo através de configurações do roteador e servidos de DNS específicos, além de expandir o armazenamento para uso com HDs externos, pen drives e demais dispositivos USB. A utilização de aplicativos mobile para controle de arquivos e sincronia de fotos também é amplamente utilizada no servidor de arquivos, levando realmente um pedaço da nuvem para sua placa Raspberry Pi. Nos próximos artigos vamos abordar também alguns desses recursos, juntamente com um servidor de mídia.

Gostou do post do servidor de arquivos com Raspberry Pi? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

34 Comentários

  1. Estou com problemas ao tentar acessar o site pela primeira vez, ele me retorna um código php

    Robson Alexandre Gonçalves
    1. Olá Robson,

      Consegue demonstrar qual o código php que aparece?

      Abraços!
      Vinícius – Equipe MakerHero

  2. Olá. Estou tentando configurar o meu PI 3 para este uso, mas quando tento executar o nextcloud, informa que preciso pelo menos o PHP7.2.
    Como sou um zero à esquerda em Linux, não consegui ir adiante e fazer a atualização de versão. Nem na internet achei ajuda que funcionasse.
    Conseguem me ajudar?

    Obrigado

    Ildomar Gaedke

    1. Ildomar,

      Na linha de comando em que se instala o PHP 7.0, substitua por 7.2, e verifique se isso resolve.

      Abraços!
      Diogo – Equipe MakerHero

      1. Olá. O meu caso é o mesmo. Acusa que preciso ter pelo menos o php7.2. Fiz o necessário para atualizar, ao final dei um php –version e mostrou que a última versão é a php7.3. Até aí, OK. Mesmo assim digito meu endereço interno da minha wlan0/nextcloud e continua mostrando a mesma notificação pendente.
        Reestartei meu apache2 e nada também

        1. Eu consegui instalar o PHP Versão 7.2, seguindo as instruções constantes neste endereço:

          https://cursos.alura.com.br/forum/topico-instalacao-de-servidor-web-e-do-php-97157

        2. Mas agora apareceu outro problema. Ao abrir o navegador no endereço Ip do Raspberry, surte a tela do PHP. Travei de novo.

          1. Ildomar, consegue demonstrar como é esta página em que você está travado?

            Abraços!
            diogo – Equipe MakerHero

            Diogo Zimmermann
        3. Marcello

          O ideal é utilizar a 7.2 para garantir. Uma opção é utilizar uma versão anterior do OS.

          Abraços!
          Diogo – Equipe MakerHero

  3. Falta um monte de pacote no pi3, quais os repositórios vc utiliza? No meu ele não encontra um monte de pacotes para instalação.

  4. Boa noite.
    Esclareça uma dúvida por favor, no lugar do nextcloud eu poderia usar o openmediavault?Teria a mesma função?

    1. Olá Fabio,

      Eles são diferentes. O NextCloud é mais ou menos uma “solução de armazenamento em nuvem local”. Já o OpenMediaVault é uma solução NAS/servidor, você apenas se conecta a ele pela rede local.

      Abraço!
      Rosana – Equipe MakerHero

  5. Estou há quase uma semana procurando tutorial, no YouTube, de como criar uma nuvem em raspberry pi e nada.
    Graças a Deus tive o bom senso de procurar no Google e encontrei aqui no seu site.
    Parabéns o conteúdo está muito bem explicado, obrigado pela grande ajuda. Sucesso!!!!

    1. Olá Fábio,

      Que bom que nosso post foi útil para você!

      Abraço!

      Rosana – Equipe MakerHero

  6. Olá tenho algumas duvidas, eu cosigo criar um site proprio para usar dessas funções que ele me proporciona? e um aplicativo android tambem ?

    1. O owncloud possui na playstore e na appstore aplicativos.

  7. Parabéns pelo tutorial. Consegui instalar sem problemas o Nextcloud em meu Raspberry Pi 2. Agora gostaria de atualizar e manter as configurações. Como faço isso?

    1. Olá Genilson,

      Você deseja atualizar o Raspbian ou o Nextcloud?

      Abraço!
      Rosana – Equipe MakerHero

  8. eu queria conectar um hd no nextcloud mas não sei como se faz, alguém pode me ajudar ?

    Júlio Victtor Santos de Oliveira.
    1. Eu conectei e configurei depois como armazenamento externo. Assim fica mais fácil, é só colocar o caminho no qual ele é montado.

  9. Olá, muito bom esse tutorial, mais eo bando de dados? nao precisa? vi alguns outros tutoriais por ae e utilizam MariaDB ou MySql, dessa forma posso instalar no ubuntu server no PC?

    1. Oi Edmar, boa tarde!

      Quando você não configura o MySQL (ou até o MariaDB), o Nextcloud por padrão utiliza um banco de dados chamado SQLite… Ele serve bastante à um usuário local, mas não é recomendado quando vários usuários acessam o serviço.
      E pode instalar sim no seu computador rodando Ubuntu, os pacotes serão baixados de acordo com a arquitetura do processador (Arm no caso do Raspberry, e x86/x64 no caso do PC)

      Grande abraço!

  10. Boa tarde Aliston,

     

    Na parte de configuração do nextcloud que vc diz: “Informe um usuário e senha que você se lembre, e estamos prontos para concluir a configuração, exibindo uma lista de arquivos e pastas previamente configurados!”.

     

    Eu não entendi, porque anteriormente neste tutorial não houve um momento que esta configuração foi realizada, então estou travado nesta parte e não sei o que fazer, não entendi isso.

     

    Podem me ajudar?

     

    Obrigado.

    1. Oi Cirleno,

      Você chegou a informar o endereço IP do seu servidor no browser, seguido do caminho /nextcloud?
      No meu exemplo, ficaria “http://192.168.1.21/nextcloud”

      Se sim, o que aparece nessa aba?
      Me deixa entender em que passo você está, e daremos continuidade à sua configuração!

      Grande abraço!

      1. Alliston,

        Como faço pra no lugar de um ip local ser um ip externo?Preciso instalar e acessar o apache de fora da rede local.

        Obrigado

  11. Olá! sou iniciante nesse mundo mas consegui fazer funcionar aqui pelo seu tutorial!

    Tenho algumas duvidas, como por exemplo:
    a) onde ficam os arquivos (local no raspi) utilizando a configuração padrão feita aqui no tutorial?

    b) como posso alterar o local onde são salvos os arquivos? como por exemplo usar um hd (imagino que eu deva “montar um disco”, ja ouvi o termo algumas vezes mas tenho dificuldades em realizar isso, se puder fazer um tutorial eu agradeceria muito!

    c) na tela inicial, o nextcloud recomenda de uma serviço mais robusto além do SQlite, eu segui alguns passos do tutorial em inglês que foi postado no comentário acima pra utilizar o MySQL, mas só funcionou mesmo quando fiz seu tutorial. entendo que eu esteja tanto com o SQlite quanto com o MySQL instalados, mas nao sei como optar por um ou por outro.

    Valeu pela atenção!

    1. Olá, não estou conseguindo postar tudo aqui, veja este link com as respostas as suas perguntas:

      https://pastebin.com/JFr7rksA

  12. Olá, tenho milhões de dúvidas, vamos começar pela mais básica, pelo que entendi o Apache e o PHP são nativos mas não estão instalados corretos?
    Pq não vi informações de onde baixar esses pacotes, apenas o comando para instalar.

    1. Vamos lá Allan! Pode mandar todo o milhão de dúvidas que trocamos algumas ideias!
      Sobre Apache e PHP, eles não são nativos. São pacotes (servidor web e linguagem de programação, respectivamente), que você pode instalar em qualquer lugar, seja Windows, Linux ou macOS.
      A maneira mais direta de instalá-los no Linux é justamente executando esses comandos. Digamos que seja a maneira “oficial” da comunidade. Para baixar, existe o XAMPP, por exemplo, que instala MySql e Perl além dos pacotes previamente ditos. Mas como você pode ver, instala mais coisas do que o necessário.

  13. Muito legal o tutorial. Teria como colocar dois hds em raid 1 e deixar o servidor mais seguro? Obrigado

    1. Oi Danilo! Tem sim, tanto o raid quanto a melhoria de segurança. Mas aí você teria que configurar a partir do Raspbian, e talvez até pelo seu roteador. Já foge da proposta do Plex em si.

      Abraços!

  14. Alliston, muito bom post, meus parabéns!

    Tenho somente dois complementos que gostaria de fazer ao artigo:

    1) Somente a partir das versões mais novas do Raspbian (versões acima da Jessie) que o php7 está disponível para download via gerenciador de pacotes (apt-get). Eu experimentei utilizar o php5 (que está presente no gerenciador de pacotes da versão Jessie e anteriores) e funcionou bem! Para instalar todos os módulos de php5 necessários, utilize o comando abaixo:

    sudo apt-get install -y php5 php5-gd sqlite php5-sqlite php5-curl

    2) Fiz testes com o nextcloud utilizando como banco de dados o SQLite e vi que ele é muito suscetível a corromper-se. Consegui corromper só de mandar a placa dar shutdown enquanto acessava o nextcloud via navegador.
    Portanto, recomendo fortemente o uso do MySQL coo banco de dados (fiz testes e se mostrou muito mais robusto e estável. Para mais informações de como utiizá-lo, veja esse site: http://unixetc.co.uk/2016/11/20/simple-nextcloud-installation-on-raspberry-pi/

    Espero ter contribuído para seu post. Novamente, parabéns pelo post!

    Atenciosamente,
    Pedro Bertoleti

    1. Grande Pedro!

      Muito obrigado, pelos parabéns e pelos complementos. Enriqueceu ainda mais o post, o que dá mais capacidade de escolha para os leitores que estão querendo customizar o servidor. Sempre bom poder contar com um apoio desse nível!

      Um grande abraço!