quinta-feira, 15 de outubro de 2020

Como copiar um arquivo de servidor para outro computador (no caso, um MAC) e atualizações sobre o meu FreeNAS.

 Pessoal,

Esse post tem uma atualização do que estou fazendo com o FreeNAS e, como está no título, como copiar um arquivo que está no FreeNAS para outro computador.

Primeiro, a atualização. Estava usando o PiVPN e o atualizador de IP do No-IP no Raspberry, como falei aqui anteriormente. 

Antes de escolher qual servidor ira usar (Synology, XPEnology, QNAP, FreeNAS, OpenMediaVault, etc), precisava saber como acessar meus arquivos remotamente caso necessário. Assim, optei por usar uma VPN (OpenVPN no PiVPN) e, por conseguinte, precisava usar um IP válido (vulgo IP fixo). Expliquei bastante no post sobre o VPN

Assim, instalei o PiVPN (servidor OpenVPN) no Raspberry. Instalei também o DUC (programa do No-IP para atualização do meu IP residencial no servidor de DNS deles).

A questão é que instalei o FreeNAS e esse permite que eu execute o OpenVPN como um plugin. Mas ainda ficaria precisando de um computador ligado para rodar o DUC.

Já que a VPN e o DUC só têm utilidade pra mim pra acessar o FreeNAS remotamente, resolvi criar uma VM no FreeNAS para rodar esses dois programas. Instalei o Ubuntu Desktop, mas ficou muito lento. Preferi instalar o Ubuntu Server mesmo (muito mais leve, uma vez que não tem GUI) e poderia colocar specs bem leves (1 core do processador, 512MB de RAM e 20GB de HD).

VM instalada, instalei o DUC e o PiVPN como mostrei no post do VPN. Fácil. Tudo na mesma máquina.

Agora vem o assunto deste post: criada a VPN, criei a chave da VPN e precisaria passá-la para os outros equipamentos (MacBook, iPhone, iPad). Quando fiz pelo RP (estava com o Raspberry OS), coloquei um pendrive e copiei a chave.

Agora estou numa máquina virtual rodando dentro de um servidor! Tentei colocar o pendrive no FreeNAS e nada. Acessei o Ubuntu Server pelo Terminal do Mac e nada de conseguir copiar.

Eis que lembrei de um programa que utilizei algumas vezes: Filezilla!

Abri o Filezilla, coloquei o IP do Ubuntu Server, o nome do usuário (de root), a senha e a porta. A porta padrão para FTP é a 21 (veja as portas reservadas aqui), mas não funcionou. Num fórum da internet, recomendavam outro programa (para Windows), mas utilizando a porta 22! Coloquei e deu certo! O Filezilla mostrou de um lado meu Mac e de outro o Ubuntu Server. Naveguei até a pasta das chaves ("/home/estrutural/ovpns") e copiei a chave. Instalei nos outros equipamentos e tudo certo!

Agora vou utilizar o Raspberry para acessar o Kodi numa TV do quarto que vai virar o quarto da esteira!

Assim que fizer isso, mostro aqui no blog.

Por hoje é isso!

domingo, 4 de outubro de 2020

NextCloud no FreeNAS

Oi pessoal,

Depois da surra que tomei com o PiHole (veja a atualização aqui, no final do post), deixei-o de lado por enquanto e vou instalar o NextCloud!

Bom, a instalação é tranquila mas demora bastante, uns 20 minutos pelo menos.

Vá em Plugins --> NextCloud e clique instalar. Pronto. Quase que só isso.

O ideal seria você colocar o ip desejado antecipadamente ou deixar o DHCP resolver isso para você. Para mim, o NAT aparecia marcado e só funcionou como ele marcado, senão dava erro lá no final da instação.

Depois de instalado, parei o Jail do NC, fui em Edit e mudei o IP para o que eu escolhi. Deu um pau, fácil de resolver. A mensagem era que o domínio não era confiável e era necessário corrigir o arquivo "config.php". Mas onde está este maldito arquivo?



O manual do NC não especifica onde está isso. Dando um pesquisada, achei um post que falava onde estava:


Ótimo! Só que não. No meu NC, pelo menos na versão que estou usando, não tem essa pasta "pbi"...

Bom, fui no Shell do FreeNAS e dei os comandos:

    jls #(para listar os jails e ver qual o número do jail do NC)

    jexec 12 csh #(para entrar como root no shell do NC - que no meu caso está no jail 12)

    ls #(para ver as pastas e ter uma ideia do que fazer)

Aí apareceu "/usr"; entrei nela e vi "local"; entrei e vi "www"; entrei e vi "nextcloud"; entrei e vi "config"; entrei e vi o "config.php" (ou seja: /usr/local/www/nextcloud/config).

    vi config.php #(para editar o arquivo)

Fui até "Trusted domains" e estava troquei o IP que a instalação definiu pelo que eu queria.

Para lembrança futura: no VI, para editar a gente aperta "i", vai até onde que editar e escreve por cima; se errar, tem que sair com "ESC", apertar "x" que apaga a letra errada. Para sair, dê um :wq (grava e sai do VI). Resumindo: um saco!

Depois, parei e reiniciei o jail do NC, abri o navegador e digitei o IP! Tudo funcionando.

Quando abrir a primeira vez, você pode ir em Plugins, clicar no plugin instalado do NC, seta para baixo e clique em "Post Install Notes". Os nomes de usuário e senha do NC estão aí. Copie e inicie o NC!

Pronto! Agora a gente entra e coloca esse username (administrador) e a senha e entra no NC. Mude a senha do adm e crie um usuário e experimente para ver se a nova senha e o novo usuário estão ok.

Agora precisamos terminar de configurar o NC.

Vá no Shell do FreeNAS e entre no shell do NC. Navegue até /usr/local/etc/nginx/conf.d e digite:

    vi nextcloud.conf

Agora, no primeiro "Server", edite para ficar assim:

 server {
listen 80; server_name _; return 301 https://$server_name:443$request_uri; }

Isso faz o NC reponder pelo ip que escolhemos para ele e direciona alguma requisição pela porta 80 (http, sem segurança) para a porta 443 (https, com segurança).

Crie outro "server" abaixo e coloque:

server { listen 443 ssl http2; server_name _l; ssl_certificate /usr/local/etc/ssl/mycert.crt; ssl_certificate_key /usr/local/etc/ssl/mycert.key;
}

Agora a gente vai usar as dicas deste site aqui para criar o certificado ssl através do "openssl".

Vá para a pasta "/usr/local/etc/ssl". Esta é a pasta onde ficará o certificado ssl.

Dê um:

    openssl req -newkey rsa:4096 -x509  -sha256 -days 1825 -nodes -out mycert.crt -keyout mycert.key

Aqui ele criou o certificado SSL! E vamos reiniciar o servidor com:

    service nginx start

Pronto! Serviço reiniciado e, se tentarmos acessar com o "http://<seu_ip>" vamos ter esse erro aqui:


Isso é exatamente o que a gente quer: forçar o serviço a ser acessível via "https" com certificado SSL!

Quando você digitar usando o https, pode ser que dê o mesmo erro. Neste caso, como você criou o certificado, o navegador pode não confiar e pedir para que você autorize. Se for seu caso, vá em "ver o certificado" e veja se as informações batem com o que você criou. Se estiver tudo certo, vá "visitar este site", autorize e siga em frente.

Pronto! Quase tudo feito!

Se você tiver um equipamento com iOS/Android/Windows/Mac, baixe os aplicativos para acesso remoto.

Outra coisa é acessar remotamente, de fora da rede local. Até aqui, tudo está pela rede local. A gente até tem como acessar isso pela rede. Mas, pra mim, paro por aqui. Neste post aqui mostrei como criar uma VPN com o PiVPN e deixar ela rodando no Raspberry Pi (dá até para colocar no FreeNAS, porque ele tem um plugin do OpenVPN). Assim, se precisar acessar remotamente, de fora da minha rede local, conecto o equipamento na internet, abro a VPN e acesso o NC, pelo aplicativo ou pelo site. Muito, muito mais seguro!

Este site tem boas dicas de como configurar seu NextCloud.

E aqui e aqui têm dois bons vídeos, bem passo a passo!

Outra opção, não utilizando o FreeNAS, é utilizar o Docker para instalar o NextCloud, usando o OpenMediaVault. Veja como aquiaqui. Este vídeo aqui ensina a instalar o Ubuntu Server rapidinho, a base para usar o OMV e o NextCloud.

Até mais, pessoal!

sábado, 3 de outubro de 2020

PiHole

Oi pessoal,

Como falei no post anterior, vou instalar o PiHole no RP.

A ideia aqui era instalar uma VM rodando Docker e instalar o PiHole nele. Como disse antes, o PC véio não suportava VM.

Só que não, quer dizer, só que sim!

Olhando o manual do FreeNAS, em Virtual Machine, sugere-se testar isso no Shell:

   grep VT-x /var/run/dmesg.boot

Eis que apareceu isto:


Esse "EPT, UG" em VT-x indica que o processador Intel tem tecnologia Extended Page Tables. O FreeNAS é baseado no FreeBSD e usa bhyve para criar VM e o processador suportar esses "EPT" e "EG" para criar VM. Ou seja, o meu processador permite isso!

Assim, reiniciei o servidor e apertei "Delete" para entrar na BIOS. A função VT-x estava desabilitada, causando o erro que não permitia a criação de VM. Ativei e reiniciei o servidor.

Fui em "Storage" e criei um dataset "VM" no pool. Depois fui em Virtual Machines e criei uma VM com Ubuntu Server (ao final, pare a VM e exclua o CD-ROM utilizado para criar ao VM).

O processo para criar é bem fácil. Ativei o Canonical Livepatch e o Docker apenas.

Depois de instalado, a gente dá o famoso "sudo apt-get update" e "sudo apt-get upgrade" para atualizar os softwares e poder seguir em frente nas instalações.

Optei pelo Ubuntu Server pela estabilidade e pelo Docker pela facilidade e comodidade. Tudo isso rodando em VM. Ficou bom? Ótimo! Ficou ruim? Apaga e começa de novo. Simples assim!

Após criar a VM, clonei (para deixar uma VM de UbuntuSever sempre pronta e não ter que começar tudo do zero), coloquei o nome de PiHole.

O próximo passo foi fixar o IP. Vá em /etc/netplan e edite  o arquivo ".yaml" que está lá editei com o nano, mas precisa de ser superusuário, o seja, dê um sudo nano). Eu coloquei assim:


Onde "ene0s4" é a interface de rede, 192.168.1.3/24 é o endereço fixo que escolhi na minha rede, 192.168.1.1 é o meu roteador e esses endereços em nameservers são os servidores DNS do Google e o meu roteador.

Aqui acabei optando por instalar diretamente o PiHole no Ubuntu Server ao invés de usar o Docker. Motivo? Mais fácil.

Dê um: curl -sSL https://install.pi-hole.net | bash e corra pro abraço! 

Para desinstalar o PiHole, execute isso aqui:

sudo rm -rf /etc/.pihole /etc/pihole /opt/pihole /usr/bin/pihole-FTL /usr/local/bin/pihole /var/www/html/admin

Depois de tudo instalado, fui no aplicativo do Google Wifi , em "Network & General" --> "Advanced Networking" --> "DNS" e coloquei o endereço do PiHole como servidor de DNS primário e o próprio roteador como secundário.

Reiniciei o roteador e as propagandas reduziram absurdamente!

Para trocar a senha criada automaticamente pelo PiHole, dê um "pihole -a -p" e digite a senha nova.

A quantidade de bloqueios de anúncios é enorme. Mas você ainda pode acrescentar mais sites bloqueados através destas duas listas:

    https://hosts.oisd.nl

    https://firebog.net

Poucos minutos após instalar, estava assim:


Quase 10% da navegação foi bloqueada. Impressionante!

Próximo post: NextCloud!

ATUALIZAÇÃO:

Galera, depois de algumas horas rodando o PiHole, percebi que fiz alguma merda. Fui tentar instalar o NextCloud e nada: os plugins não apareciam mais.

Fui no PiHole e coloquei o ip do FreeNAS no Whitelist. Adiantou nada.

Parei o PiHole e desfiz as configurações do DNS que tinha feito. Adiantou nada.

Achei uma frase na internet que resume bem isso: "It's not the DNS. It can't be the DNS. It'd be the DNS. It's always the DNS!".

Ferrei alguma coisa e o FreeNAS ficou imprestável.

Solução? Let's start it again! Fui na tela inicial do FreeNAS (a tela do servidor, tem que colocar um cabo na saída de vídeo para ver), apertar 8 (restaurar para configurações de fábrica!) e mandei ver. Como o ip do FreeNAS está reservado para o MAC Address da placa de rede, ele entrou automático. Recriei os usurários e fui em Storage e importei o Pool. Apaguei a VM com o PiHole, apaguei o servidor do Plex e reinstalei o Plex. Tudo voltou a funcionar (backups via Time Machine e CCC funcionando quase que automaticamente, só tive que colocar a senha novamente).

Conclusão: o PiHole é fantástico, bloqueia tudo mesmo! Até o que eu não queria :( Vou estudar isso depois e reinstalar com mais calma!

Próximo post: NextCloud!

Até lá!

NAS Doméstico - FreeNAS

 Pessoal,

Só para atualizar aqui o NAS.

Backup:

Coloquei o Carbon Copy Cloner para fazer os backups para o NAS. Foi a maneira que encontrei mais fácil de efetuar os backups. Interessante que enquanto usava o WD MyCloud com destino de backup, diversos erros ocorriam. Com o NAS, o processo AGORA está liso!

Disse "AGORA" porque o primeiro backup completo foi dureza. Depois de algum tempo, o sistema ficava offline, o disco do NAS sumia da rede e o backup não era concluído. Gastei uns dois dias para cada backup que fazia. Depois disso, não tive mais erros com o backup.

Mídias:

Instalei o PlexMediaServer como plugin do NAS. É meio chato: criei um usuário "PlexMedia", montado em /mnt/JBCNAS/iocage/jails/PlexMediaServer/root/media/plex. Dentro de Jails, no menu inicial do NAS, direcionei uma subpasta dentro da minha pasta de mídias no pool para uma subpasta do PlexMediaServer:


Depois instalei o aplicativo do Plex no celular, iPad, AppleTV e TV. Pronto: todos eles encontraram o servidor na rede local e começaram a passar as mídias.

Repararam que eu disse "rede local"? Para "streamar" para a internet, o Plex exige que você seja assinante do PlexPass. Se você, assim como eu, tiver uma VPN (veja aqui), basta entrar na VPN e acessar o Plex "localmente)!

Usei principalmente esse vídeo aqui como guia para instalar o PlexMediaServer.

Time Machine:

Estou utilizando o NAS para fazer backup via Time Machine também. Dentro do meu pool, criei um dataset com o nome Time Machine e compartilhei na rede como SMB. Até tentei compartilhar com AFP (Apple File Protocol), mas não conseguia conectar os Macs nele. Com SMB, foi sem problema e vou deixar assim porque está funcionando e está bom (é como diz o velho ditado: "o ótimo é inimigo do bom")!

Próximos passos: instalar o NextCloud no NAS, ver se vou manter o PiVPN no RP ou se ele vai para o NAS e instalar o PiHole no RP. Outra possibilidade é instalar o Ubuntu Server em uma VM no NAS e rodar o PiHole e PiVPN nesta VM, além do aplicativo do NoIP!

Atualização:

Acabei de descobrir que o meu PC véio não tem suporte para criação de VM. Assim, como já tenho o RP rodando o PiVPN e o aplicativo do NoIP (expliquei tudo isso aqui, lá no meio do post; leiam que vale a pena), vou colocar o PiHole no RP também. Explicarei isso no próximo post.

É isso por enquanto.