É bem comum para quem tá começando nesse mundo de automação digital e inteligência artificial fazer uso no começo de facilitadores pra instalação das ferramentas, como painéis parecidos com Easy Penel ou setups prontos que fazem a automatização da instalação sem você precisar entender muito sobre a complexidade de se manter uma infraestrutura. Apesar de ser tentador utilizar esses facilitadores no começo, eles sempre cobram um preço que é a necessidade de quando você precisa escalar suas automações, suas soluções ou começa a cometer erros na infraestrutura que você não entende de onde estão surgindo e acaba se frustrando na área ou não consegue ter um desempenho satisfatório nas soluções que você pretende vender para seus clientes. Existe o contexto também que eu sempre mantenho, e eu reforço isso com meus alunos, de manter dois ambientes com suas VPS, estrutura toda completa, uma de desenvolvimento, onde você testa ideias, e outra de produção, que é onde você coloca de fato a produção valendo mesmo no mercado para o seu cliente rodar e trazer soluções, trazer rendimento, trazer lucratividade e eficiência.
Nos dois casos, o problema é o mesmo. Como eu vou passar minhas automações e credenciais de um ambiente para outro, sem precisar fazer isso manualmente, baixando automação por automação, criando banco por banco, fazendo credencial por credencial. Isso, pelo menos, se você tiver bastante automação, vai te levar um ou dois dias de trabalho e olhe lá.
Imagina um belo dia você tá ali com a sua, você começou a a aprender, começou a criar soluções e você, putz, preciso agora mudar de máquina. Eu quero, tô tendo problema com a Hostinger, agora eu quero ir para RS, né? Estou na Contabo, agora eu quero ir para digital o estou utilizando Easy Pen e agora quero passar por uma máquina de vergonha, de verdade.
Como é que eu faço? Vou ter que fazer um por um, passando credencial por credencial. Ou então você tá ali desenvolvendo suas soluções, suas automações e precisa passar para um ambiente de produção.
É um por um, passando um por um, isso acaba agora. Fraldinha, cola com pai aqui que eu vou te ensinar através do próprio N8N a como tu transferir todas as automações e credenciais de uma de uma operação para outra. O contexto que você tem é esse aqui.
Você tem uma um servidor rodando Easy Penium ou um ambiente de desenvolvimento e você quer passar suas automações e credenciais do N8N para uma VPS que é uma hatner ou digital o qualquer outra máquina que você queira e você não quer ficar ali criando credencial por credencial, automação por automação e pior setando dentro da das automações a credenciais corretas. E é essa automação simples que vai lhe poupar um grande tempo na sua vida em fazer transição entre as VPS, rodando máquinas diferentes ou até mesmo na mesma máquina, desde que seja instâncias de N8N diferentes. E acredite, automação simples, mas já me salvou um monte de tempo para poder fazer configuração de VPS, tirando a VPS antiga ou uma estrutura que já não funcionava para uma outra robusta, nova e excelente.
E o meu contexto é esse. Eu tenho essa VPS com N8N zerada. Ele tem apenas essa automação que eu criei para fazer a transição.
E eu tenho essa outra em que tá rodando um monte de fluxo meu, tem um monte de credencial instalada e eu quero transferir tudo isso que tá aqui para cá. E eu deixei aqui como tema branco para que você não se confunda quando eu tiver mudando as telas. O que tiver com tema escuro é a é o destino das minhas automações, das minhas informações, das minhas credenciais.
E o que tá com tema branco é o a origem das automações, das credenciais, dos dados. Eu quero passar tudo que tá no branco para esse tema preto aqui. O primeiro passo é criar essas quatro credenciais aqui.
Eu vou ter credencial da API do N8N da origem, vou ter a a PI da o N8N do destino e vou ter duas conexões com o banco de dados. o banco de dados rodando posts, onde tá as informações do meu N8N da origem e do destino. Talvez você não saiba, mas o N8N também tem sua API com seus end points e você pode fazer as chamadas através de HTTP request, mas o próprio N8N ele disponibiliza alguns nodes para que você possa fazer a chamada.
Acontece que as chamáas do N8N para API, elas não são completas, ela não tem todas as informações que a gente precisa e por isso a gente precisa fazer manipulações direto na base de dados. Por isso também que eu tenho duas duas tipos de conexão. Eu tenho a conexão do banco de dados postings, que é onde tá armazenado.
O N8N utiliza o banco posts para gravar as informações das execuções, históricos, credenciais, dos fluxos dos usuários. Tudo fica no posts. Então eu preciso das informações tanto da API para poder fazer conexão e facilitar a minha automação e trazer as informações de forma correta no formato correto, tanto quanto as informações do banco de dados.
Esse é o acesso que eu fiz ao banco de dados posts lá do meu da minha origem, do meu N8N. E perceba aqui na entidade de workflow, onde tá todas as informações que eu preciso migrar pro meu banco de dados destino, que é o N8N com o tema escuro. Eu tenho aqui tanto workflows quanto de credenciais.
E se você olhar direito, você vai perceber que a informação das credenciais elas estão encriptadas e eu preciso fazer o processo de descriptação utilizando a chave de instalação do próprio N8N. Já as automações elas estão salvas em formato Jason, que é o mesmo que você utiliza quando você faz o download da automação para poder transferir manualmente. Você vai baixar um arquivo com essa informação aqui e você importa lá dentro do seu N8N quando você faz manualmente.
E eu preciso fazer a transição. E você poderia pensar: "Ah, basta pegar a informação do banco de dados e salvar essas informações nas novas tabelas do N8N novo lá na estrutura da VPS nova. Não vai funcionar, porque o N8N ele tem uma chave de encriptação que ele utiliza isso para tanto fazer o processo de encriptação quanto de desencriptação.
E se você fizer a transição da base de dados, só vai funcionar dessa maneira se você utilizar a mesma chave de encriptação nas duas instalações, tanto na VPS de origem quanto de destino. Só que isso fere as regras de segurança, apesar de funcionar. Se essa chave por algum motivo for exposta, você vai comprometer toda a sua estrutura de VPS, tanto na origem quanto no destino.
A primeira coisa que você tem que fazer é criar uma credencial pra API do N8N. Você vem clicar aqui, vem em create credential e procura por N8N. E você vai encontrar N8N API, dá um continue.
E aí ele vai precisar aqui da API K. E onde é que você encontra essa API K? Eu vou fechar aqui para você ver.
Você vem aqui, ó, na parte esquerda inferior e clica em settings ou configurações, se tiver traduzido para você. Na parte esquerda, você vai encontrar aqui, ó, N8N API. Clica aqui nele e vem aqui, ó, create API K.
E você vai aqui dar as permissões e o tempo de inspiração. Eu vou dizer aqui, ó, YT origem e vou colocar aqui o tempo de inspiração para nunca inspirar. Ou você coloca o tempo que você quiser.
E eu vou selecionar aqui, ó. save. E ele vai criar aqui uma P aqui.
E você tem que copiar isso aqui, senão ele desaparece, tá? Quando você clicar aqui em don, ele some e aí você vai ter que criar uma outra chave. Eu vou clicar, vou copiar, vou clicar aqui em down e venho aqui em settings, venho aqui em credentials e vou criar uma nova credencial.
Vou botar mais uma vez n NPI, vou dar um continue e vou dar um contrtrl V aqui na API. E ele também pede uma base da URL do endereço. Perceba que aqui eu vou colocar o endereço do meu N8N/PI/V1.
Então basta copiar aquilo que tá aqui em cima com https. Vem até aqui, ó, no seu domínio do N8N. Bota isso aqui, barrapi/V1.
E esse vai ser o endereço da sua PI. Vou dar o nome dele aqui de YT origem N8N, só para eu poder me achar e vou dar um save. E ele já dá a conexão bem sucedida.
Você vai fazer isso tanto aqui na origem quanto no destino. No caso, eu tô na tela preta aqui, é o destino das minhas automações. Você vai processar isso na no N8N, que vai ser o destino das automações que você precisa importar para cá.
Eu vou criar uma credencial também lá pro da origem, certo? Então eu vou aqui, ó, na tela branca, venho no mesmo caminho, venho aqui, ó, em settings, configurações, N8N API. Vou criar aqui um API aqui, vou chamar aqui de YouTube externo porque é para fora.
Vou dar um tempo de inspiração aqui, ó, no expiration. Vou dar um save, vou copiar isso aqui e vou lá no meu N8N, onde vai ser o destino das automações. Vou fazer a criação aqui, porque a automação vai tá aqui, certo?
Vou dar aqui um N8N. O processo vai ser o mesmo. Vou dar um conttrl V na PI aqui.
E a base URL é a base URL da PI que eu vou pesquisar, que no caso aqui é esse endereço que eu tenho da do meu outro da minha outra VPS. Venho aqui, copio o endereço principal, vou botar aqui barrapi/v1 e vou chamar isso aqui de tt origem n vou dar um save e ok, foi salvo com sucesso. E agora tenho duas credenciais, né?
Essa aqui eu salvei errado. No caso, esse aqui é para ser o destino, que é essa que eu tô trabalhando aqui, né? Destino é essa aqui, ó.
Autonex. curso next. Vou dar um save.
OK. E agora eu tenho duas credencial de API do N8N. O Y de YouTube destino e a origem.
E agora vou fazer a criação dos pôstres conexão com o banco de dados, tanto da origem quanto do destino. E agora a gente vai criar as conexões com o banco de dados posts, tanto da origem quanto do destino. Eu vou começar pela da origem.
Eu venho aqui, ó, create credential. Vou procurar o tipo de conexão que é postgres, que é o banco de dados que eu vou me conectar. E aí o host, você vai colocar o IP onde está a VPS da sua máquina.
E você tem que garantir que o seu post a porta exposta pra conexão externa, já que eu estou conectando de uma VPS a outra. O host lá na minha outra máquina, que é essa aqui, onde tá rodando essa informação, ele eu já tenho um IP que eu vejo lá na minha VPS. Então, o IP dela é esse.
O database que eu quero me conectar é o database que eu vejo aqui na informação dele, que foi o nome que eu dei durante a instalação. Nesse caso aqui é N8N_LINEQ. Vou colocar essa informação aqui do database N8N_Q.
E o do o usuário como é padrão é posts. O password. Se você não fez a instalação, se você utilizou um instalador, um painel, um facilitador, o password você vai encontrar dentro do painel administrativo ou dentro do docker que você utilizou.
No caso, eu utilizei aqui o portrainer. No caso aqui eu coloquei o portrainer como tela eh mais clara para você também diferenciar que esse aqui é a origem das minhas automações. Eu vou clicar aqui na minha instância, vou aqui na stack.
E aqui eu vou encontrar o serviço que tá rodando o posts. É aqui dentro, ó. Eu cliquei ali em postgs.
E aqui dentro do editor você vai encontrar a o comentário de qual é a senha que tá utilizada no seu posts. E as portas aqui, ó, estão expostas. No caso, eu não vou mostrar a senha aqui, mas a porta de comunicação é a 5432.
Eu vou dar um contrtrl C. Eu vou vir aqui, vou colocar o password e a a porta de conexão é essa aqui. E aí eu vou colocar aqui como eh YouTube Postgres Origem.
E aí eu vou dar um save e ele vai salvar e vai fazer a conexão depois que eu colocar o password aqui, correto? Eu vou dar um save e ele testou corretamente depois que eu coloquei o password lá no nosso posts de origem. E explicando de forma breve essa automação, o que você vai fazer inicialmente é fazer uma conexão utilizando a conexão de postgs da origem lá da outra automação, lá da nossa outra VPS.
E eu quero procurar a tabela de credenciais lá dentro. Por quê? Porque a forma de tratar credencial dentro do N8N é diferente.
Ele não possui o end point para API para baixar todas as credenciais. Então eu tenho que fazer a consulta direto no banco de dados. Eu faço essa consulta aqui, pego todas as credenciais, dou um split para que eu possa processar uma por uma para poder fazer o tratamento de erro.
E aqui no momento que eu faço o loop, eu chamo um API chamando um end point chamado getema. Cada credencial dentro do N8N tem seu próprio formato do Jason. Não é um formato único.
Se eu faço a importação de credencial do Micke, por exemplo, ele vai ter um formato. Se é de uma de uma chave da Openai, vai ter outro formato de Jason. Por isso, eu preciso consultar o esquema.
Esquema é o esqueleto, é a forma como o Ener Trin vai esperar que o Jason se comporte no momento que eu vou salvar. Então, como eu já fiz a consulta aqui da credencial, ele me traz o tipo que de credencial que eu preciso importar. E aqui eu uso a o get es schema para poder descobrir qual é o esquema, qual é o formato que ele espera da credencial.
Em sequência, eu salvo essas informações aqui dentro de um dados, porque eu preciso passar esses campos para essa função, esse node fusion aqui. Esse node fusion ele tem a função exclusiva de fazer o descript. Como as informações aqui dentro da base de dados estão encriptadas para as credenciais, eu preciso fazer a instrução inversa.
Eu tenho que descriptar essa informação para poder adequar ao scon correto e saber qual as informações que foram salvas aqui no banco de dados do N8N de origem. Só que nessa função aqui eu tenho duas necessidades. Primeiro delas é importar essa biblioteca.
Se você rodar essa função da maneira que tá aqui, sem fazer nenhuma alteração na seu no seu N8N, ele não vai rodar porque ele vai reclamar que falta isso aqui. Então a gente tem que mexer lá no nosso Docker para que o N8N entenda essa biblioteca do JavaScript. Para poder fazer isso, a gente vem aqui no nosso portain, no nosso N8N rodando, que vai ser o destino.
Vem aqui em stack e eu vou encontrar aqui no N8N Work a o seu a sua stack. E eu vou rolar aqui até encontrar a informação que faz a importação de bibliotecas por JavaScript. É nessa tag aqui, ó, que eu vou fazer a importação.
Eu tô permitindo aqui com essa variável de ambiente no N8N que eh bibliotecas externas façam parte do meu N8N. Eu tenho aqui três carregados. Eu tenho o Moment, o Low Dash e o Crypto JS que eu acabei de importar.
Eu tenho que fazer essa alteração aqui. Vou fazer o rebuild. Eu dou um prun services e dou um update stack e dou um repol na imagem e dou um redeploy.
E faço isso para todos os serviços do N8N. O N8N ele tem três serviços. Ele tem do web hook, ele tem o worker e ele tem o editor.
Se você tiver rodando MCP com a configuração que eu ensino para meus alunos no curso Autonex, você vai ter um quarto serviço que é um web hook exclusivo para evitar erros de MCP e fazer com que eles funcionem de maneira escalável. No caso, você vai ter que rodar os quatro serviços fazendo essa alteração nessa variável de ambiente, porque as variáveis pro N8N tem que ser iguais em todos os serviços. você coloca esse Crypto JS que essa biblioteca vai ser o responsável por fazer o descriptão.
Depois que você importou a biblioteca, fez o repling lá no no N8N, você precisa aqui colocar essa variável que é a chave de encriptação. Como o N8N utiliza um algoritmo AES de encriptação de informação, ele utiliza uma forma que você passa uma chave encriptada de encriptação, que é a semente do algoritmo. E aí ele vai utilizar essa semente, essa chave para encriptar todas as informações.
E para fazer o processo inverso, você também precisa dessa chave. E onde é que eu encontro? Como eu estou pegando essas informações da origem, eu quero descriptar as a as credenciais que estão lá na origem e passar passar para esse N8N do destino, eu tenho que pegar essa chave de descriptação lá do N8N de origem.
Então venho aqui no portainer, que é o tema branco, que é o de origem, venho aqui na stack e veio e vou procurar qualquer serviço que rode o N8N. Esse aqui ele roda um serviço e ele tá rodando os três ao mesmo tempo, tá? Então eu vou clicar aqui em editor e ele vai me abrir a stack com as informações da minha instalação do N8N.
E eu vou encontrar essa variável de ambiente aqui, ó, encryptation key. E eu vou contrtrol C nessa variável aqui e venho lá na minha automação e vou dar um conttrl V aqui. E é essa a chave que ele vai utilizar nesse algoritmo para fazer o processo inverso de descriptação das minhas credenciais.
Depois que esse node fusion roda, eu vou e salvo essa informação dessa credencial utilizando a própria API do N8N. Eu preciso disso porque o N8N vai utilizar a API Q da minha do meu destino, certo? Então, utilizando a API, eu eu essa a chamada da API, eu tenho uma garantia de que ele vai fazer a a o salvamento dos dados de forma correta no meu banco de dados de destino, ao invés de eu ficar simplesmente importando a informação de um banco de dados para outro.
E aqui eu faço a manutenção utilizando o Reds, que é um banco de dados da memória, para que ele fique persistente, porque eu vou utilizar essa informação para fazer o cruzamento da das das credenciais, porque quando você salva um workflow, ele vai salvar aqui no meu N8N com o os IDs, as referências das credenciais antigas. E como eu fiz um salvamento aqui utilizando o N8N nativo do meu destino, ele salvou com um novo ID. Então, quando eu faço o salvamento, o cruzamento da informação aqui, eu vou ter a garantia de que eu não vou precisar entrar workflow por workflow, automação por automação, setando as credenciais, porque eles já vão estar setadas.
Você vai entender melhor quando eu executar isso aqui. Depois que eu salvei as credenciais, que são prioritárias, eu venho aqui e chamo uma faço uma chamada da PI lá na minha, no meu N8N de origem, que eu quero buscar todos os workflows que estão lá. A API ele é bem feito aqui da em relação a isso.
Ele peca apenas nas credenciais porque eles são salvas com criptografia e por isso ele não tem API de recuperar todas as credenciais. Mas para workflow ele funciona muito bem. Então eu tenho aqui uma conexão com o N8N de origem e pega aqui o workflow e eu posso limitar, mas eu posso pegar aqui e retornar todos os meus workflows.
Vou dar aqui um retorn all, tá? Para ele pegar todos que estão lá. Inclusive, eu posso selecionar aqui e quero que ele apenas retorne aqueles workflows que tiverem ativos.
Cuidado com isso aqui, porque ele não vai trazer os workflows, que são subworkflows, porque por padrão no N8N, aqueles subworflows eles são inativos, então ele não reconhece aqui. Caso você queira reconhecer tudo, trazer tudo que tiver lá, você tem que desativar essa informação. Mas nesse caso aqui eu deixo ativo porque eu quero trazer apenas os ativos e vou deixar o subworkflow para trazer depois.
E aqui eu faço uma recuperação das chaves, das credenciais que já foram salvas aqui para eu poder fazer um cruzamento. Então é aqui que eu trago a recuperação, uma lista dentro do Reds, certo? O edit variáveis e mando para mais um node function.
Esse node fu aqui, ele vai fazer o tratamento de fazer a correlação entre credenciais antigas e as novas para que ele possa setar de forma correta dentro da credencial. E assim eu não preciso ficar setando um por um. E por fim, eu faço aqui utilizando a API do próprio N8N, o salvamento desses workflows, porque assim eu garanto uma persistência.
E veja que para salvar essa informação, eu preciso passar um Jason. O Jason vai ter o nome, vai ter as referências dos nodes, as conexões e as configurações para cada workerfow que está lá na origem. E assim eu seto de forma correta esse esse todos os workflows e todas as credenciais.
E vamos ver isso aqui executando. Perceba que aqui minha estrutura, eu vou dar aqui um liv eh save, dar um save. Perceba que na minha estrutura eu não tenho nenhuma transição aqui, né?
Não tenho nenhuma workflow. Eu só tenho aquelas credenciais que eu criei aqui para fazer a execução. E aí vamos lá na no nosso transição VPS e vamos executar isso aqui, tá?
Primeiro ele vai ter que vir buscar as credenciais lá na origem. A origem aqui ele tem várias credenciais, ó. Ele tem algumas credenciais aqui.
Tem um monte de credencial. Eu tenho alguns workflows aqui também. Aí ele vai buscar inicialmente esses ativos para o vídeo não ficar muito longo.
E aí eu vou dar um teste aqui. Ele vai lá, vai na na base de dados, busca em credenciais, né, todas as informações do posts e aí ele vai setando aqui de tempos e tempos. Eu poderia ter feito sem o loop.
acontece que eh quando eu faço a execução dessa maneira, vai ter alguns workflows de credenciais que vai dar erro porque eles são credenciais de nodes da comunidade e para poder importar o node de comunidade teria um trabalho mais complexo de importar o npm, o pacote, fazer a instalação e isso fica muito complicado. Sem utilizar a VPS, sem utilizar a PI, eu teria que fazer direto num terminal e que seria mais ou menos essas credenciais aqui. Eu tenho algumas que estão rodando aqui que ela é de no de comunidade, como esse cloud convert que eu faço a conversão de vídeo para áudio.
Então nesse caso aqui ele vai dar erro e aí ele precisa, eu preciso fazer o tratamento de erro aqui para que ele passe essa informação e por isso eu utilizo o loop com o erro para poder fazer a gerência. Inclusive, ele já deu um erro aqui, ó, quando eu faço esse get schema credential, porque ele não reconhece o esquema, não é próprio do N8N. E ele entra nesse loop aqui de erro e é aceitável isso, mas automação ele finaliza com as credenciais e depois ele faz as importações dos workflows, fazendo a setagem corretamente dos IDs de credenciais.
Se eu for vir aqui, depois que ele executou, eu vou perceber que ele trouxe todos os as minhas automações que estavam ativas lá na nossa origem, né? Se eu for aqui em workflow, eu vou ver que ele trouxe, ó, tudo que tava eh ativo aqui, ele trouxe para cá, né? Também trouxe as credenciais.
Todas as credenciais estão aqui, exceto as que foram de nores de comunidade. Se eu clicar aqui em um desses, eu vou perceber que a conexão está bem sucedida. Se eu for, se eu for aqui na Open ele também vai trazer a conexão bem sucedida.
Eu, se eu for aqui em qualquer outro, né? Se eu for aqui no no Clickup, que é o o CRM que a gente utiliza também, conexão bem sucedida, eu não preciso nem entrar para testar. E se eu for aqui no workflow, se eu for aqui em qualquer um desses que tenha, deixa eu ver aqui, clínica aula.
E se eu for setar aqui e num num desses que tem o reds, por exemplo, aqui, ó, se eu for o Reds e vi aqui, eu vou ver que ele já tá com conexão setada, tá vendo, ó? Se eu for aqui também na base de conhecimento, que essa aqui é uma automação que eu ensino aos meus alunos de agente SDR para clínica de estética. E aqui, se eu for vir aqui, ó, no chat memory também vou ver que ele vai tá acertado.
Se eu não tivesse feito isso aqui, aquela correlação de ideenciais novas para as antigas, ele teria vindo em branco, mas ele trouxe todas as credenciais aqui, ó. Tá vendo? De posts.
Isso sem eu ter feito nenhum cadastro de nada. Então, a mesma coisa acontece com a Open Ó, ele já trouxe também a conexão setada, tudo certo? Todas as outras que estão lá setadas.
E é essa a maneira correta de você fazer a transição de uma VPS para outra de suas automações e todas suas credenciais, fazendo o descriptor da automação, setando para que todas as conexões venham todas saudáveis, todas conectadas, sem perder nenhuma informação e economizando grande parte do seu tempo só em fazer esse tipo de transação que muitas vezes você contrata um profissional só para fazer esse tipo de operação e com essa automação Ela faz tudo de forma automática e como vocês viram não levou nem um minuto para poder executar. Bem, obrigado por assistir até aqui. Faço o convite para você participar das aulas do Auto Nex, onde você vai aprender esse tipo de artifício.
Vai aprender contingência, configuração de VPS, criar suas próprias automações sem ter conhecimento nenhum de automação, aprendendo make, postgres, N8N, Supas, inteligência artificial. Vou deixar aqui embaixo a descrição do das informações que você pode ter e também faça parte do grupo do WhatsApp da nossa comunidade, onde tem pessoas tirando dúvidas uma das outras, trazendo projetos até proposta de emprego, caso você esteja ingressando agora no mundo da automação e inteligência artificial. E até o próximo vídeo.