当前为烧饼博客的博客内容。查看全部
  • Showfom4
    本文将指导如何升级 Ubuntu 24.04 Noble Numbat 到 Ubuntu 26.04 Resolute Raccoon。 相关教程:Ubuntu 22.04 Jammy 升级 Ubuntu 24.04 Noble。 准备工作 除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据! OpenVZ 和 LXC 构架的 VPS 是无法升级的,因为他们没有自己独立的内核 再强调一遍,一定要备份重要数据! Ubuntu 26.04 LTS 已经正式发布,不过 Ubuntu LTS 版本的自动升级提示通常会等到第一个小版本发布后才会开放。如果你在 Ubuntu 26.04.1 LTS 发布前从 Ubuntu 24.04 LTS 升级,do-release-upgrade 需要加上 -d 参数。 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作 更新系统 首先需要更新你当前的系统 apt update …
  • Showfom
    本文介绍在 WSL 2 中使用 Docker 的桥接模式(bridge network)访问 HTTPS 时出现超时问题的解决方法。 最近一直在 Windows 下使用基于 WSL 2 的 Debian 进行开发。许多场景下需要使用 Docker 构建镜像,但过程中遇到一个奇怪的问题,在 Docker 容器内部访问 HTTP 站点时一切正常: $ docker run --rm curlimages/curl time curl -s http://ip.gs 192.0.2.2 real 0m 0.02s user 0m 0.00s sys 0m 0.00s 一旦切换为 HTTPS,访问就会明显变慢,并且有一定概率出现超时: $ docker run --rm curlimages/curl time curl -s https://ip.gs 192.0.2.2 real 0m 6.52s user 0m 0.00s sys 0m 0.00s 然而,如果将 Docker 切换到 Host 模式(--network=host),访问又恢复正常: $ docker run --rm -…
  • Showfom
    本文将介绍在 Debian 或 Ubuntu 下使用 nginx-acme 自动签发并配置 SSL 证书的方法。 本文适合 Debian Stable 和 Ubuntu LTS,请使用 root 用户进行操作。 1、什么是 nginx-acme nginx-acme 是 Nginx 官方开发的基于 ACME 协议自动签发 SSL 证书的模块,隔壁 Caddy 都出了几百年的功能, Nginx 也终于赶上了。 和 Nginx 使用 C 语言开发不同,这个模块是用 Rust 语言开发的,这里就不做评价。 这个模块支持 RFC8555、RFC8737、RFC8738 和 draft-ietf-acme-profiles 等规范,目前我实际测试下来已经基本可以用于生产环境。 2、安装 N.WTF 这里我们使用烧饼博客打包的 N.WTF,这个项目已经集成了 nginx-acme 模块,可以做到开箱即用。 首先,安装一些必要的软件包: sudo apt update sudo apt upgrade -y sudo apt install curl vim wget gnupg dpkg apt-…
  • Showfom
    本文将介绍使用 acme.sh 配置 Let's Encrypt 为 IP 地址签发 SSL 证书。 之前写过一篇使用 acme.sh 签发证书的教程,但在很长一段时间里,Let's Encrypt 只能给域名签发证书。 经过几个月的测试之后,现在终于可以对 IP 地址 下手了。 为什么要给 IP 签发证书 在很多场景下,我们并不一定需要域名,但确实需要 HTTPS。比如: DNS over HTTPS(DoH)服务无需依赖域名解析 直接通过 IP 提供 DoH 服务,避免「为了安全先做一次不安全的域名解析」这种哲学问题。 Web 服务默认站点隐藏真实域名 默认站点只暴露 IP,不暴露真实域名,顺便还能挡掉一部分不太礼貌的爬虫。 临时服务或测试环境 临时起个服务,只想加个锁,不想再去 DNS 那边折腾。 避免证书透明日志(Certificate Transparency Log)暴露域名,保护隐私 有些域名不太想出现在公开日志里,低调一点总是好的。 准备工作 首先更新 acme.sh 到最新版本: acme.sh --upgrade 因为 IP 证书目前只能通过 http-01 和 t…
  • Showfom
    RDAP.SS 是一个基于 RDAP 协议的 Whois 查询网站,本文介绍 RDAP 协议以及如何使用。 1、什么是 RDAP 协议? RDAP,全称 Registration Data Access Protocol,由 IETF(互联网工程任务组)制定,主要用于查询以下注册信息: 域名(Domain) IP 地址(IPv4 / IPv6) ASN(自治系统号) 它定义在 RFC 7480、7481、7482、7483、7484 等系列标准中。 2、RDAP 和 Whois 协议的区别 以下是对两者主要区别的总结: 比较项目 WHOIS RDAP 传输协议 基于 TCP 文本协议 基于 HTTPS RESTful API 数据格式 纯文本、非结构化 JSON 格式、结构化 国际化支持 差,编码不统一 完全支持 UTF-8 安全性 无加密、无认证 支持 HTTPS、OAuth 分布式查询 依靠人工跳转 内置 bootstrap 机制,可自动重定向至正确注册局 标准化程度 各注册局格式不同 格式统一,易于机器读取与解析 在传统的 Whois 协议中,用户需要给 Whois 服务器的 4…
  • Showfom
    本文将指导如何在 Debian 下使用 extrepo 配置第三方软件源。 什么是 extrepo? extrepo 用于管理 Debian 中的外部软件源。 在没有 extrepo 之前,想要使用未被 Debian 官方打包的软件,用户通常需要手动编写 APT 配置文件、以 root 身份运行未经签名的脚本,或安装一个包含所有系统配置的未签名 .deb 包。 遗憾的是,这些方法都不是很安全。 打个比方,我们要添加 Docker 的软件源,有三种方式。 第一种是传统的 One-Line Style: curl -sSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $…
  • Showfom
    本文将介绍在升级 Debian 系统后,GitLab 的 PostgreSQL 数据库无法正常启动的问题。 背景前提 本文的 GitLab 是基于官方源安装的,具体安装和升级方法限于篇幅,不再阐述。 我们从 Debian 11 升级到 Debian 12 后,再更新 GitLab 会发现如下报错: gitlab [execute] WARNING: database "postgres" has a collation version mismatch DETAIL: The database was created using collation version 2.31, but the operating system provides version 2.36. 或者从 Debian 12 升级到 Debian 13 后更新 GitLab 也会有如下报错: WARNING: database “gitlabhq_production” has a collation version mismatch DETAIL: The database was created using …
  • Showfom
    本文将指导如何升级 Debian 12 Bookworm 到 Debian 13 Trixie。 相关教程:Debian 11 Bullseye 升级 Debian 12 Bookworm。 准备工作 除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据! OpenVZ 6 和 LXC 构架的 VPS 是无法升级的,因为他们没有自己独立的内核 再强调一遍,一定要备份重要数据! 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作 更新系统 首先需要更新你当前的系统 apt update apt upgrade -y apt full-upgrade -y apt autoclean apt autoremove -y 如果内核更新了,可以重启让最新的内核生效,也可以直接进行升级。 升级系统 首先更新 apt 源,替换 bookworm 为 trixie: sed -i 's/bookworm/trixie/g…
  • Showfom
    本文将指导如何升级 Ubuntu 22.04 Jammy Jellyfish 到 Ubuntu 24.04 Noble Numbat。 相关教程:Ubuntu 20.04 Focal Fossa 升级 Ubuntu 22.04 Jammy Jellyfish。 准备工作 除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据! OpenVZ 和 LXC 构架的 VPS 是无法升级的,因为他们没有自己独立的内核 再强调一遍,一定要备份重要数据! 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作 更新系统 首先需要更新你当前的系统 apt update apt upgrade -y apt dist-upgrade -y apt autoclean apt autoremove -y 如果内核更新了,可以重启让最新的内核生效,也可以直接进行升级。 升级系统 这里有两种升级系统的方法,第一种是使用 do-rele…
  • Showfom
    本文将指导如何在 Linux 下使用 Docker 和 Docker Compose 安装 FreshRSS 开源 RSS 聚合器服务。 PS:本文同时适用于任何可安装 Docker 的 Linux 发行版。 什么是 FreshRSS? FreshRSS 是一款免费且开源的 RSS 聚合器,设计用于帮助用户集中管理和阅读来自不同网站的新闻源。它具有高效、轻量的特点,并且支持多用户使用。 安装 Docker 和 Docker Compose Debian 和 Ubuntu 系统请参考本站教程。 其他 Linux 系统可以使用 Docker 官方的脚本安装 Docker 和 Docker Compose: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 安装 FreshRSS 这里我们使用 PostgreSQL 数据库,首先创建一个目录用于存放 FreshRSS 的配置文件和数据库文件: mkdir -p /opt/freshrss cd /opt/freshrss 然后创建一个 docker-comp…
  • Showfom
    本文将指导使用 Docker 安装 Shlink 搭建自建短网址服务。 PS:本文同时适用于任何可安装 Docker 的 Linux 发行版。 什么是短网址? 短网址,即 URL Shortener (缩略网址服务),一般我们使用 HTTP 协议 的 301 或 302 响应码,现在也有使用 307 或 308 来跳转一个长网址,简单的区别: 状态码 名称 是否永久 是否保留请求方法 浏览器缓存 301 Moved Permanently ✅ 永久 ❌ 可能改为 GET 会缓存 302 Found ❌ 临时 ❌ 可能改为 GET 不缓存 307 Temporary Redirect ❌ 临时 ✅ 保留 不缓存 308 Permanent Redirect ✅ 永久 ✅ 保留 会缓存 MDN 上有对这几个状态码的详细介绍: 301 Moved Permanently 302 Found 307 Temporary Redirect 308 Permanent Redirect 301 和 302 有一个最重要的区别,前者会在浏览器留下缓存,后者不会,导致如果你需要精确的统计访客,尤其是有…
  • Showfom
    本文将指导如何在 Debian 下安装并配置 Nextcloud 服务端。 本文的教程同时适用于 Debian Stable 以及 Ubuntu LTS。 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。 什么是 Nextcloud? Nextcloud 是一套用于建立网络硬盘的客户端和服务器软件。其功能和 Dropbox 相近,但 Nextcloud 是开源的,任何人都可以在自己的服务器上安装并运行它。 虽然 Nextcloud 性能比较弱,但是实际测试下来几个人的小团队用用也足够了。 安装之前你可以先去官方的 Demo 体验。 准备环境 由于 Nextcloud 消耗资源比较大,一般我们不建议在 4GB 内存以下的 VPS 安装,官方推荐配置为 512MB 内存,实际体验下来安装在 8GB 内存上跑 Nextcloud 会比较流畅。 配置 LEMP 环境 首先,可以参考本站教程配置好 LEMP 环境,在安装 PHP 的时候,请选择 PHP 8.3 以及以下模块: apt install php8.4-{common,…
  • Showfom
    本文原理适用于大多数 Linux 系统,其他系统尚未测试,请读者自行验证。 背景介绍 双协议栈技术就是指在一台设备上同时启用 IPv4 协议栈和 IPv6 协议栈,这样就可以同时使用 IPv4 和 IPv6 的网络。 现代操作系统和浏览器通常会优先使用 IPv6,只有当 IPv6 无法访问时,才会回退到 IPv4。但在某些特定的应用或场景中,我们可能更希望系统优先使用 IPv4,这时就需要通过配置文件进行调整。 修改 /etc/gai.conf 在 Debian 等 Linux 系统下,有一个 /etc/gai.conf 文件,用于系统的 getaddrinfo 调用,默认情况下,它会使用 IPv6 优先,如果您安装了 curl 并且本地支持 IPv6,那么可以使用 curl ip.sb 测试: root@debian ~ # curl ip.sb 2001:db8::2 结果与 curl ip.sb -6 等效。 从 Debian 13 开始,curl (8.14.1) 默认强制使用 IPv6。因此,如果希望测试本地出口公网 IP,可以改用 wget: root@debian ~ #…
  • Showfom
    本文将介绍使用官方源和第三方源在 Debian 和 Ubuntu 安装最新版 Nginx + PHP + MySQL 的教程,并且可以自行选择 PHP 版本。 PS:本文适用于 Debian Stable 以及 Ubuntu LTS 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。 1、更新系统并安装部分必要软件 apt update apt upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates 如果您通过 iso 方式安装 Debian 并且设置了 root 密码,则默认不带 sudo 包,使用 apt install sudo 安装即可 2、增加烧饼博客打包的 Nginx 源并安装 这里我们推荐烧饼博客团队打包的 Nginx 源,这货是在官方 Nginx 打包组的基础上,保持更新最新版本的 Nginx 以及 OpenSSL。 2.1 首先增加 GPG Key curl -sSL h…
  • Showfom
    本文将介绍使用官方源和第三方源在 Debian 和 Ubuntu 安装最新版 Apache 2 + PHP + MySQL 的教程,并且可以自行选择 PHP 版本。 PS:本文适用于 Debian Stable 以及 Ubuntu LTS 以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。 1、更新系统并安装部分必要软件 apt update apt upgrade -y apt dist-upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates 如果您通过 iso 方式安装 Debian 并且设置了 root 密码,则默认不带 sudo 包,使用 apt install sudo 安装即可 2、增加 Ondřej Surý 大神打包的 PHP 源并安装 PHP 8.x 和 LEMP 安装方法一样,我们还是使用 Ondřej Surý 大佬打包的 PHP 源。 至于为啥先装 PHP 再装 A…