在无 systemd 的 Linux 环境中管理后台进程,附 beszel 部署教程

在某算力平台里,实例是使用虚拟化容器的方式启动的,而不是虚拟机,也就是说 PID 1 的进程并不是 systemd,因此无法使用 systemd 来管理后台进程,于是考虑使用 process-compose 来管理。 process-compose 使用类似 docker-compose 的配置文件管理后台进程,还支持在 TUI 中查看进程日志,非常方便。本文后面还会使用 beszel 作为实例演示 process-compose 的使用方法。 安装 推荐使用 mise 完成安装,参考 mise:一个更灵活的包管理工具,附常见工具推荐 - process-compose。 也可以根据官方文档,使用以下命令安装: sh -c "$(curl --location https://raw.…

单独授予某可执行绑定 1024 以下端口号的权限、sudo 免密码权限

在使用 process-compose 的时候,遇到一个需求,我需要一个服务监听 53 端口,按照 Linux 默认限制,监听 1024 以下端口号,需要 root 权限,但 process-compose 切换 root 执行不是很方便,于是需要单独授予。 单独授予某可执行 1024 以下端口号监听权限 使用以下命令授予: sudo setcap cap_net_bind_service=+ep "/your/executable" 单独授予某可执行 sudo 免密码权限 这里是指 sudo /your/executable 时无须输入密码,仅执行 /your/executable…

mise:一个更灵活的包管理工具,附常见工具推荐

本文假定读者理解 toml 文件格式语法。 mise 是一个开源的,类似包管理器的工具,他可以从 GitHub Release 下载并安装例如 pixi、mihomo、mosdns 等应用,甚至还能管理例如 Java、GoLang、Node.js 等开发 SDK,是一款非常强大的工具,非常推荐使用。 安装 使用官方脚本一键安装: curl https://mise.run | sh 然后使用以下命令初始化环境: echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc 执行完后关闭终端并重新打开,新建配置文件 ~/.config/mise/config.…

将 docker 数据完全移动到其他目录

除了将 docker 的 data-root 移动到其他目录外,即修改 /etc/docker/daemon.json: { "data-root": "/vol1/@docker/data" } 还要修改 containerd 的目录,即修改 /etc/containerd/config.toml: ... root = "/vol1/@docker/containerd" ... 修改完成后停止 docker 和 containerd 两个服务,并将原始目录移动到新的位置,重启服务即可。…

OpenCode 在无头环境中报错 Error: Unexpected error

通过对 opencode 启动命令行添加参数 --log-level DEBUG,得到以下日志: error: Executable not found in $PATH: "xdg-open" path: "xdg-open", errno: -2, syscall: "spawn xdg-open", spawnargs: [ "http://localhost:14096" ], code: "ENOENT" at spawn (node:child_process:667:35) at spawn (node:…

在无状态环境中实现自动化备份:基于 Duplicati 的实践

最近在使用某公共算力平台,这个平台除了指定的持久化目录外,其余数据在重启后全部丢失,而且这个持久化目录还是通过对象存储实现的,这导致里面的文件权限无法保持,比如强制 0755,因此直接把用户目录持久化的方案是不可行的,会造成奇奇怪怪的问题。 综上所有信息,我选择使用 Duplicati 完成自动化备份,并在需要的时候恢复文件。 安装 前往 duplicati/duplicati - Release 下载适用于系统的 gui 安装包。例如我这里的是 x86-64 的 Ubuntu 环境,于是下载 duplicati-2.3.0.0_stable_2026-04-14-linux-x64-gui.deb,上传到 ~/Download 目录中,使用以下命令安装: apt install ~/Download/duplicati-…

Docker 官方安装脚本使用镜像

之前尝试在国内的 ECS 实例里安装 docker,尝试运行以下命令: curl -fsSL https://get.docker.com | bash 结果如下: ecs-user@iZ2vc4s2mp8t4ikopho8pnZ:~/frps$ sudo bash ./docker-installer.sh # Executing docker install script, commit: 4c94a56999e10efcf48c5b8e3f6afea464f9108e + sh -c 'apt-get -qq update >/dev/null' + sh -c 'DEBIAN_FRONTEND=noninteractive apt-get -y -qq install…

Docker Engine Api 和 docker-buildkit 的坑:BUILDPLATFORM

最近在研究打包一个 Python 的基础镜像,想要新增支持 GUI,考虑基于 GitHub - jlesage/docker-baseimage-gui 构建,项目是使用 Gradle 创建的,使用的插件是基于 Docker Engine Api 完成的 Docker 操作。 在构建镜像的时候遇到以下报错: Using Dockerfile '/vol1/1000/Document/Docker/poetry-docker/src/main/base/baseimage-gui/Dockerfile' Using images 'mhmzx/docker-python-baseimage:3.10-bookworm-base-…