让服务在非 Root 权限下使用 80 或 443 端口
有段时间自己写 web server 的时候考虑到想直接绑定 80 和 443 端口,但默认情况下 Linux 只有 root 用户或经过提权才能绑定 1024 以下的端口(如 80、443)。此时如果既不想用特权用户权限跑某个服务(避免安全问题),也想使用这些端口,那就需要一些配置。 ### 方法 1:iptables 端口转发 --- 例子:将 80 端口流量转发到 8080 ``` sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 ``` 此时外部已经可以通过 80 端口访问服务的 8080 端口服务,但本机是无法这样访问的。可以加上以下条件解决: ``` sudo ip...
2026/01/07 21:59:38 ["Linux"] ["系统运维"]
AppImage 应用打包快速上手
Linux 有非常多的发行版,有太多不同的包管理方式,要接触非常多的打包方式,如 Debian (deb)、ReadHat 系列 (rpm)、Arch (pkg.tar.zst) 等..... 当然,还有一些容器方案像:Flatpak、Snap、玲珑 而 AppImage 呢,则非容器,而是将许多依赖包含在一个文件中,更像是一个经过压缩且便携式的可执行文件,可以随便挪动并使用,它会在第一次启动时候临时解压和挂载资源,所以启动时间稍微慢,但它有缓存机制,后续启动会加快。 既然它是非容器,那么也会有它的问题,没有专门的隔离机制,要把它当原生程序看待,留意安全问题。 如果你厌倦了为各种 "发行版" 打包,那么就可以尝试下 AppImage 方案来为 "Linux" 统一打包。 ### 快...
2025/12/19 11:28:59 ["Linux"]
Flatpak 使用和应用打包快速上手
Flatpak,它是一种 Linux 跨发行版的通用软件包管理,使用沙箱隔离环境来运行程序,为了解决发行版应用分发碎片化、依赖冲突、权限管理混乱问题。开发者可以把应用统一封装成 flatpak 格式进行分发,这样就不用关心那些杂七杂八的问题,主要用于桌面应用(当然如果想打包 cli 也是可以的) ### Flatpak 的安装 --- 这里以 Debian 系为例。 ``` # Debian / Ubuntu sudo apt install flatpak ``` 添加 flathub 官方仓库 ``` flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo ...
2025/11/26 12:51:46 ["Linux"] ["容器"]
如何用 webSocket 实现一个实时聊天应用
有很多人好奇我站里的那个实时留言是怎么做的,在聊这个之前,我们得说说什么是 webSocket 协议,和 HTTP 的差异在哪里。 我们熟悉的 HTTP 一般是这样:客户端主动请求服务器、然后服务器接收到请求后被动响应给客户端。且属于短连接,几乎是请求响应后立即断开连接,每一次都是 `[客户端 => 服务端] 然后 [客户端 <= 服务端]` <img style="scale: 0.8;" src="/assets/webSocket_chat/http.svg"> 而 webSocket 是握手成功后,会建立一个长时间的连接,此时客户端和服务端都可以同时收发信息。就变成了 `[客户端 <=> 服务端]` 如果我们要做实时性强的应用,如果采用 HTTP 去轮询,反复建立/断开连接...
2025/11/22 14:27:57 ["Web开发"] ["Bun"]
Linux 内核编译 | 快速上手 | deb 构建
编译内核这件事可能让没接触过的人听起来很复杂,但实际上非常简单。首先前往 https://www.kernel.org/ 网站获取 Linux 内核源码,直接下载解压。 拿到源码后,先 cd 进源码目录,第一步是内核编译配置,一般可以使用 `make defconfig` 来生成当前架构的默认内核配置,再接着编辑源码目录下的 `.config` 文件(具体条目可查资料了解) 或 `make olddefconfig` 基于已有的 config (保留旧内核配置中仍有效的选项,去除已废弃的配置项) 也可以使用 `make menuconfig` 基于现有内核配置使用 TUI 来选择需要的模块,如果不存在则会类似 make olddefconfig 一样生成默认配置。 不过在做操作前我们...
2025/11/10 17:42:29 ["Linux"]