标签 容器部署 下的文章

点赞 + 关注 + 收藏 = 学会了

整理了一个n8n小专栏,有兴趣的工友可以关注一下 👉 《n8n修炼手册》

不管是在电脑还是 NAS 通过 Docker 部署 n8n,环境变量没配置好的话,使用 Read/Write Files from Disk 节点「读取本地本地」或者「保存文件到本地」,有可能出现这个报错。

这是 Docker + n8n 文件系统权限/路径隔离 的经典问题,不是 n8n 节点用错,而是容器只能访问被允许的目录

⚠️⚠️⚠️

想解决这个问题,首先要将你 n8n 上已有的工作流等数据找个地方保存好。因为要改环境变量,有可能会丢失数据。

⚠️⚠️⚠️

在电脑用 Docker 部署

打开 Docker,首先要在 Containers 里删掉部署好的 n8n。

然后到 Images,假设你没删掉 n8n 镜像的话,重新点击一下运行按钮。

删掉镜像了就重新拉一遍吧。可以参考《『n8n』环境搭建》

点击运行按钮后,需要添加在 Volumes 里添加一项(下图红框)。

在你的电脑,找个位置创建要给文件夹。

  • 上图红框的 Host path 这项就填入你在电脑创建的文件夹的绝对路径。
  • Container path 这项填入 /home/node/.n8n-files,必须是这个值!一个字一个符号都不能少!

然后点击“Run”按钮(弹窗右下角蓝色底色那个按钮)。

之后再浏览器输入 localhost:5678 就能运行 n8n 了。

接下来使用 Read/Write Files from Disk 节点读写文件,都是指向你刚刚在电脑创建的那个文件夹。

比如我的 /home/node/.n8n-files 指向了 文稿/n8n-data 这个文件夹,里面有一个 hello.txt 文件。

在 n8n 里使用 Read/Write Files from Disk 节点时,File(s) Selector 项需要这么写:

/home/node/.n8n-files/hello.txt

可以看到文件读取成功了。

记住记住!用法是这样的,别问为什么⬇️⬇️⬇️

/home/node/.n8n-files/文件名.后缀

在绿联 NAS 部署

如果你是在 NAS 上部署 n8n,通常使用 Docker 部署的吧~

不管你是用群晖还是其他牌子的NAS,如果使用新建项目,用是 yaml 拉镜像。

services:
  n8n:
    image: n8nio/n8n:latest   # 为了汉化成功,这里需要指定镜像版本号
    container_name: n8n
    ports:
      - 5678:5678
    volumes:
      - n8n:/home/node/.n8n # 冒号前面映射n8n文件夹绝对路径
      - n8n-files:/home/node/.n8n-files # 冒号前面映射n8n-files文件夹绝对路径
    restart: unless-stopped

那么 yaml 的代码必须在 volumes 里加一项 - n8n-files:/home/node/.n8n-files。冒号前面的 n8n-files 是允许 n8n 读写文件的文件夹的绝对路径

如果你是使用《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》里提到的方法,在 Docker 的「镜像」模块里搜索 n8n 下载部署的话,需要这么做。

我用绿联 NAS 举例,其他品牌的 NAS 操作方法大同小异。

在 Docker 的「容器」里找到 n8n,停止运行。

然后编辑它。

在 NAS 的「文件管理」里创建一个文件夹,用来给 n8n 读写文件使用的。

然后在「编辑容器」的「存储空间」里添加一项 /home/node/.n8n-files 指向那个文件夹,提供“读写”权限,如下图红框所示。

点击“保存”按钮,然后运行项目。

我在 NAS 的 n8n-files 文件夹里准备了一个 雷猴世界.txt 文件。

在 n8n 里,使用 /home/node/.n8n-files/雷猴世界.txt 这个路径就能读取到上面这个文件了。

同样,也是这个格式:

/home/node/.n8n-files/文件名.后缀

以上就是本文的全部内容啦,想了解更多n8n玩法欢迎关注《n8n修炼手册》👏

如果你有 NAS,我非常建议你在 NAS 上部署一套 n8n,搞搞副业也好,帮你完成工作任务也好 《『NAS』不止娱乐,NAS也是生产力,在绿联部署AI工作流工具-n8n》

点赞 + 关注 + 收藏 = 学会了

作者:互联网效能平台团队-Wu Qinghua
在软件研发过程中,“环境问题”是制约研发效能的关键瓶颈之一。环境不稳定、测试环境混乱、环境抢占严重等问题,显著影响开发与测试效率。本文系统介绍vivo通过“全链路多版本环境管理”模式,实现开发测试环境的快速构建与高效管理,使多版本环境能够像“平行宇宙”一般,实现安全、隔离、高效的并行测试与发布。

本文为2025年 vivo 开发者大会互联网技术专场分享内容之一,在公众号“vivo互联网技术”对话框回复【2025VDC】获取 2025VDC 互联网技术会场议题相关资料。

1分钟看图掌握核心观点👇

图1 VS 图2,您更倾向于哪张图来辅助理解全文呢?欢迎在评论区留言

一、背景&问题

1.1 我们遇到的问题

在软件研发过程中,环境问题常常成为关键路径上的阻塞点。2020年vivo某核心业务数据显示,因测试环境问题导致的转测延期占比高达67%,策划验收阶段因环境问题导致的延期超过10次。

这些数据背后,反映的是研发过程中常见的典型场景:

  • 场景一:急需联调时,依赖服务异常,导致研发阻塞;
  • 场景二:准备测试时,环境被其他版本占用,需求排期被迫延后;
  • 场景三:环境配置差异导致线上Bug漏测,引发更多问题。

深入分析该业务场景后,我们发现环境问题主要集中在以下几个方面:环境不稳定、测试环境混乱、环境抢占严重、资源利用率低下。这些问题并非单一项目特有,在微服务架构和快速迭代模式下,已成为多个团队共同面临的挑战。

1.2 问题的挑战

随着vivo互联网业务的快速发展,为满足更快发布需求,我们全面转向微服务架构。这一转变在提升灵活性与敏捷性的同时,也带来了新的管理挑战。

挑战主要来自两个维度:

  • 架构层面:服务拆分导致服务数量激增,各服务需独立部署维护,系统调用链路显著延长,任一环节故障都可能导致整体功能不可用。
  • 流程层面:业务快速迭代需求推动多版本并行推进,如版本A测试、版本B功能开发、版本C线上热修复等同步进行。

这些变化叠加,使得研发环境管理复杂度大幅提升,环境稳定性下降、资源浪费严重,最终导致整体研发效率受损。

传统环境管理方式已难以满足当前需求,亟需一种创新方法,实现多版本像“平行宇宙”一样安全、隔离、高效地并行测试与发布。

二、解决方案思路

2.1 什么叫全链路多版本环境管理

为解决环境管理难题,我们提出了“全链路多版本环境管理”理念,其核心基于三大关键能力:

1.全链路能力

单一服务版本环境不足以保证整体功能验证。必须确保版本依赖的所有组件——从前端、网关到微服务,再到数据库、缓存和消息队列——整条链路能够一键拉起、快速就绪。以支付业务调试为例,无需手动启动账户、风控、结算等服务,通过一键操作即可分钟级生成完整环境,数据流、配置流与生产环境保持一致。

2.多版本并行

支持同时创建多个“完整环境”,使各版本在独立“沙箱”中运行,彻底解决资源抢占问题。热修复版本可分钟级拉起独立环境,新功能开发同步进行,实现“分钟级响应,零等待协作”。

3.环境自动化管理

通过全生命周期自动化——从环境搭建、弹性伸缩到闲置回收,减少人工干预,降低错误率,提升资源利用效率,实现降本增效。

基于这三项核心能力,线上问题或紧急需求出现时,我们可在几分钟内创建独立环境进行验证,且不影响其他版本进程。

2.2 业务目标示意图

理解全链路多版本环境管理理念后,我们的核心解决思路也从传统的“环境隔离”转向“流量隔离”模式。

传统方式为每个版本构建完整独立的测试环境,如同各自独立的烟囱。此方式隔离性好,但资源浪费严重,环境数量有限,扩展性差。

全链路多版本环境管理方案则采用不同策略:首先维护稳定可靠的公用基线环境。当某版本需开发新功能时,无需从头搭建整套环境,仅需为实际发生变更的服务创建独立的“特性环境”。

关键问题在于如何实现流量的精准路由。答案在于流量统一网关平台,该系统在流量入口识别每个请求的环境标签,根据标签将请求路由至对应版本的服务实例。

未改动服务继续共享稳定基线环境,发生变更的服务则拥有独立环境——通过流量精准调度,既保证隔离性,又显著节约资源与成本。

这一模式类似于单栋大楼内通过不同颜色手环区分访问区域,整栋楼共享基础设施,但各区域活动互不干扰。流量统一网关平台充当“智能前台”,负责识别“手环”、调度流量,使多版本并行开发井然有序。

“逻辑隔离”相较于“物理隔离”展现出显著优势:更弹性、更经济、更高效。

2.3 全链路多版本业务架构图

基于上述思路,我们构建了完整的技术架构,清晰展示系统核心组件及协同工作机制。

全链路多版本环境的核心能力可归纳为四个关键部分:环境编排、流量隔离、容器部署与分布式链路系统。

环境编排:负责组织软件从开发到部署各环节,确保每次代码变更快速部署至指定环境。在多版本环境中,编排系统自动识别不同版本,触发对应构建部署流程,保证各版本独立高效就绪。

流量隔离:实现多版本并行的关键。通过灵活路由策略,精确控制各版本流量走向。无论是HTTP请求、Dubbo调用还是MQ消息,均能在各自服务实例间有序流转、互不干扰,如同智能交通系统确保不同“车流”各行其道。

容器部署:为环境提供轻量、标准化封装方式,各服务及其依赖打包为独立镜像。借助容器技术,实现应用秒级启动与弹性伸缩。多版本场景下,各版本可快速拉起自身实例组,极大提升资源利用率与发布效率。

分布式链路系统:架构的“可观测性”基础,实时追踪记录请求在微服务间的完整流动路径并传递环境标签。当请求进入系统,经多服务处理时,该系统完整记录其“足迹”——包括经过服务、携带标签、是否异常,为问题排查与性能优化提供关键支撑。

接下来,我们将深入解析全链路多版本环境背后的三大关键技术实现。

三、关键技术实现

从实现视角聚焦,核心技术主要包括:

  • 环境编排 - 负责指挥与创造
  • 资源弹性 - 负责支撑与供给
  • 流量隔离 - 负责识别与路由

三大技术形成有机整体,紧密协作,缺一不可。

3.1 环境编排

实现多版本并行的第一步是高效、标准化地“创建环境”。

这主要由CI/CD平台支撑,它不仅是自动化工具,更是强大的可视化环境编排器。开发人员在界面定义待部署服务,系统自动识别服务间依赖关系,判断哪些可并行部署、哪些需串行执行,最终实现“一键完成”环境编排。

优势显而易见:无论是全新版本环境搭建,还是单一服务更新,均可通过单次点击,在分钟级别快速完成,使“秒级拉起独立完整环境”成为研发流程常态。

具体而言,CI/CD平台在全链路多版本中提供两方面关键支撑:

  • 全链路能力支持:实现代码提交到自动化验证的端到端集成,确保各环境配置一致,大幅减少环境差异问题。同时精细管理微服务间依赖,支持串并行混合执行,使复杂部署流程井然有序。
  • 多版本并行支持:平台根据代码分支自动触发独立构建部署流程,为各版本创建隔离环境、添加环境标签,实现环境高效复用与隔离。底层对接强大容器化平台,为环境快速启动提供技术保障。

CI/CD平台作为多版本环境体系的“指挥中心”,高效调度四大核心组件——为容器部署提供调度依据,为流量隔离准备环境标签,使分布式链路系统充分发挥跟踪与观测能力。

3.2 弹性资源

指令发出后,需要强健的“执行体”高效落实。vivo容器化平台正是这一强大、可靠的实体。

弹性资源能力由容器化平台核心支撑。全链路多版本环境中,我们能够轻松、快速创建大量隔离环境,背后依赖的正是容器技术。

容器化工作原理简述:开发者将应用及其所有依赖打包为标准容器镜像。该镜像可在任何支持容器的环境中运行,确保开发、测试、预发和生产环境高度一致,真正实现“一次构建,随处运行”,从根源解决环境差异问题。

资源利用率方面,容器技术优势明显。传统虚拟机部署中,单节点通常仅运行单一应用,资源利用率低。容器化部署允许多个容器共享节点操作系统内核,轻量高效。对多版本环境管理而言,这意味着可低成本、高效率创建大量隔离环境。以往需10台服务器支撑的多版本测试,现仅需3-4台,成本显著降低。

此外,容器平台具备自动扩缩容能力,这在多版本场景中尤为重要:特性环境压力测试时,系统自动扩容保障稳定性;测试结束环境闲置时,资源自动缩容回收,真正实现按需使用、高效节能。

容器化带来三大核心价值:环境标准化、资源高效化与伸缩自动化。这些能力组合使我们能够轻松维护多版本并行研发,加速产品迭代,提高系统稳定性,同时显著降低成本。

对业务团队而言,这意味着更快功能交付、更稳定系统运行与更高资源利用率。这是全链路多版本环境支撑大量环境并行而无需担忧资源成本激增的根本原因。

3.3 流量隔离&流量染色

环境与资源就绪后,确保流量“对号入座”是实现隔离性的关键。这引出两个核心概念:“流量隔离”与“流量染色”。

3.3.1 流量隔离和流量染色的定义

流量隔离指由统一流量网关平台维护智能路由表,记录“环境标签”与“服务实例地址”间映射关系。

如图示:Feature1环境流量仅路由至IP1、IP2实例;Feature2流量指向IP3、IP4实例,实现真正互不干扰。

流量染色如同为每批流量分配“颜色标识”。请求进入网关前,为其添加明确环境标识,声明“属于Feature1”或“属于Feature2”。网关据此正确识别与路由。

理解流量隔离与染色后,需将其应用于真实网络环境。微服务架构下,流量基本分为两类:南北流量与东西流量。

图示说明:

  • 南北流量:外部客户端与服务器间流量,即“进出数据中心流量”;
  • 东西流量:数据中心内部服务器间流量,即微服务间调用。

在vivo实践中:

  • HTTP流量由vivo统一访问平台处理;
  • Dubbo流量由Dubbo服务治理平台负责;
  • MQ消息通过MQ消息网关平台路由。

3.3.2 流量隔离实现

1.HTTP流量隔离

过程如图绿色路径所示。始于环境编排阶段:通过流水线部署服务时,为各实例注入唯一环境标签。同时,vivo统一访问平台建立“环境标签”与后端服务实例组(Upstream)的绑定关系,触发创建相应CRD并实施监听。

此后,无论是部署、实例扩容、缩容还是重启,只要实例IP和端口变化,变更都会被实时监听并动态更新至网关路由规则,形成高效自动化闭环,确保每个带环境标签的HTTP请求被网关精准路由至正确特性环境实例。

2.DUBBO协议隔离

借助Dubbo官方原生标签路由能力实现。原理直观:将服务实例动态划分至不同逻辑分组,约束带特定标签流量仅能访问指定分组。vivo实践中,打标动作发生于部署环节。容器启动时,Init Container自动调用Dubbo服务治理平台,通过动态规则配置,无感地为当前服务实例添加环境标签。整个过程无需重启服务,配置实时生效,完美支持全链路多版本对灵活性与实时性要求。

3.消息队列(MQ)隔离

与前两者不同,MQ组件本身缺乏完善隔离机制。我们基于MQ消息网关平台mq-proxy组件实现。

实现方式巧妙:生产者与消费者启动并与mq-proxy建立连接时,在连接属性中携带自身环境标签。消息生产时,mq-proxy拦截消息,将环境标签写入消息user-property中。消费时,mq-proxy根据消息中标签与消费者自身环境标签进行匹配过滤,确保消息不会被跨环境消费。整个过程对业务代码完全透明,实现无侵入隔离。

3.3.3 流量染色实现

南北流量染色:客户端至服务器端流量染色实现方式如下。

  • HTTP请求:在请求头中添加环境信息,推荐使用ModHeader等浏览器插件,便捷地在请求头中添加env_tag=feature1等信息。
  • Dubbo调用:将环境标签置于Attachment中,提供简洁API,开发者只需在发起调用前,通过RpcContext.setAttachment("dubbo.tag","feature1")代码即可设置环境标签,对业务代码侵入性极低。
  • MQ流量染色:对业务方完全透明,由前述mq-proxy组件自动完成,业务代码无感知。

具体实现:生产者与消费者启动时,与mq-proxy建立连接,使用连接属性v-env-tag存放环境标签,即图示中间启动部分。消息生产消费环节中,生产者生产消息时,mq-proxy拦截消息,将环境标签写入消息user-property中。

消息消费端,mq-proxy拉取消息时,获取消息中环境标签信息并进行过滤,推送至对应环境服务实例,确保仅消费属于当前环境的消息。通过此机制,保证消息在整个生命周期携带环境标识,实现MQ流量染色。

3.3.4 标签的传递

最复杂部分在于环境标签在整条调用链中自动传递。通过vivo分布式链路系统实现,核心技术为javaagent,通过调用链Agent透明完成此项“接力”工作。

示例如下:来自客户端的HTTP请求携带env\_tag=feature1,网关将其路由至feature1环境的用户中心。用户中心需调用积分中心时,调用链Agent拦截此次Dubbo调用,从HTTP请求头中获取env\_tag,并注入Dubbo调用的Attachment中,积分中心因此收到该标签。积分中心处理完毕,需发送MQ消息通知活动中心。此时Agent再次拦截,从Dubbo Attachment中获取标签,写入MQ消息属性。最终,仅标注feature1的活动中心实例消费此消息。整条链路中,如有环节未匹配环境标签,流量则回退至基线环境。

如此,环境标签在HTTP→Dubbo→MQ完整链路中自动传递,确保全链路环境隔离,真正实现“一次染色,全程生效”。

回顾关键技术部分:环境编排是指挥中心,负责调度与创造;弹性资源是执行实体,负责支撑与运行;流量隔离与染色是传导系统,负责精准识别与路由。三者有机结合,构成全链路多版本环境管理的稳固架构,缺一不可。

四、业务实践与效果

全链路多版本环境落地实践后,成效显著:

  • 环境搭建效率提升:从过去多团队沟通、手动配置、平均耗时2人天,转变为开发者一键触发、分钟级自动完成。
  • 版本并发能力增强:以往受资源限制,仅支持2-3个版本串行测试;现可轻松支持9个以上特性环境并行开发测试。

这不仅带来效率提升,更实现研发节奏全面加速与业务响应能力质的飞跃。

五、未来规划

展望未来,我们对全链路多版本环境管理有清晰规划。这不仅是技术升级,更是研发管理理念的演进。

未来规划采用双轨并行策略,从研发效能环境标准化与资源成本高效化两个维度同步推进。两方向相互促进、协同支撑。

5.1 研发效能环境标准化

在已实现的环境编排、资源弹性与流量隔离基础上,重点推进三项关键措施:

1. 构建环境即服务平台

平台提供标准化环境模板,包括不同规模测试环境及各类专用环境(如性能测试、安全测试等)。通过模板化方式,确保环境一致性与标准化,同时大幅提升环境创建效率。

平台集成环境全生命周期管理功能,从环境申请、审批、创建、使用、监控到回收,形成完整闭环管理。这不仅提升管理效率,更建立完善的环境治理体系。

2. 建立全链路环境监控与可观测体系

监控体系涵盖多层:基础设施层监控CPU、内存、存储等资源使用;中间件层监控数据库、消息队列、缓存等组件性能;应用层监控服务响应时间、错误率、吞吐量等关键指标。

通过分层监控,快速识别环境中异常情况,及时发觉性能瓶颈,为环境优化提供数据支撑。监控数据同时为资源调度与成本优化提供重要决策依据。

3. 建立环境治理与合规自动化机制

治理机制包括环境命名规范、资源配置标准、安全配置要求、数据保护规则等多方面。通过自动化合规检查工具,实时监控环境合规状态,自动发现与修复不合规配置。

机制还包括环境定期审计功能,自动生成合规报告,为管理决策提供支撑。通过此方式,既确保环境安全合规,又减少人工审计工作量。

5.2 资源成本高效化

资源成本高效化方面,推进以下两项关键措施:

1. 非活跃环境自动回收

针对非活跃环境,建立智能自动回收机制。系统自动识别长期未使用环境,在确保数据安全前提下,自动进行资源回收。

机制包含多层管理:

  • 测试环境非工作时间自动休眠;
  • 开发环境连续7天未使用发出提醒;
  • 连续14天未使用自动回收。

通过分层管理,既保证开发效率,又有效控制成本。

2. 成本可视化与归因分析

成本分析从多维度展开:

  • 项目维度分析各项目资源使用成本;
  • 团队维度分析各团队成本构成;
  • 环境类型维度分析不同环境成本效益;
  • 时间维度分析成本变化趋势等。

通过精确成本统计与分析,为成本优化提供数据支撑。

通过双轨并行策略,我们实现研发效能提升与资源利用最大化的良性循环。

全链路多版本环境管理的未来规划不仅是技术升级,更是研发管理理念的转变。通过双轨并行策略,我们将建立更高效、经济、可靠的研发环境体系,同时打造更先进的研发环境管理体系。

前几天佬友说扣子编程出了一个免费版,所以也想薅一把

事先声明:扣子编程是国内的,所以无法翻墙,本质也是一个容器。能做一个代理隐藏 IP 来访问国内的网站。

所以,说老实话,自己很少有这个场景来使用

废话不多说,直接开始:

扣子编程的网址:https://code.coze.cn

本质是火山引擎旗下的东西,也是一个容器,而且吧,比较有意思,跟 claude 和 codex 差不多

基本是:讲述式编程方式,一天智能建 3 个项目,一个项目是 1cpu,2G 内存

打开网站,新建项目,然后点击网页应用,下面的文本输入框就是编程的地方了:

我们先让它自己生成一个应用,再在生成的基础上进行修改,直接硬来会有无穷的麻烦,它有自己固定的架构

建立一个极简的nodejs程序,不依赖任何前端和后端框架,不要用到next框架。前端页面是index.html,里面是Hello world,主程序是index.js,用来显示index.html的内容,绝对不要用到任何js框架。

然后系统就叽里呱啦、哔哔赖赖开始自己搞了,它缺省创立的项目无论你再怎么强调,都是基于 next.js 的,都会拉出一坨 next 的屎,所以会神经兮兮的思考来思考去,产生一堆废物,我们可以不用理他

然后显示正常

从上图我们得到几个关键信息:

  • 端口是 5000

  • 文件夹可以看到文件,里面有一堆缺省的配置,就算强调,依然有 next 拉的屎

  • 部署按钮,我们部署测试一下

按部署按钮,开始部署,完成后会得到一个域名

部署成功后,点击箭头

打开后,就是我们想要的

我们记下来这个域名,大善人啊,免费域名和免费证书

然后回到文件夹,来修改三个文件,index.html 和 index.js 和 package.json

先来改 package.json, 在 dependencies 中,加两句,注意这两句的上一句需要加个逗号,axios 最后没有逗号

 "ws": "^8.14.2", "axios": "^1.12.2" 

注意:写到最后,发现这里可以再部署一下再改 index.jsp 和 index.html 比较好,就不用经历我下面的回档了!!!!!

我下面是没有再部署,直接硬改,点开文件夹图标,选中 index.js,先别贴,需要修改混淆的:

index.js.txt

原始文件长这样:

把原有内容都删除了注意先别贴,需要修改和混淆

我们要改的有几个地方:

const DOMAIN = process.env.DOMAIN || 'xxxx.coze.site';     // 填写项目域名 const SUB_PATH = process.env.SUB_PATH || 'sub';            // 获取节点的订阅路径 const PORT = process.env.PORT || 5000;                     // http和ws服务端口 

注意 index.js 程序,跟上两篇不一样,wispbyte 和 CF 都在国外,所以 dns 的部分是直接访问谷歌 dns,而扣子是在国内,dns 的部分就不能访问谷歌了,否则程序会失效,注意注意

然后还是到 https://obfuscator.io/legacy-playground

把代码贴入混淆

然后替换掉 index.html 换上我们经典的环保地球,依然是大家最好让 gemini 给重新生成一个,否则哈哈哈,遍天下都是这个环保,真的无语了

index.txt

一切完工,再点击部署,居然失败,那是当然的!因为我们加了 axios 和 ws 库,但是没下载,不要惊慌,一键修复

然后左边栏开始滚动,这个智能引擎是可以分析出 index.js 的原始代码的

得,它居然给还原了,还完全去掉了 next 框架,下手够狠的,哈哈哈哈,那我们先退回去,如果不退,不会刷新文件列表

然后重新进入,我们得二次重新修改 index.js 和 index.html,并且把正确的 package.json 给放进去

{ "name": "js01", "version": "0.0.3", "description": "Nodejs-server", "main": "index.js", "private": false, "scripts": { "start": "node index.js" }, "dependencies": { "ws": "^8.14.2", "axios": "^1.12.2" }, "engines": { "node": ">=14" } } 

检查一下 3 个文件内容是否正确,不行就退出去,再进来,它这个控制台的文件列表才会刷新

注意上面的情况,可能会反复,我们确保三个文件都 ok,失败就让让它自己修复,然后再在修复的基础上再改。

最后重新部署一遍

再打开页面,熟悉的环保页面又回来了

然后打开订阅地址: xxxx.coze.site/sub,sub 最好改一个只有自己知道得路径

粘贴进 v2rayN 就可以使用了

不过这是个国内的容器,不能用来翻墙,可以用来隐藏 IP?

补充:弄到最后才发现,第一次生成代码部署完成,然后在 package.json 里加 axios 和 ws 的时候,其实应该让它立刻再部署,然后再改 index.js 和 index.html 和 package,这样可以减少一次它的回退。shit

anyway,关键是跟他这个引擎反复对话,让他自己修复,然后在它基础上再改,就 ok 了

其实玩法应该很多,大家可以多尝试,多对话

留了一份在自己的博客:薅羊毛之扣子编程 | 八戒的技术博客


📌 转载信息
原作者:
defunct9
转载时间:
2026/1/10 19:23:48

wispbyte 的网址:https://wispbyte.com/
有佬友发了在 wispbyte 跑 sing-box 的方法,因为其实它是一个容器,资源非常有限。
跑多了必然被 oom 杀掉。那提供一个直接 js 的方法建 vless 和 trojan,这样资源能得到有效控制。而且代码混淆,不容易被封杀。

出一篇手把手教程:

wispbyte.com , 是欧洲的一个厂家
它可以免费建立一个 server,准确的来说是一个容器,并且暴露一个端口出来

那先 Create Server,Server Name 和 Server Description 就都写 god01 好了

Server Type 当然选 Free Plan 的,运行环境就选 NodeJS

选完就按最下面的创建即可。

建好了那就去到 server manage 管理界面,下面有个 Startup:

分析红框中那句启动命令,意思很简单,如果配了 git,就去拉代码,如果有存在 npm 的 package.json,就先 npm install 安装,最后,运行主程序 index.js

下面选项是 Docker Image,本来以为是可以随便引用别处的镜像,结果是不能,只能选固定的,那就选不太激进的 nodejs_22 ,保存好

然后就什么都不用动了

然后去到左边的 Files 选项,缺省路径会是 /home/container/

上面图是已经装好运行的,如果是新服务器,是空无一物,没有任何文件

我们只需要准备 5 个文件和一个域名:

域名去免费搞一个,然后证书用大善人的let's encrypt搞定

tls.crt 证书文件,用let’s encrypt申请

tls.key 密钥文件,用let’s encrypt申请

index.html 用来装饰的环保单页面,如果不加,就会显示 hello world,太假了,可以让 gemini 给你生成一个,代码如下,注意改名 index.html:

index.txt

package.json 文件,index.js 运行时需要依赖的安装包文件,安装了 2 个包,axios 和 ws,注意改名 package.txt

package.txt (291 Bytes)

index.js 主文件,所有东西都在这里面,注意改名 index.js,上传的时候不知道为啥变成 indexjsp.txt 了

indexjsp..txt

这样就齐活了,index.js 需要修改的地方

const DOMAIN = process.env.DOMAIN || '1234.abc.com';       // 填写域名 const SUB_PATH = process.env.SUB_PATH || 'sub';            // 获取节点的订阅路径 const PORT = process.env.PORT || 7860;                     // 端口 
  • 域名我们要填写自己的域名

  • 路径要换掉,缺省是 sub,也就是订阅地址是 https://xxx.aaa.com/sub , 最好换成自己独特的地址

  • 端口也选这个服务器给你开的端口,我的是 10407, 看下图

然后改好了,别急着贴进去

打开: https://obfuscator.io/legacy-playground

贴进去代码,混淆一下,弄成谁也认不得的模样,然后 Copy,再贴进去

最后运行

看到 Online 就好了

那域名解析到这个 IP,打开 https 看看:

那再打开 https://www.bbb.com/sub , 如果改了 sub,那就是设置的别的路径,会显示一堆 base64 加密的字符串

从 v2rayN 导入,有两个代理,一个是 vless,一个是 trojan,就可以用了

关键是这么做的原理,就是用 index.js 完整实现了 vless 和 trojan 的功能,加了证书,并且做了混淆和伪装

这样很自然,比在容器里直接 sing-box 安全占用资源少,不容易被扫描到

当然,这个网站的速度不太行,所以只是一个玩具,没有套大善人 Cloudflare 的 CDN

自己用的是 huggingface.co + CF worker,速度还是可以的。

代码放在: GitHub - zhangrr/js-server: nodejs server

大家自行取用吧

也放到博客了:wispbyte.com 薅羊毛记 | 八戒的技术博客


📌 转载信息
原作者:
defunct9
转载时间:
2026/1/4 12:14:47

选 nodejs

下载压缩包

https://nekoha.uk/usr/uploads/2026/01/1067276862.zip

在 Files 里解压开来

Startup 中的 Startup Command

chmod +x etc/sing-box/sing-box && ./etc/sing-box/sing-box run -C etc/sing-box/conf/

根据 Server Port 修改 13_tuic_inbounds.json 文件

免费欧洲容器 Wisp byte 运行 sing-box 搭建 tuic 协议节点6

运行

按照该链接导入

tuic://4727a44d-164b-47bd-b9cd-cd22bd28e1e2%3A4727a44d-164b-47bd-b9cd-cd22bd28e1e2@<你的主机>:<你的端口>?alpn=h3&congestion_control=bbr#60c346f3-0a04-4716-89f1-071a1acad756%20tuic


📌 转载信息
原作者:
xxecy
转载时间:
2026/1/1 15:40:28

没有 VPS?教你零成本在 ClawCloud 上部署 CLIProxyAPI 继续讨论~

近期需要部署 CLIProxyApi 反代 反重力,但苦于最近服务器都遭受 CC 攻击,所以选择容器平台
原教程已经很详细啦,但现在(指发帖日 2025/12/30)Clawcloud 的容器额外储存已经无法写入了,按照原教程会导致容器一直重启呢

所以!需要使用 Clawcloud 提供的免费 Object Storage Service 作为储存啦
进入 Object Storage 之后,随便建立一个 Private 储存桶


之后保存以下信息:存储桶全名、Access Key、Secret Key 以及 External 地址(注意不要使用内网地址!目前是不可达的!)



这 4 个参数将分别用于设置环境变量。此外,我们还需额外设定一个 MANAGEMENT_PASSWORD (用于登录 WebUI 的密码)。请将这些信息整理为以下格式并妥善保存:

OBJECTSTORE_ENDPOINT=External值
OBJECTSTORE_ACCESS_KEY=Access Key值
OBJECTSTORE_SECRET_KEY=Secret Key值
OBJECTSTORE_BUCKET=存储桶全称
MANAGEMENT_PASSWORD=访问WebUI的密码

然后转到 App Launchpad 创建容器,与原教程一致
如果只需要一个服务,可以适当拉高内存哦

页面向下拉动,在高级设置中,需要填写 和原教程不一致哦
环境变量 (Environment Variables)

OBJECTSTORE_ENDPOINT=External值
OBJECTSTORE_ACCESS_KEY=Access Key值
OBJECTSTORE_SECRET_KEY=Secret Key值
OBJECTSTORE_BUCKET=存储桶全称
MANAGEMENT_PASSWORD=访问WebUI的密码

启动命令 (Command): /CLIProxyAPI/CLIProxyAPI
Local Storage: 已经,不需要了
环境变量的填写方法参看下图

最后点击部署,访问你的 https://PublicAddress/management.html 就可以使用啦


📌 转载信息
原作者:
asaki
转载时间:
2025/12/30 18:05:21