Tutorial como criar um servidor de arquivos NAS com Raspberry Pi – SMB e AFP

Objetivos

  • Saber o que é um NAS
  • Entender o que é um servidor de arquivos
  • O que é o protocolo SMB
  • O que é o protocolo AFP
  • Passo a passo para configurar um Raspberry Pi como um servidor de arquivos / NAS com suporte a smb (samba) e afp (netatalk e avahi-daemon)

O que significa NAS?

O termo NAS vem do inglês “Network Attached Storage“, que pode ser traduzido como uma unidade de armazenamento ligado à rede. De forma geral, funciona como um servidor de arquivos.

Para que serve um servidor de arquivos?

Um servidor de arquivos ligado em rede tem como objetivo facilitar o fluxo de informação. Pensando em uma rede doméstica ou empresarial, um servidor de arquivos permite que usuários tenham acesso rápido a arquivos de interesse comuns. Seja uma área de transferência temporária para troca de arquivos entre usuários; ou de forma estruturada, visando organizar informações importantes para acesso de longo prazo.

O que é o software Samba e o protocolo SMB?

Samba é um software que provê recursos para transferência de arquivos através do protocolo smb. Desta forma, é um software que provê os recursos de servidor de arquivos. Tem origem em 1992 e suporte aos sistemas operacionais DOS, Windows, OS/2, Linux etc.
O samba também oferece recursos de servidor de impressão, para integrar diversos clientes a uma impressora.

O que é o protocolo AFP?

O termo AFP vem do inglês “Apple Filing Protocol” que antigamente era conhecido apenas como protocolo Appletalk. É um protocolo de rede proprietário desenvolvido pela Apple Inc.
O protocolo AFP foi o protocolo padrão utilizado pelo Mac OS até antes do Mac OS Mavericks (Mac OS 10.9). Em seguida o protocolo smb foi definido como protocolo primário/padrão. A capacidade de autenticação por AFP ainda é mantida no sistema operacional da Apple na versão Ventura.

Necessidades para realização desta tutorial

Para que seja possível realizar este projeto, basta ter um Raspberry Pi disponível e computadores para testar a conexão. Todas as versões do Raspberry Pi são compatíveis, desde a primeira versão do Raspberry.

Tutorial passo a passo para configurar um Raspberry Pi como um NAS

Passo 1 – Conexão ao Raspberry Pi

O primeiro passo é se conectar ao seu Raspberry por conexão SSH. Caso não tenha um nome de usuário e senha configurados, conecte pelo usuário padrão. Neste exemplo nosso raspberry está configurado no ip 192.168.1.52. Então o comando para conexão será:

 ssh pi@192.168.1.52

A senha padrão do Raspbian recém instalado é:

raspberry

Um alerta, por padrão o raspberry não vem com o servidor SSH habilitado. Na hora de salvar a imagem do sistema operacional no cartão SD pelo Raspberry Pi Imager é possível solicitar que o servidor SSH fique habilitado já no primeiro boot.

Passo 2 – Configuração da estrutura de arquivos

Vamos criar agora um usuário com o nome fileserver. Um grupo com o nome fileserver será criado automaticamente junto com a criação deste usuário. Vamos também utilizar o comando -m, para que ao criar o usuário e o grupo a pasta /home/fileserver também seja criada:

sudo useradd -m fileserver

Devemos agora definir uma pasta para ser compartilhada em nosso NAS. Esta pasta poderá receber acesso de vários usuários registrados. Então vamos chamar ela de “shared”. Vamos criar a pasta com o comando:

sudo mkdir /home/fileserver/shared

Interessante configurar a pasta /home/fileserver/shared de forma que todos os arquivos criados dentro dela, mantenham o grupo fileserver. Execute então o comando abaixo para esta configuração:

sudo chmod g+s /home/fileserver -R

Pensando já nos próximos passos, é interessante que todos os usuários que pertençam ao grupo fileserver, possam ter permissão de leitura/escrita na pasta shared. Execute então o comando:

sudo chmod 770 /home/fileserver -R

Raspberry Pi NAS - criar novo usuário fileserver
Raspberry Pi NAS - criar pasta compartilhada
Raspberry Pi NAS - permissão g+s habilitar bit para manter permissão de grupo fixoRaspberry Pi NAS - chmod 770 permissão de escrita para grupos

Passo 3 – Adicionando usuários ao grupo fileserver

Caso tenha outros usuários configurados no raspberry pi e também deseja que eles tenham acesso a esta pasta compartilhada, precisamos adicioná-los ao grupo do fileserver.

Neste exemplo, vou adicionar o usuário viniciuspaes ao grupo fileserver. O comando será:

sudo usermod -a -G fileserver viniciuspaes

Caso tenha mais usuários, utilize o exemplo do comando acima e adicione todos que deseja fornecer acesso a pasta.

Raspberry Pi NAS - adicionar usuário pesoal ao grupo do servidor de arquivos para que possa escrever no diretório

Passo 4 – Instalando o protocolo SMB e Configurando o Samba

O protocolo smb é amplamente utilizado pelo windows para transferência de arquivos entre cliente e servidor. Instalando o conjunto de aplicativos do Samba temos suporte ao protocolo smb. Para instalar o samba, utilize o comando:

sudo apt install samba samba-common-bin

Agora vamos editar o arquivo de configuração com o comando:

sudo nano /etc/samba/smb.conf

Caminhe até o fim do arquivo e adicione as linhas:

[shared]
path = /home/fileserver/shared
writable = Yes
create mask = 0770
directory mask = 0770
public = no

Com o comando acima, vamos criar o compartilhamento com o nome “shared”. A pasta onde os arquivos deste compartilhamento serão armazenados é a “/home/fileserver/shared”. A máscara de permissão dos diretórios e arquivos vai ser “770” para escrita de grupo. Este compartilhamento não é público, é necessário que o usuário informe login e senha para acesso.

O samba nesta configuração padrão, não utiliza os usuários do linux para autenticação, sendo necessário definir os usuários que podem se autenticar.

Desta forma, vamos adicionar o usuário “viniciuspaes” como um usuário que pode se autenticar no samba e acessar o compartilhamento “shared”:

sudo smbpasswd -a viniciuspaes

Agora vamos reiniciar o daemon do samba com o comando:

sudo systemctl restart smbd

Raspberry Pi NAS - sudo apt install samba samba-common-bin
Raspberry Pi NAS - editar arquivo smb.conf
Raspberry Pi NAS - inicio do arquivo smb.conf
Raspberry Pi NAS - ir para fim do arquivo smb.conf
Raspberry Pi NAS - criar configurações no arquivo smbd
Raspberry Pi NAS - smbdpasswd -a novousuario
Raspberry Pi NAS - service smbd restart

Passo 5 – Testando conexão Samba no Windows

No windows, acesse o windows explorer, e no canto esquerdo localize o item:

Rede (Network)

Clique com botão direito em cima de “Rede” e escolha a opção:

Mapear unidade de rede… (Map network drive…)

Neste exemplo o raspberry pi está configurado no IP 192.168.1.52 e o nome do compartilhamento que criamos se chama “shared” ([shared]). Então no campo de Pasta (Folder) preencha com:

\\192.168.1.52\shared

Caso queira que a pasta de rede se conecte automaticamente a cada vez que iniciar o windows, deixe marcado o campo:

Reconectar ao realizar login (Reconnect at sign-in)

Como minhas credenciais de login do windows são diferentes do servidor (login samba), vou marcar a caixa:

Conectar utilizando credenciais diferentes (Connect using different credentials)

Clique agora no botão:

Terminar (Finish)

Para testar se a conexão está funcional e temos permissão de escrita na pasta do servidor, vamos criar um arquivo chamado “teste.txt”. Caso tudo ocorra como planejado, o arquivo estará criado dentro da pasta do servidor e estará disponível.

No terminal do servidor, podemos verificar quais arquivos estão presentes na pasta “shared”, com o comando:

ls -lah /home/fileserver/shared/

Podemos verificar o arquivo teste.txt que criamos para testar a funcionalidade.

Raspberry Pi NAS - configurar acesso servidor de arquivos pelo windows usando protocolo smb - samba

Raspberry Pi NAS - mapear unidade de rede

Raspberry Pi NAS - digitar endereço do servidor

Raspberry Pi NAS - conectado com sucesso ao servidor nad por smb

Raspberry Pi NAS - criar um arquivo de teste na pasta compartilhada do NAS

Raspberry Pi NAS - arquivo de teste criado com sucesso

Raspberry Pi NAS - ls -lah na pasta compartilhada do servidor para verificar se o arquivo de teste foi criado corretamente

Passo 5 – Instalando o protocolo AFP e Bonjour com pacote Netatalk e Avahi

O sistema operacional Mac OS tem suporte tanto para samba, quanto para AFP nativos.
Porém, desde o OS Mavericks a Apple adotou o protocolo smb como padrão. Mas como os usuários possam estar utilizando o protocolo AFP ou precisem utilizar este protocolo em versões mais antigas no Mac OS, é interessante também conceder este acesso ao nosso servidor de arquivos/NAS.

A configuração do Bonjour é realizada através do pacote avahi-daemon, garante descobrimento automático do servidor na rede, e também há suporte/anúncio para configuração de time machine.

Para ter suporte ao AFP e Bonjour, vamos instalar o pacote:

sudo apt install netatalk

Após a instalação podemos verificar um panorama geral do suporte do AFP, assim como características do local de instalação, versão do protocolo, etc. Execute o comando para verificar diversas informações sobre o suporte ao AFP:

afpd -V

Agora é necessário editar o arquivo de configuração do AFP e definir as formas de login, suporte ao time machine, caminho da pasta compartilhada, etc:

sudo nano /etc/netatalk/afp.conf

Agora caminhe até o final do arquivo e cole a configuração:

[shared]
    path = /home/fileserver/shared
    time machine = yes
    vol size limit = 20000
    valid users = viniciuspaes

Na configuração acima, lembre-se de adicionar os usuários que vão ter permissão de acessar a pasta compartilhada por AFP. No exemplo acima temos o usuário viniciuspaes com permissão de acesso, basta substituir por seu usuário e adicionar mais usuários na mesma linha separados por espaço.

Lembrete

A conexão do AFP será feita pelas credenciais de login e senha dos usuários já configurados no sistema operacional linux (raspberry pi). E lembrando que no Samba (SMB) é necessário adicionar cada usuário que tem permissão de login no serviço (smbpasswd -a ).

Raspberry Pi NAS - sudo apt install netatalk
Raspberry Pi NAS - afpd -V
Raspberry Pi NAS - sudo apt install netatalk - resultado

Raspberry Pi NAS - editar arquivo afp.conf
Raspberry Pi NAS - início arquivo afp.conf
Raspberry Pi NAS - adicionar configuração fim do arquivo afp.conf
Raspberry Pi NAS - sudo service netatalk start
Raspberry Pi NAS - sudo service avahi-daemon start

Passo 6 – Testando conexão AFP no Mac OS (netatalk + avahi-daemon)

No Mac OS, abra o aplicativo finder. No menu superior, clique na opção:

Ir (Go)

No submenu que vai abrir, escolha a opção:

Conectar no servidor… (Connect to server…)

A janela de conexões ao servidor vai abrir. Nesta janela podemos escolher qual protocolo queremos nos conectar. Lembrando que podemos nos conectar por samba também (smb://), mas neste exemplo vamos optar por conectar com AFP. No campo para digitar o endereço, preencha o protocolo de conexão (afp://) seguido do IP do servidor (192.168.1.52) juntamente com o nome da conexão que definimos no arquivo afp.conf ([shared]):

afp://192.168.1.52/shared

Caso queira salvar este endereço na lista de favoritos para conexão, lembre de clicar no campo “+”. Clique agora no botão:

Conectar (Connect)

Uma janela solicitando as credenciais de conexão vai abrir. Digite o usuário e senha do seu usuário criado no raspberry. Caso queira armazenar as credenciais de login e senha, marque a opção para que elas fiquem salvas em seu keychain. Agora clique novamente no botão:

Conectar (Connect)

Ao se conectar no servidor, será possível que o hostname do servidor (raspberry) irá aparecer no menu lateral na parte de “Locations”. Você estará dentro da aba da conexão da pasta de rede “shared” e poderá ver o arquivo de teste.txt que criamos quando nos conectamos no samba no windows.

Raspberry Pi NAS - conexão AFP no MAC OS, clicar em Ir/GO

Raspberry Pi NAS - conexão AFP no MAC OS, selecionar conectar no servidor

Raspberry Pi NAS - conexão AFP no MAC OS, inserir endereço do servidor e pasta compartilhada

Raspberry Pi NAS - conexão AFP no MAC OS, inserir endereço do servidor e pasta compartilhada

Raspberry Pi NAS - conexão AFP no MAC - conectado no servidor e arquivos compartilhados disponíveis

Conlusões

Caso tenha seguido o tutorial acima, foi possível verificar o passo a passo para criar um NAS com o Raspberry Pi, tanto com suporte ao protocolo smb, quanto o afp. A configuração é bem simples e lembrando que este recurso também é uma comodidade caso utilize o raspberry em outros projetos que necessitam a troca de arquivos entre seu computador e o dispositivo.

Lembrando que até o modelo do Raspberry Pi 3 a porta ethernet é limitada a 100Mbps (100mbps/8 = ~12,5MB/s transferência). Porém nessas versões mais antigas, é possível utilizar um dongle USB/Ethernet de 1Gbps e aproveitar a banda de 480mbps da porta USB 2.0. Porém a conexão deve ficar algo próximo/máximo de 320mbps (~40MB/s transferência), por limitação da banda do controlador do USB 2.0 e o compartilhamento da velocidade com outros dispositivos.

Caso utilize um SSD como unidade de armazenamento, consegui velocidades próximas a 25Mb/s em escrita e leitura sequencial com testes realizados com o software DD do linux na porta USB 2.0.

Caso utilize muita troca de informações, lembre-se que estas transferências consomem processamento da CPU. O raspberry pi na versão 4 ou superior pode ser uma opção mais eficiente. Com a porta USB 3.0 e um SSD Sata, consegui velocidades próximas a 220MB/s com testes utilizando o DD.

No geral, percebo que o Raspberry ainda possui muitas limitações de IO perante seus concorrentes que já tem suporte a armazenamento em M.2 NVME e eMMC. Mas ainda é um gadget super recomendado, pois há extenso suporte ao dispositivo, desde sua primeira versão.
Tenho por exemplo um ODROID-X2 com recursos próximos a um Raspberry Pi 3 e não há mais suporte oficial do fabricante, nem para o uboot, nem para o kernel e nem imagens atualizadas do linux. Desta forma, continuo recomendando o raspberry pelo suporte a longo prazo.

 

Espero que tenham gostado deste passo a passo e qualquer dúvida ou sugestão, basta informar nos comentários!

Vinicius Paes
Visão Geral sobre Privacidade (Privacy Overview)

Este site utuliza "cookies" para que possamos oferecer uma melhor experiência de usuário. As informações dos "cookies" são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.