Organizations

  • Nginx Lua 模块 最新版本版本的 nginx 相关源(debian 及其发行版)已经集成 Nginx 的 Lua 扩展, 不需要再去手动编译处理相关依赖就能让 Nginx 运行些简单的 Lua 服务: # 安装 nginx 和 nginx-lua 扩展 sudo apt install nginx nginx-extras libnginx-mod-http-lua # 确认是否配置完成, 有输出即可 ls -l /usr/lib/nginx/modules/|grep lua # 生成测试配置, 后续在此操作 sudo mkdir -p /etc/nginx/lua.d/lib # 生成被 nginx 调用的目录 sudo touch /etc/nginx/conf.d/lua.conf # 测试访问 Lua 功能配置 首先必须要要提醒一下: 不要将日常需求业务在网络基建实现! 能够在 nginx 运行 lua 也就代表能够运行业务代码, 但是这种操作是具有毁灭性的; 业务代码大部分时候逻辑复杂且需要用到大量现代技术(线程池|连接池等), 而内部的 Lua 模块仅仅作为内迁脚本系统是无法实现复杂特性. 而且在 nginx 这种不同于其他服务, 很多都是挂载多个网络相关服务, 如果将业务代码在内部运行可能导致整体内存泄漏和崩溃带动其他业务一起崩溃.
    部署 Created Fri, 05 Dec 2025 20:43:27 +0800
  • Nginx RTMP 视频推流 有时候需要提供将影视资源 影片点播 这种类似的功能, 方便将服务器的影片直接在线播放; 虽然 mp4 文件直接挂个 nginx 服务播放, 但是影片资源不止有 mp4, 还有其他主流比如 flv 等格式. 大部分资源只是按照通用格式采用 mp4, 还有其他类似 .avi/mov/wmv/mkv/flv 等, 浏览器仅能支持 mp4 所以我们需要处理的就是将资源利用 ffmpeg 推流, 可以类似于直播一样播放我们服务器的影片资源 注意: 不止播放家庭影视资源, 还能涉及到家里监控推到自己内网服务器保存, 还有其他很多种玩法 需要明确在推流过程当中的定义: 要实现全天推流需要提供 推送端(推) 和 发布端(拉), 本质上就是要构建视频流推/拉流 需要搭建支持 rtmp 等协议的 hls 流媒体网络服务(充当转发平台) 需要 ffmpeg(服务端)|OBS(桌面端) 做流推送到流转发平台 默认的源安装 Nginx 不支持 nginx-rtmp-module 相关模块, 手动编译就感觉没什么必要, 不过在 debian 系的 Linux 发行版的源追加第三方扩展方便直接使用: # 直接用这种方式源安装 nginx 会附带一些官方扩展和 rtmp 支持 # 可以避免需要自己去手动编译处理, nginx 非官方的第三方扩展都是以 libnginx-mod-* 来发布 # ffmpeg 则是作为推送工具使用, 如果要推流和拉流分开就需要将 nginx 和 ffmpeg 分开部署 sudo apt install nginx nginx-extras libnginx-mod-rtmp ffmpeg # 确认是否扩展已经存在, 如果有输出代表已经安装完毕 ls -l /usr/lib/nginx/modules |grep rtmp # 验证安装 # 注意: 做推送流对于服务器的带宽/内存/CPU要求很高, 如果服务器性能过于低下会导致推流卡顿 nginx -V ffmpeg -version # 之后创建专用的 conf.
    部署 Created Fri, 05 Dec 2025 20:41:50 +0800
  • Linux DNS 解析服务 传统都是依靠 /etc/resolv.conf 来处理 DNS 解析, 但是新的 linux-systemd 系统转而采用 resolved.service 处理网络解析服务. 而目前如果只要不是太老的 linux 版本建议都直接采用 resolved 相关工具链来维护处理服务器 DNS 相关; resolved 实际上是一整套的工具链, 本质上其实就是在本地开启开启个小型的 DNS 服务端, 常规操作如下: # 查看目前的服务器解析路由状态, 可以看到所有网口链路 sudo resolvectl status # 查看目前的DNS系统单元状态 sudo systemctl status systemd-resolved.service # 上面的命令都可以看到网口对应 DNS 服务及其上游 # 当然借助这个工具可以手动指定全局 DNS 公共服务器 sudo resolvectl dns all 8.8.8.8 223.5.5.5 # 也可以指定 eth0 网口服务采用的 DNS 服务器 sudo resolvectl dns eth0 8.8.8.8 223.5.5.5 # 更新清空 DNS 缓存 sudo resolvectl flush-caches # 查看全局 DNS 系统配置文件 cat /etc/systemd/resolved.
    部署 Created Tue, 02 Dec 2025 20:06:26 +0800
  • 搭建 APT 镜像 这里以 debian 为例子, 一般能够看到为了国内源从而配置修改相关的 sources.list 等文件, 目前有以下集中源配置: sources.list: 直接源配置 DEB822: 新的安全配置源 比如下面的的源格式: # sources.list 经典的远程源配置 deb http://mirrors.ustc.edu.cn/debian trixie main contrib non-free non-free-firmware # DEB822 格式远程源配置, 追加 gpg 签名做安全验证, 'SignWith: no' 代表不启用签名验证 Types: deb URIs: http://mirrors.ustc.edu.cn/debian Suites: trixie trixie-updates Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg 如果要自己做内网二进制打包镜像, 可以采用 sources.list 配置, 因为本身内网的包是管理员确定已提交的可控安装包. 注意: 提交暴露给内网的包在 debian 系都是 的 *.deb 结尾打出的压缩包 我们先通过 sources.list 格式来解读我们的镜像源需要什么配置: # 以 'deb http://mirrors.ustc.edu.cn/debian trixie main contrib non-free non-free-firmware' 为例子 # deb|deb-src: deb 表示二进制包仓库, 也就是直接拉取 deb 包安装; deb-src 代表源码包拉取, 不会做编译处理 # http://mirrors.
    部署 Created Mon, 01 Dec 2025 20:51:27 +0800
  • 自托管 Git 站点 之前公司内部都是采用 Gitea 做自己平台的内网脱管, 但是自从 Gitea 被其他公司收购后为了避免后续的商业纷争, 原版本 Gitea 额外分出 Forgejo 这个开源分支. Forgejo 这里还是需要说明下个人的 Git 自托管服务系统配置: 系统: 主流 Linux 发行版(Ubuntu 22.04/Debian 12/CentOS Stream 9 以上版本等) 硬件: 最低 1GB 内存, 1 CPU 核心, 10GB 磁盘(生产环境建议 2GB+ 内存,当然内存越大越好) 网络: 服务器需开放 22(SSH, 可以自定义端口设定), 80(HTTP)|443(HTTPS),3000(Forgejo 默认端口)端口 依赖: Git(必须), 数据库(可选,SQLite/MySQL/MariaDB/PostgreSQL), Docker(采用容器部署才需要) 这里采用 debian/ubuntu 系统搭建, redhat 系的搭建方式可能有所不同 首先是必须要的组件, 我这里采用的 MariaDB 数据库配置: # 安装 Git 是必须, 我这边后续默认内网采用 http, 然后 nginx 转发到内网处理 # 暴露在外网的时候建议采用 nginx 代理一下, 方便识别 nginx 日志之后直接封禁一些非法IP # git-lfs 是做大文件托管时候要用到的组件 sudo apt install git git-lfs wget # 首先创建系统托管用户 # 这个托管用户需要支持 shell 操作并且关闭密码处理 sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' \ --group --disabled-password --home /home/git git # 需要注意, 建议采用外部扩展硬盘来管理空间, 避免提交文件过大把系统空间拥爆 # 这里我是托管到 /repository 目录下, 所以都是基于这个扩展外部硬盘目录来处理 # 首先目录权限需要赋予给他处理 sudo chown git:git /repository && sudo chmod 750 /repository # 之后的配置文件的目录管理 sudo mkdir /etc/forgejo sudo chown root:git /etc/forgejo && sudo chmod 770 /etc/forgejo # 需要注意, 如果配置 MariaDB/PostgreSQL 之类数据库, 需要去官方处理SQL配置 # SQL: https://forgejo.
    部署 Created Mon, 01 Dec 2025 20:50:09 +0800
  • Nginx 架设 WebDAV 这里主要讲解的是 WebDAV 服务, 主要核心作用是让客户端(电脑|手机|服务器) 通过网络远程访问/编辑/管理服务器上的文件,和传统的传输功能相比较如下: 协议类型 全称 核心用途 适用场景 特点(优势/劣势) 与 AI 部署的适配性 WebDAV Web-based Distributed Authoring and Versioning 基于 HTTP/HTTPS 的通用文件访问 跨平台(Windows/Mac/Linux/手机)、公网访问、目录挂载、实时协作 优势:无客户端依赖、支持 HTTPS 加密、穿透防火墙、可挂载为本地目录;劣势:传输速度中等、大文件断点续传支持一般 ✅ 高(跨设备共享模型/知识库、无需重复存储、安全公网访问) SMB Server Message Block 局域网文件共享(Windows 默认) 家庭/办公局域网、Windows 为主的环境、高速文件传输 优势:速度快、支持文件锁/权限控制、大文件传输稳定;劣势:公网访问不安全(需额外加密)、Linux 兼容性一般 ✅ 中高(局域网内 Windows/Mac 访问服务器模型/数据集) AFP Apple Filing Protocol 苹果设备专用文件共享 Mac/iOS 设备局域网共享 优势:与苹果生态兼容性极佳;劣势:仅支持苹果设备、已被 SMB3 替代 ❌ 低(兼容性差,无额外优势) NFS Network File System Linux/Unix 系统专用文件共享 Linux 服务器集群、嵌入式设备(开发板)、低延迟访问 优势:轻量、低延迟、适合 Linux 间通信、可挂载为本地目录;劣势:Windows 兼容性差、无原生加密 ✅ 高(Linux 开发板/服务器间模型共享、低资源占用,适配老旧硬件) FTP File Transfer Protocol 传统文件上传/下载 早期服务器文件传输、简单场景(无安全需求) 优势:部署简单、支持批量传输;劣势:明文传输(账号/数据泄露风险)、无文件锁、穿透防火墙困难 ❌ 低(安全性差,不适合 AI 模型/隐私数据传输) SFTP SSH File Transfer Protocol 基于 SSH 的安全文件传输 跨平台(Windows/Mac/Linux)、公网/局域网文件传输、安全需求高的场景 优势:加密传输(SSH 隧道)、安全性高、支持断点续传/权限控制、穿透防火墙(仅需 22 端口);劣势:不支持目录挂载(需专用客户端)、传输速度中等 ✅ 中高(安全传输模型/数据集、跨设备上传下载,适合零散文件交互) 按照以上协议需求来比较的选择建议:
    部署 Created Fri, 28 Nov 2025 20:40:17 +0800
  • ollama 部署 一般来说个人部署 AI 服务是及其耗费时间和精力(还有可怕的满载电量和噪音), 但对于小规模的个人来说, 利用闲置的服务器设备部署个小型 AI 服务作为个人资料库其实也可以稍微玩玩. 而个人部署就推荐采用 ollama 来搭建, 按照官方文档来说其实最简单是采用 docker, 不过我这边本身就是闲置硬件也就是总结采用二进制安装部署就行, 不需要在套一层 docker 镜像. 注意: 本文涉及的很多网络相关可能需要 ‘工具’ 来处理, 否则网速基本上很慢没办法快捷部署 这里采用 ollama-linux 安装方式处理: # 如果之前安装过, 需要手动先卸载清空, 执行以下命令 cd /tmp # 现在临时目录, 二进制差不多2G左右 sudo rm -rf /usr/lib/ollama # 下载安装 ollama 应用 # 需要注意这里安装的是 amd64 的架构, 如果你是 arm64 架构需要换成 ollama-linux-arm64.tgz # 这里的安装包差不多 2G 并且因为在国外所以网络状况不好的时候很难下载下来, 最好自备工具处理这部分下载 curl -fsSL https://ollama.com/download/ollama-linux-amd64.tgz \ | sudo tar zx -C /usr # 或者采用 github 代理下载功能, 去下载远程的 github releases 包 # github 地址: https://github.
    部署 Created Thu, 27 Nov 2025 20:47:38 +0800
  • Nginx美化目录展示 Nginx 的 fancyindex 是一个第三方模块, 用于美化 Nginx 默认的目录索引页面; 默认的 Nginx 目录索引页面样式简陋, 而 fancyindex 模块提供了更美观的布局/文件图标/排序功能/面包屑导航等特性. nginx-rtmp-module 这个模块目前各大发行版都放置在 nginx-extras 包之中, 这里以 debian 服务器为主: # 安装 Nginx 及其第三方扩展 sudo apt install nginx nginx-extras # 具体确定是否存在 nginx-rtmp-module 模块可以输入以下指令确实是否有输出 ls -l /usr/share/nginx/modules/ | grep ngx_http_fancyindex_module # 这里最好删除掉默认 nginx 的 80 监听, 不知道为什么配置好 fancyindex 会出现报错 sudo rm /etc/nginx/sites-enabled/default sudo rm /etc/nginx/sites-available/default 如果安装之后默认就已经启用对应扩展, 在 Nginx 的 server 或 location 块中配置 fancyindex 相关指令, 核心指令如下: 指令 作用 默认值 fancyindex on; 启用 fancyindex 模块 off fancyindex_exact_size off; 以人性化单位显示文件大小(如1.
    部署 Created Tue, 25 Nov 2025 20:25:24 +0800
  • PHP 部署服务 自 php7 之后的 php 服务是我见过最便捷的部署方式, 基本上用自带的源安装就能处理完所有步骤: # 直接首先安装应用和 fpm 解析程序, 同时建议安装的组件 sudo apt install php php-fpm sudo apt install php-intl php-mysql php-redis php-curl php-mbstring php-dom php-gd php-zip # 现在很多发行版默认安装 php 会自动帮你安装 apache2 这个 Web 服务 # 这个服务会和 Nginx 之类产生占用冲突, 所以建议关闭掉 # 如果没有这些服务单元就不用管 sudo systemctl stop apache2.service # 关闭服务 sudo systemctl diable apache2.service # 禁止开机自启动 # 启动解析服务, 这里后续发行版都带 php{版本号}-fpm.service 启动 # 具体需要看默认源安装的版本号, 我这边默认安装的 php8.2 版本 sudo systemctl start php8.2-fpm.service # 启动解析服务 sudo systemctl enable php8.
    部署 Created Mon, 24 Nov 2025 19:46:17 +0800
  • Cloudflare Tunnel 借助其赛博菩萨 Cloudflare 的 Workers 实现动态 IP 与域名的自动绑定, 简单来说就是只需要域名就能将本地宽带内部服务暴露到公网, 并且还同时享受到 Cloudflare 的CDN|DDoS防护|IP代理隐藏等额外优势, 仅仅只需要把域名移交给 cloudflare 管理. 这里首先就是需要以下条件: cloudflare 账号: 官网地址 cloudflare 托管的域名: 不要用国内的任何域名, 因为国内可能需要做网证等验证 一台能够持续运行的 linux 服务器 这里依赖 Cloudflare Zero Trust, 其实就是要求本地局域网运行的 Cloudflare 守护程序, 与 Cloudflare 云端通信, 从而将云端请求数据转发到本地网络的 IP + 端口. 通过依赖 Cloudflare Tunnel 业务实现内网穿透, 但是国内特殊国情, 可能在国内访问速度不快并有断流的情况发生 上面提到的国情问题导致实际上体验方面可能很不好, 所以如果想长期稳定使用还是要购买公网IP服务. 另外需要说明下的是启用 Cloudflare Zero Trust 免费用户(Free)也需要信用卡验证下, 网上说有方法绕过我没试过 因为其 ‘打洞转发’ 特性, 目前很多都拿去代理转发, 所以一旦访问高峰期的时候就会出现很不稳定的情况. 官方MYSQL转发(可用于参考): MYSQL 注意: 我这边环境是采用 ARM 开发板的服务器, 所以有部分细微的差别 开通服务的步骤如下: 登录 Cloudflare 控制台 左侧菜单点击 Zero Trust 进入 Networks > Tunnels 注: 首次使用 Zero Trust 需要认证信用卡开通 Free 计划 这就是内网转发配置的地质, 我们需要创建自己渠道, 所以直接点击 Create a tunnel:
    部署 Created Sat, 15 Nov 2025 13:21:01 +0800
Next