局域网端口转发工具
端口映射
安装次数
点赞
应用评论
催更次数
桌面端
移动端




应用描述
用于映射微服中其他容器与应用的端口至局域网端口
相关攻略

用自己的域名实现内外网无缝访问懒猫微服内的应用
# 背景 目前使用懒猫微服已经成功替代我之前的 NAS 成为家庭服务中心了,使用懒猫微服客户端的场景下,默认就是不需要关注内外网,都能够直接访问到我的服务, 但是有一些服务使用第三方,或者原生的客户端,而且本身也有认证功能的情况,就需要一些适配工作, 使用第三方服务自身的认证加上 HTTPS,从而不需要登录懒猫客户端也能无视内外网访问应用。 好在懒猫微服商店的有足够的应用,很大程度的降低的配置的复杂度。 目标效果如下: 1. 无论在家里局域网,还是出门公网,都可以访问服务 2. 使用同一个域名自动适配内外网 3. 使用 HTTPS 加应用自身认证保证安全 # 准备工作 当然,如果想要很方便的访问到内网的服务,还是有一些前置的依赖项的: 1. 自己拥有域名并托管到 cloudflare 上,在此教程中以 example.com 举例 2. 最好的有自己的 ssl 证书,使用 let's encrypt 获取不复杂,在此教程中先默认有证书可用。 补充一句,如果确实没有 ssl 证书,可以考虑使用自签证书。 除了以上依赖,还用到了以下几个应用: https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.cloudfalredweb https://appstore.lazycat.cloud/#/shop/detail/app.ikw.lzc.caddy https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward 使用 Jellyfin 作为示例: https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.jellyfinsingle 然后我们就可以开始配置工作。 # 安装 ## 1. 配置端口转发,打通跨应用访问 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward ### 目标服务转发 因为涉及不同的服务进行内外网转发,所以首先我们要将希望转发的服务,通过端口转发工具,转发至微服虚拟网卡,以便转发服务能访问到目标服务。 此处以 Jellyfin 为例,转发 `8096` 端口至 `host.lzcapp:8096`,端口不一定需要一样,不冲突即可。  ### Caddy 局域网内端口转发 由于我们还希望在内网的时候可以方便的访问各种服务,所以需要配置一个 Caddy 局域网端口,作为统一入口。 由于我们需要使用 HTTPS,所以一定需要使用 443 端口。  ## 2. 配置 Cloudflared,打通公网访问 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.cloudfalredweb 参考[官方教程](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/),配置 Cloudflared Tunnel 连通域名到懒猫微服的公网访问。 需要注意的是安装 cloudflared 时,直接安装懒猫微服商店中的 Cloudflared 即可。 当连接成功后,选择 `Public Hostname`,  并新增一个自定义子域名,例如 `movie.example.com`,然后保存即可。  此时,你应该已经拥有可以公网直接访问的 Jellyfin 了,而且自带了 HTTPS  ## 3. 配置 Caddy,打通内网访问 通过 Cloudflare Tunnel,我们已经可以通过公网访问 Jellyfin 了,但是我们肯定不希望在家里的时候,也走公网绕一圈,所以我们可以通过 Caddy,实现无缝内网访问。 https://appstore.lazycat.cloud/#/shop/detail/app.ikw.lzc.caddy Caddy 通过配置文件进行转发配置,配置文件位于 Caddy 的应用数据下 `Caddyfile/Caddyfile`, 首先将 ssl 证书也放到 Caddyfile 文件夹下, 然后加入以下内容,最后重启 Caddy 即可: ```Caddyfile movie.example.com { tls /etc/caddy/example.com.crt /etc/caddy/example.com.key reverse_proxy host.lzcapp:8096 } ``` 注意: 1. 第一行是 tls 配置,路径不要写错,`Caddyfile` 文件夹是映射至服务内 `/etc/caddy` 的 2. 第二行是转发配置,`reverse_proxy` 是固定的,域名和端口是前文配置的 ## 4. 路由器配置域名转发 由于域名托管在 Cloudflare,并且进行了 Tunnel 的配置,域名已经默认指向 Cloudflare, 但是我们回到家时,希望直接访问内网,所以需要在路由器上将域名指向懒猫的 IP。 不同的路由器配置方式不同,用户根据自己的路由器配置解析即可。 # 结语 到此,我们完成了所有配置,实现效果如下: 1. 无需启动懒猫微服客户端 2. 公网时,自动通过 Cloudflare Tunnel 访问服务 3. 内网时,自动通过内网访问服务 4. 全程 HTTPS 加密

如何用BackVault备份VaultWarden数据
# 准备工作 ## 获取VaultWarden的API Key 首先打开应用 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.vaultwarden 登录账号,进入主界面  点击左侧**Settings**,点击**Security**,点击右侧**Keys**,再点击下方的**View API Key**。  输入你的账号密码后, 就会出现下方的API Key。我们需要用到**Client ID**和**Client Secret**这两个值,复制保留。  ## 端口转发配置 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward 打开端口转发工具,配置VaultWarden端口,可参考下图  # 备份操作 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.backvault 打开应用,需要进行配置向导设置。 服务地址填入刚才配置的端口转发地址,其余配置按需修改,也可按照默认进行。  进入应用后,需要按照下图进行以下配置: > **Bitwarden Client ID**:上面获取Client ID > **Bitwarden Client Secret**:上面获取的Client Secret > **Bitwarden Master Password**: ValutWarden的登录密码 > **Backup File Password**:备份文件加密密码(可选)  配置完之后,点击**Initialize**,如果无误,就会显示下图,就表示配置成功了,可以关闭页面了。  # 备份文件路径 打开懒猫网盘,左侧点击应用数据,找到**BackVault**,点击进入  然后选择**backup**文件,就可以看到刚才备份的加密文件了。  # 如何解密文件 我这边以macos系统上操作为示例: 1. 确保你已经安装了python,没有可用以下指令安装 ``` brew install python ``` 2. 创建并激活虚拟环境(可选但推荐) ``` python3 -m venv ~/backvault-decrypt source ~/backvault-decrypt/bin/activate ``` 3. 用 pip 安装 cryptography,显示successfully就表示成功安装了。 ``` pip install cryptography ```  4. 新建文件 decrypt.py,粘贴下面脚本并保存,我这边文件是保存在桌面,与上面下载的加密文件位置一致。 ``` # decrypt.py import sys from getpass import getpass from cryptography.hazmat.primitives.ciphers.aead import AESGCM from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC from cryptography.hazmat.primitives import hashes from cryptography.exceptions import InvalidTag SALT_SIZE = 16 NONCE_SIZE = 12 TAG_SIZE = 16 KEY_SIZE = 32 PBKDF2_ITERATIONS = 600000 # 若你在 VaultWarden 改过迭代次数,这里也要改;没改就按照默认值 def decrypt_data(encrypted_data: bytes, password: str) -> bytes: salt = encrypted_data[:SALT_SIZE] nonce = encrypted_data[SALT_SIZE:SALT_SIZE+NONCE_SIZE] ciphertext_with_tag = encrypted_data[SALT_SIZE+NONCE_SIZE:] ciphertext = ciphertext_with_tag[:-TAG_SIZE] tag = ciphertext_with_tag[-TAG_SIZE:] kdf = PBKDF2HMAC(algorithm=hashes.SHA256(), length=KEY_SIZE, salt=salt, iterations=PBKDF2_ITERATIONS) key = kdf.derive(password.encode("utf-8")) aesgcm = AESGCM(key) return aesgcm.decrypt(nonce, ciphertext + tag, None) if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <encrypted_file> [password]") sys.exit(1) file_path = sys.argv[1] password = sys.argv[2] if len(sys.argv) > 2 else getpass("Enter backup password: ") try: with open(file_path, "rb") as f: encrypted_contents = f.read() decrypted_json = decrypt_data(encrypted_contents, password) out_path = file_path.rsplit(".", 1)[0] + ".json" with open(out_path, "w", encoding="utf-8") as wf: wf.write(decrypted_json.decode("utf-8")) print(f"Decryption OK -> {out_path}") except InvalidTag: print("Decryption failed: Invalid password or corrupted file.") except Exception as e: print(f"An error occurred: {e}") ``` 5. 运行以下脚本,对应替换decrypt.py路径,文件路径和文件加密密码,见下图 ``` python “decrypt.py路径” "你的Backup File路径" "你的Backup File Password,如上面没配置,就不需要" ``` 6. 比如我这边是都放在了桌面,然后就得到了解密后的json文件,也在同一路径下。   打开json文件,可**Ctrl+F**,就可以看到你需要的网站账号密码了。  **注意:应用关闭再打开后,会显示502,属于正常现象。因为软件已经配置成功,转为后台服务,可查看应用日志看进程,也可以到懒猫网盘,应用数据下看到新生成的备份文件,见下图。** 

微服网络隔离,如何实现应用互联?
**懒猫微服平台中的应用默认享有网络隔离,类似Docker容器间隔离。若需两个应用互访,可通过端口转发工具配置实现。** [以Radarr和Jackett为例](https://playground.lazycat.cloud/#/guideline/295) **端口转发部分配置** 在懒猫商店下载局域网端口转发工具,用于映射Jackett应用端口被Radarr访问 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward 局域网网路地址: ```bash 局域网出口类型:选择"微服虚拟网卡(仅微服应用容器内可访问)" 微服虚拟网卡:host.lzcapp 端口:9117(建议与应用内) ``` 目标转发地址: ```bash 转发目标类型:选择"微服应用" 微服应用:选择"Jackett"(这里注意一定看一下Jackett的状态是否running,如果显示stopped,关闭"端口转发应用"在重新打开 server tcp 9117 ```   配置完成后测试连接——>并保存 ## Radarr软件 Jackett软件配置完成后,从商店中查找并安装Radarr软件。下载安装完成后对其进行相关配置。 - 下载客户端 软件上架时会将下载器一起打包,所以这里就不需要配置下载器了,默认已经配置完成。下载器默认下载的路径为 “/home/下载” 目录。  - 索引器 点击索引器按钮菜单,点击“添加索引器”按钮,选择“Torznab”进行相关配置。 填写相关参数: ```bash 名称:建议填写Jackett中Indexer的名称 URL:点击Jackett中Indexer的Copy Torznab Feed 这里需要注意,默认复制出来的域名是https://jackett.微服名.heiyu.space/api/v2.0/indexers/Indexer名/results/torznab/ 需要修改两处:"https"改为"http";"jackett.微服名.heiyu.space"改为"host.lzcapp:9117" API Key:Jackett中左上角复制填入 ```  URL和API Key填写成功以后,点击“Categories”会自动弹出列表,在列表中选择需要的分类。   添加完成后点击测试,没有问题后点击保存,按照上面的方法可以添加多个索引。 

出差也能像在公司内网开发:懒猫微服端口转发 + PortProxyGUI 实录
如果你出差、在家办公,不在公司内网,却还要做微服务开发联调,这篇可能有用。我会按真实场景写:如何访问内网网关、Nacos、Swagger、业务系统,以及如何让内网网关回调你本地正在开发的服务。文中示例地址已做脱敏处理,你按自己环境替换即可。 --- https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward ## 一、要解决的问题 我平时做微服务开发,人在公司内网时很简单:前端调 **网关**,后端服务注册到 **Nacos**,网关再按注册信息调用各个后端服务。需要看接口时打开 Swagger,需要看业务效果时打开内网页面。 但出差或在家时,电脑不在公司内网里,会遇到两个方向的问题: - **我访问不到公司内网资源**:比如网关、Nacos、数据库、Redis、RabbitMQ。 - **公司内网也访问不到我本地服务**:我本地服务虽然启动了,但如果注册到 Nacos 的是家里 WiFi / 本地宽带 IP,内网网关根本调不到。 -  这篇用 **懒猫微服私有云 + 局域网端口转发工具 + PortProxyGUI**,把这两个方向都打通。最后效果是:人不在公司内网,也可以像在公司一样做微服务联调。 文中为了好理解,把公司内网里的中转机器叫 **同事电脑**。实际使用时,不一定非要占用同事的主力电脑,也可以在公司放一台性能一般的 Windows 小主机、旧笔记本、迷你主机,当作 **内网代理机**。只要它常开、能访问内网服务、能登录懒猫微服客户端,就能承担同样的中转作用。  --- ## 二、本文使用的打码示例 下面所有地址都已经打码,只保留结构和端口,方便替换成自己的环境。 | 角色 | 打码示例 | 说明 | | --------------------- | --------------------------- | ----------------------------------------------- | | 内网网关 | `10.*.*.10:8701` | 公司内网网关地址 | | 懒猫转发后的网关 | `example.heiyu.space:18701` | 出差电脑访问这个地址 | | Nacos | `10.*.*.11:8848` | 公司内网 Nacos 地址 | | 懒猫转发后的 Nacos | `example.heiyu.space:8048` | 出差电脑访问这个地址 | | 同事电脑 / 内网代理机 | `10.*.*.20` | 公司内网里常开的 Windows 电脑,可以是低配小主机 | | 我本地服务端口 | `18503` | 我电脑上正在开发的后端服务端口 | | 其他内网服务 | `10.*.*.12:7038` 等 | 数据库、Redis、RabbitMQ、其他 HTTP 服务同理 | 核心原则: - 我主动访问内网资源:用懒猫微服把内网服务转发成 `example.heiyu.space:端口`。 - 内网服务器主动访问我:让服务器先访问同事电脑或内网代理机 `10.*.*.20:端口`,这台中转机再通过 `PortProxyGUI` 和懒猫通道转给我。 --- ## 三、先看整体拓扑 ### 3.1 我访问公司内网资源 我在外网,不能直接访问内网网关、Nacos 等服务。做法是: ```text 我的电脑 → 懒猫微服私有云 → 同事电脑/内网代理机/在线客户端 → 公司内网服务 ```  ### 3.2 公司内网访问我本地服务 我本地服务启动后,内网网关要调用它。但内网服务器访问不到我的家庭宽带 IP,所以需要走回程: ```text 内网服务器 → 同事电脑/内网代理机(PortProxyGUI/netsh)→ 懒猫微服 → 我的电脑本地服务 ```  ### 3.3 打通后就是开发闭环 去程解决“我访问内网”,回程解决“内网访问我”。两个方向都通之后,前端、本地后端、网关、Nacos、内网服务就能形成闭环。  --- ## 四、前置条件 ### 4.1 同事电脑 / 内网代理机 这台电脑必须在公司内网里,且能访问网关、Nacos 等内网服务。 - [ ] Windows 电脑常开,能访问 `10.*.*.10:8701`、`10.*.*.11:8848` - [ ] 安装并登录懒猫微服客户端 - [ ] 在局域网端口转发工具里能看到需要转发的在线客户端设备 - [ ] 有管理员权限,方便配置 PortProxyGUI / netsh / 防火墙 不要求和我的电脑登录同一个账号。局域网端口转发工具可以选择当时在线的账号设备,只要目标设备在列表里在线可选即可。 更推荐准备一台低配 Windows 代理机放在公司内网里,专门负责中转: - 性能要求不高,能稳定运行懒猫微服客户端、PortProxyGUI 即可; - 最好插电、有线网络、不要休眠; - 能访问网关、Nacos、数据库、Redis、RabbitMQ 等你要转发的内网服务; - 不跑业务,只做中转,后期排错也更清楚。 ### 4.2 我的出差电脑 - [ ] 安装并登录懒猫微服客户端 - [ ] 本地前端、后端开发环境能启动 - [ ] 本地服务端口固定,比如本文示例 `18503` ### 4.3 24 小时在线设置 如果这套链路要长时间使用,同事电脑或内网代理机不能休眠。Windows 11 可以这样设置: 1. 打开 **设置** → **系统** → **电源和电池** 2. 展开 **屏幕、睡眠和休眠超时** 3. 在 **已接通电源** 下,将 **使我的设备在以下时间后进入睡眠状态** 设为 **从不**  其他 Windows 版本路径可能不同,搜索 **睡眠** 或 **接通电源** 找到对应设置即可。 --- ## 五、情况一:把内网网关转发出来 我的第一个需求是访问公司内网网关。真实地址已经打码,结构如下: ```text 内网网关:10.*.*.10:8701 转发后:example.heiyu.space:18701 ``` 这样我在外网浏览器、前端项目、接口工具里访问 `example.heiyu.space:18701`,实际访问的就是公司内网网关 `10.*.*.10:8701`。 ### 5.1 出口配置:使用微服域名 在 **局域网端口转发工具** 中编辑转发规则: - 协议:`TCP` - 局域网入口类型:选择 **微服域名** - 出口地址:`example.heiyu.space` - 监听端口:`18701`  这里的 `18701` 是我为了对应网关端口 `8701` 额外选的外部端口。你可以换成其他未占用端口,但建议有规律,后面维护会轻松很多。 ### 5.2 目标配置:指向内网网关 目标配置选择 **微服客户端**,然后填内网网关地址: - 转发目标类型:**微服客户端** - 客户端设备:选择在线的内网客户端设备 - 目标 IP:`10.*.*.10` - 目标端口:`8701`  点击 **测试目标连接**,提示目标地址连接正常,就说明这条链路已经通了。  --- ## 六、情况二:把 Nacos 转发出来 微服务开发离不开 Nacos。我的 Nacos 在内网里,打码后结构如下: ```text 内网 Nacos:10.*.*.11:8848 转发后:example.heiyu.space:8048 ``` 流程和网关完全一样,只是端口不同。 ### 6.1 Nacos 出口配置 - 协议:`TCP` - 局域网入口类型:**微服域名** - 出口地址:`example.heiyu.space` - 监听端口:`8048`  ### 6.2 Nacos 目标配置 - 转发目标类型:**微服客户端** - 目标 IP:`10.*.*.11` - 目标端口:`8848`  测试通过后,浏览器打开: ```text http://example.heiyu.space:8048/nacos/ ``` 能看到 Nacos 登录页,就说明 Nacos 也可以在外网访问了。  --- ## 七、其他内网服务也一样 网关和 Nacos 通了之后,其他服务的转发方式完全一样: | 服务类型 | 内网地址示例 | 转发后示例 | 说明 | | -------- | ---------------- | --------------------------- | -------------------------- | | 网关 | `10.*.*.10:8701` | `example.heiyu.space:18701` | 前端、本地服务主要调用它 | | Nacos | `10.*.*.11:8848` | `example.heiyu.space:8048` | 注册中心 / 配置中心 | | 数据库 | `10.*.*.12:3306` | `example.heiyu.space:13306` | 客户端连接即可 | | Redis | `10.*.*.13:6379` | `example.heiyu.space:16379` | 注意密码和环境隔离 | | RabbitMQ | `10.*.*.14:5672` | `example.heiyu.space:15672` | 管理端口和 AMQP 端口分开配 | 技巧是:**一个内网服务对应一条转发规则**。只要同事电脑或内网代理机能访问这个服务,懒猫微服就可以把它转发出来。 --- ## 八、前端怎么用转发后的网关 前端本地开发时,把原本指向公司内网网关的地址,改成懒猫转发后的域名即可。 ```text 原来(公司内网):http://10.*.*.10:8701 现在(出差外网):http://example.heiyu.space:18701 ```  这样前端仍然调网关,由网关再去调内网里的其他微服务。对前端同事来说,开发体验和人在公司内网基本一样。 实际验证时,我打开了 Swagger 页面,也能正常看到网关下的接口信息。  业务页面也可以正常打开。  再看浏览器 DevTools,接口请求返回 `200 OK`,说明页面不是“只打开了壳”,而是真的能调到接口。  --- ## 九、回程:让内网网关调用我本地服务 只解决“我访问内网”还不够。微服务开发还有一个关键点:**我本地服务要注册进 Nacos,并被内网网关调用。** 问题在于: - 我本地服务跑在出差电脑上,例如端口 `18503` - 如果注册到 Nacos 的地址是家里 WiFi / 本地宽带 IP,内网网关访问不到 - 所以注册地址不能写我自己的本地 IP,而要写 **公司内网里可访问的同事电脑 / 内网代理机 IP** 本文打码示例: ```text 同事电脑 / 内网代理机 IP:10.*.*.20 我的本地服务端口:18503 注册到 Nacos 的地址:10.*.*.20:18503 ``` 也就是说,内网网关以为它在调用公司内网里的中转机: ```text 网关 → 10.*.*.20:18503 ``` 但这台同事电脑或内网代理机收到请求后,会通过 PortProxyGUI / netsh 和懒猫通道,把请求转发到我的出差电脑本地服务。 ### 9.1 本地服务端口固定 本地后端服务先固定端口,例如 `18503`。  如果你的服务端口经常变,回程转发就会很麻烦。建议本地联调期间固定端口。 ### 9.2 注册 IP 写同事电脑 / 内网代理机 IP 本地服务注册到 Nacos 时,注册 IP 写同事电脑或内网代理机在公司内网里的 IP,例如: ```yaml server: port: 18503 spring: cloud: nacos: discovery: ip: 10.*.*.20 ``` 这一步的意思是:让内网网关调用 `10.*.*.20:18503`,不要让它调用我的家庭宽带 IP。 ### 9.3 中转机用 PortProxyGUI 做系统级转发 在同事电脑或内网代理机上,用 `PortProxyGUI` 添加规则: ```text 监听地址:0.0.0.0 监听端口:18503 转发地址:127.0.0.1 转发端口:18503 ```  等价命令是: ```bat netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=18503 connectaddress=127.0.0.1 connectport=18503 ``` `PortProxyGUI` 只是把 `netsh interface portproxy` 做成了图形界面,适合不想记命令的同事使用。注意:**PortProxyGUI 不会自动配置 Windows 防火墙**,如果公司内网访问不到 `10.*.*.20:18503`,要检查这台中转机的 Windows 防火墙是否放行 `18503`。 更完整的 Windows 端口代理工具说明,可看我之前写的:[Windows 网络转发工具推荐:从命令行到图形界面](https://xie.infoq.cn/article/3330ef787c942f0510e049e00)。 ### 9.4 回程链路实际长这样 完整回程是: ```text 内网网关 → 同事电脑/内网代理机 10.*.*.20:18503 → PortProxyGUI / netsh 转到 127.0.0.1:18503 → 懒猫微服客户端通道 → 我的出差电脑 127.0.0.1:18503 ``` 这样内网网关就能调到我本地正在开发的服务。 --- ## 十、常见问题 | 现象 | 优先排查 | | -------------------------------------- | ------------------------------------------------------------ | | 转发工具测试目标失败 | 同事电脑或内网代理机是否能访问目标内网 IP/端口;目标服务是否启动 | | 外网打不开 `example.heiyu.space:18701` | 规则是否启用;端口是否填错;客户端是否在线 | | Nacos 能打开但服务注册异常 | 本地服务注册 IP 是否写成同事电脑 / 内网代理机 IP;端口是否固定 | | 网关调不到我本地服务 | PortProxyGUI 规则是否启用;中转机防火墙是否放行端口;懒猫客户端是否在线 | | 页面打开但接口失败 | 前端配置里是否仍有内网 IP;DevTools 看接口是否走转发域名 | | 用一会儿断开 | 同事电脑或内网代理机是否睡眠;Windows 电源设置是否为“从不睡眠” | --- ## 十一、小结 这套方案的核心不是“单纯远程访问一个网页”,而是解决微服务开发里的两条链路: 1. **我访问内网资源**:网关、Nacos、数据库、Redis、RabbitMQ 都可以通过懒猫微服转发成 `example.heiyu.space:端口`。 2. **内网访问我本地服务**:把本地服务注册成同事电脑 / 内网代理机 IP,再由这台中转机用 PortProxyGUI / netsh + 懒猫通道转回我的电脑。 最后效果就是:人不在公司内网,也能完成前端、后端、网关、Nacos、业务页面的闭环联调。 --- ## 文末信息 测试环境:Windows 11 · 懒猫微服客户端 · 局域网端口转发工具 · PortProxyGUI。 关联应用:[局域网端口转发工具 cloud.lazycat.app.forward](https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward) 应用商店:[https://appstore.lazycat.cloud/](https://appstore.lazycat.cloud/) Windows 端口代理工具:[PortProxyGUI](https://github.com/zmjack/PortProxyGUI) 延伸阅读:[Windows 网络转发工具推荐:从命令行到图形界面](https://xie.infoq.cn/article/3330ef787c942f0510e049e00) --- *本文为个人使用经验;菜单名、域名格式以你当前客户端为准。所有截图均已打码,示例 IP/域名仅表示结构,不代表真实环境。*

利用 OpenVSCode Server 打造远程开发环境
## 简介 OpenVSCode Server 是 VSCode 的浏览器化版本,只需要一个容器即可在任意设备上获得接近桌面版的开发体验。这正好可以把开发环境托管在懒猫微服里,通过浏览器随时接入。 本文围绕懒猫微服给出一套完整的 OpenVSCode Server 部署玩法:从选择合适的镜像、准备项目文件、到构建自定义镜像与端口转发,帮助你把懒猫微服升级成随取随用的远程开发工作站。 ----- ## 版本选择 目前社区比较主流的有两个镜像来源,它们都能在懒猫微服上顺利运行,但侧重点略有差异: - Gitpod 官方镜像:https://github.com/gitpod-io/openvscode-server - 更新节奏快,第一时间同步上游 OpenVSCode Server 的功能与安全修复 - 预装扩展较少,适合作为「白纸」按需扩展;默认容器用户为 `openvscode-server` - 如果你打算完全自定义开发工具链、自己管理依赖,这个版本更容易作为基线 - LinuxServer 社区镜像:https://github.com/linuxserver/docker-openvscode-server - 内建 `linuxserver.io` 家族常见的 `PUID` / `PGID` 权限管理,适合多用户或需要和主机目录共享文件的场景 - 额外提供健康检查、日志目录等默认配置,上手即用但镜像体积略大 - 如果你希望少改动、快速使用并保留 LinuxServer 生态的一致体验,可以选择它 无论选择哪一版,都建议先按文档演练一次原始镜像的部署流程;后续需要扩展开发工具时再基于原镜像构建自定义版本即可。 ----- ## 0. 准备工作 搭建开发环境,详细的步骤请参考官方的开发者手册:https://developer.lazycat.cloud/lzc-cli.html ----- ## 1. 让 OpenVSCode Server 跑起来 先准备三个文件: - `logo.png` 这是应用图标 - `lzc-build.yml` 这是构建时的配置文件,里面只需要简单的写如下内容即可: ```yml pkgout: ./ icon: ./logo.png ``` - `lzc-manifest.yml` 这是最重要的应用设置: ```yml lzc-sdk-version: '0.1' name: MyDevBox package: my.devbox version: 1.103.1 description: My Dev Box application: background_task: true subdomain: devbox routes: - /=http://openvscode_server.my.devbox.lzcapp:3000 services: openvscode_server: image: gitpod/openvscode-server:latest container_name: openvscode_server environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - CONNECTION_TOKEN= #optional - CONNECTION_SECRET= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional binds: - /lzcapp/var/config:/config - /lzcapp/var/workspace:/home/workspace ports: - 3000:3000 restart: unless-stopped ``` 然后通过下面的命令把应用安装到懒猫微服中(请确保你的电脑已经连接了懒猫微服): ```sh lzc-cli project build lzc-cli app install ./my-dev-box-v1.103.1.lpk ``` 运行完成后,我们就可以在应用列表上看到刚才上传的应用了。  注意,应用启动时,会去拉取镜像,如果你所在的网络不幸拉取失败:  可以试试下面的解决方式: ```sh lzc-cli appstore copy-image gitpod/openvscode-server:latest ``` 输入完用户名和密码后它会自动拉取,完成后会给你返回一个懒猫镜像仓库的地址 ``` 登录成功! uploading ... b268dd24: [####################################################################################################] 100% uploaded: registry.lazycat.cloud/scarlex/gitpod/openvscode-server:4ced994585627e2b ``` 我们可以使用这个镜像地址: ```diff services: openvscode-server: - image: gitpod/openvscode-server:latest + image: registry.lazycat.cloud/scarlex/gitpod/openvscode-server:4ced994585627e2b ``` 然后重新运行刚才的 `lzc-cli` 构建和安装应用的命令即可。 当应用成功运行后,我们就能看到 OpenVSCode Server 的界面了:  对于开发者来说,我们经常在终端中运行常用的命令(如 `node`、`pnpm` 等),官方镜像并不会为我们预先安装这些命令:  这时候我们就需要添加自定义的部分了。 ----- ## 2. 自定义开发环境 要在 OpenVSCode Server 中添加自定义的工具,正确的做法是构建自定义镜像。在官方仓库的文档中建议我们通过这种方式去构建镜像: ```dockerfile FROM gitpod/openvscode-server:latest USER root RUN ... USER openvscode-server ``` 先切换成 `root` 用户,然后执行自定义的命令,最后切换会 `openvscode-server` 用户。 这是面向生产环境的建议,作为开发环境,我认为直接使用 `root` 用户会更加方便。 (~~我就是被 `openvscode-server` 的用户权限虐得不行才改用 `root` 的~~) ### 自定义 Docker 镜像 我们先创建一份 `Dockerfile`: ```dockerfile FROM gitpod/openvscode-server:latest USER root # 更新包列表并安装必要的依赖 RUN sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list" && \ sed -i "s/archive.ubuntu.com/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list" && \ sed -i "s/security.ubuntu.com/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list" && \ apt-get update && \ curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \ apt-get install -y nodejs zsh && \ rm -rf /var/lib/apt/lists/* ENV NPM_HOME="/root/.local/share/npm" ENV PNPM_HOME="/root/.local/share/pnpm" ENV PATH="$PNPM_HOME:$NPM_HOME/bin:$PATH" RUN npm config set prefix $NPM_HOME && \ npm config set registry https://registry.npmmirror.com && \ npm install -g pnpm@latest-10 && \ pnpm config set store-dir $PNPM_HOME/store ``` 这份 `Dockerfile` 包含这些功能: - 改用清华的源,加速 `apt-get` - 安装 `node.js` 和 `pnpm` - 设置缓存目录,方便重用依赖 然后创建一份 `build-docker-image.sh`,把构建命令添加到里面后我们就能方便调试了 ```sh USERNAME="lzc" APPNAME="openvscode-server-devbox" BOXNAME=$(lzc-cli box default) docker build --platform linux/amd64 -t lzc/$APPNAME:latest . --no-cache docker tag $USERNAME/$APPNAME:latest dev.$BOXNAME.heiyu.space/$USERNAME/$APPNAME:latest docker push dev.$BOXNAME.heiyu.space/$USERNAME/$APPNAME:latest ``` 它主要干了两件事: - 构建自定义镜像 - 把构建好的镜像推送到懒猫微服中(注意 `USERNAME` 必须为 `lzc`, `APPNAME` 随意) 为它添加可执行权限并运行: ```sh chmod +x ./build-docker-image.sh ./build-docker-image.sh ``` 运行成功后会看到这样的输出  ### 使用自定义镜像 这时候我们需要修改 `lzc-manifest.yaml` 文件 ```yaml lzc-sdk-version: '0.1' name: DevBox package: my.devbox version: 1.103.1 description: My Dev Box application: background_task: true subdomain: devbox routes: - /=http://openvscode_server.my.devbox.lzcapp:3000 services: openvscode_server: image: dev.<DEVICE>.heiyu.space/lzc/openvscode-server-devbox:latest container_name: openvscode_server environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - CONNECTION_TOKEN= #optional - CONNECTION_SECRET= #optional - SUDO_PASSWORD=password #optional - SUDO_PASSWORD_HASH= #optional binds: - /lzcapp/var/config:/config - /lzcapp/var/workspace:/home/workspace - /lzcapp/var/pnpm-store:/root/.local/share/pnpm/store user: root restart: unless-stopped ``` 注意两个地方: - `image` 改成 `dev.$BOXNAME.heiyu.space/$USERNAME/$APPNAME:latest` 的值 - `user` 改成 `root` 然后运行刚才的安装脚本 ```sh lzc-cli project build lzc-cli app install ./my-dev-box-v1.103.1.lpk ``` 打开懒猫微服中的 DevBox  我们刚才的改动生效了。 试试使用 pnpm 创建项目并运行一下:  我们启动了 vite 服务器,暴露了 5173 端口,这时候通过浏览器域名访问该端口  这时候是无法从外部访问的。 ### 3. 局域网端口转发 #### 让开发服务器允许被外部访问 默认情况下,vite 的开发服务器只能在 `localhost` 下访问,而它运行在 OpenVSCode Server 容器内,外部是无法访问的。 我们需要在 openvscode-server 里面修改一下 `vite.config.ts` 的配置 ```ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vite.dev/config/ export default defineConfig({ plugins: [vue()], server: { host: '0.0.0.0', port: 5173, allowedHosts: ['微服名.heiyu.space'], } }) ``` 这样才能在外部访问 vite 的开发服务器。其中 `allowedHosts` 我们等一会会使用到这个被允许的域名。 修改完成后,使用 `pnpm dev` 启动开发服务器。 #### 进行局域网端口转发 我们需要使用 「局域网端口转发工具」把宿主机的端口转发到应用内部的端口中。 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward  按照上图中的配置,配置后点击「测试连接」按钮,如果成功转发的话就会有成功的提示。 转发成功后,我们就可以在浏览器中 `http://<微服域名>:<端口号>` 的方式访问该项目的开发服务器了!  注意,此处我们需要使用 `http` 协议才能正常访问。 ## 结语 通过上面的案例,我们可以实现一个远程开发环境的搭建,后续的玩法就留给大家发挥了。 Happy Coding !

在懒猫中用 ani-rss 和 qBittorrent 下载番剧
## 看番是对的! 多看番剧提升二次元浓度有助于技术提升 ( bushi https://appstore.lazycat.cloud/#/shop/detail/dev.libr.anirss https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.qbittorrent https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward ## 准备 懒猫微服客户端下载 ani-rss、qBittorrent、局域网端口转发工具 注意说明界面提供的**账号**和**挂载路径**    ## 使用 ### qBittorrent 1. 打开 qBittorrent,使用说明界面提供的账号登录 2. 登录后点击设置选项  3. 顶部选项卡切换到 `Web UI`,记住对应的端口  ## 局域网端口转发工具 使用端口转发工具将在懒猫中运行的 qBittorrent 暴露到局域网中以便其他服务访问 1. 打开局域网端口转发工具 2. 点击添加映射规则  3. 填写对应信息、测试、创建  ## ani-rss 1. 打开 ani-rss 使用说明界面提供的账号登录 2. 点击右上角设置  3. 填写下载设置,测试 qBittorrent 登录 ❗❗❗一定要使用下载说明界面提供的路径 `网盘下载目录挂载路径:/root/Downloads`,否则会下载到对应容器内,懒猫网盘里是找不到的  4. 修改其他你需要的设置 5. 添加订阅    6. 等待下载任务完成 ## 总结 多看番!看好番! 订阅新番,在字幕组更新后,会自动下载最新一集,方便! 第一次写攻略,如果有问题欢迎交流讨论指正! 🤝

Omnibox配置篇 --- 一站搞定你所有观影需求
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.omnibox 首先打开应用,点击右上角“我的”  在点击右上角“管理”,进入管理员后台  ## 配置采集站资源 点击左侧“**影视站资源**”,点击右侧“**导入/导出**”  点击“**导入**”,点击”**选择文件**“  > 可从这个地址下载json配置(https://quwenjian.cc/#/?code=O8P6N) 选择下载好的json配置文件  点击“**导入JSON文件**”  你就能看到所添加的采集站点,点击全选,然后点击“**批量测速**”  接着你就可以对一些无法链接的资源进行删除或者修改其采集地址。  下图就是你配置之后的搜索效果,可点击首页影视作品,也可以进行搜索  随便点击一个之后就可以在线观看,可以点击右侧进行站点切换  ## 配置网盘资源(可选) ### 配置盘搜站点 点击左侧“盘搜应用”,点击“配置应用地址”  输入盘搜站点地址,可“**全选**“,然后点击“**保存**”即可  相应的资源站点就出来了  > 因pansou站点比较敏感,可以用[fofa](https://en.fofa.info/result?qbase64=cGFuc291)进行关键词搜索即可找到对应公开站点 ### 配置自己的网盘 点击左侧”**网盘授权**“,选择自己常用的网盘类型,点击右侧“**点击配置授权**”  我这边用夸克网盘做演示,点击夸克网盘右侧授权,这里要求输入cookies  浏览器登录你的夸克网盘,F12进入控制台,点击**Network(网络)**,找到左侧的**list**,右侧下拉看到**Cookies**,复制其值即可  回到应用,粘贴复制的值,点击保存即可  显示”**有效授权**“就表示成功了  > 其他网盘都有配置指示,填入相关参数即可 ## 电视直播配置(可选) ### 电视直播配置 点击左侧”**电视直播**“,点击”**添加**“,名称随便填写,地址请自行寻找对应的直播源,图中的地址仅供测试(https://raw.githubusercontent.com/hujingguang/ChinaIPTV/main/cnTV_AutoUpdate.m3u8)  配置后,点击上方”电视“,选择刚才配置的数据源,选择下方频道即可观看。  ### 自定义源 如果你有定制直播源需求的话,可以点击左侧**自定义源**,点击**远程导入**m3u8地址,然后在下方按照示例进行编辑,右侧会显示对应效果。你可以选择导出,再进行上面的添加操作即可重新导入新的直播源。  ### 平台直播 直播间的配置就很简单,选择好对应平台,找到房间号,对应输入信息就可以了 下面以B站直播为例,找到直播房间号  然后回到应用,选择左侧**平台直播**,点击**添加**,对应填写相关信息并保存,见下图  点击上方**直播**,就可以看到刚才添加的直播间  点击即可观看  ### 影视订阅(可选) 这个功能主要是用于一些TVbox,猫影视等空壳软件配置视频源,这样你就有属于自己的影视源,而不需要再去网上寻找了。 我这边以UZ软件为例,点击右上角**影视订阅**,对应复制UZ订阅地址  打开端口转发工具,选择局域网模式,按下图配置 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward  打开UZ软件,设置里点击订阅源,点击+号,把粘贴刚才omnibox里的UZ地址,把前缀懒猫地址替换成你的懒猫IP地址,见下图,点击确定  稍等片刻就可以看到识别之前在omnibox里添加的视频源了。然后对应选择添加导入即可使用。  然后你就可以直接在软件里观看了。   **以上可选部分按自己需求可进行配置,并强制要求,只需配置采集站即可实现基本的观影需求**

局域网端口转发教程
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward ## 局域网端口转发访问流程:  > 设备访问——>入口地址——>通过端口转发后——>访问目标地址 > 始终记住访问的永远是左边的地址 > 注意端口范围:**1~65535**(尽量用 **1024** 以上的端口,避免一些常用协议端口,避免转发一些使用过的端口,创建之前一定先检测连通性) ## 配置选项说明以及使用方法 ### 1、微服网卡 (仅微服所在局域网可访问) 限制在微服所在的局域网内访问,外部网络无法直接连接 适用于局域网内部的服务调用和数据传输 **适用使用举例**: 通过微服网卡IP——>访问——>微服应用服务  **通过微服网卡IP——>访问——>微服登录的客户端主机上的服务(目标地址的客户端要登录懒猫微服应用)** 这个可以用远程桌面,访问登录客户端的设备(示例演示的是一个手机上的 `python -m http.server` 的例子)   通过微服网卡IP——>访问——>其他网络地址:微服局域网设备或者微服127.0.0.1的服务(本身127.0.0.1的服务是指:**mainframe** 文件中有 `network_mode:host` 的,或者 **dockge** 部署的容器) 这个可以用远程桌面,微服局域网设备或者微服 `127.0.0.1` 的服务(示例演示 **dockge** 起的服务)   ### 2、微服虚拟网卡 (仅微服应用容器可访问) 适用于微服应用容器内部的通信,外部无法直接访问 提供隔离的网络环境,确保容器间通信的安全性 **懒猫微服平台中的应用默认享有网络隔离,类似Docker容器间隔离。若需两个应用互访,此选项来实现转发配置。** **适用使用举例:** 应用访问——> host.lzcapp:端口 ——>另一个应用服务 [以Radarr和Jackett为例](https://playground.lazycat.cloud/#/guideline/295)  <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/20250605165748091.png?imageSlim" alt="image-20250409140008473" style="zoom: 50%;" /> ### 3、微服域名 (仅登录微服务户端可访问) 通过域名访问,仅限于已登录微服务客户端的用户 提供基于身份验证的访问控制,增强安全性 **适用使用举例**: 登录客户端——>访问:$微服名.heiyu.space:端口——>微服登录的客户端主机上的服务(目标地址的客户端要登录懒猫微服应用) 这个可以用远程桌面,访问登录客户端的设备(示例演示的是一个python的例子)   登录客户端——>访问:$微服名.heiyu.space:端口——>其他网络地址:微服局域网设备或者微服127.0.0.1的服务(本身127.0.0.1的服务是指:mainframe中有network_mode:host的,或者dockge部署的容器) 这个可以用远程桌面,微服局域网设备或者微服 `127.0.0.1` 的服务(示例演示微服局域网的 **Ubuntu** 的 **ssh** 远程)  <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20251118133025952.png?imageSlim" alt="image-20251118133025952" style="zoom:50%;" /> ### 4、微服务户端 (仅映射的客户端本地可访问) 服务仅映射到客户端本地,其他设备或用户无法访问 适用于需要本地化服务的场景,保护数据隐私 这个就相当与把微服应用服务、其他客户端的服务端口、其他地址服务端口,转到某一个设备上面,在那个设备上面使用127.0.0.1即可访问 **适用使用举例:** 登录客户端——>本地客户端访问 `127.0.0.1:端口` ——>微服应用服务、其他客户端的服务端口、其他地址服务端口  <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20251118135613205.png?imageSlim" alt="image-20251118135613205" style="zoom: 50%;" /> ### 5、微服通配地址 (0.0.0.0) 绑定到所有网络接口,允许从任意地址访问 通常用于开放服务的场景,保护数据隐私 这一个配置可以代替以上除了 微服务户端 (仅映射的客户端本地可访问) 的所有配置 ## 目标转发地址 #### 1、微服应用 **操作过程**: 选择应用(映射懒猫已运行的应用服务) 选择服务(mainfest.yml里的service名称) 选择服务协议(默认tcp/udp) 可下拉选择映射的端口 **主要用途**: 应用的服务暴露与访问 **注意事项**: 应用需要running状态,如果启动了应用,但是列表里面没有running,可以点一下刷新 如果不知道转发应用那个端口,可以点击端口旁边的小问号,查看具体服务对应的具体端口   #### 2、微服客户端 **操作过程:** 选择客户端网络地址(主机名称) 选择服务协议(默认tcp/udp) 选择需要映射的端口 (可选)添加备注 **主要用途:** 客户端调试与访问 这个可以用作远程访问,前提是对端设备也登陆了懒猫微服客户端  #### 3、其他网络地址 操作过程: 输入目标网络地址 选择服务协议(默认tcp/udp) 输入需要映射的端口 (可选)添加备注 **主要用途:通用网络转发(如:dockge写127.0.0.1+端口compose里的端口、微服能通信的网络:写IP地址+服务端口)** 一定要测试连通性 可用用作远程访问微服同局域网的设备上的服务 dockge的写法  微服同局域网的写法  ## 添加转发LPK > 0.9.2 新增功能 我们在别的设备部署了服务,想要通过微服的域名访问,可以使用这个功能。  点击**转发LPK**会弹出**创建转发LPK界面** <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325144411014.png?imageSlim" alt="转发本地py程序" style="zoom:50%;" /> - 子域名:打开应用的子域名,列如 {填写的子域名}.{你的盒子名}.heiyu.space - 名称:在控制台的名称 - 图标:在控制台显示的图标 - 上游地址:要转发的服务地址 - 协议可选 http 和 https,选择与转发服务相同的协议 - ip 要转发服务的地址 - 端口 转发服务的端口 - **跳过认证,可以在不登录微服的情况下使用(API类型的服务,推荐勾选这个选项,在发送请求时不需要在添加微服的认证请求头)** - 图标,在启动台展示的应用图片 - Package ID,自动生成不能修改 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325144838888.png?imageSlim" alt="image-20260325144838888" style="zoom:50%;" /> 点击创建后会自动安装一个应用到启动台里面 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325145059804.png?imageSlim" alt="image-20260325145059804" style="zoom:33%;" /> 打开后可以看到本地启动的服务,可以通过 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325145202696.png?imageSlim" alt="image-20260325145202696" style="zoom:33%;" /> ## NetMap LPK > 0.9.2 新增功能 其他设备部署的服务如果不是 web 相关的,就可以使用这个功能,把目标主机的所有服务全部都转发过来,通过域名来访问。 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325153044263.png?imageSlim" alt="image-20260325153044263" style="zoom:50%;" /> 我这里把我电脑的IP 通过微服转发,点击创建并安装 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325153208779.png?imageSlim" alt="image-20260325153208779" style="zoom:50%;" /> 安装之后在微服控制台中会出现一个新的图标,打开之后如下图: <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325153326042.png?imageSlim" alt="image-20260325153326042" style="zoom:50%;" /> 我们访问这个 `archlinux.mhwy.heiyu.space` 域名的所有端口,都会被转发到 `192.168.3.225` 这台电脑上面。 <img src="https://lzc-playground-1301583638.cos.ap-chengdu.myqcloud.com/guidelines/1128/image-20260325153616979.png?imageSlim" alt="image-20260325153616979" style="zoom:50%;" /> 我本机开启了 SSH 服务,这里通过域名访问我本机的 ssh 这里可以看到已经访问成功了 > 注意,访问时需要确保端口转发工具创建的 LPK 是在运行的状态,不然是无法访问的。 ## 结语 端口转发玩法性很多,入口地址与目标地址可以有很多种搭配方式,规则保存之前一定要测试连通性

在LightOS使用GitLab CLI管理和备份项目
https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.lightos.entry https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.gitlab ## 配置 Gitlab HTTP 端口转发 ### 转发 HTTP 端口 打开局域网端口转发工具,创建转发规则,类型选择懒猫物理网卡,监听端口随便填一个,但要记住一会儿有用。服务选择 gitlab,目标端口选择 80。最后保存修改,如果端口号被占用,换一个监听端口即可。   ## Gitlab 配置 Access tokens 点击头像,选择偏好设置,再选择 Access tokens。点击添加新令牌,按需勾选选项并设置过期时间,最后点击“创建个人访问令牌”按钮,将令牌 token 复制。      进入 LightOS 随便进入一个项目,用 codex/claude code 下载 gitlab CLI,并告诉 gitlab 的令牌 token 和 gitlab HTTP 的转发的地址 + 端口。 prompt 如下(注意需要将 token 和 HTTP 地址换为你的,地址需要加上端口号): ```txt 联网搜索一下gitlab CLI的安装方式,并安装在本地。通过 token 进行登录,token 是 xxxxx,gitlab CLI 的 HTTP 地址是 xxxx,这样我就可以在本机直接创建和更新仓库了。并且将基本的使用方式写在 ~/.codex/AGENTS.md 文档中。 ``` 如果安装好没了,没登录让 AI 帮你登录一下,并且之前配置的转发目标端口是 80 不是 22,22 SSH 端口,适合本地 push/pull,但这样还要配置 SSH Key。   配置完成,找个项目验证一下,提示词如图片所示。如果全局 AGETNS.md/CLAUDE.md 文档没写 gitlab CLI 的基本使用方式则需要人为告知一下 AI 或者让 AI 再写一次。最后等待一会儿就 OK 了。    如果项目有很多个,可以在项目目录下,打开 codex/claude code 让其将本目录下的项目全部推送到 gitlab 进行管理和备份。

买微服血赚攻略:我的世界服务器本地部署
苦于各类云服务器好一点的配置/流畅的带宽任何一项加一点都很贵,并且到期时要是忘记把数据拿到本地,就会永久丢失了,于是这一篇攻略就出来了。不止配置我的世界服务器,很多类似的服务部署都可以参考这一篇懒猫的网络配置方案。 使用到的应用: https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.lightos.entry 可选应用: https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward 这篇攻略会做的事情: 1、在LightOS内创建合适的镜像 2、服务器版本选择及对应Java环境部署和安装 3、配置端口转发 4、联机及客户端配置 一、选择镜像 进入LightOS --- 点击创建 这里使用Arch Linux 镜像,勾选基础软件包安装开发基础工具 常用CLI工具。  点下一步  填写自定义的用户名密码后点击创建  二、配置环境 随着版本更迭,挺多版本都会进行Java版本的更新,Java服务端和版本配置挺难解决的,这里统一给出来: 1、Minecraft 版本和 Java 版本常见对应关系: |Minecraft 版本|建议 Java| |---|---| |1.20.5 及以上、1.21.x|Java 21| |1.18 到 1.20.4|Java 17| |1.17.x|Java 16 或 Java 17,按服务端核心要求| |1.16.5 及更旧|老 Forge 整合包常见 Java 8,具体看整合包说明| 先更新系统并安装常用工具(需要安装): ```bash sudo pacman -Syu sudo pacman -S curl wget unzip screen tmux vi traceroute ``` OpenJDK 包名常用这些(选择一个安装): ```bash sudo pacman -S jdk8-openjdk sudo pacman -S jdk17-openjdk sudo pacman -S jdk21-openjdk sudo pacman -S jdk25-openjdk ``` 查看已安装 Java(可选): ```bash archlinux-java status ``` 切换 Java 版本(可选): ```bash sudo archlinux-java set java-17-openjdk sudo archlinux-java set java-21-openjdk sudo archlinux-java set java-25-openjdk ``` 如果你不知道选哪个,当前新服优先用 Minecraft 1.21.x + Java 21。除非你要跑最新 Paper 26.1+,否则多数 1.21.x 服务器用 Java 21 更稳妥。Paper 官方文档目前说明 1.20 到 1.21.11 推荐 Java 21,Paper 26.1+ 要求 Java 25。 确认 Java 可用(可选): ```bash java -version ``` 如果系统里装了多个 Java 版本, Java 管理工具查看(可选): ```bash archlinux-java status ``` 切换到 Java 21(可选): ```bash sudo archlinux-java set java-21-openjdk ``` 2、服务端类型怎么选(第2小章是原版、第3小章是mod版,可酌情选择配置) | 类型 | 适合场景 | 客户端是否需要额外安装 | | ---------------- | ----------------------- | ----------- | | Vanilla 原版/纯净版 | 原版生存、建筑、红石,最少兼容问题 | 不需要 | | Paper / Purpur | 更好性能、权限、领地、经济、登录等插件 | 通常不需要 | | Fabric | 轻量 MOD、性能 MOD、现代 MOD 生态 | MOD 服通常需要 | | Forge / NeoForge | 大型整合包、科技、魔法、冒险类 MOD | 通常需要 | 新手建议: - 只想和朋友玩原版生存:选 Vanilla 或 Paper。 - 想要插件、权限、领地、经济:选 Paper。 - 想玩 MOD:按 MOD 或整合包要求选择 Fabric、Forge 或 NeoForge,不要混用加载器。 3、纯净版部署 1.不使用最新版,寻找对应纯净版(可选) 打开Minecraft Assets Explorer ``` https://mcasset.cloud/ ``` 选择对应版本后下载对应json文件  搜索关键字 server.jar 就可以找到对应的下载url  在本地下载后,一会儿上传到LightOS内 2.官方最新版: 从官方页面下载 `server.jar`: ```text https://www.minecraft.net/download/server ``` 3.安装server端 创建服务器目录: 这里的$USER替换成创建时的用户 ```bash sudo mkdir -p /opt/minecraft-server sudo chown -R "$USER:$USER" /opt/minecraft-server ```  进入服务器目录: ```bash cd /opt/minecraft-server ``` 本地下载完成后在LightOS内上传附件,选择本地的server.jar文件  上传的文件会存在在/tmp目录,我们先移动过来 ``` mv /tmp/server.jar /opt/minecraft-server ``` 首次启动,生成EULA文件,报错是正常的 ```bash java -Xms2G -Xmx4G -jar server.jar nogui ```  首次启动会生成 `eula.txt`,需要同意 EULA 后才能继续运行: ```bash vi eula.txt ``` 进去之后按i进行编辑 把: ```text eula=false ``` 改成: ```text eula=true ``` 按esc 再输入":wq" 进行保存 保存后再次启动: ```bash java -Xms2G -Xmx4G -jar server.jar nogui ``` 常见配置文件是 `server.properties`,常用项: ```properties server-port=25565 online-mode=true motd=A Minecraft Server difficulty=normal max-players=20 view-distance=10 simulation-distance=10 ``` 说明: - `online-mode=true`:正版验证。公开服建议保持 `true`,要是联机的小伙伴没有正版账户,这里**看情况**进行调整。 - `server-port=25565`:默认端口,不要变,等会儿把端口通过服务的方式映射出去。 - `view-distance` 和 `simulation-distance` 越高越吃性能。 **这里为止已经成功启动服务器了** ### 4、Paper 插件服部署 Paper 是高性能服务端,适合纯净玩法加插件,比如领地、权限、登录、经济、菜单等。多数情况下,玩家客户端不需要安装任何东西,只要版本匹配就能进。 下载地址: ```text https://papermc.io/downloads ``` 下载后和纯净版部署一样,上传到LightOS内,例如: ```bash mv /tmp/paper-*.jar paper.jar cd /opt/minecraft-server java -Xms2G -Xmx4G -jar paper.jar --nogui ``` 插件放到: ```text /opt/minecraft-server/plugins/ ``` 注意:插件服和 MOD 服不是一回事。Paper 插件一般不能直接放进 Fabric/Forge/NeoForge 的 `mods` 目录。 5、安装MOD 1.寻找MOD方式 推荐来源: - Modrinth:[https://modrinth.com](https://modrinth.com) - CurseForge:[https://www.curseforge.com/minecraft](https://www.curseforge.com/minecraft) - MC百科:https://www.mcmod.cn/ - 整合包官方页面提供的 Server Pack 找 MOD 时按这个顺序检查: 1. Minecraft 版本是否一致 例如服务器是 `1.21.1`,就不要下载 `1.20.1` 的 MOD。 2. 加载器是否一致 Fabric MOD 给 Fabric 用,Forge MOD 给 Forge 用,NeoForge MOD 给 NeoForge 用。 3. 运行位置是否正确 有些 MOD 是客户端专用,有些是服务端专用,有些两边都要装。 4. 依赖是否齐全 下载页面通常会写 Required Dependencies。 大型模组通常支持多个不同的加载器,可以按需选择 ![[Pasted image 20260520202310.png]] 如果你要开整合包服务器,优先找它提供的 `Server Pack`。Server Pack 通常已经帮你整理好了服务端需要的 MOD、配置和启动脚本,比自己从客户端包里拆更稳。 2.安装MOD服务器 我这里以neoforge 1.21.1版本为例: 官网下载neoforge[The NeoForged project](https://neoforged.net/)  ```bash #安装JAVA sudo pacman -S curl wget unzip screen tmux vi traceroute sudo pacman -S jdk21-openjdk #把刚刚neoforge官网下载的文件上传LightOS后执行下面步骤 sudo mkdir -p /opt/minecraft-server sudo mv /tmp/neoforge-*-installer.jar /opt/minecraft-server/neoforge.jar #把传到LightOS的文件传到配置好的游戏服务器 sudo java -jar neoforge.jar #安装neoforge ``` 这里服务器需要的组件就安装完成了,接下来执行: ```bash sudo chown -R "$USER:$USER" /opt/minecraft-server #$USER填写LightOS注册时输入的用户 sudo sh /opt/minecraft-server/run.sh ``` 会出现报错:  去调整下eula.txt ```bash sudo vi eula.txt ``` 进去之后按i进行编辑 把: ```text eula=false ``` 改成: ```text eula=true ``` 按esc 再输入":wq" 进行保存 然后添加需要使用的MOD: ```bash #找到MOD后上传到LightOS内 sudo mv /tmp/mod名称 /opt/minecraft-server/mods/ ``` 最后执行: ```bash sh /opt/minecraft-server/run.sh ``` **这里已经成功启动neoforge服务器了**  ## 三、端口转发 由于MC服务器不是通过http连接的,LightOS内的服务转发不可用,可以用别的方式进行转发。 这里有两张方式,想折腾的可以研究第二种 1、把这个实例修改为hosts模式   然后端口就会到微服本地的25565了 2.端口转发 首先确定自己的实例网络配置 ```bash #实例内输入 ip a #查看本机IP地址 traceroute baidu.com ```   如图,我是100.64.0.12 访问外部通过的第二跳IP是169.254.164.200 然后ssh到微服里面查看网络配置(每个人不一定相同,需要酌情更改) ```bash #在微服输入,不是LightOS实例里面,要打开微服的ssh功能 ip a | grep 169.254.164 #这里填写刚刚第二跳IP的前三个 ```  这里需要在微服里添加一条路由,由于实例出来的网段是169.254.164.200/30(200是网段标识,201是网段里的IP),所以这里在微服里添加一条路由: ```bash ip route add 100.64.0.12 via 169.254.164.201 #ip route add <目标地址或网段> via <网关IP> ``` 现在微服已经可以成功ping通处于nat模式的实例了  配置端口转发: 使用网络端口转发工具 按照下图进行填写  配置完成后就把LightOS内的实例端口转发到微服上了 **至此完成端口转发,可以准备联机了** 四、联机及客户端配置 1、游戏客户端下载 这里建议使用HMCL作为客户端启动工具 [下载 - Hello Minecraft! Launcher](https://hmcl.huangyuhui.net/download/) 下载后双击启动 我这里有账户,没有官方账户的可以选择注册一个离线账户   安装对应游戏版本:   选择服务器对应版本下载:  2、下载懒猫微服客户端 1)给要联机的同学下载一个懒猫微服客户端 [懒猫微服客户端下载](https://lazycat.cloud/download) 2)创建一个没权限的子账户,让同学登录挂着就行。  所有权限全部关闭:  同学登录后挂着,就能连接到你配置的端口转发了。 在联机之前确保: 1)游戏服务器和客户端的版本是相同的。 2)要是装了mod,确保mods目录文件相同。 3)登录游戏,游戏内点击多人游戏-联机域名输入:<自己的微服名称>.heiyu.space:25565,即可成功连接。   也是成功连接上服务器了  测试延迟也是超级快  性能也不需要担心,LightOS是硬件直通的,完全不用担心转译损耗的问题。 
懒猫评分/评论
5.0
1 条评论
新功能
版本历史记录新增 MCP 支持, 可通过 MCP 客户端使用端口转发能力。
我是小E
6/20/2025
好用 高级 牛逼