Mostrando postagens com marcador Synology. Mostrar todas as postagens
Mostrando postagens com marcador Synology. Mostrar todas as postagens

sábado, 17 de maio de 2025

Como Corrigir o Erro "Undefined code: 1006" no Shell do Proxmox via Proxy Reverso do Synology

Pessoal,


Se você, assim com eu, usa o Proxmox VE para gerenciar máquinas virtuais e configurou um acesso externo por meio de um endereço personalizado, como meuproxmox.seusynology.synology.me, utilizando o proxy reverso do Synology DSM, pode ter se deparado com o temido erro "Undefined code: 1006" ao tentar abrir o shell ou o console do Proxmox. Esse problema impede o acesso interativo ao terminal diretamente pela interface web, o que pode ser frustrante, especialmente se você depende do shell para gerenciar o sistema remotamente. Neste tutorial, vou explicar o que causa esse erro, por que ele acontece e como resolvê-lo de forma prática e definitiva.

O que é um Proxy Reverso?

Um proxy reverso é um servidor que atua como intermediário entre o cliente (seu navegador, por exemplo) e o servidor de destino (no caso, o Proxmox). Ele recebe requisições externas e as redireciona para o servidor interno, geralmente em uma rede local. No Synology DSM, o proxy reverso é configurado no Application Portal e permite que você acesse serviços internos, como o Proxmox, usando um domínio amigável (ex.: meuproxmox.seusynology.synology.me) em vez de um IP e porta (ex.: 192.168.0.15:8006). Além de facilitar o acesso, o proxy reverso pode adicionar segurança com SSL/TLS, balanceamento de carga e filtragem de requisições.

O Papel dos WebSockets

Os WebSockets são um protocolo de comunicação bidirecional que permite uma conexão persistente entre o cliente e o servidor. Diferente do HTTP/HTTPS, que é baseado em requisições e respostas únicas, os WebSockets mantêm um canal aberto, ideal para aplicações interativas, como o shell e o console do Proxmox. No Proxmox, o shell utiliza WebSockets (via protocolo wss://, que é a versão segura) para transmitir comandos e respostas em tempo real. Para que isso funcione, o proxy reverso precisa suportar e encaminhar corretamente essas conexões WebSocket, algo que o Synology DSM não faz por padrão.

Por que o Erro "Undefined code: 1006" Acontece?

O erro "Undefined code: 1006" é um código de fechamento de conexão WebSocket, indicando que a conexão foi interrompida inesperadamente. No contexto do Proxmox, isso ocorre porque o proxy reverso do Synology não está configurado para lidar com as atualizações de protocolo (Upgrade) necessárias para WebSockets. Quando você tenta abrir o shell, o navegador solicita uma conexão WebSocket, mas o proxy reverso bloqueia ou não encaminha essa solicitação corretamente para o Proxmox, resultando no erro. Esse problema é comum em proxies reversos que priorizam tráfego HTTP/HTTPS padrão e não estão ajustados para suportar WebSockets.

Planejamento para Resolver o Problema

Para corrigir o erro, precisamos garantir que o proxy reverso do Synology suporte WebSockets. A abordagem principal é adicionar cabeçalhos HTTP específicos (Upgrade e Connection) que instruem o proxy a manter a conexão WebSocket ativa. Isso pode ser feito diretamente na interface gráfica do Synology, usando a funcionalidade de Custom Headers. Caso isso não seja suficiente, podemos editar manualmente a configuração do Nginx (o servidor usado pelo Synology para o proxy reverso) para incluir diretivas explícitas de suporte a WebSockets. Além disso, é importante verificar os certificados SSL, pois problemas com certificados autoassinados ou inválidos podem agravar o erro, especialmente em navegadores mais rigorosos, como o Safari. Como alternativa, se o Synology continuar apresentando problemas, podemos usar o Nginx Proxy Manager em um contêiner LXC no Proxmox, que oferece suporte nativo a WebSockets.

Bom, vamos ao que interessa:

Passo 1: Adicionar Cabeçalhos no Proxy Reverso

  • No DSM, vá para Control Panel > Application Portal > Reverse Proxy.
  • Edite a regra para seu domínio (ex.: meuproxmox.seusynology.synology.me).
  • Na aba Custom Headers, adicione:
Nome: Upgrade
Valor: $http_upgrade
Nome: Connection
Valor: $connection_upgrade
  • Salve e teste o shell.

Passo 2: Configuração Avançada (Se Necessário)
  • Habilite SSH no Synology (Control Panel > Terminal & SNMP).
  • Edite a configuração do Nginx:
    sudo vi /etc/nginx/conf.d/http_servers.conf
  • Adicione ao bloco server:
location / {
    proxy_pass https://192.168.0.15:8006;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
  • Verifique e recarregue:
sudo nginx -t
sudo nginx -s reload

Passo 3: Verificar Certificados SSL
  • Use certificados válidos (ex.: Let’s Encrypt) no Proxmox e Synology.
  • Para o Proxmox:
apt install acme.sh
acme.sh --issue --standalone -d meuproxmox.seusynology.synology.me

Passo 4: Dicas
  • Cheque firewalls e antivírus.
  • Teste em diferentes navegadores.
  • Para clusters:
pvecm updatecerts --force
systemctl restart pveproxy.service pvedaemon.service

Alternativa: Nginx Proxy Manager

Instale o Nginx Proxy Manager em um LXC:

docker run -d --name nginx-proxy-manager -p 80:80 -p 443:443 -p 81:81 -v npm-data:/data -v npm-letsencrypt:/etc/letsencrypt --restart=unless-stopped jc21/nginx-proxy-manager:latest

Configure o proxy host com suporte a WebSocket.


Verificar Logs

Proxmox: journalctl -u pveproxy.service

Synology: sudo cat /var/log/nginx/error.log

Com isso, o shell funcionará perfeitamente pelo proxy reverso, permitindo gerenciar suas máquinas virtuais sem interrupções!


Para reforçar: se resolver no primeiro passo, não precisa ir para os seguintes, ok?


Bom, por enquanto é isso!

Fontes:

domingo, 29 de janeiro de 2023

Tutorial e Dica: Como Fazer Download no YouTube - 3 modos diferentes!!! E ainda crie um programa para baixar vídeos você mesmo!

Pessoal,


Com frequência nos deparamos com algum vídeo no YouTube que julgamos necessário guardar para consulta futuro.

Nesse momento, a única opção que temos é fazer o download do vídeo. O vídeo pode ser retirado, sua internet pode cair, o YouTube pode ser proibido no país, sei lá. Ene possibilidades.

Pensei em mostrar aqui três formas de fazer downloads de vídeos do YouTube: usando um site, usando Docker e usando um programa em Python.

Vamos começar pelo site.


1 - savefrom.net

Esse é um serviço clássico e que todos já devem conhecer. O site savefrom.net faz o download de videos do YT. É só colar o endereço do vídeo do YT e pronto.


O site ainda permite que você escolha algumas opções de resolução para download. Algumas, nem todas.



Repare que apenas duas opções (720 e 360) têm áudio. As outras você baixa o vídeo, mas não terá áudio... O site do YT tem várias outras resoluções para assistir, até 4k.


E também não tem a opção de baixar apenas áudio (vai que era apenas um vídeo para tirar uma música?).

O site ainda tem duas outras opções para download, todas levando ao mesmo lugar: adicionar uma extensão ao navegador (o que eu me recuso a fazer, pois você autoriza o site a monitorar seu tráfego pela internet, deixa o navegador mais pesado e consumindo mais recursos, etc) e o famoso "ss" (onde você coloca as letras "ss" antes do "youtube" no link e manda carregar a página novamente.

No caso do link anterior, ao invés de "https://www.youtube.com/watch?v=VK7bCs4Ho_I" ficaria assim: "https://www.ssyoutube.com/watch?v=VK7bCs4Ho_I". Esse link leva para a página do SaveFrom.net. Claro, quando funciona...


Próximo!


2 - Docker

Esta opção é bem interessante. Você instala um container docker e acessa a página do container para baixar o vídeo.

Existem várias opções boas:

 - TubeSync, que funciona como o Sonarr, baixando canais e playlists inteiras. Atualizou o canal? Ele baixa automaticamente.

 - MeTube: é um fork do yt-dlp. Você coloca o link do video do YT (e vários outros serviços) e ele baixa automaticamente.

- Alltube: tipo o MeTube, mas com o layout mais feinho.

 - TubeArchivist: tipo o TubeSync, mas com o layout bem poluído. Baixa um vídeo, playlist e canal todo...

 - Youtube Downloader: excelente opção. Permite escolher a resolução, baixar apenas áudio, etc.

Eu pessoalmente tenho instalado o MeTube e o Youtube Downloader.

Para instalar o MeTube, usei o docker-compose do Portainer (Stack):
version: "3"
services:
  metube:
    image: alexta69/metube
    restart: always
    ports:
      - "5992:8081"
    volumes:
      - /volume3/Download/NAS Downloads:/downloads
    user: "1026:100"
Para acessar o serviço, digite o IP do container pela porta 5992.


Funciona muito bem, você pode escolher a resolução, o download é rápido, baixar um vídeo, uma playlist ou apenas o áudio... Muito bom! Também tem modo escuro, se quiser.

Para instalar o YouTube Downloader já dá um pouco mais de trabalho. Como estou instalando no Synology, vou mostar como fazer por ele.

Primeiro você deve ir no File Station, na pasta Docker e criar uma pasa com o nome "youtubedl" (tudo em minúsculo mesmo". Dentro desta pasta, crie outras cinco pastas: "appdata", "audio", "subscriptions", "users" e "video". Novamente, tudo em minúsculo.


Mesmo que você faça por outro sistema ou outro modo, deverá criar as pastas.

version: "2.1"
services:
  youtube_downloader:
    image: tzahi12345/youtubedl-material
    container_name: youtube_downloader
    volumes:
      - /volume3/docker/youtubedl/appdata:/app/appdata \
      - /volume3/docker/youtubedl/audio:/app/audio \
      - /volume3/docker/youtubedl/subscriptions:/app/subscriptions \
      - /volume3/docker/youtubedl/users:/app/users \
      - /volume3/docker/youtubedl/video:/app/video \
    ports:
      - 8084:17442
    restart: always
Pronto! Você já recebeu mastigado, no Stack, bem diferente do que eu achei :)

Para acessar, digite o IP com a porta 8084.


Veja que também é possivel mudar a qualidade do download, baixar apenas audio e baixar playlists. Tem também opção de usar modo escuro.

Achei um pouco estranho porque não achei onde estava o vídeo do download. Entendi que, após fazer o dowload, para efetivamente ter ele no seu computador você precisa tocar o vídeo no player embutido para, então, conseguir copiá-lo para o seu computador.

Mas isso me deixou preocupado: onde está o vídeo baixado? Penso que ele está em alguma pasta do NAS mas eu não consegui encontrá-lo... Depois de muitos e muitos downloads, será que vou torrar meu espaço de armazenamento?

Ele tem muitas configurações, permite editar uma série de metadados, enfim, é muito bom. Mas esse questão do download me deixou com uma pulga atrás da orelha... :\

Vamos agora para a cereja do bolo: um bom programinha em Python!


3 - Python

É aqui que as coisas ficam interessantes! Não vou ensinar aqui a instalar o Python nem as dependências do programa. Se você optou por isso, imagino que saiba resolver essas questões ou que terá interesse em aprender. O site do Python ensina isso muito melhor do eu seria capaz de fazer.

Basicamente o programa usa a biblioteca "pytube" para fazer o download do vídeo e de algumas informações (título do vídeo, tamanho do arquivo e duração do vídeo). 

Ele pede a URL do vídeo, apresenta uma barra de progressão do vídeo e ao final avisa que o vídeo foi baixado e mostra as informações.
from pytube import YouTube
from pytube.cli import on_progress
import pytube.request

pytube.request.default_range_size = 500000

def completou_download(a, b):
completo = '\n\nDownload Completo!\n'
titulo = 'Título: ' + stream.title + '\n'
tamanho = 'Tamanho: ' + str(stream.filesize / 1000000) + ' Mb\n'
duracao = 'Duração: ' + str(yt.length) + ' Segundos\n'

lista_inf = [completo, titulo, tamanho, duracao]

for t in lista_inf:
print(t)
print('-*' * 30)


url = input('\nDigite a URL do vídeo: ')
try:
yt = YouTube(url, on_progress_callback=on_progress, on_complete_callback=completou_download)
stream = yt.streams.filter(progressive=True, file_extension='mp4').get_highest_resolution()
print('\nIniciando Download...\n')
stream.download()
except:
print('\nOoops! Algo deu errado!\n')
Duas dicas para instalação do Python e da biblioteca "pytube":

    1 - às vezes você pode encontrar um erro do tipo 'urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'. Para resolver isso, ao menos no MacOS, abra a pasta /Aplicativos/Python 3.x (onde x é a versão que você está usando) e clique duas vezes no arquivo "Install Certificates.command". Se você tiver mais de uma versão instalada, faça isso em todas as versões.


    2 - para instalar o "pytube", digite o comando:  
# pip install pytube
Porém, às vezes, você pode se deparar com este erro ao depurar e executar o programa:
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import pytube
ImportError: No module named 'pytube'
Aqui provavemente é porque deve haver mais de uma versão do pip e do Python instaladas.


No meu caso, repare que eu tenho a versão 3.9.1 do Python instalada e a versão 22.3.1 do pip que está no Python 3.9

No meu caso, digitando pip ou pip3 já corresponde à única versão instalada do Pyhton. Portanto, o comando para instalar o "pytube" pra mim mostra isso:


Se você tiver mais de uma versão instalada, precisará digitar "pip install pytube" e "pip3 install pytube" para baixar o "pytube" em ambas as versões do Python instaladas.

Bom, com todas as dependências resolvidas, a reposta é essa aqui:


Pronto!

Existe mais uma dica extra. Na verdade eu já dei essa dica lá atrás, há dois anos!! Veja ela aqui. Essa dica trata do cxfreeze, uma biblioteca do Python que cria um executável. Depois de digitar esse programa em Python para baixar vídeos do Youtube, vá no link acima (esse aqui) e crie um executável desse programa.

Nesse post você viu três formas de fazer download de vídeos do Youtube! Escolha a sua e seja feliz!

quarta-feira, 25 de janeiro de 2023

Synology Tutorial: como obter o UID e GID do usuário do Synology

Pessoal,


Tutorial rapidinho para obter o UID (User IDentifier) e GID (Group IDentifier) do usuário do Synology. Ocasionalmente esses nomes aparecem também com PUID ou PGID.

Grosso modo, o UID é um número criado pelo DSM (e por distros Linux, pelo BSD, pelo MacOs, etc) para cada usuário do sistema e essa identificação é que sinaliza ao sistema operacional quais recursos o usuário pode ter no sistema.

O GID funciona de forma parecida, mas para grupos de usuário. Geralmente o GID 0 é do root, de 1 a 99 é reservado para o sistema e o 100 é para o grupo dos usuários.

Com frequência precisamos saber o UID e o GID para algum container do Docker.

Explicado isso, temos dois modos de descobrir o UID e GID.

O primeiro modo é por SSH, via Terminal, Putty ou equivalente. Para tanto, você deve saber o IP do seu NAS, ter um usuário ativo para acesso e ter o SSH ativado.

Para ativar o SSH, vá em Painel de Controle -> Terminal e SNMP -> Terminal -> Ativar o serviço SSH. A porta padrão do SSH é a 22, mas é extremamente recomendado que você utilize outra porta que não seja a padrão.


Para efetivamente obter o SSH, abra o Terminal / Putty / Shell e digite o comando e tecle enter ao final:

# ssh <usuário>@<ip do seu NAS>

Após entrar no NAS, digite o comando abaixo e tecle enter:

# id
Pronto, simples e efetivo.


Esse modo funciona em basicamente qualquer situação.

Mas existe uma outra forma mais "divertida" e prática de fazer isso no Synology

Vá em Painel de Controle -> Programador de Tarefa:


Agora vá em Criar -> Tarefa agendada -> Script definido pelo usuário:


Na tela que se segue, em "Geral" escolha o nome da tarefa e o usuário:


Em "Programação", escolha "Executar na seguinda data" e "Não repetir", uma vez que queremos acessar esta informação apenas quando desejado, não de forma programada.


Em "Configurações de tarefa", ative "Enviar detalhes da execução por e-mail" e coloque o seu email no campo; em "Executar comando", no campo "Script definido pelo usuário", digite "id". Termine com "OK".


Para executar o script, selecione a tarefe e clique em "Executar" e confirme que deseja executar.


Agora acesse seu email e veja:


Pronto! Também simples e eficaz. Da próxima vez que quiser obter o UID e GID, é só mandar rodar essa tarefa novamente!

Por enquanto é isso, pessoal!

terça-feira, 24 de janeiro de 2023

Tutorial e Dica: FreeFileSync para MacOS

Pessoal,


Resolvi aqui a melhor forma para fazer os meus backups. Conheçam o FreeFileSync (daqui pra frente FFS para facilitar).

Recapitulando: eu costumava usar CarbonCopyCloner para fazer meus backups. Usei por anos. Até que inventei de comprar um Synology e descobri que, uma vez que ele usa uma formatação diferente de disco, o CCC não funcionará direito lá. As permissões dos arquivos ficam inoperantes e o CCC refaz o backup a cada gravação. O problema é que tenho uma pasta de mídias com mais de 01TB de dados. Se ele ficar regravando isso toda vez, vai estragar os HD (o de leitura e o de gravação) e perde completamente o propósito da coisa.

Assim, tive que procurar outras soluções.

Achei o ChronoSync, que faz tipo o que o CCC faz, funciona para o NAS. Só que é pago.

O Synology tem duas opções: Hyper Backup e Active Backup for Business. O primeiro copia todo o MacMini para o Synology. É ótimo, mas não é o que eu quero fazer, uma vez que não permite escolher pasta a pasta. É meio tudo ou nada. O segundo é mais ou menos a mesma coisa.

Procurei vários e vários programas mas só encontrei um que resolveu: o FreeFileSync.

Ele permite escolher pastas ou discos, faz a sincronização das pastas ou o backup incremental e é de graça.

Para criar uma tarefa é bem simples: clique em Novo, arraste ou digite o endereço de origem (lado esquerdo) e arraste ou digite o endereço do destino (lado direito).


Clicando na "roda dentatda" azul você escolhe como que comparar os arquivos da origem e do destino (por data e tamanho, por conteúdo ou apenas pelo tamanho) e na "roda dentada" verde você escolher o que fazer na cópia (coloca todas as modificações dos dois lados em ambos os lodos, espelha um lado no outro, só atualiza - esse é o 'incremental' - ou personaliza o que quer fazer). Existe ainda um filtro onde é possivel excluir alguns arquivos e pastas do backup.


Após isso, basta salvar e dar o nome que quiser para a sua tarefa de backup.


Se você reparar bem, há três opções para salvar: "Salvar" e duas de "Salvar Como". A primeira não tem dúvidas e o programa grava com um nome padrão. As outras duas permitem a escolha do nome. Só que a opção da esquerda salva apenas a configuração do seu backup. Já a da direita salva um arquivo em lote (batch, se estivessemos no Windows seria .bat) que será utilizada para criar o agendamento do backup. Explico mais a frente.


Após isso, clique em "Sincronizar" e ele começará as cópias (apesar de estar escrito "sincronizar", o programa fará o que você escolheu na "roda dentada" verde). Aí é deixar o backup ser feito, às vezes demorando algumas horas...


O interessante vem para fazer o agendamenteo dos backups. A primeira coisa é criar uma tarefa em lote, um "batch". Para isso selecione uma tarefa que você já tinha salvado antes e, após clicar nela, salve como "Tarefas em Lote", clicando no icone do disquete com caixa de DOS (eita coisa véia...).


Marque as opções como aparecem acima. Se você usa Windows, precisará criar uma tarefa como o Windows Task Scheduler (veja como fazer isso aqui). Para o MacOS, usaremos o Automator. Abra ele em Aplicativos ou procure por ele no Spotlight ou Launchpad.


Escolha "Novo Documento" e, na tela que se abrirá, escolha "Alarme do Calendário":


Agora você precisa ir na pasta onde salvou o arquivo batch (a pasta "Documentos" é o padrão de salvamento, caso você não tenha escolhido nenhuma; eu escolhi "Documentos -> FreeFileSync", para deixar mais organizado). Agora, arraste o arquivo como o final "ffs_batch", ou seja, o arquivo batch para o Automator:


No Automator, clique na opção "Arquivos e Pastas" em Bibliotecas e depois arraste a opção "Abrir Ítens do Finder" para o seu workflow.


E agora salve em "Arquivo -> Salvar...". Assim que salvar, o aplicativo "Caelendário" irá abrir automaticamente. Clique na tarefa que você criou e escolha o dia, hora e frequência de backups.


Pronto! Simples, efetivo e de graça!

Vamos agora procurar outro problema para resolver!

Por enquanto é isso, pessoal!

quarta-feira, 11 de janeiro de 2023

Tutorial: Instalando o Duplicati pelo Docker no Synology.

Pessoal,


Spoiler: Deu certo, mas deu errado... Leia o post e no final você entenderá :(

Dando continuidade ao post anterior onde falei dos problemas que tive com o Carbon Copy Cloner para backupear o Mac para o Synology e comecei a usar o ChronoSync.

Como disse, o ChronoSync custa U$50,00. Tá fácil não. Assim, optei por tentar com o Duplicati.

O Duplicati tem opção para instalar no Mac (e vários outros SOs, veja as opções aqui) e tem opção de instalar pelo Docker no Synology (e no Mac também, mas não tenho Docker no Mac). Faz backup incremental e é gratuito. Confira a página deles no GitHub (aqui) também! Pelo GitHub também é possível fazer o download para as várias plataformas (veja aqui a última versão, a v2.0.6.104, até a data de publicação deste post).

A idéia é instalar a versão de MacOS para evitar ter que mapear um HD externo que está no Mac através do Synology. Sei que isso vai dar um bom trabalho e prefiro evitar, indo direto para o Mac "empurrando" os arquivos para o Synology do que o Synology "puxando" os arquivos do Mac.

A instalação do Duplicati no Mac não está tão fácil. Parece que há um problema após a atualização do Mac para Monterey e o Duplicati está sofrendo para funcionar. Na verdade funciona, mas dá um trabalhinho para aparecer.

O macete (passado aqui no fórum do Duplicati) é instalar a última versão do Duplicati e ir neste site do GitHub e baixar o arquivo "net.duplicati.server.plist" e colocá-lo em uma pasta específica. Para baixar, clique em "Download ZIP", depois descompacte a pasta (terá dois arquivos) e depois copie para a outra pasta:


Agora, vá ao Finder -> Downloads e descompacte o ZIP baixado. Copie o arquivo com Command + C.

Para a pasta de destino, deixe a tela do Finder ativa (clique nela apenas) e pressione junto as teclas "Shift + Command + "." "(Shift + Command + "ponto"). Os arquivos e pastas ocultos irão aparecer.


Agora navegue até a pasta "Biblioteca -> LaunchAgents" e coloque o arquivo copiado lá. Depois volte para outra pasta (como Downloads e pressione Shift + Command + "ponto" para esconder de novo as pastas e arquivos e evitar de fazer merda...


Se você fez tudo certo, vai digitar esse endereço no navegador e vai abrir o Duplicati rodando no seu Mac: "127.0.0.1:8200/ngax/index.html#". Esse é o famoso "localhost", ou seja, o serviço está hospedado localmente no sua máquina. Depois, quando instalarmos o Duplicati no Docker no Synology, ele será acessado pelo endereço "<IP-do-seu-servidor>:8200/ngax/index.html#".

Na página de login ("First run setup") eu escolhi a opção de não colocar senha, uma vez que tem apenas um usuário. Eu, no caso.

Agora crie um backup:


Escolha o nome do backup e a criptografia (eu escolhi sem criptografia para este backup):


No próximo passo, você escolhe o local de destino. Pode ser local, em vários serviços de nuvem (Box, Dropbox, Google Drive, etc) ou no seu servidor local. Eu vou "roubar" e fazer do jeito fácil. Escolha "Pasta ou Unidade Local". Vai aparecer uma opção para navegar nos diretórios e uma para exibir pastas ocultas. Escolha essa, uma vez que, no nosso caso, a pasta destino é remota. Assim, navegue até a pasta "Volumes" e depois até "Livros"(que eu já havia criado no Synology). Depois clique em "Testar Conexão" e deve aparecer "Conexão estabelecida!".


Agora vamos configurar a pasta de origem. É só navegar. No meu caso, como a pasta também é remota (está num HD externo), é só clicar em "Exibir pastas ocultas" e navegar até a origem. Ao final, clique em próximo.


O próximo passo é agendar a tarefa e definir se você quer apagar ou não os arquivos. Eu prefiro não apagar. Salve e siga em frente para executar!


Funcionou perfeito! Só que...

Descobri que o Duplicati entende que essa função de copiar para outra pasta é "sincronização" e ele não faz isso. Segundo os autores (só vi depois dessa trabalheira toda), o Duplicati compacta e criptografa os arquivos por razões como "segurança, espaço e eficiência".

Ok, mas não é o que estou procurando. Nem vou instalar no Synology. Continuo na luta.

É isso, pessoal!

Dica: Fazendo o Backup do Mac para o Synology do jeito certo!

Pessoal,


Fui começar a fazer o backup para o Synology e descobri uma coisa interessante.

Percebi que algo estava errado quando o backup ficava repetindo eternamente. Melhor dizendo, cada backup era um novo backup, o Carbon Copy Cloner, por algum motivo, não estava fazendo o backup incremental mas estava começando um backup novo a cada vez que era solicitado. A cada novo processo de backup, os horários e datas eram atualizados no destino. Obviamente algo estava errado.

Isso tem várias problemas: dano aos discos de leitura e gravação, perda de tempo, gasto de energia, não garantia do backup efetuado. Ou seja, fria!

Assim, fui olhar as configurações do CCC e não encontrei nada para mudar. Quer dizer, mudei várias coisas, quase todas as configurações, mas o problema persisitiu.

Fui procurar nos fóruns e não achei nenhum relato desse tipo.

Achei estranho porque no NAS anterior, o OMV, isso funcionava bem. Talvez pelo modo de montagem dos discos (lá estava tudo dentro de um disco virtual no Proxmox, no Synology os discos são "reais", sei lá).

Procurei então direto na fonte, na documentação no site do CCC. E lá está escrito (veja aqui) que sistemas de arquivos que não sejam os do padrão MacOS (APFS e HFS+) podem não funcionar bem no CCC, uma vez que o software é exclusivo para MacOS. Ainda, há problemas com propriedades e permissões. O DSM, na versão 7, formata os discos em EXT4 ou BTRFS.

A forma como tanto o TrueNAS e o OMV tratam com as permissões dos usuários também é diferente no DSM.

Assim, a conclusão que cheguei é que o CCC, pelo menos a versão que eu tenho, não permite fazer backup adequadamente no Synology...

Solução? Procurar outro software para isso.

O meu backup é simples: escolho uma pasta de origem no HD externo (formatado em HFS+) e envio para uma pasta com o mesmo nome no Synalogy. Claro que o primeiro backup é super demorado, mas os próximos são rápidos porque o software analisa se o arquivo já existe e, caso positivo, não grava e vai para o próximo. Isso é backup incremental.

Então fui procurar outro software. Não encontrei nenhum no Synology que fizesse isso :( Devo ter tentado uns 10 programas no Mac e só um resolveu o meu problema. Vários faziam backup para cloud services ou imagem de disco e nada disso era o que eu precisava.

Achei um, open source, que faz (quase) tudo que eu preciso: FreeFileSync. A cópia é bem rápida, você escolhe as pastas de origem e destino, criptografa se quise, tem opção para sincronizar e apenas copiar o que for novo da pasta origem na destino (e nesse caso você pode optar por apagar o que estiver diferente na pasta de destino ou manter os arquivos), etc.

O FileFreeSync tem dois problemas. O primeiro, irrelevante, mas típico de várias ferramentas opensource do mundo Linux: é feio pra caramba!


Esse é um problema de menos. Tolero a feiura dele porque ele é extremamente competente no que faz.

O segundo problema é o complicado: não tem função para agendar as sincronizações / backups... :(   Aí é de lascar! Quer dizer, tem. Mas é complicado. Usa o Automator e o calendário.

Só o ChronoSync resolveu o problema. Ele faz o backup bem parecido com o CCC, permitindo escolher as pastas de origem e destino e agendar os backups. E o melhor, sem dar o problema com as permissões que o CCC estava dando.

Ainda vou testar mais uma: Duplicati, via Docker, porque o ChronoSync custa 50 Bidens, uns 250 a 300 petralhas, na conversão atual. É pouco não...  Mas essa vai para o próximo post.

Vou tentar o FreeFileSync novamente com esse agendamento. Afinal de contas, a concorrência tá pedindo 50 doletas...

Por enquanto é isso!

segunda-feira, 9 de janeiro de 2023

Tutorial: Instalar DUC do No-IP e DuckDNS no Docker do Synology

Pessoal,


Uso o DDNS do No-IP para algumas atualizações. Como já falei algumas vezes, como o meu IP público é dinâmico, preciso forneceu uma atualização frequente ao No-IP (e também ao DuckDNS) para eles saberem para onde apontar para o meu IP.

Para o DuckDNS, é fácil. Vá ao Portainer -> Stack e crie um novo Stack:
version: "2.1"
services:
  duckdns:
    image: lscr.io/linuxserver/duckdns:latest
    container_name: duckdns
    environment:
      - TZ=America/Sao_Paulo
      - SUBDOMAINS=<seu subdomain>.duckdns.org
      - TOKEN=<seu token>
    restart: always
Coloque o seu subdomínio e o seu token e pronto!

Já para o No-IP, não existe um container novo para isso, muito menos um do No-IP. Eles preferem que você instale um pequeno programa que fará isso.

Para fazer pelo Docker, vou usar essa imagem: aanousakis/no-ip. Ela também é por linha de comando, mas é bem simples.

Abra o Terminal / Putty e digite:
# docker container run -d -e USERNAME=user1 -e PASSWORD=123 -e "DOMAINS=domain1.ddns.net" -e INTERVAL=5 aanousakis/no-ip
Lembre-se apenas de trocar os dados e colocar seu username e senha do No-IP, além do nome do subdomínio. Detalhe: o username não é o email do cadastro do login, ok?

Pronto! Melhor esses processos rodarem em Docker do que ter que gastar muito recurso em uma VM só pra isso!

É isso, pessoa!

Tutorial: Instalar o Portainer com Stacks no Synology

Pessoal,


Fui instalar o Docker para subir algumas coisas pro NAS e percebi uma coisa: o Portainer da Synology não tem opção de Stacks, ou seja, não tem como usar o Compose para configurar os containeres.

Bom, a instalação do Docker é fácil. Vá em Centro de Pacotes -> Todos os Pacotes -> vá descendo até aparecer "Código Aberto". O Docker está (ou deveria estar) aí. Só clicar em "Instalar" e pronto.

Caso não tenha a opção, siga esse meu tutorial aqui! É bem fácil de resolver.

Instalado o Docker, para acessá-lo vá no Meu Principal -> Docker -> Registro e pesquise pelo container que você procura. Tem um ícone na frente da imagem, em forma de seta, que leva você para o hub.docker.com, um excelente serviço com milhares de imagens para sua escolha.

O meu problema é que instalei uma imagem do Portainer (portainer/portainer-ce) e a imagem não tem o Stack para edição das configurações. Assim, para criar e subir os containeres teria que fazer por linha de comando. Tô fora!

Assim, procurando, achei uma boa dica no próprio site do Portainer.

Faça a instalação do Docker normalmente. Depois vá ao seu armazenamento, através do File Station e crie uma pasta chamada "portainer-ce" (ou o nome que desejar, é claro), dentro da pasta Docker (que foi criada na instalação do Docker.

Depois você tem que conectar por SSH com o Synology e fazer essa instalação por linha de comando (fazer essa apenas, ok; fazer todas, tô fora!).

Para tanto, rode o seguinte comando:

# docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Essa linha vai ter que sofre algumas alterações:

- a porta 9443 é utilizada pelo Docker do Synology, assim vou trocar para "-p 9000:9000";

- o endereço da pasta "data" também terá que ser trocado pelo da pasta que criamos acima. No meu caso, fui em File Station, naveguei até a pasta e cliquei com o botão direito para acessar as propriedades e ver em qual volume estava. No meu caso, o endereço dela é "/volume3/docker/portainer-ce". Então, para mim, fica assim: "-v /volume3/docker/portainer-ce:/data portainer/portainer-ce".

Assim, o comando todo é:

docker run -d -p 8000:8000 -p 9000:9000 --detach --name portainer-ce --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume3/docker/portainer-ce:/data portainer/portainer-ce:latest


Pronto, agora ao acessar a página do Portainer (no meu caso: 192.168.1.2:9000), já cai aqui:


Perfeito!

Quer ver o vídeo? Tá aqui embaixo.



É isso, pessoal!