mirror of
https://github.com/Melorise/nPanel.git
synced 2026-11-07 14:49:35 +00:00
67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
# nPanel
|
|
|
|
nPanel 是用于 NixOS 单机 Docker 服务器运维的 Web 面板。它是独立维护的 GPLv3
|
|
项目,提供 Docker、Compose、应用商店、网站、数据库、备份、文件、终端、监控、
|
|
进程与日志等日常运行时运维能力。
|
|
|
|
nPanel 不编辑、生成、扫描或接管用户的 Flake、`hardware-configuration.nix`、SSH、
|
|
防火墙、磁盘、挂载、Docker daemon 配置或其他持久化 NixOS 系统策略。用户只需在
|
|
自己的配置中引入 nPanel 模块,并自行声明 Docker。
|
|
|
|
## NixOS 使用
|
|
|
|
将本目录作为 Flake input 后,在用户已有的 NixOS 模块中引入:
|
|
|
|
```nix
|
|
{
|
|
imports = [ inputs.npanel.nixosModules.default ];
|
|
|
|
virtualisation.docker.enable = true;
|
|
services.nPanel = {
|
|
enable = true;
|
|
securityEntrance = "npanelAccess";
|
|
};
|
|
}
|
|
```
|
|
|
|
可选项:
|
|
|
|
```nix
|
|
{
|
|
services.nPanel = {
|
|
stateDir = "/srv/npanel";
|
|
runtimeDir = "/run/npanel";
|
|
port = 9999;
|
|
securityEntrance = "npanelAccess";
|
|
initialPasswordFile = "/run/secrets/npanel-initial-password";
|
|
};
|
|
}
|
|
```
|
|
|
|
首次启动时,未提供 `initialPasswordFile` 则会生成一次性管理员密码并以 `0600`
|
|
权限写入 `stateDir/initial-password`。账户及密码属于 nPanel 自身的可变状态,
|
|
不写入 Nix 配置或 Nix store。
|
|
|
|
使用 `http://127.0.0.1:<port>/<securityEntrance>` 访问面板。`port` 与
|
|
`securityEntrance` 是 NixOS 声明配置,在每次 nPanel 启动时同步到内部数据库;面板
|
|
不会提供修改它们的入口。
|
|
|
|
## 状态与权限
|
|
|
|
- `stateDir` 默认是 `/var/lib/npanel`,存放数据库、Compose 项目、应用数据、上传、备份和日志。
|
|
- `runtimeDir` 默认是 `/run/npanel`,存放 core 和 agent 的本地 Unix socket。
|
|
- agent 需要 Docker socket 访问;Docker socket 在实际效果上等同 root 权限,必须将 nPanel 作为特权控制平面保护。
|
|
- NixOS 不可变路径在文件管理器中应被按系统权限拒绝写入,不应由 nPanel 尝试修改。
|
|
|
|
## 开发与构建
|
|
|
|
`flake.nix` 的应用源码是当前目录的 `self`;除 `nixpkgs` 外没有任何源码 input。
|
|
前端、core 和 agent 都从本项目源码构建。Nix 固定依赖哈希在首次完整构建后回填,
|
|
以保证发布构建可复现。
|
|
|
|
设计边界与实施计划见 [docs/nPanel-nixos-design.md](docs/nPanel-nixos-design.md)。
|
|
|
|
## 许可证
|
|
|
|
nPanel 以 GNU General Public License v3.0 发布。上游源文件保留其必要的版权与许可证声明。
|