n8n 本地部署及实践应用,实现零成本自动化运营 Telegram 频道(保证好使)

n8n 本地部署及实践应用,实现零成本自动化运营 Telegram 频道(保证好使)

简介

n8n 介绍

一、高度可定制性

二、丰富的连接器生态

三、自托管部署(本地部署)

四、社区驱动

n8n 的部署

一、前期准备

二、部署步骤

1、检查系统的网络环境

2、下载 n8n 源码

3、n8n 容器的启动(docker run)

4、n8n 容器的启动(docker compose)

n8n 的使用

一、工作流的创建

二、触发器节点

自动化运营 Telegram 频道

备份与加载 n8n 的镜像

一、备份 n8n 的镜像

二、加载 n8n 的镜像

简介

        在数字化办公与自动化流程日益普及的今天,高效地整合各种工具和服务,实现工作流的自动化,已成为提升生产力的关键。n8n 作为一款强大的开源工作流自动化平台,为我们提供了一种灵活且强大的方式,来连接不同的应用程序,自动化复杂的任务流程。本文将详细介绍 n8n 的特性,并一步步引导你完成 n8n 的本地部署,最后探索如何使用它创建实用的工作流。

n8n 介绍

        n8n 是一个功能丰富的开源工作流自动化工具,旨在帮助用户轻松连接各种应用和服务,构建自动化工作流程。

一、高度可定制性

        n8n 提供了可视化的工作流编辑器,通过简单的拖放操作,就能创建复杂的工作流程。同时,它还支持在节点中编写自定义 JavaScript 代码,满足高级用户对功能定制的需求。这意味着,无论是简单的数据处理任务,还是涉及多个系统交互的复杂业务流程,n8n 都能灵活应对。

二、丰富的连接器生态

        n8n 拥有超过 600 个预构建的连接器,涵盖了常见的办公软件(如 Google Workspace、Microsoft 365)、社交媒体平台(如 Facebook、Twitter)、数据库(如 MySQL、PostgreSQL)、云存储服务(如 Dropbox、Google Drive)等。借助这些连接器,用户可以轻松实现不同应用之间的数据传输、操作和协同,极大地扩展了工作流的应用场景。

三、自托管部署(本地部署)

        对于注重数据隐私和安全性的企业或个人用户,n8n 支持自托管部署。你可以将 n8n 部署在自己的服务器或本地环境中,完全掌控数据的存储和处理,避免数据泄露风险,n8n 支持 Nodejs 部署和 Docker 部署,比较推荐 Docker 部署,后面 n8n 的部署都是使用 Docker 进行部署。同时,自托管部署也为用户提供了更大的灵活性,可以根据自身需求进行系统配置和定制化开发。

四、社区驱动

        n8n 拥有一个活跃的社区,社区成员不仅贡献了大量的插件、模板和使用案例,还积极参与技术讨论和问题解答。这使得用户在使用 n8n 的过程中,能够获得丰富的学习资源和技术支持,加速工作流的开发和优化。

n8n 的部署

一、前期准备

环境要求

  • 硬件要求:CPU ≥ 2 cores (x86)(n8n 不太占用 CPU 资源);内存 320 MB - 2 GB;硬盘 512 MB - 4 GB SSD
  • 软件要求:Ubuntu ≥ 22.04;Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1 或 Docker Desktop 4.39.0 & Docker Engine 28.0.1(Windows 环境下)

网络要求

  • 本地网络:部署时可以使用 VMware 的 NAT 模式,如果只是本机使用就已经无需调整了,如果是需要内网中为其他设备提供服务,那就需要配置成 bridge(桥接)模式了;如果使用 Docker Desktop 进行部署,只需要保持默认设置即可
  • 外部网络: n8n 是使用 docker 进行部署,在构建时需要从网络上拉去镜像,国内虽然有镜像源,但是并没有外面的全,所以可能会导致超时导致构建失败,所以提前准备一个靠谱的代理(科学上网)是非常必要的
  • DNS:需要在 docker compose 或 docker run 时指定,否则可能会出现 The DNS server returned an error, perhaps the server is offline. 的错误

Ollama 的安装:DeepSeek + Ollama 部署自己本地的 AI 大模型(Windows,AMD 显卡也能用)_为啥deepseek要装ollama-CSDN博客 

docker 的安装

  • Linux 环境:Ubuntu使用国内源安装Docker,Mysql,Redis_ubuntu docker源-CSDN博客
  • Windows 环境(有图形化界面):https://blog.csdn.net/zjw529507929/article/details/146218875

二、部署步骤

        本次演示将会在 Windows 环境下进行安装,Windows 和 Linux 除了 docker 的安装不太一样之外,后面的一系列命令都是一样的,在生产环境部署建议使用 Linux 这会相对稳定一点,但是也需要一定的基础。

1、检查系统的网络环境

        在装好 Docker Desktop 后开始检查的及时网络问题了,首先我们要把之前提到的代理打开,并调节到全局模式(拉取镜像的成败关键)

​        同时即使开了代理有的还是会失败,这是由于运营商的问题,因为每个运营商对于不同 IP 访问的路由设置都不一样,目前在广东测试发现电信是最好使的。可以根据下面的命令进行 ping 测一下:

ping www.docker.com
ping www.github.com

        如果到最后实在是没办法了,可以拿我提前安装好的镜像直接导入到 docker 当中来使用,这样就可以避免网络问题了,链接在“备份与加载 n8n 的镜像”的部分。

2、下载 n8n 源码

        n8n 是一个开源软件,我们可以直接上 Github 上搜索并下载其源码,链接为:https://github.com/n8n-io/n8n,可以直接下载 ZIP 压缩包或通过 git 命令下载(需要提前安装 git)

git 的安装

Linux:

sudo apt-get install -y git

        如果已经安装过会如下图所示

​Windows:

        直接打开该链接下载:Git - Downloads

​​        下载完成后双击安装,安装选项默认即可。然后我们去 Github 上获取克隆链接,如下图所示

​​        打开目标目录,在地址栏输入 cmd 根据当前目录打开终端,并输入以下命令(该命令会下载到当前所在目录下)

git clone https://github.com/n8n-io/n8n.git

3、n8n 容器的启动(docker run)

        在官方给出的 README 文件给出的快速启动方式当中,是使用以下命令来启动的

# 创建一个 Docker 数据卷,用于存储和持久化 n8n 容器的数据,该卷名为 n8n_data,即时 Docker 容器重启或者删除也不会丢失数据,该操作为幂等操作,所以重复执行也没关系
docker volume create n8n_data# 启动容器
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

​        但出于以后的管理需求,我个人还是建议使用 docker compose。

4、n8n 容器的启动(docker compose)

        目前只是用到一个 n8n 的镜像所以并不需要构建就可以了,至于为什么要使用 docker compose,这是为了日后需要部署多个应用(traefik、postgre 等)支撑时方便我们自己维护环境。

.env(环境变量)

# DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from
# The top level domain to serve from
# DOMAIN_NAME=example.com# The subdomain to serve from
# SUBDOMAIN=n8n# The above example serve n8n at: https://n8n.example.com# Optional timezone to set which gets used by Cron and other scheduling nodes
# New York is the default value if not set
GENERIC_TIMEZONE=Asia/Shanghai# The email address to use for the TLS/SSL certificate creation
# SSL_EMAIL=user@example.com# With Postgres env
# POSTGRES_USER=root
# POSTGRES_PASSWORD=123456
# POSTGRES_DB=n8n# POSTGRES_NON_ROOT_USER=root
# POSTGRES_NON_ROOT_PASSWORD=123456

docker-compose.yml(配置文件)

name: n8n_dockerservices:n8n:image: docker.n8n.io/n8nio/n8nrestart: alwaysports:- "127.0.0.1:5678:5678"dns:    # 指定 DNS,如果未指定很可能某些网站会出现 The DNS server returned an error, perhaps the server is offline. 的错误- 8.8.8.8environment:- N8N_PORT=5678- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}volumes:- n8n_data:/home/node/.n8n- ./local-files:/files    # 把容器环境中的 /files 映射到 ./local-files 中networks:    # 指定容器所属的网络- backend# 创建一个 Docker 数据卷,用于存储和持久化 n8n 容器的数据,该卷名为 n8n_data,即时 Docker 容器重启或者删除也不会丢失数据
volumes:n8n_data:networks:backend:driver: bridge    # 使用桥接模式来连接网络ipam:    # 容器内的网络设置driver: default    # 使用宿主机默认的网卡config:- subnet: 169.254.50.0/24gateway: 169.254.50.1

        你可以把环境变量和配置文件都放在根目录下,也可以像我一样都放在一个文件夹下

​        无论你使用哪一种方式,只需要注意,使用 docker compose 时在 docker-compose.yml 文件所在目录下执行即可

​        启动完成后,看到 http://localhost:5678 表示启动成功

​        在浏览器输入以下 URL 来进行测试(127.0.0.1 与 localhost 是一样的)

​        我们需要先注册一个账号,然后在进行登录。登陆后我们点击加号就可以开始创建我们自己的自动化流程了

​        至此,自托管部署的 n8n 就部署完成了。 

n8n 的使用

一、工作流的创建

​        创建空白工作流后的操作界面如下

​        如果之前使用过 Dify 之类的相信对这个工作流的操作页面不会陌生,同样的点击加号开始选择不同的节点来创建工作流

二、触发器节点

        通常工作流最开始的都是触发器节点,当然一个工作流当中也可以有多个触发器节点。

手动触发(即点击该按钮手动触发)

APP 事件触发

​        n8n 支持多种 app 事件触发,点进去可以发现有挺多是我们平常都会使用的,如 Github、Excel、Telegram 等

​        点开后,可以发现它支持非常多的 Github 事件,如通过评论来触发工作流、对项目的创建或删除来触发工作流等

定时触发

​        可以设置工作流每天或者每小时执行一次,还支持 Cron 来进行设置定时任务,在“自动化运营 Telegram 频道”中会使用到。

Webhook 调用

        这种方式是一种第三方服务进行回调的方式,但由于我们使用的个人电脑通常都没有公网 IP,所以不能提供 Webook 给第三方服务唤起,如果实在想用,那可以考虑把 n8n 部署在云上面。

表单提交

        当有人填写表单并提交时就会触发工作流。

其他工作流来触发

聊天消息触发

其他触发

        n8n 还支持,邮件、错误触发、本地文件操作等触发方式。

        在添加触发节点后,后续会有个加号,可以陆续地添加各种其他的工作节点,如需要了解更多可以查看官方文档:https://docs.n8n.io/integrations/

自动化运营 Telegram 频道

        该工作流,计划每天早上8点,定时自动抓取国外的 AI 相关的新闻,经过 AI 翻译整理后,自动发送到我指定的 Telegram 频道当中,总体的工作流如下图所示

1、定时触发

        设置完成后,点击右上角的 Test step 来进行节点测试,如下图所示

        由于时区我们在环境变量当中已经设置了,所以这里就直接按照环境变量当中的时区来显示时间,如果未在环境变量当中设置,可以在 Settings ——> Timezone 中的值设置为 Asia/Shanghai,如下图所示

2、获取国外新闻 API

        这里我们需要使用两个国外网站提供的 API,地址如下:

  • News API – Search News and Blog Articles on the Web
  • GNews: News API to Search for the Latest & Historical News

注意:这两个网站可能需要科学上网

        两个网站均需要注册账号后才能使用 API,针对个人用户每天可以请求100次,个人用户足够用了。

News API 的 API Key 获取

        注册登录后,点击主页的 Get API Key 来获取 API Key

         API Key 创建完成后如下图所示

         HTTP 请求的 URL 在下图所示的地方获取

GNews 的 API Key 获取

        注册登录后,点击主页右上角的 Dashboard 进入控制面板

        进入控制面板后就能看到已经创建好的 API Key 了

         HTTP 请求的 URL 在下图所示的地方获取

3、向 API 发起 HTTP 请求来获取新闻数据 

        回到 n8n 工作流当中,我们创建两个 HTTP 请求

        News API 和 GNews 的配置分别如下图所示

News API

注意:需要把搜索的 q 参数改为需要的值,如 AI 相关的新闻就是 q=ai。

GNews

注意:

  • 需要把搜索的 q 参数改为需要的值,如 AI 相关的新闻就是 q=ai
  • GNews 搜索出来的新闻会有多语种,这里我们需要设置 lang=en 来限定语言为英语的新闻

         设置完成后,点击Test step 测试是否设置成功,成功如下图所示

4、数据转换(JSON 转为 String)

        由于两个网站返回的 JSON 结构并不一致,为了方便后续的处理,我们需要数据转换节点来进行数据转换

        在配置前需要先执行前面的节点先,这是因为配置当中需要引用前面节点的结果,如下图所示

        两个返回的 JSON 格式结果都执行同样的数据转换,配置和操作一样。设置完成后,点击Test step 测试是否设置成功,成功如下图所示

5、合并两个数据转换后结果数据

        配置如下

        设置完成后,点击Test step 测试是否设置成功,成功如下图所示

6、调用大模型来处理数据

        创建完成后需要点击 Chat Model 下方的加号来添加 LLM

        我们这里使用 Ollama 来调用大模型

        刚开始我们需要先配置以下 LLM,按照下图配置即可

        配置好之后我们就可以回到上一个页面选择需要使用的大模型了,这里 n8n 已经把 Ollama 中的大模型列表都加载进来了

        回到 AI Agent 当中,还需要进行一些提示词相关的配置

        设置完成后,,点击Test step 测试是否设置成功,这里调用大模型需要一点时间,时间长短要看你电脑的配置,成功如下图所示

7、Telegram 频道与机器人的创建

        在调用 n8n 中的 Telegram 节点之前我们需要先获取两样与 Telegram 相关的东西:

  • Telegram 的 Access Token
  • Chat ID

Access Token

        我们要在 Telegram 上搜索 botfather,来创建我们的频道与机器人

        初次使用时请点击下方的 Start 来开始使用,然后他会自动发一段话过来,点击 /newbot 来创建

Chat ID

        在 Telegram 上搜索 get_id_bot 来查询我们的 Chat ID

        同样的初次使用时请点击下方的 Start 来开始使用,然后我们发送 /my_id 来查询自己的 Chat ID

8、n8n 中 Telegram 的设置

        然后我们使用之前获得的 Access Token 和 Chat ID 来配置节点,如下图所示

        连接成功

        设置完成后,,点击Test step 测试是否设置成功,成功如下图所示

        同时 Telegram 也能收到该频道的机器人发出来的消息

        可以看出,发送的内容与提示词当中要求的内容是比较一致的。

备份与加载 n8n 的镜像

一、备份 n8n 的镜像

1、n8n 需要备份的镜像有:docker.n8n.io/n8nio/n8n,我们可以使用以下命令来查看

docker image ls

2、使用下面的命令来进行备份

docker save -o "F:\10_Professional Resource\Docker\Images\n8n-1.86.1_images\docker.n8n.io_n8nio_n8n_latest.tar" docker.n8n.io/n8nio/n8n

备份好的镜像:https://pan.baidu.com/s/1ScnIBzJ1E6fkswmn0IGfoA?pwd=6ab3 提取码:6ab3

二、加载 n8n 的镜像

          将备份的镜像拷贝到需要部署的机器之后使用以下命令进行镜像的载入

docker load -i "F:\10_Professional Resource\Docker\Images\n8n-1.86.1_images\docker.n8n.io_n8nio_n8n_latest.tar"

        加载完成后可以使用以下命令查看是否加载成功

docker image ls

​         当然也是需要重新下载源码以及修改环境变量和配置文件的,请重复前面 n8n 部署第四步中的相关点,在一切处理完成后就可以使用以下命令来启动了

# 在 n8n 中 docker-compose.yml 文件的目录下执行
docker compose up -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter 桌面应用之系统托盘

系统托盘(Tray) 系统托盘就是状态栏里面对应的图标点击菜单 主要有两款框架 框架一句话评价tray_manager轻量、简单、易用,适合常规托盘功能system_tray更底层、更强大、支持图标/菜单/消息弹窗等更多功能,但复杂度更高 🧱 基础能力对比 …

修改idea/android studio等编辑器快捷注释从当前行开头的反人类行为

不知道什么时候开始,idea编辑的快捷注释开始从当前行开头出现了,显得实在是难受,我只想让在当前行代码的部份开始缩进两个字符开始,这样才会显得更舒服。不知道有没有强迫症的猴子和我一样,就像下面的效果:…

MySQL慢查询全攻略:定位、分析与优化实战

🚀 MySQL慢查询全攻略:定位、分析与优化实战 #数据库优化 #性能调优 #SQL优化 #MySQL实战 一、慢查询定位:找到性能瓶颈 1.1 开启慢查询日志 -- 查看当前配置 SHOW VARIABLES LIKE %slow_query%; -- 动态开启(重启失效&…

当原型图与文字说明完全不同时,测试要怎么做?

当测试遇上左右手互搏的需求,怎么办? "这个弹窗样式怎么和文档写的不一样?"、"按钮位置怎么跑到左边去了?"——根据Deloitte的调查,62%的项目存在原型图与需求文档不一致的情况。这种"精神分…

关于量化交易在拉盘砸盘方面应用的部分思考

关于“砸盘”的深层解析与操盘逻辑 ​​一、砸盘的本质与市场含义​​ ​​砸盘​​指通过集中抛售大量筹码导致价格快速下跌的行为,其核心目标是​​制造恐慌、清洗浮筹或实现利益再分配​​。不同场景下的砸盘含义不同: ​​主动砸盘(操控…

【项目管理】第12章 项目质量管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…

一个好看的图集展示html页面源码

源码介绍 一个好看的图集展示html页面源码,适合展示自己的作品,页面美观大气,也可以作为产品展示或者个人引导页等等 源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改, 双击html文件可以本地运行…

2021第十二届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、空间-(题解)-字节单位转换 2、卡片-(题解)-可以不用当组合来写,思维题 3、直…

LabVIEW 中 JSON 数据与簇的转换

在 LabVIEW 编程中,数据格式的处理与转换是极为关键的环节。其中,将数据在 JSON 格式与 LabVIEW 的簇结构之间进行转换是一项常见且重要的操作。这里展示的程序片段就涉及到这一关键功能,以下将详细介绍。 一、JSON 数据与簇的转换功能 &am…

蓝桥杯大模板

init.c void System_Init() {P0 0x00; //关闭蜂鸣器和继电器P2 P2 & 0x1f | 0xa0;P2 & 0x1f;P0 0x00; //关闭LEDP2 P2 & 0x1f | 0x80;P2 & 0x1f; } led.c #include <LED.H>idata unsigned char temp_1 0x00; idata unsigned char temp_old…

通过HTTP协议实现Git免密操作的解决方案

工作中会遇到这样的问题的。 通过HTTP协议实现Git免密操作的解决方案 方法一&#xff1a;启用全局凭据存储&#xff08;推荐&#xff09; 配置凭证存储‌ 执行以下命令&#xff0c;让Git永久保存账号密码&#xff08;首次操作后生效&#xff09;&#xff1a; git config --g…

Java常见面试问题

一.Liunx 二.Java基础 1.final 2.static 3.与equals 三.Collection 1.LIst 2.Map 3.Stream 四、多线程 1.实现方法 2.线程池核心参数 3.应用场景 五、JVM 1.堆 2.栈 六、Spring 1.面向对象 2.IOC 3.AOP 七、Springboot 1.自动装配 八、SpringCloud 1.Nacos 2.seata 3.ga…

【蓝桥杯】第十六届蓝桥杯 JAVA B组记录

试题 A: 逃离高塔 很简单&#xff0c;签到题&#xff0c;但是需要注意精度&#xff0c;用int会有溢出风险 答案&#xff1a;202 package lanqiao.t1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…

PyTorch Tensor维度变换实战:view/squeeze/expand/repeat全解析

本文从图像数据处理、模型输入适配等实际场景出发&#xff0c;系统讲解PyTorch中view、squeeze、expand和repeat四大维度变换方法。通过代码演示对比不同方法的适用性&#xff0c;助您掌握数据维度调整的核心技巧。 一、基础维度操作方法 1. view&#xff1a;内存连续的形状重…

Kubernetes nodeName Manual Scheduling practice (K8S节点名称绑定以及手工调度)

Manual Scheduling 在 Kubernetes 中&#xff0c;手动调度框架允许您将 Pod 分配到特定节点&#xff0c;而无需依赖默认调度器。这对于测试、调试或处理特定工作负载非常有用。您可以通过在 Pod 的规范中设置 nodeName 字段来实现手动调度。以下是一个示例&#xff1a; apiVe…

即时编译器(JIT)的编译过程是什么?

1. 触发编译 JIT编译的触发基于热点代码检测&#xff0c;主要通过两种计数器&#xff1a; • 方法调用计数器&#xff1a;统计方法被调用的次数&#xff08;默认阈值&#xff1a;C1为1,500次&#xff0c;C2为10,000次&#xff09;。 • 回边计数器&#xff1a;统计循环体的执行…

Java基础:集合List、Map、Set(超详细版)

集合体系概述 Collection常用方法 补充&#xff1a;addAll() Collection的遍历方式 迭代器 增强for&#xff08;空集合可以&#xff0c;null不可以&#xff09; lambda 集合对象存储对象原理 遍历方式的区别 List集合 特点、特有方法 遍历方式 &#xff08;同上&#xff09…

Elasticsearch 全面解析

Elasticsearch 全面解析 前言一、简介核心特性应用场景 二、核心原理与架构设计1. 倒排索引&#xff08;Inverted Index&#xff09;2. 分片与副本机制&#xff08;Sharding & Replication&#xff09;3. 节点角色与集群管理 三、核心特点1. 灵活的查询语言&#xff08;Que…

【2】k8s集群管理系列--包应用管理器之helm(Chart语法深入应用)

一、Chart模板&#xff1a;函数与管道 常用函数&#xff1a; • quote&#xff1a;将值转换为字符串&#xff0c;即加双引号 • default&#xff1a;设置默认值&#xff0c;如果获取的值为空则为默认值 • indent和nindent&#xff1a;缩进字符串 • toYaml&#xff1a;引用一…

JVM 字节码是如何存储信息的?

JVM 字节码是 Java 虚拟机 (JVM) 执行的指令集&#xff0c;它是一种与平台无关的二进制格式&#xff0c;在任何支持 JVM 的平台上都可运行的Java 程序。 字节码存储信息的方式&#xff0c;主要通过以下几个关键组成部分和机制来实现&#xff1a; 1. 指令 (Opcodes) 和 操作数 …