
Apresentação
Por se tratar de Post um tanto quanto técnico sobre construir um servidor de hospedagem em nuvem utilizando um minicomputador, talvez você prefira considerar soluções alternativas, como o DropBox, Google Drive ou equipamentos tipo MyCloud e Seagate Central. Não se trata de propaganda, até por que não uso nenhuma dessas soluções. Essa é uma rápida e válida reflexão sobre o que pode ser melhor para você, antes de começar (custos e benefícios).
Dropbox & Google Drive
![]() |
![]() |
Usando o DropBox ou Google Drive, por exemplo, você paga uma taxa mensal que hoje gira em torno de 10 dólares por 1TB, e com isso você pode hospedar, acessar e compartilhar seus arquivos de qualquer dispositivo eletrônico ligado à Internet, sem se preocupar como implementações de software ou de segurança (firewall), backups, custos de energia elétrica, pane de hardwares, etc. Mas por outro lado, em que lugar estão realmente os seus dados (se é que isso importa para você)? Será que alguém, fora você, pode acessá-los (governo)? A longo prazo, não sairia mais barato uma solução própria? Em todo o caso, esta pode ser a opção mais cômoda para quem pode pagar e não quer esquentar a cabeça com implementações.
Dentro dessa ideia de terceirizar a sua Cloud, um serviço chamado MinhaTeca promete que “NÃO HÁ LIMITE para armazenar seus arquivos gratuitamente“. Teria que ver se existe algum tipo de limitação e até quando esse slogan vai se sustentar. Mas parece um diferencial importante entre os concorrentes. (Obrigado ao Salkys, de Cianorte, pela dica).
MyCloud & Seagate Central
![]() |
![]() |
Caso você não queira um serviço remoto, como o DropBox e Google Drive, você também pode optar por uma solução já pronta que ficará fisicamente dentro da sua casa ou escritório, como o MyCloud, da Western Digital ou o Seagate Central. Neste caso, o investimento inicial seria aproximadamente 130 dólares por 2TB de espaço em disco, e você ficaria livre das taxas mensais e teria maior “posse” dos seus dados. Contudo, agora ficará a seu encargo os custos com energia, backups, atualização de software (é possível?), pane de hardware (HDs, placas, portas), além de precisar de algumas configurações necessárias para funcionamento em nuvem. Verificando um desses em funcionamento, achei um tanto quanto lento. Mas parece interessante para quem precisa de mais espaço e não quer assumir um gasto mensal.
Banana PI + OwnCloud
Em rápidas palavras, o Banana PI é uma placa miniaturizada com praticamente todos os componentes que um computador possui (processador, memória, USB, HDMI, audio, vídeo, etc). Já o OwnCloud é uma aplicação que funciona de forma similar ao Dropbox. Ambos são projetos open-source, o que permite livre distribuição, modificações, derivações e acesso ao código fonte. Com tantas opções consolidadas de Cloud (nuvem), porque então eu teria o trabalho de montar uma solução própria? Eu diria que com um minicomputador eu não fico limitado a uma funcionalidade apenas, afinal, eu tenho um sistema operacional rodando, podendo montar e disponibilizar qualquer serviço que eu quiser, sendo um deles a hospedagem de arquivos em nuvem. E isso tudo a um baixo consumo de energia, devido a miniaturização do hardware. Mas claro, você precisa ter alguns (muitos) conhecimentos para montar esta solução, além de ficar responsável por toda implementação e problemas advindos. O gasto inicial varia entre 150 e 200 dólares, considerando a compra do Kit BananaPI + HD de 4TB. Antes de optar por esta solução, sugiro você ler “Minhas impressões sobre Banana PI e OwnCloud”, ao final deste artigo.
Você pode testar o OwnCloud online (DEMO): http://demo.owncloud.org/. O vídeo a seguir (em inglês) ilustra bem como funciona o Owncloud:
ownCloud for Enterprise File Sync and Share from ownCloud, Inc. on Vimeo.
Enfim, fique com a solução que melhor lhe atenda. Não estou aqui para julgar qual é a melhor, pois cada uma pode ser interessante dependendo da sua realidade ou cenário. Quero apenas compartilhar minha experiência com o Banana PI e o OwnCloud, ok?
Introdução
Se você realmente está decidido a colocar a mão na massa e fazer sua própria solução de “nuvem”, então vamos lá! Ao final deste Post você será capaz de acessar seus arquivos de qualquer lugar do mundo a partir de tablet, iPhone, smartphone, notebook, computador ou qualquer dispositivo ligado à Internet. Além disto, conseguirá sincronizar arquivos entre seu PC e a nuvem, bem como ter a possibilidade de compartilhar os arquivos com qualquer pessoa.
Vamos dividir essa jornada em duas etapas: Hardware e Software, mas já adianto que o software será muito mais “hard”, acredite. Só peço um pouco de tolerância, pois estarei tentando reproduzir os passos que fiz dias atrás para que tudo funcionasse. Então, se algum detalhe se perder, paciência, avisa aí.
Hardware
Para inicio de conversa, você precisará obter o hardware. Eu particularmente escolhi o Banana PI, mas tem outros interessantes como Raspberry PI e o Cubieboard3. O Banana PI é um projeto open-source de computador feito por uma única placa (single-board computer – SBC). Ele pode rodar diferentes sistemas operacionais, como Android, Ubuntu e Debian. Possivelmente sua concepção tenha sido mais apropriada para a automação, mas tornou-se perfeitamente viável para outros fins.

Este Post foi testado apenas com Banana PI. Portanto, sugiro você comprar:
– 1 mini-pc/placa (que é o Banana PI propriamente dito)
– Fonte de energia (para alimentar a placa)
– Resfriador/Ceramic Cooling (para dissipar o calor do processador)
– 1 cabo sata (para ligar o HD à placa)
– 1 case (é opcional, serve para acomodar a placa)
– 1 HD (conforme sua necessidade. O meu era de 3TB)
– 1 SD Card (pode ser 8GB. O meu foi 32GB class 10)
Alguns revendedores já vendem o Kit (sem HD). Você pode procurar em sites como http://www.aliexpress.com/, com custo entre 50 a 80 dólares, fora o HD, que pode ser de até 4TB.
Uma vez que tenha as peças, conecte-as conforme a figura abaixo.
Fonte: imagem adaptada de http://forum.lemaker.org/thread-443-1-1-.html
Software
Considerando que você já está com seu Banana PI em condições, vamos iniciar as instalações de software. Seguiremos os seguintes passos:
Operações primárias – essenciais:
– 01. Instalar o Lubuntu no SD Card (sistema operacional)
– 02. Redimensionar/Expandir a partição do SD Card
– 03. Alterar senha padrão e configurar usuário sudoers
– 04. Definir IP fixo e nome do Host
– 05. Instalar o VNC – x11vnc (para acesso gráfico remoto)
– 06. Instalar o servidor Web (LAMP) e módulos adicionais
– 07. Instalar o PHPMyAdmin (para manipular o banco de dados)
– 08. Formatar e montar HD com partição NTFS 3G
– 09. Criar diretório de armazenamento no HD e permissões de acesso
– 10. Instalar o OwnCloud (gerenciador de arquivos em nuvem)
Operações secundárias – opcionais:
– 11. Fazer o Apache “ouvir” na porta 8080, ao invés da 80 (padrão)
– 12. Configurar o OwnCloud com conexão segura HTTPS
– 13. Abrir porta no roteador (Port Forwarding)
– 14. Criar um DDNS para acessar o OwnCloud da Internet
– 15. Atualizar o OwnCloud
– 16. Instalar um novo App no OwnCloud
– 17. Tornar o hostname do Lubuntu reconhecido na rede Windows
– 18. Sincronizar data e horário com NTP
– 19. Verificar Logs de acesso do Lubuntu
– 20. Trocar porta padrão do SSH
– 21. Criar memória Swap
Ao final do Post, veja também:
– Considerações finais
– Minhas impressões sobre Banana PI e OwnCloud
01. Instalar o Lubuntu no SD Card
Primeiro será preciso instalar o sistema operacional no Cartão SD. Iremos utilizar uma versão chamada Lubuntu, que é uma variante do Ubuntu usando LXDE desktop. Neste Post utilizaremos o arquivo de imagem “Lubuntu – Updated : 2014-08-07”. Veja abaixo as etapas que eu segui baseando-me nas instruções deste Guia.
Download o arquivo de imagem – Lubuntu
http://www.lemaker.org/resources/9-38/image_files.html
O arquivo de imagem tem em torno de 823 MB e será algo como “Lubuntu_For_BananaPi_v3.1.1.tgz”, descompacte ele para obter a imagem “Lubuntu_1404_For_BananaPi_v3_1_1.img” que será usada.
Download SDFormatter para formatar o SD Card
https://www.sdcard.org/downloads/formatter_4/eula_windows/
Baixe, descompacte e instale o SDFormatter. Insira o SD card no seu computador e execute o programa SDFormatter (como administrador), ajustando as opções “FORMAT TYPE” para QUICK e “FORMAT SIZE ADJUSTMENT” para “ON”. Importante: Verifique se a letra (Drive) do SD Card está correta e clique em Ok.
Usuários Linux, favor ver as instruções no Guia citado.
Download DiskImager para gravar a imagem no SD Card
http://sourceforge.net/projects/win32diskimager/files/Archive/
Baixe, descompacte e instale o DiskImager. Execute o programa e indique o local do arquivo de imagem (Lubuntu_1404_For_BananaPi_v3_1_1.img) e a letra do seu SD Card. Clique em “Write” para iniciar. Não mexa no SD card e nem desligue o computador durante este processo.
Usuários Linux, favor ver as instruções no Guia citado.
Testando a imagem – Lubuntu
Insira seu SD Card no BananaPI. Como ainda não temos acesso gráfico remoto (VNC), conecte o BananaPI à sua TV ou monitor HDMI, e não esqueça de ligá-lo também à rede com um cabo UTP/RJ45. Se tudo der certo, será feito o boot pelo SD Card, e o Lubuntu carregará, parando na tela de Login. Use a senha padrão “bananapi” para logar.
02. Redimensionar/Expandir a partição do SD Card
Depois de colocar o Lubuntu no SD Card, note que a instalação do sistema de arquivos (ext4) utilizou pouco mais de 3 GB, deixando o resto do cartão SD livre (e sem utilidade). Só que isso vai fazer muita falta posteriormente quando precisarmos instalar outros programas, armazenar logs, etc. Certamente se você não fizer isto, vai ter problema de falta espaço, como aconteceu comigo. Quando fui ver o /dev/root estava com 100% usado (lotado). Então, comece verificando seu espaço em disco:
Verificando espaço em disco (Filesystem)
1 | bananapi@lemaker:~$ df -Bm -h |
Vamos expandir a partição ao máximo aproveitando todo o SD Card. Para fazer isto eu segui essa dica “Banana Pi: resizing the SD card root partition on Lubuntu”. É importante deixar registrado que, apesar de eu ter feito isso somente depois de todos os meus dados já estarem no SD Card e no Hard Disk, eu não perdi nada! Mas fica por sua conta e risco, e pese a possibilidade de fazer um backup antes, se achar preciso. Tudo que fiz foi:
Abrir o prompt do fdisk tendo como alvo o SD Card (mmcblk0)
1 | bananapi@lemaker:~$ sudo fdisk /dev/mmcblk0 |
A partir daí, entre com os seguintes parâmetros:
1 2 3 4 5 6 7 8 9 10 11 12 13 | - Pressione 'p' para exibir a tabela de partições. - Pressione 'd' para deletar a partição: digite '2' para escolher a segunda partição - Pressione 'n' para criar uma nova partição: digite 'p' para selecionar uma partição do tipo primária. - Número da partição (Partition number): tecle 'Enter' para aceitar o 2 como número da partição padrão (default). - Primeiro setor (First sector): tecle 'Enter' para aceitar o padrão (default). No meu caso, isto era 124928. - Último setor (Last sector):</em> tecle 'Enter' para aceitar o padrão (default). - Pressione 'w' para escrever a nova tabela de partição. |
Reinicie para forçar o Kernel a reconhecer a nova tabela de partição
1 | bananapi@lemaker:~$ sudo reboot |
Após o sistema voltar, redimensione a partição
1 | bananapi@lemaker:~$ sudo resize2fs /dev/mmcblk0p2 |
Ok, pronto! Verifique novamente o /dev/root e veja que o percentual em uso (Use%) diminuiu, pois você agora tem mais espaço já que o sistema de arquivos ocupou todo o Cartão de memória (No meu caso, 30Gb ou 29900Mb). Veja como ficou o antes e o depois de expandir o SD Card:
ANTES: 100% em uso (/dev/root)
1 2 3 4 5 6 7 8 9 10 11 | bananapi@lemaker:~$ sudo df -Bm Filesystem 1M-blocks Used Available Use% Mounted on /dev/root 3385M 3218M 0M 100% / devtmpfs 438M 1M 438M 1% /dev none 1M 0M 1M 0% /sys/fs/cgroup none 88M 1M 87M 2% /run none 5M 0M 5M 0% /run/lock none 438M 0M 438M 0% /run/shm none 100M 1M 100M 1% /run/user /dev/sda1 2861589M 356454M 2505135M 13% /media/cloud /dev/mmcblk0p1 60M 5M 56M 8% /media/bananapi/324A-3901 |
DEPOIS: 12% em uso (/dev/root)
1 2 3 4 5 6 7 8 9 10 | bananapi@lemaker:~$ sudo df -Bm Filesystem 1M-blocks Used Available Use% Mounted on /dev/root 29900M 3358M 25293M 12% / devtmpfs 438M 1M 438M 1% /dev none 1M 0M 1M 0% /sys/fs/cgroup none 88M 1M 87M 2% /run none 5M 0M 5M 0% /run/lock none 438M 0M 438M 0% /run/shm none 100M 1M 100M 1% /run/user /dev/sda1 2861589M 464021M 2397569M 17% /media/cloud |
Qualquer dúvida, veja o Artigo que mencionei.
03. Alterar senha padrão e configurar usuário sudoers
Para evitar problemas de segurança, é importante que você troque a senha padrão do usuário root e do bananapi, sabendo que ambas estão definidas por padrão como “bananapi”.
Abra um terminal no Lubuntu (Start > Accessories > LXTerminal), mude o usuário para root, e em seguida troque as senhas, veja:
Acessando como root
1 2 3 | bananapi@lemaker:~$ su Password: root@lemaker:/home/bananapi# |
Trocando a senha do root
1 | root@lemaker:/home/bananapi# passwd root |
Basta informar a senha atual (bananapi) e a nova senha que você quer definir. Faça o mesmo para o usuário bananapi, assim:
Trocando a senha do usuário bananapi
1 | root@lemaker:/home/bananapi# passwd bananapi |
Para fazer determinadas operações, você precisará de permissões privilegiadas que só o root pode fazer. Mas ficar logado como root, não é uma boa prática. Com isso, você pode querer tornar o usuário comum bananapi capaz de resolver certos comandos, como root, por meio do comando sudo. Como o usuário bananapi não está no arquivo sudoers, então, precisamos colocá-lo lá, ok?
É só incluir o usuário bananapi no arquivo sudoers, assim:
Abrindo o arquivo /etc/sudoers
1 | root@lemaker:/home/bananapi# sudo leafpad /etc/sudoers |
Acrescente ao final do arquivo, a diretiva “bananapi ALL=(ALL) ALL”, ficando assim:
Definindo bananapi como sudo, em /etc/sudoers
1 2 | #includedir /etc/sudoers.d bananapi ALL=(ALL) ALL |
04. Definir IP fixo e nome do Host
Configurando IP fixo
Como futuramente precisaremos nos referenciar ao BananaPI dentro da nossa rede, sugiro definir um IP fixo para ele. Isso você não precisa fazer por linha de comando, basta ir em “Start > Preferences > Networks Connections”. Selecione a conexão “Wired” (cabo) e clique em “Edit”. Na aba “IPV4 Settings”, selecione o método “Manual”, e clique em “Add” e informe seus dados de rede.
Vou dar um exemplo, mas obviamente você deve obter isso com base na sua rede. Você pode conseguir esses dados abrindo o command (Windows: start > search > cmd, digitando “ipconfig /all na tela preta que se abrirá”).
No meu caso ficou assim:
– Address: 10.0.0.10
– Netmask: 255.255.255.0
– Gateway: 10.0.0.1
– DNS Server: 10.0.0.1, 75.75.75.75, 8.8.8.8
Quando solicitado, informe a senha que você definiu no passo anterior. Clique em “Save” e “Close”.
Definindo nome do Host
1 | bananapi@lemaker:~$ sudo leafpad /etc/hostname |
E troque “lemaker” pelo nome que você quiser. No meu caso, chamei de mercurio. Então o arquivo /etc/hostname ficou assim:
Conteúdo do arquivo /etc/hostname
1 | mercurio |
Você pode querer associar o IP configurado ao nome definido. Para isto, altere também o arquivo /etc/hosts.
Vinculando IP ao nome
1 | bananapi@lemaker:~$ sudo leafpad /etc/hosts |
Conteúdo do arquivo /etc/hosts
1 2 3 | 127.0.0.1 localhost 127.0.1.1 mercurio 10.0.0.10 mercurio |
Ao final, reinicie o Lubuntu: Start > Logout > Reboot.
Testando o IP e nome do Host configurados
1 | bananapi@mercurio:~$ ifconfig |
Note que o “inet addr” mudou para o IP que você definiu (no meu caso, o 10.0.0.10). O nome que você definiu para o host consta no próprio comando, após o “@” (no meu caso, “mercurio”), mas que também pode ser checado pelo comando hostname, assim:
Verificando o nome do Host
1 | bananapi@mercurio:~$ hostname |
05. Instalar o VNC – x11vnc (para acesso gráfico remoto)
Provavelmente você não vai querer ter um monitor exclusivo para seu BananaPI. Então, precisamos configurá-lo para permitir o acesso gráfico remoto via VNC (Virtual Network Computing). Eu fiz isto com base no site http://myrobotlab.org/. Basta seguir os seguintes passos, utilizando o Terminal do Lubuntu:
Crie um arquivo vazio chamado x11vnc
1 | bananapi@mercurio:~$ sudo touch /etc/init.d/x11vnc |
Abra o arquivo x11vnc criado com o editor leafpad (ou outro)
1 | bananapi@mercurio:~$ sudo leafpad /etc/init.d/x11vnc |
Copie e cole no arquivo x11vnc o script abaixo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | #!/bin/sh ### BEGIN INIT INFO # Provides: x11vnc-server # Required-Start: networking # Required-Stop: # Default-Start: S # Default-Stop: 0 6 # Description: Manage X11VNC server ### END INIT INFO ## Script de démarrage de serveur VNC avant la fenêtre de connexion ## basé sur le serveur VNC x11vnc et le gestionnaire de fenêtre GDM ## ## emri.e9 [ AT ] gmail.com ## Limitation: lorsque plusieurs instances du serveur VNC sont lancées ## l'option stop les termine toutes, il n'est pas possible de choisir ## une instance en fonction du port écouté ## OPTIONS ############ ## Utilisateur principal ## /!\ Ne correspond pas à l'utilisateur avec lequel est lancé le serveur ! ## Correspond à l'utilisateur avec lequel vous allez vous loguez sur le ## serveur. ## Limitation: le verrouillage de la session lors de la déconnexion du client ## VNC fonctionnera uniquement pour cet utilisateur. ## Je n'ai pas trouvé comment récupérer dynamiquement ceci pour l'adapter à ## la session en cours, si vous avez une solution, maillez moi ;) USER=emri ## Fichier de log LOGFILE=/var/log/x11vnc.log ## Permet de démarrer plusieurs instances si le serveur est déjà en train de ## fonctionner ALLOW_MULTI_INSTANCES=false ## Port par défaut (sert aussi numéro de base pour avoir plusieurs instances) ## lorsque l'option ALLOW_MULTI_INSTANCES à true DEFAULT_PORT=5900 ## Autres options de x11vnc ## Pour la liste complète et détaillée des options (anglais) ## cf http://www.karlrunge.com/x11vnc/x11vnc_opts.html EXTRA_OPTIONS="\ -shared \ -verbose \ -o $LOGFILE \ -forever \ -xkb" ## Commande de vérouillage de session lors de la deconnexion du client VNC ## L'utilisateur lançant le serveur x11vnc étant le root, le verrouillage de l'écran ## n'impose pas la saisie du mot de passe à nouveau, voici la raison du sudo -u. ## Si l'utilisateur spécifié dans USER n'est pas celui connecté, cette commande ## ne fonctionnera pas et l'écran ne sera pas verrouillé. GONE_COMMAND="sudo -u $USER gnome-screensaver-command --lock" ## FIN DES OPTIONS ############ . /lib/lsb/init-functions COMMAND=$1 ## Gère le port envoyé via la ligne de commande (prioritaire sur DEFAULT_PORT) if [ -z $2 ]; then PORT=$DEFAULT_PORT else PORT=$2 fi pid= get_pid() { pid=`pidof x11vnc` || false } is_running() { get_pid if [ "X$pid" != "X" ] ; then return 0 else return 1 fi } start() { ## Ligne de commande principale pour le démarrage du serveur ## Pour ajouter des options, il est préférable de modifier les EXTRA_OPTIONS ## plutot que cette ligne de commande return `x11vnc -bg -autoport $1 ${EXTRA_OPTIONS} -gone "${GONE_COMMAND}" -rfbauth /etc/x11vnc.pass -safer -auth guess -display :0 | gawk -F PORT= '{print $2}' ` } X11VNC_stop() { log_daemon_msg "[X11VNC] Stopping server..." if is_running ; then kill $pid ret=0 else log_warning_msg "[X11VNC] Server not running" ret=1 fi log_end_msg $ret return $ret } X11VNC_start() { log_daemon_msg "[X11VNC] Starting server listening on port ${PORT}..." if is_running && ! $ALLOW_MULTI_INSTANCES; then log_failure_msg "[X11VNC] Server already running. Operation aborted !" log_end_msg 1 exit fi start $PORT real_port=$? if [ -z $real_port ] || [ $real_port -lt $PORT ]; then log_failure_msg "[X11VNC] Error(s) occured, consult log file for more informations" log_failure_msg "[X11VNC] ${LOGFILE}" log_end_msg 1 else log_daemon_msg "[X11VNC] Server started on port $real_port" log_end_msg 0 fi } case "$1" in start) X11VNC_start ;; stop) X11VNC_stop ;; restart) X11VNC_stop X11VNC_start ;; *) log_failure_msg "Incorrect syntax: argument missing or incorrect" log_success_msg "Usage: $0 {start [port]|stop|restart [port]}" exit 1 esac |
Torne o scrip acima executável, dando as permissões necessárias
1 | bananapi@mercurio:~$ sudo chmod 755 /etc/init.d/x11vnc |
Crie uma senha para evitar o acesso indesejado via VNC
1 | bananapi@mercurio:~$ sudo x11vnc -storepasswd SUA_SENHA_AQUI /etc/x11vnc.pass |
Adicionando o script x11vnc à inicialização
1 | bananapi@mercurio:~$ sudo update-rc.d x11vnc defaults |
Ao final, reinicie o Lubuntu: Start > Logout > Reboot.
Para testar o acesso gráfico remoto (VNC), vá em outro computador, baixe um cliente VNC, como por exemplo o Real VNC, e instale. Execute o atalho criado na área de trabalho, “VNC Viewer”, e informe o IP do seu BananaPI. Lembrando que você pode obter o seu IP através do comando “ifconfig”, no terminal do Lubuntu.
Se tudo der certo, você acessará remotamente seu Lubuntu, não precisando mais do monitor ou TV HDMI. Caso você queira parar ou iniciar o serviço de VNC (x11vnc), use o Putty (para Windows) para fazer uma conexão SSH e ganhar acesso ao terminal e poder executar qualquer comando, inclusive para manipular o serviço de VNC, como estes:
Comandos do VNC (x11vnc) no Lubuntu: start, restart e stop
1 2 3 | bananapi@mercurio:~$ sudo /etc/init.d/x11vnc start bananapi@mercurio:~$ sudo /etc/init.d/x11vnc restart bananapi@mercurio:~$ sudo /etc/init.d/x11vnc stop |
Particularmente prefiro deixar o VNC parado (stop), e habilitá-lo (start) via SSH somente quando for usar. É menos um problema de segurança a se preocupar.
06. Instalar o servidor Web (LAMP) e módulos adicionais
Para criar nossa hospedagem de arquivos em nuvem, utilizaremos o OwnCloud. Este software funciona por meio de servidor Web. Para tanto, precisaremos instalar no Lubuntu/Linux o Apache, MySQL e PHP (LAMP).
Abra um terminal no Lubuntu (Start > Accessories > LXTerminal), e faça:
Instalação do LAMP
1 | bananapi@mercurio:~$ sudo apt-get install lamp-server^ |
Instalação de módulos adicionais do PHP
1 | bananapi@mercurio:~$ sudo apt-get install php5-gd php5-json |
Para testar se o servidor Web (Apache) foi instalado corretamente, apenas abra o navegador (Lubuntu: Start > Internet > Firefox Web Browser) e digite na barra de endereço: http://localhost. Deverá ser exibindo algo assim:
Confirme se o arquivo de configuração do Apache está definido com estas diretivas para o diretório /var/www/html:
Abrindo o arquivo de configuração do Apache
1 | bananapi@mercurio:~$ sudo leafpad /etc/apache2/apache2.conf |
Diretiva “Directory /var/www/html”
1 2 3 4 5 | <Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> |
Aproveitando que estamos falando de Servidor Web, aconselho também a mudar algumas diretivas no “php.ini”, a fim de permitir maior tamanho de upload (arquivos enviados) e maior tempo de execução dos scripts PHP:
Abrindo o php.ini
1 | bananapi@mercurio:~$ sudo leafpad /etc/php5/apache2/php.ini |
Procure pelas diretivas abaixo, e mude para uma valor adequado a sua necessidade. Exemplo:
upload_max_filesize = 100M
post_max_size 100M
max_execution_time = 86400
Ao final, lembre-se de reiniciar o Servidor Web (Apache):
Reiniciando o Apache
1 2 3 4 | bananapi@mercurio:~$ sudo /etc/init.d/apache2 stop bananapi@mercurio:~$ sudo /etc/init.d/apache2 start [ou] bananapi@mercurio:~$ sudo /etc/init.d/apache2 restart |
07. Instalar o PHPMyAdmin (Manipular o banco de dados)
O OwnCloud tenta usar por padrão o SQLite, mas como já temos o MySQL instalado (LAMP), vamos optar por ele como banco de dados.
Como iremos precisar criar uma base de dados no MySQL, sugiro instalarmos o PHPMyAdmin, a fim de facilitar o acesso e gerenciamento dos dados. Para instalar o PHPMyAdmin, vamos utilizar o gerenciador de pacotes Synaptic do próprio Lubuntu:
– Clique start > System Tools > Synaptic Package Manager
– Informe sua senha de root
– Na campo “Search”, busque por “phpmyadmin”
– Selecione “phpmyadmin” e clique em “Apply” (instale as dependências, se houver)
– Provavelmente será solicitado um senha para o MySQL, informe-a (você vai precisar disto depois).
Note que o PHPMyAdmin é instalado no diretório /usr/share/phpmyadmin/, mas nosso servidor Web Apache publica as páginas Web em /var/www/html. Portanto, precisaremos criar um link para que possamos acessar o PHPMyAdmin pelo Navegador, assim:
Criando link para acessar PHPMyAdmin pelo navegador
1 | bananapi@mercurio:~$ sudo ln -sf /usr/share/phpmyadmin/ /var/www/html/phpmyadmin |
Para testar se o PHPMyAdmin foi instalado corretamente, apenas abra o navegador (Lubuntu: Start > Internet > Firefox Web Browser) e digite na barra de endereço: http://localhost/phpmyadmin. Deverá ser exibindo algo assim:
Criando a base de dados “owncloud” no PHPMyAmdin
Vamos criar a base de dados que o OwnCloud usará. Faça o login no PHPMyAmdin, com o usuário “root” e a senha do MySQL que você definiu durante o processo de instalação. Clique em “Banco de dados” (ou Databases) e digite o nome da base de dados: “owncloud”, como na figura abaixo. Basta clicar em Criar (Create)!
08. Formatar e montar partição NTFS 3G no HD
Para ver se seu hd foi reconhecido pelo BananaPI/Lubuntu, acesse o utilitário em “Start > Accessories > Disks”. Deverá estar sendo exibido seu SD Card e seu HD. Aproveite para selecionar seu HD (à esquerda) e ver se (à direita) ele aparece definido como “Device: /dev/sda1” (ou algo semelhante). Guarde bem isto, pois vai usá-lo a seguir!
Agora vamos formatá-lo para NTFS. Abra um terminal no Lubuntu (Start > Accessories > LXTerminal), e faça:
Formatando o HD para NTFS
1 | bananapi@mercurio:~$ sudo mkfs.ntfs -f /dev/sda1 |
As próximas etapas são fundamentais, é aqui onde a criança chora e mãe não vê! Eu perdi muito tempo e tive muitos problemas até conseguir chegar a uma solução. Combinei a ajuda dos seguintes Artigos:
– Artigo [1]: http://www.ubuntero.com.br/
– Artigo [2]: http://askubuntu.com
O que você deve fazer? Siga estes passos e poupe dor de cabeça:
Obter o UUID do dispositivo (sda1)
1 | bananapi@mercurio:~$ sudo blkid |
No meu caso, o UUID=28444C77529BC187. Pegue o seu! Na dúvida veja o artigo [1].
Abrir a tabela de partição
1 | bananapi@mercurio:~$ sudo leafpad /etc/fstab |
Coloque essa única linha no seu “fstab”, mas trocando pelo seu UUID.
Conteúdo do arquivo /etc/fstab
1 | UUID=28444C77529BC187 /media/cloud ntfs-3g quiet,defaults,permissions,locale=en_US.utf8 |
Atenção: não use “defaults 0 0”. Na dúvida veja o artigo [2].
09. Criar diretório de armazenamento no HD e permissões de acesso
A instalação do OwnCloud está ficando para o final, justamente para que o ambiente esteja totalmente pronto para recebê-lo. Falta ainda definir um local para que seus arquivos sejam salvos. É obvio que o SD Card é muito limitado quanto a espaço de armazenamento, por isso vamos criar um diretório em nosso HD, e realizar algumas configurações.
Antes, porém, agradeço a um vídeo compartilhado no YouTube que foi definitivo para completar a instalação, e tudo viesse a funcionar.
O Apache, de onde irá rodar o OwnCloud, normalmente tem permissão para manipular os arquivos em /var/www/html. Para isto, ele usa um usuário e um grupo chamado www-data. Porém, nessa instalação, não sei ao certo o motivo, não havia esse grupo, só havia o usuário. Então, vamos criá-lo.
Abra um terminal no Lubuntu (Start > Accessories > LXTerminal) e mude o usuário para root:
Acessando como root
1 2 3 | bananapi@mercurio:~$ su Password: root@mercurio:/home/bananapi# |
Crie o grupo www-data, utilizado pelo Apache
1 | root@mercurio:/home/bananapi# groupadd www-data |
Adicione o usuário www-data ao grupo www-data
1 | root@mercurio:/home/bananapi# usermod -a -G www-data www-data |
Crie o diretório “data” para armazenar arquivos do OwnCloud
1 | root@mercurio:/home/bananapi# mkdir /media/cloud/data |
Defina permissões para o diretório “data”
1 | root@mercurio:/home/bananapi# chmod -R 0770 /media/cloud/data |
Faça do Apache (usuário e grupo) o dono do diretório “data”
1 | root@mercurio:/home/bananapi# chown -R www-data:www-data /media/cloud/data/ |
Ao final, lembre-se de reiniciar o Servidor Web (Apache):
Reiniciando o Apache
1 2 3 4 | root@mercurio:/home/bananapi# /etc/init.d/apache2 stop root@mercurio:/home/bananapi# /etc/init.d/apache2 start [ou] root@mercurio:/home/bananapi# /etc/init.d/apache2 restart |
10. Instalar o OwnCloud (gerenciador de arquivos em nuvem)
Finalmente, com tudo pronto, vamos instalar o OwnCloud. Apenas lembrando, o OwnCloud é um projeto open-source de software para gerenciar o hospedagem de arquivos, similar ao DropBox.
Algumas características do OwnCloud:
– O código-fonte (PHP) pode ser instalado no Windows e Linux;
– Recurso de arrastar e soltar os arquivos diretamente página Web (nuvem) para fazer upload;
– App próprio para celular/tablet disponível no Google Play e App Store.
– Cliente desktop para sincronizar dados entre PC e nuvem e vice-versa.
Em caso de dúvida na instalação, você pode tentar o artigo deste site: http://pclinuxoshelp.com/
Para instalar o OwnCloud, siga os passos:
1. Abra o navegador (Lubuntu: Start > Internet > Firefox Web Browser)
2. Acesse https://owncloud.org/install/
3. Clique em “Archive File For server owners” e baixe o arquivo para Unix, provavelmente um .tar.bz2 (No meu caso, foi o owncloud-7.0.3.tar.bz2)
4. Como o arquivo deve ter sido salvo no diretório /home/bananapi/Downloads, será necessário movê-lo para o diretório de publicação do Apache, em /var/www/html/. Então, faça:
1 | bananapi@mercurio:~$ sudo mv /home/bananapi/Downloads/owncloud-7.0.3.tar.bz2 /var/www/html/ |
5. Descompacte o arquivo .tar.bz2, um diretório owncloud será criado.
1 | bananapi@mercurio:~$ sudo tar -xjf owncloud-7.0.3.tar.bz2 |
6. Vá ao navegador e digite http://localhost/owncloud. Se tudo der certo, abrirá a página para configuração e instalação do OwnCloud.
7. Informe um usuário e senha para criar uma conta de administrador.
8. No campo “Data folder”, informe o caminho para o diretório onde ficarão os dados: /media/cloud/data (esse é local no HD que nós já preparamos anteriormente).
9. Na configuração de banco de dados (configure the database), informe:
– Database user: root
– Database password: “senha do MySQL que você definiu durante o processo de instalação do PHPMyAmdin”
– Database name: owncloud
– localhost: localhost
10. Clique em “Finish setup” e pronto! É só fazer o login com os dados de administrador que você acabou de criar, e será exibido uma tela como esta:
11. Fazer o Apache “escutar” na porta 8080, ao invés da 80 (padrão)
Isso é opcional! Aliás, nem faça isto se você pretende configurar o OwnCloud com conexão segura HTTPS. Neste caso, vá para o próximo tópico!
Se você não quiser usar a porta padrão (80), você pode definir outra, como a 8080. Neste caso, ao invés de fazer a chamada por http://localhost/owncloud, você precisaria chamar assim http://localhost:8080/owncloud.
Para isto, no arquivo /etc/apache2/ports.conf, em “Listen”, troque 80 por 8080.
Abrir arquivo /etc/apache2/ports.conf
1 | bananapi@mercurio:~$ sudo leafpad /etc/apache2/ports.conf |
Conteúdo do arquivo /etc/apache2/ports.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 8080 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet |
Mude também…
Abrir arquivo /etc/apache2/sites-enabled/000-default.conf
1 | bananapi@mercurio:~$ sudo leafpad /etc/apache2/sites-enabled/000-default.conf |
Logo no início da linha, troque 80 por 8080.
Conteúdo parcial do arquivo /etc/apache2/sites-enabled/000-default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <VirtualHost *:8080> # The ServerName directive sets the request scheme, hostname and port t$ # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html [...] |
Reinicie o Servidor Web (Apache) e teste no navegador, algo como http://localhost:8080/owncloud
Reiniciando o Apache
1 2 3 4 | bananapi@mercurio:~$ sudo /etc/init.d/apache2 stop bananapi@mercurio:~$ sudo /etc/init.d/apache2 start [ou] bananapi@mercurio:~$ sudo /etc/init.d/apache2 restart |
12. Configurar OwnCloud com conexão segura – HTTPS
Para usar o OwnCloud sobre o protocolo HTTPS, eu segui esse rápido tutorial How to configure self signed SSL certificate in owncloud Ubuntu, fazendo os seguintes passos em um terminal:
Instale o OpenSSL
1 | bananapi@mercurio:~$ sudo apt-get install openssl |
Habilite os módulos de SSL e rewrite do Apache
1 2 3 | bananapi@mercurio:~$ sudo su - root@mercurio:~# a2enmod ssl root@mercurio:~# a2enmod rewrite |
Crie um diretório SSL dentro de /etc/apache2
1 2 | bananapi@mercurio:~$ sudo su - root@mercurio:~# mkdir -p /etc/apache2/ssl |
Crie o certificado. Preencha as informações solicitadas
1 2 | bananapi@mercurio:~$ sudo su - root@mercurio:~# openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/owncloud.pem -keyout /etc/apache2/ssl/owncloud.key |
Adicione no início do arquivo /etc/apache2/sites-enabled/000-default.conf do Apache, um Virtual Hosting, semelhante a este (faça suas adaptações nos paths e IP):
Conteúdo parcial do arquivo /etc/apache2/sites-enabled/000-default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <VirtualHost 10.0.0.10:80> RewriteEngine on ReWriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] </VirtualHost> <VirtualHost 10.0.0.10:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/owncloud.pem SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key DocumentRoot /var/www/html/cloud/ <Directory /var/www/html/cloud> AllowOverride All order allow,deny Allow from all </Directory> </VirtualHost> |
Reinicie o Apache
1 2 3 4 | bananapi@mercurio:~$ sudo /etc/init.d/apache2 stop bananapi@mercurio:~$ sudo /etc/init.d/apache2 start [ou] bananapi@mercurio:~$ sudo /etc/init.d/apache2 restart |
Para testar, abra o navegador e entre com algo como https://10.0.0.10. A primeira vez, deve aparecer uma mensagem dizendo que “Esta conexão não é confiável”. No caso do Firefox, clique em “Entendo os riscos”, e confirme à exceção de segurança. Nos outros navegadores é parecido, normalmente pedem pra você aceitar o risco.
Pronto! Seu Owncloud estará rodando sobre HTTPS. Lembre-se de redirecionar seu roteador/modem, de forma que toda requisição HTTPS que chegue nele (porta padrão 443), seja redirecionado para o BananaPI/Lubuntu, que no nosso exemplo tem o IP 10.0.0.10. Veja a seguir um pouco mais de informação sobre isso.
13. Abrir porta no roteador (Port Forwarding)
Como isso já é um assunto muito batido, então não vou entrar em detalhes. Caso você tenha alguma dúvida em como fazer isto no seu roteador, então, procure algo a respeito no google.com.
Mas basicamente o que você precisa fazer é “dizer” ao roteador que toda requisição que chegar na porta 8080 será direcionada para o computador 10.0.0.10 (bananapi), ficando parecido com a figura abaixo:
Ou parecido com essa outra figura, se for a porta 443 (https):
14. Criar um DDNS para acessar o OwnCloud da Internet
Por que você precisa de um DDNS? Para conseguir acessar o OwnCloud quando você estiver fora da sua rede, ou seja, na Internet. Por exemplo, dentro da sua rede você simplesmente abre o navegador e digita http://10.0.0.10:8080/owncloud e pronto, você acessa seus arquivos.
Obviamente quando você estiver fora da sua rede, isso não vai funcionar, pois o IP 10.0.0.10 é válido somente na sua rede. Neste caso, você deve acessar pelo seu atual IP válido, que pode ser obtido acessando sites como estes: http://meuip.info ou http://meuip.com.br, ficando algo como http://672.180.206.150:8080/owncloud
Mas o problema é que esse IP válido muda frequentemente, em especial quando se reinicia o roteador/modem. Daí entra a necessidade de se ter um DDNS, que é um domínio (NOME) que vai sempre apontar para seu IP atual, pois de dentro da sua rede haverá um aplicativo/script ATUALIZADOR que irá de tempo em tempo verificar se o IP mudou e informar ao DDNS.
Existem vários sites que prestam esse serviço, sendo os mais conhecidos o http://www.noip.com/ e o http://dyndns.org/. Eles tem versão FREE, mas possuem limitações, como ter que renovar a cada 30 dias.
Um outro que parece interessante é o http://freedns.afraid.org. Siga os passos:
1. Acesse http://freedns.afraid.org
2. Clique em “Dynamic DNS” e crie uma conta pelo menu “Setup an account here”.
3. Faça o login, clique no menu “Subdomains” e “add”
4. Note no combobox “Domain” que, no final, tem uma opção “Many many more available…”, clique ali!
5. Na tela seguinte, clique no link “Shared Domain Registry” e escolha um dos milhares de domínios disponíveis.
Pronto! Para testar, basta ir no navegador e digitar seu subdomínio e domínio escolhidos. Por exemplo, supondo que você tenha escolhido como subdomínio a palavra “nuvem” e como domínio o “t28.net”, então, basta acessar como algo assim: http://nuvem.t28.net:8080/owncloud.
Colocar script DDNS no Cron
Agora você precisa por o script do DDNS no Crontab do Lubuntu, para que possa atualizar o DDNS de tempo em tempo com seu IP atual. Vá ao site http://freedns.afraid.org/ e, logado, no menu “Dynamic DNS“, no final da página onde aparece o subdomínio+domínio que você escolheu, tem uma link “quick cron example”. Clique nele, e no final da página tem o exemplo do script já pronto que você deve colocar no crontab do Lubuntu para que ele atualize seu IP a cada 5 minutos.
Editar o crontab
1 | crontab -e |
Em seguida, digite o número correspondente a um Editor, exemplo: 3 para nano. Role o cursor até o final do arquivo e acrescente a linha abaixo
Atualizar DDNS/IP a cada 5 minutos no crontab (use o seu script/código conforme descrito acima)
1 | 0,5,10,15,20,25,30,35,40,45,50,55 * * * * sleep 10 ; wget -O - http://freedns.afraid.org/dynamic/update.php?e5IOo2xRRjBGaTFTWG8yRBX9iOplJk9TRjlmOjEzMDY5NDky >> /tmp/freedns_subdominio_dominioeescolhido.log 2>&1 & |
Após inserir o script no Crontab, clique em CTRL+X para sair do NANO e em “Y” para salvar e na sequência digite ENTER (e não outra coisa).
Problemas de DDNS e NAT Loopback
Feito isto, uma vez que você esteja fora da sua rede, ou seja, na Internet, já será possível acessar seu OwnCloud com seu subdomínio+domínio, como por exemplo http://nuvem.t28.net:8080/owncloud, sem precisar mais se preocupar em saber qual é o seu IP válido.
Mas, como já dizia Murphy, “toda solução cria um novo problema”. agora surge um impasse. Se você estiver de fora da sua rede, Ok, o domínio vai funcionar. Contudo, se você estiver dentro da sua rede, não vai funcionar, pois é uma restrição da maioria dos roteadores/modens que não tem suporte a “Nat Loopback“, ou seja, não permite que um usuário se conecte ao seu próprio endereço IP público de dentro da sua LAN. Para resolver isso, ou você compra um roteador com suporte a Nat Loopback ou acesse com o IP local (tipo 10.0.10) quando estiver dentro da sua rede. Leia mais sobre esse problema no Artigo “Cannot access external IP address from LAN“.
15. Atualizar o OwnCloud
Para atualizar o OwnCloud, você pode fazer da forma descrita abaixo, desde que não seja atualizações grandes, ou seja, de versões tipo de 6 para 7. No exemplo, eu precisei fazer da versão 7.0.2 para 7.0.4,
Pare o Apache
1 | root@mercurio:/home/bananapi# /etc/init.d/apache2 stop |
Acesse o diretório onde está publicado o seu OwnCloud
1 | root@mercurio:/home/bananapi# cd /var/www/html/ |
Renomeie o atual diretório do owncloud (no meu caso era cloud)
1 | root@mercurio:/home/bananapi# mv cloud/ cloud2 |
Baixe a última versão do OwnCloud
1 | root@mercurio:/home/bananapi# wget http://download.owncloud.org/community/owncloud-latest.tar.bz2 |
Descompacte o pacote do novo OwnCloud baixado
1 | root@mercurio:/home/bananapi# tar xjf owncloud-latest.tar.bz2 |
Se for o caso, renomeie o diretório owncloud criado na descompactação pelo nome do diretório que você usava (no meu caso era cloud)
1 | root@mercurio:/home/bananapi# mv owncloud cloud |
Redefina o dono e grupo do novo diretório
1 | root@mercurio:/home/bananapi# chown -R www-data:www-data cloud |
Substitua o arquivo de configuração novo pelo seu antigo (que já tinha todos os dados)
1 | root@mercurio:/home/bananapi# cp cloud2/config/config.php cloud/config/ |
Inicie o Apache
1 | root@mercurio:/home/bananapi# /etc/init.d/apache2 start |
Agora abra o navegador e acesse seu OwnCloud. No meu caso, http://10.0.0.10:8080/cloud. Uma página de atualização será exibida, basta confirmar e aguardar o término da atualização.
16. Instalar um novo App no OwnCloud
Acesse https://apps.owncloud.com/, e escolha o App que lhe interessar.
Vamos supor que seja o Music 0.3.4. Clique no ícone/página do App, e procure pelo link que permite você baixá-lo (normalmente é um arquivo .zip).
Acesse o diretório onde ficam os Apps no OwnCloud
1 | root@mercurio:/home/bananapi# cd /var/www/html/cloud/apps |
Baixe o App (localize o link de download)
1 | root@mercurio:/home/bananapi# wget https://github.com/owncloud/music/releases/download/v0.3.4/music.zip |
Descompacte o App (.zip)
1 | root@mercurio:/home/bananapi# unzip music.zip |
Remova o .zip baixado
1 | root@mercurio:/home/bananapi# rm music.zip |
Faça o login COMO ADMINISTRADOR no OwnCloud. Importante: se você já estiver logado, faça o Logout e então o Login novamente. No painel de controle, clique no menu “Arquivos” (no topo esquerdo da janela), e depois em “Aplicações”. Isso, não sei o porquê, pode demorar um pouco.
Procure pelo nome do App que você baixou e descompactou. No caso do exemplo, note que foi criado o menu “Music”, clique nele e depois clique no botão “Habilitar”. Pronto! Basta acessar alguma música no seu OwnCloud, que ela será tocada por meio do App Music (sem download, tipo Streaming), como uma espécie de playlist.
17. Tornar o hostname do Lubuntu reconhecido na rede Windows
Até aqui nos referenciamos ao Lubuntu/BananaPI pelo IP, pois ao fazer um “ping” pelo nome (no caso do exemplo, mercurio), a resposta era “A solicitação ping não pôde encontrar o host mercurio. Verifique o nome e tente novamente”.
Para tornar sua máquina linux reconhecida pelo nome numa rede com outras máquinas windows, você deve instalar uma biblioteca de pesquisa que vai permitir o Ubuntu converter nomes NetBIOS para IP. Esta biblioteca está contida no pacote libnss-winbind.
Instalando o libnss-winbind
1 | bananapi@mercurio:~$ sudo apt-get install libnss-winbind |
Após isto, note que já é possível em um terminal (command / cmd) de qualquer máquina Windows da sua rede, dar o comando “ping mercurio”, que a resposta será positiva, pois o hostname mercurio (Lubuntu) pode agora ser encontrado.
Mas se você tentar acessar o OwnCloud pelo navegador de dentro da sua rede, tipo https://mercurio, provavelmente pegará esse erro “You are accessing the server from an untrusted domain. Please contact your administrator. If you are an administrator of this instance, configure the “trusted_domain” setting in config/config.php. An example configuration is provided in config/config.sample.php. Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain: Add “mercurio” as trusted domain”.
Isso acontece, pois o nome “mercurio” não está sendo autorizado pelo OwnCloud. Para resolver isso, é só fazer o que se pede: adicionar o nome mercurio à lista de domínios seguros que fica no arquivo /var/www/html/cloud/config/config.php.
Acrescentando “mercurio” ao Array de domínios confiáveis
1 | bananapi@mercurio:~$ sudo leafpad /var/www/html/cloud/config/config.php |
Conteúdo parcial do arquivo config/config.php
1 2 3 4 5 6 7 8 | [...] 'trusted_domains' => array ( 0 => '10.0.0.10', 1 => 'mercurio', 2 => 'nuvem.t28.net', ), [...] |
18. Sincronizar data e horário com NTP
É importante manter a data e o horário certinhos para manter a coerência em que ocorrem os eventos do sistema. Isso é importante até mesmo para determinar se alguém tentou ou está tentando invadir seu Lubuntu, por exemplo, via SSH. Para isto, utilizaremos o O NTP, que é um protocolo para sincronização dos relógios dos computadores em redes de dados, permitindo manter o relógio de um computador com a hora sempre certa e com grande exatidão.
No caso do Lubuntu que usei, o NTP já estava instalado e rodando, conforme visto pelo comando abaixo.
Testando se o NTP já está instalado
1 2 | bananapi@mercurio:~$ sudo /etc/init.d/ntp status * NTP server is running |
Mas se você precisar instalar o NTP, é simples:
Instalando NTP (opcional)
1 | bananapi@mercurio:~$ sudo apt-get install ntp |
No meu caso, não foi necessário alterar os servidores onde se afere a data/hora. Mas se precisar configurar algo no NTP, faça assim:
Configurando NTP (opcional)
1 | bananapi@mercurio:~$ sudo nano /etc/ntp.conf |
Por fim, talvez você queira acertar o fuso-horário, bastando rodar o comando abaixo e selecionar sua região.
Configurando fuso-horário
1 | bananapi@mercurio:~$ sudo dpkg-reconfigure tzdata |
Mole!
19. Verificar logs de acesso no Lubuntu
Mal coloquei o servidor “de cara” para a Internet, já vieram as tentativas de ataques via SSH (robots). Isso ficou claro olhando o Log de autenticação, com diversas entradas por segundos:
Tentativas de hackear via SSH
1 2 3 4 5 6 7 | Dec 24 09:21:57 mercurio sshd[22023]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=62-210-151-213.rev.poneytelecom.eu user=root Dec 24 09:22:00 mercurio sshd[22023]: Failed password for root from 62.210.151.213 port 49658 ssh2 Dec 24 09:22:04 mercurio sshd[22023]: message repeated 2 times: [ Failed password for root from 62.210.151.213 port 49658 ssh2] [...] Dec 24 09:43:52 mercurio sshd[3545]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=server07.mycarequity.com user=root Dec 24 09:43:54 mercurio sshd[3545]: Failed password for root from 67.228.238.114 port 60512 ssh2 Dec 24 09:43:54 mercurio sshd[3545]: Received disconnect from 67.228.238.114: 11: Bye Bye [preauth] |
Você pode monitorar os Logs de acesso abrindo um Terminal no Lubuntu e executando o comando abaixo:
Verificarndo Log de acesso
1 | bananapi@mercurio:~$ sudo tail -f /var/log/auth.log |
Por isso é importante ter uma senha forte e, quem sabe, implementar algumas regras de firewall (iptables) para evitar sucessivas tentativas de acesso e inchaço dos arquivos de Logs (em breve demonstrarei).
20. Trocar porta padrão do SSH
Algumas medidas de segurança precisam ser tomadas a fim de tentar reduzir os ataques (externos), a começar pela mudança da porta padrão do SSH, de 22 para uma outra, como 32000. Isso pode facilmente ser feito da seguinte forma:
Abra o aquivo de configuração SSH (Atenção no “d”: é sshd_config, e não ssh_config)
1 | bananapi@mercurio:~$ sudo nano /etc/ssh/sshd_config |
Altere a diretiva “Port” de 22 para 32000 (ou outra) – Arquivo /etc/ssh/sshd_config
1 2 | # What ports, IPs and protocols we listen for Port 32000 |
Reinicie o serviço SSH
1 | bananapi@mercurio:~$ sudo service ssh restart |
Cheque as portas abertas
1 | bananapi@mercurio:~$ sudo netstat -tunlp |
Dica de segurança sugerida pelo Mestre Eriberto Mota, que desde 2007 tem me ajudado com os ensinamentos Debian contidos no livro “Descobrindo o Linux”, além de palestras e bate-papos. Obrigado!
21. Criar memória swap
Ao notar uma certa lentidão quando o OwnCloud renderizava páginas para exibir conteúdo tipo múisca (.mp3), fotografia (.jpg) e vídeos (.mp4, .avi, .wmv, .asf, .mov, .mpg, etc), suspeitei que isto ocorria em razão do Banana PI ter apenas 1 GB RAM, e a instalação do Lubuntu não ter reservado algum espaço para fazer Swap.
Mas agora, como resolver isto já com tudo instalado? Eu segui os passos do artigo “How To Add Swap on Ubuntu 14.04” e deu certo para a criação de Swap, embora não tenha notado grande ganho com isto. Veja aí como fazer:
Para verificar se você tem swap disponível, dê o comando “free -h” e observe a coluna “total” com “0B” (zero bytes) de swap.
Verificando a memória swap
1 2 3 4 5 | bananapi@mercurio:~$ free -h total used free shared buffers cached Mem: 874M 852M 21M 24M 84M 104M -/+ buffers/cache: 664M 210M Swap: 0B 0B 0B |
Criando 1 GB de Swap
1 | bananapi@mercurio:~$ sudo fallocate -l 1G /swapfile |
Ajustando permissões do arquivo de Swap (root)
1 | bananapi@mercurio:~$ sudo chmod 600 /swapfile |
Configurando o sistema para usar o espaço de Swap
1 | bananapi@mercurio:~$ sudo mkswap /swapfile |
Ativando a Swap
1 | bananapi@mercurio:~$ sudo swapon /swapfile |
Pronto! Se você verificar novamente, vai ver que a Swap já existe. Note que a coluna total da Swap passou de “0” para “1023” MB (1 GB).
Verificando a Swap criada (já em uso)
1 2 3 4 5 | bananapi@mercurio:~$ free -m total used free shared buffers cached Mem: 874 852 21 25 21 66 -/+ buffers/cache: 764 109 Swap: 1023 34 989 |
Mas não acabou, você precisa tornar essa configuração permanente, pois senão, quando reiniciar o sistema operacional, tudo vai se perder. Para isto, faça o seguinte:
Abra o fstab
1 | bananapi@mercurio:~$ sudo nano /etc/fstab |
No final do arquivo, adicione esta linha que diz ao S.O. para automaticamente usar a Swap criada.
Conteúdo adicionado ao final do arquivo /etc/fstab
1 | /swapfile none swap sw 0 0 |
Considerações finais
Na página de Instalação do OwnCloud você encontra, além do pacote para instalar o OwnCloud no servidor Web, dois aplicativos importantes:
Cliente desktop
Este software sincroniza o ownCloud com o seu computador, ou seja, se você criar, alterar ou excluir um arquivo no seu PC, isto será automaticamente replicado na nuvem e vice-versa. Você pode selecionar um ou mais diretórios em sua máquina local, de forma a sempre ter acesso aos seus arquivos mais recentes onde quer que esteja.
Mobile Apps
Você também pode instalar um App em seu dispositivo móvel tanto na App Store da Apple (iOS) quanto no Google Play Store (Android), permitindo-lhe o acesso, sincronização e fazer upload de seus dados em qualquer lugar.
Caso você tenha alguma dúvida de como usar o OwnCloud, veja o manual em http://doc.owncloud.org/.
Minhas impressões sobre Banana PI e OwnCloud
Nada mais útil que finalizar esse Post compartilhando minhas percepções sobre o resultado deste trabalho.
Banana PI
O Banana PI tem como positivo o fato de ser bem compacto (metade de um HD de 3.5″), porém, dependendo para o que se pretende utilizá-lo, pode deixar a desejar em termos de processamento e memória (apenas 1 GB). Notei que ele responde razoavelmente bem (performance) quanto às requisições via OwnCloud, inclusive, melhor que equipamentos como MyCloud.
O problema é que a medida que você adiciona muitos arquivos de música, vídeo e fotografias, ele literalmente “senta” para renderizar a página de exibição do conteúdo. Nesse momento, nota-se o uso de memória swap, provável razão pela qual tudo fica mais lento. Mas, apesar disto, não chega a se tornar inutilizável, só precisa talvez exercitar o teste de paciência. Para exibir uma lista simples dos arquivos de sistema até que é satisfatório.
OwnCloud
O software é uma ótima solução de nuvem, além de tudo, é grátis. Ele possui muitos dos principais recursos que você deva precisar, e tudo indica que as futuras versões serão cada vez mais aperfeiçoadas.
No momento (versão 7) acho que o ponto mais fraco do OwnCloud é a exibição/reprodução de mídias (músicas, fotografias e vídeos) e talvez você tenha dificuldades quanto a isto.
O que pude notar é que ele não suporta com eficiência a exibição de conteúdo por streaming (sob demanda). Por exemplo, quando você clica em um vídeo .avi, ele simplesmente baixa o vídeo ao invés de exibi-lo. Formatos como .flv e .mp4 (alguns .mp4 não reproduziram) até funcionam direto na tela, mas a maioria falha: .wmv, .avi, .mov, .asf, etc. De certa forma, meia-culpa disso é devido a conhecidas limitações Web, embora muitos casos já tenham soluções.
No caso de música (.mp3), há o mesmo problema, o que não justifica. O OwnCloud nativamente faz o download ao invés de reproduzir. Neste caso, você pode instalar um plugin (app) “Music”, que cria uma espécie de playlist de todos os seus .mp3, mas se você tiver milhares de músicas, vai ser quase impossível renderizar, pois a página fica muito carregada.
O mesmo problema ocorre para as fotografias (.jpg), ou seja, o sistema faz uma busca de todas as imagens em disco e tenta criar um álbum, mas se forem milhares de fotos, isso vai ser um parto. Obviamente, muito disso é um reflexo do baixo processamento e memória do Banana PI, mas um pouco de otimização do OwnCloud ajudaria a minimizar este tipo de problema.
O OwnCloud oferece suporte para criação de plugins (apps) de terceiros, o que torna possível agregar novas funcionalidades, mas na minha opinião ainda é um pouco desorganizado neste quesito.
Considerando que é mais fácil apontar os defeitos do que fazer algo em prol, então, é justo que ao menos eu deixe aqui meus parabéns e meu muito obrigado aos desenvolvedores do OwnCloud. A crítica é construtiva, pode ter certeza.
Encerro este longo Post por aqui. Por enquanto é isso, boa sorte!
Um comentário sobre “Hospedagem de arquivos em nuvem com Banana PI e OwnCloud [Completo]”