使用 Docker Compose 和 Cron 轻松部署并自动更新 LobeChat

使用 Docker Compose 和 Cron 轻松部署并自动更新 LobeChat

LobeChat 是一个开源、可扩展的高性能聊天机器人框架,支持多 AI 提供商。对于希望自托管 AI 聊天服务的开发者和用户来说,它是一个很棒的选择。Docker 和 Docker Compose 使得部署 LobeChat 变得异常简单。更进一步,我们可以设置一个简单的 Cron 任务来自动拉取最新镜像并更新我们的 LobeChat 实例,确保我们始终使用最新功能和安全修复。

本文将引导您完成以下步骤:

  1. 使用 docker-compose.yml 文件快速部署 LobeChat。
  2. 创建一个 Bash 脚本来自动检查并应用 LobeChat 更新。
  3. 使用 Cron 定时任务实现每日自动更新。
阅读更多
WireGuard + frp 搭建安全高效的远程开发环境

WireGuard + frp 搭建安全高效的远程开发环境

作为一名开发者,你是否经常遇到这样的痛点:家里的开发测试环境(如虚拟机集群、NAS)资源丰富,但一旦离开家(比如去公司或出差),就无法访问这些宝贵的内网资源?本文将详细介绍如何利用现代 VPN 解决方案 WireGuard 和内网穿透工具 frp,搭建一个安全、高效、稳定的远程访问通道,让你随时随地都能连接到家庭或办公室的内部网络,如同身处局域网之中。

阅读更多
解决 Docker 容器网络问题:加载 ip_tables 和 iptable_nat 内核模块

解决 Docker 容器网络问题:加载 ip_tables 和 iptable_nat 内核模块

在使用 Docker 运行某些需要精细网络控制的容器(例如 VPN 服务器如 wg-easy,或者需要自定义防火墙规则的应用)时,你可能会遇到启动失败或网络功能异常的问题。有时,错误日志会隐晦地指向 iptables 相关操作失败。一个常见的解决方案是确保宿主机加载了必要的内核模块,特别是 ip_tablesiptable_nat

本文将解释这两个模块的作用,并指导你如何临时加载它们以快速解决问题,以及如何配置系统以在每次启动时永久加载它们。

阅读更多
Rocky Linux 8.10 内核升级实战:拥抱 Linux 6.1 LTS

Rocky Linux 8.10 内核升级实战:拥抱 Linux 6.1 LTS

Rocky Linux 8.x 系列作为一个稳定、可靠的企业级 Linux 发行版,默认搭载的内核版本通常是经过长期测试和验证的稳定版本(在 8.10 中通常是 4.18.x 系列)。然而,在某些场景下,我们可能需要更新的内核版本来获得:

  • 更好的硬件支持: 特别是对于较新的 CPU、GPU、网络适配器或存储设备。
  • 新功能和特性: 利用内核新版本带来的性能优化、安全增强或文件系统改进。
  • 特定的软件依赖: 某些应用程序或驱动程序可能需要特定或更新的内核版本。

Linux Kernel 6.1 是一个重要的 长期支持 (LTS) 版本,提供了许多改进和新特性,并且将获得较长时间的维护支持。本文将详细介绍如何在 Rocky Linux 8.10 系统上,使用广泛认可的第三方仓库 ELRepo,安全地将内核升级到 6.1 LTS 版本。

❗ 重要警告: 内核是操作系统的核心。升级内核涉及系统级别的更改,存在一定的风险,可能导致系统无法启动或出现不稳定。在执行任何操作之前,请务必:

  1. 备份您的重要数据!
  2. 如果可能,在非生产环境或虚拟机中进行测试。
  3. 确保您了解如何通过 GRUB 引导加载程序选择旧内核启动,以备不时之需。
阅读更多
前端投产换包自动刷新页面方案

前端投产换包自动刷新页面方案

在现代 web 项目中,前端静态资源(如 JS、CSS、图片等)经常随版本迭代而更新。若用户未能及时获取最新的资源包,可能会带来诸多问题:

  • 缺失新功能或修复:用户无法体验最新功能或 bug 修复;
  • 安全风险:未更新的旧资源可能包含安全漏洞,存在攻击隐患;
  • 程序异常:新版后端接口调整若与旧前端资源不匹配,可能导致页面报错,严重影响用户体验。

为此,如何实现前端版本投产后自动触发浏览器刷新,确保用户访问到最新版本资源,成为必解决的问题。

阅读更多
Git命令行安全回滚已推送的Merge合并提交

Git命令行安全回滚已推送的Merge合并提交

在日常开发中,我们经常会遇到将功能分支合并(merge)到主分支后,突然因需求变更需要回滚这次合并操作的情况。尤其是在合并提交已经推送到远程仓库之后,回滚操作稍不谨慎就可能带来冲突或版本混乱。

通常情况下,如果能准确定位合并分支上的单个commit,可以直接针对这些commit使用git revert逐一回退;但当commit信息混乱、时间跨度较长时,逐条回滚就非常困难,这时我们可以通过Git对“合并提交”的特殊回滚机制来快速撤销一次merge。

本文结合实际案例,详细介绍如何使用命令行安全回滚已经推送到远程仓库的合并提交,帮助你掌握该场景下的最佳实践。

阅读更多
SpringBoot+Shiro同服务器多项目Cookie冲突解决方案

SpringBoot+Shiro同服务器多项目Cookie冲突解决方案

在企业级应用中,基于 Spring Boot 和 Apache Shiro 构建的安全架构非常常见。当同一台服务器上部署多个独立的 Spring Boot + Shiro 项目时,往往会遇到一个棘手的问题:用户在同一浏览器中登录多个项目时,后登录的会话会覆盖先前的会话,导致只能保持一个有效登录状态。究其原因,主要是多个项目共享了相同的 Session Cookie 名称,使浏览器无法区分不同应用的会话标识,进而引发登录冲突。本文将从问题梳理入手,深入分析 Session Cookie 共享带来的困扰,并结合 Shiro 的 Session 管理机制,详细讲解如何通过自定义 SessionId Cookie 名称,有效实现同服务器多项目环境下的会话隔离,保证用户多项目同时登录的无缝体验。

阅读更多
Windows Docker 端口占用错误及解决方案汇总

Windows Docker 端口占用错误及解决方案汇总

在 Windows 环境下使用 Docker 容器时,端口占用错误是开发和运维中常见且棘手的问题。用户启动容器时,常会遭遇类似“Ports are not available”或“can’t bind on the specified endpoint”的报错,导致服务无法正常启动。此类问题多源自 Windows 操作系统对 TCP 动态端口的管理机制以及 Hyper-V 虚拟化网络服务对端口的预留策略。特别是在系统自动更新后,动态端口范围可能被异常重置,引发端口冲突,从而影响 Docker 容器的端口绑定。本文将深入剖析该问题的成因,介绍如何通过查看端口分配,合理调整动态端口范围,以及重启网络服务等实用技巧,有效解决 Windows Docker 端口占用错误,帮助开发者快速恢复容器运行,提高调试效率。

阅读更多
利用Nginx实现高性能的前端打点采集服务(支持GET和POST)

利用Nginx实现高性能的前端打点采集服务(支持GET和POST)

在业务开发中,我们经常需要通过“数据驱动”做决策。前端页面中的各类打点事件产生大量请求,如何高效、稳定地进行数据采集,成为后端服务设计的重要课题。相比引入复杂的多语言服务,我们可以巧妙利用 Nginx 的轻量高性能特性,搭建一个具备 CORS 支持,既能处理 GET 请求,也能优雅接收 POST 请求体的打点采集服务,满足生产级的需求。

本文将结合实践,详细介绍如何通过配置 Nginx,解决 Nginx 默认不支持 POST 请求且无法记录 POST Body 的问题,设计支持跨域,日志格式友好,并能便于后续离线分析的打点收集服务。

阅读更多
Hyper-V安装Linux虚拟机并配置静态IP

Hyper-V安装Linux虚拟机并配置静态IP

本文主要介绍了如何在Hyper-V平台上安装红帽系列Linux虚拟机,并配置静态IP地址。整体流程涵盖了网络环境的初期配置、虚拟机的创建以及详细的静态IP设置步骤,使整个搭建过程清晰可循。

首先,文章从Hyper-V环境的网络配置入手,通过创建虚拟交换机和虚拟机,确保虚拟化环境的稳定运行。接着,作者演示了如何获取IP地址、子网掩码、网关和DNS信息,详细说明了每个参数的作用与获取方法,以便准确无误地配置网络。

最后,在静态IP配置部分,通过修改Linux系统下的网络配置文件,成功实现了从动态分配到静态配置的转换。全程配合命令示例和截图,帮助读者直观理解和操作。整体内容不仅具有较强的实践指导意义,也为后续的系统调试与运维提供了宝贵参考。

阅读更多