基础设施

服务器、部署、容器与运行环境。

专题分组

下级分类

2 个下级
自动续签ssl证书
服务器与部署
6 分钟

自动续签ssl证书

这篇笔记记录了用 acme.sh 为域名自动申请和续签 Let’s Encrypt SSL 证书的完整配置过程,重点场景是通过 DNS-01 验证签发 jacin.me 及其通配符证书,适合需要为泛域名部署 HTTPS 的站点维护者或运维人员。操作从安装 acme.sh、加载环境变量开始,随后切换默认 CA 到 Let’s Encrypt、注册账号,并以 Cloudflare 为例说明如何创建具备 Edit zone DNS 权限的 API Token,提醒 Token 只显示一次需要提前保存。配置部分使用 CF_Token 与 CF_Account_ID 作为 dns_cf 插件的凭证,执行 acme.sh --issue -d jacin.me -d '*.jacin.me' --dns dns_cf 后会在 ~/.acme.sh/jacin.me_ecc/ 下生成证书、私钥、中间证书和 fullchain.cer。文章还说明了如何通过 crontab 检查 acme.sh 自动续签任务,把 Cloudflare 凭证写入 account.conf 以便后续续签复用,并用 acme.sh --list 查看证书创建时间和 Renew 时间。续签机制上,acme.sh 会在到期续签时把新证书覆盖到原路径,因此 Nginx 只要引用 fullchain.cer 和对应 key,并在续签后执行 nginx -s reload 或 systemctl reload nginx,就能让新 TLS 握手平滑切换到新证书而不影响已有连接。

设置ssh密码登录
服务器与部署
3 分钟

设置ssh密码登录

这份操作记录面向需要在 Linux 服务器上临时或明确启用 SSH 密码登录的场景,核心目标是修改 OpenSSH 服务端配置,使其监听 2222 端口、允许 root 直接登录,并开启密码与 PAM 相关认证。正文先通过备份 /etc/ssh/sshd_config 保留回退点,再用重写配置文件的方式设置 Port、PermitRootLogin、PasswordAuthentication、ChallengeResponseAuthentication、UsePAM 和 sftp 子系统路径,随后用 passwd 为 root 设置密码并重启 ssh 服务使配置生效。由于开放密码登录和 root 登录会增加暴力破解风险,记录进一步补充了 fail2ban 的安装与基础防护配置,用于对 SSH 登录失败行为进行自动封禁。fail2ban 部分强调不要直接修改 jail.conf,而是在 /etc/fail2ban/jail.local 中覆盖默认项,设置 systemd 后端、3600 秒封禁时间、600 秒检测窗口、5 次最大重试,并将 sshd jail 的端口同步为 2222。最后给出重启、启用 fail2ban 以及查看 sshd jail 状态的命令,并记录当 status sshd 提示 jail 不存在时,可安装 python3-systemd 作为排查处理方向。整体更适合有基础 Linux 运维经验、需要快速恢复密码登录或为非标准 SSH 端口增加基础防护的用户参考,但实际使用时仍应谨慎评估 root 密码登录带来的安全边界。

哪吒面板安装与使用
服务器与部署
9 分钟

哪吒面板安装与使用

这份笔记围绕哪吒面板的自建部署、客户端接入、反代加速和基础监控配置展开,适合想用探针集中查看多台 Linux 主机状态的个人用户或运维实践者。服务端部分采用官方脚本以 Docker 方式安装 Dashboard,安装时需要设置站点标题、公开访问端口和后台语言,并注意该端口同时承担 Web 界面、gRPC 与 WebSocket 通信用途,完成后再修改后台密码。客户端接入通过个人中心填写 Agent 对接地址生成安装命令,作者示例未开启 TLS,随后将命令复制到各台 Linux 客户端执行即可完成 Agent 上报。反代部分给出 Cloudflare CDN 配合 Nginx 的配置思路,分别处理 Web、gRPC 和 WebSocket 路径,并提醒用于 CDN 访问的域名不要与 Agent 对接地址混用。配置时主要替换 server_name、Dashboard 本地回源端口、证书路径和真实 IP 头;若 Nginx 位于最外层,还需要按注释调整 nz-realip、X-Forwarded-Proto 等相关设置。最后以 HTTP GET 和 Ping 为例创建监控服务,用于检查站点可用性和观察指定线路的回程延迟,读者可以据此快速搭起一个带 CDN 访问入口和基础监控能力的哪吒面板环境。

搭建minio与配置cdn
服务器与部署
9 分钟

搭建minio与配置cdn

这是一份将自建 MinIO 对象存储暴露为可公开访问资源源站,并通过 Cloudflare CDN 加速的配置记录,适合需要替代云对象存储、托管静态文件或图片资源的个人站点与小型服务。文章特别强调新版 MinIO 镜像因开源策略调整导致 UI 中缺少桶设置入口,因此部署时固定使用 RELEASE.2025-04-22T22-12-26Z,并通过 Docker Compose 暴露 9000 的 S3 API 与 9001 的 Console 管理端口。反向代理部分采用子域名方案,用 Nginx 分别将 cos/cdn 域名转发到对象访问端口、将 minio 域名转发到控制台,同时配置 HTTPS、上传大小限制、关闭代理缓冲以及 Console 所需的 WebSocket 升级头。权限配置围绕 public 桶展开,通过自定义匿名策略只允许 s3:GetObject 访问 public/*,从而实现对象可读但不开放桶列表,降低公开存储带来的目录泄露风险。最后在 Cloudflare 中创建 CDN 域名,将 CNAME 指向源站 cos.jacin.me 并开启代理缓存,使访问路径从自建 MinIO 源站扩展为带 CDN 的静态资源分发链路。整篇内容更偏实操备忘,读者可直接复用其中的版本选择、Nginx 分流配置、桶策略和 Cloudflare 接入思路,但需要按自己的域名、证书路径、账号密码与端口环境调整。

部署与配置matomo
服务器与部署
5 分钟

部署与配置matomo

这份记录聚焦于用 Docker Compose 自托管部署 Matomo,并将 MySQL 8.2 作为独立数据库服务接入,适合作为个人站点或小型站点接入访问统计前的配置清单。正文先给出 MySQL 容器的 compose 配置,包括镜像版本、容器名、自动重启、3306 端口映射、初始化数据库与用户密码、宿主机数据卷挂载,以及加入外部 Docker 网络的方式,并明确需要先通过 docker network create 创建 mynetwork。随后单独部署 Matomo 容器,配置 58733 到 80 的端口映射、matomo_data 数据卷、数据库主机名指向 MySQL 容器名,以及数据库用户名、密码和库名等连接参数。文章还记录了运行后的资源观察:访问量上升时 Matomo 和 MySQL 的内存占用会增长,MySQL 预留约 500MB 内存是必要的,因此部署前需要考虑服务器余量。相关配置部分补充了 trusted_hosts 的处理方式,既可以通过 docker exec 追加 config.ini.php 并重启容器,也可以进入 Matomo 界面配置域名。最后还涉及隐私与安全设置,包括访客 IP 显示/隐藏选项,以及因安全原因到数据库查询 matomo_user、修改用户名和邮箱、删除匿名用户等后续处理。

服务器与部署
22 分钟

Nginx 配置

这份笔记围绕 Ubuntu 环境下的 Nginx 日常部署与配置展开,先梳理它作为 Web 服务器、反向代理、负载均衡、内容缓存和邮件代理的常见用途,并说明 Nginx 主要工作在应用层,而 NAT 属于网络层的地址映射机制。安装部分记录了 apt 安装、systemctl 查看状态、whereis 定位程序,以及 /etc/nginx、/etc/nginx/sites-available、/var/log/nginx、/var/www/html 等关键目录,适合用于快速确认服务文件和配置入口。配置解释部分重点说明 user、worker_processes、error_log、pid、events、worker_connections、http、MIME 类型和 log_format 等指令的作用,并提醒生产环境中让 worker 进程以 root 运行会带来较高安全风险。样例 nginx.conf 展示了多个 server 块的组合用法,包括 HTTP 到 HTTPS 的 301 跳转、不同域名反向代理到本地端口、静态目录 alias、媒体文件匹配、Gzip 压缩、代理头传递、关闭缓冲、超时设置和 client_max_body_size 限制。证书部分给出从下载证书、合并 crt、重命名私钥、检查并移除 UTF-8 BOM,到放入 /etc/nginx/ssl、调整属主与 chmod 600 权限的操作链路。整体更像一份部署备忘录,适合后端开发或运维在配置 HTTPS 站点、代理本地应用、排查连接数和日志问题时对照使用。

Cloudflare证书
服务器与部署
9 分钟

Cloudflare证书

这篇笔记梳理 Cloudflare 场景下几类容易混淆的 TLS 证书及其通信方向:边缘证书部署在 Cloudflare CDN 边缘节点,负责浏览器到 Cloudflare 的 HTTPS 入口;源站证书安装在自有服务器上,负责 Cloudflare 回源到 Origin Server 时的加密与校验。文章用“用户→边缘→源站”的链路解释了边缘层的含义,并指出边缘证书带来的低延迟握手、缓存可用性、HTTPS 强制、HSTS、WAF 与规则处理等收益。配置部分区分了 Flexible、Full 和 Full strict:Flexible 只保证用户到 Cloudflare 加密,Full 回源使用 HTTPS 但不验证证书,Full strict 则会验证源站证书,通常适合配合 Cloudflare Origin Certificate 使用。需要注意的是,Origin Certificate 不是公共 CA 签发,只被 Cloudflare 信任,适合回源链路,不适合让浏览器或公网客户端直接访问。文章还拆分了两类“客户端证书”场景:Authenticated Origin Pulls 是 Cloudflare 向源站出示证书,由源站验证请求确实来自 Cloudflare,以降低绕过 CDN 直打源站的风险;访问者侧 mTLS 则要求 API 客户端或受限用户向 Cloudflare 提供客户端证书,用于管理后台、内部 API 等访问控制。整体适合正在配置 Cloudflare SSL/TLS、回源 HTTPS、源站防护或 mTLS 的站点维护者与后端/运维人员,用来建立证书类型、验证主体和部署位置之间的清晰对应关系。

cloudfare配置内网穿透
服务器与部署
16 分钟

cloudfare配置内网穿透

这篇记录围绕 Cloudflare Tunnel 搭建内网穿透展开,适用于希望把本地 FastAPI、管理后台或前端开发服务通过自有域名暴露到公网、但没有公网 IP 或不想做路由器端口映射的场景。流程从域名接入 Cloudflare 开始:先在原域名服务商关闭 DNSSEC,再把 NS 修改为 Cloudflare 提供的 Name Servers,并可用 dnschecker 检查 NS 是否已切换成功,因为 Cloudflare 的域名验证主要依赖 NS 接管而不是添加 TXT 记录。正文随后记录 cloudflared 的安装验证、tunnel login 授权、创建 tunnel,以及通过 config.yml 的 ingress 把 api、admin、web 等不同 hostname 映射到 localhost 的不同端口。一个 tunnel 可以承载多个服务,但每个 hostname 仍需分别创建 DNS 路由,既可在控制台添加 CNAME,也可用 cloudflared tunnel route dns 自动生成指向 cfargotunnel.com 的记录。文章还说明接入 Cloudflare 后 Universal SSL 会自动为域名签发并续期 HTTPS 证书,通常无需手动管理证书。排障部分强调 DNS 和隧道生效可能存在延迟,QUIC 连接失败多与 UDP 7844 被阻断有关,可改用 HTTP/2;若访问出现 502,则常见原因是本地目标服务未启动。最后补充了长期运行方式:cloudflared tunnel run 只是前台进程,生产或长期访问应改用系统服务或 nohup,并在修改 config.yml 后重启 cloudflared 才能让新配置生效。

picgo配置cloudflare-r2
服务器与部署
2 分钟

picgo配置cloudflare-r2

这篇记录聚焦于用 PicGo 搭配 Cloudflare R2 搭建博客图床,并通过 Cloudflare 缓存规则改善图片访问速度。配置部分选择的是 wayjam 维护的 picgo-plugin-s3,而不是泛泛说明 S3 协议本身,核心操作是在 PicGo 插件市场安装对应版本后,按 R2/S3 存储参数完成上传配置。文章特别强调上传路径的命名方式,示例为 blog/img/{year}/{month}/{md5}-{timestamp}.{extName},利用年份、月份、MD5、时间戳和扩展名组合,让对象路径尽量唯一,避免后续缓存命中与文件更新之间产生混淆。完成上传路径后,还需要设置 PicGo 的输出 URL,使上传后的图片能按自定义 CDN 域名路径被博客引用。后半部分转向 Cloudflare 后台的 Cache TTL 自定义规则,因为文件数量增多时每次加载可能变慢,作者通过匹配访问路径并设置缓存时间,让首次访问之后的图片加载更快。整体适合已经具备 PicGo、Cloudflare 域名和 R2 存储基础的用户参考,重点价值在于串起上传、URL 输出和边缘缓存三段链路,而不是从零解释 R2 或 S3 的所有概念。

minio配置
服务器与部署
6 分钟

minio配置

这份笔记面向 MinIO 对象存储的初始配置与公开读取场景,重点把控制台操作和 S3 客户端接入参数对应起来。创建本地用户时,user_name 可作为 MINIO_ACCESS_KEY,password 可作为 MINIO_SECRET_KEY,MINIO_ENDPOINT_URL 通常填写反向代理后的对象存储地址;如果直接用 IP 访问,则需要带上 9000 端口,区域在无特殊配置时可使用 auto。权限体系部分区分了 Users、Groups、OpenID 和 LDAP:本地用户适合直接分配 IAM policy,组用于批量继承权限,OpenID 适合接入 Keycloak、Auth0 等身份提供商实现 SSO,LDAP/AD 则便于复用企业账号和组映射。桶配置部分解释了 Custom Access Policy、服务器端加密、跨集群复制、对象锁、标签和配额等开关的含义,帮助判断哪些能力只是当前禁用,哪些需要按合规、同步或容量管理需求启用。公开文件读取策略示例只允许 GetBucketLocation 和 GetObject,并将对象资源限定在 public 桶下,同时明确不放行 ListBucket,避免匿名用户枚举桶内对象列表。适合正在把 MinIO 作为 S3 兼容存储接入应用、需要配置访问密钥、桶策略和基础权限边界的开发或运维人员参考。