Quadlet 配置

路径:~/.config/containers/systemd/filebrowser.container

[Unit]
Description=<description>
After=network-online.target

[Container]
Image=docker.io/filebrowser/filebrowser:latest
ContainerName=<name>
UserNS=keep-id
PublishPort=<port>:8080
Volume=/share/web:/srv:ro
Volume=/share/filebrowser/database:/database
Volume=/share/filebrowser/config:/config
Environment=FB_NOAUTH=true
AutoUpdate=registry

[Service]
Restart=always
TimeoutStartSec=900

[Install]
WantedBy=default.target

settings.ini

/config/settings.ini

{
  "port": 8080,
  "baseURL": "",
  "address": "",
  "log": "stdout",
  "database": "/database/filebrowser.db",
  "root": "/srv"
}

配置要点

  • UserNS=keep-id:容器使用当前用户 UID/GID,避免权限错乱
  • Volume 映射
    • /share/web:/srv:ro:网站根目录,只读
    • /share/filebrowser/database:/database:数据库持久化
    • /share/filebrowser/config:/config:配置持久化
  • Restart=always:异常退出自动重启
  • AutoUpdate=registry:容器会根据镜像仓库版本自动更新
  • 初次运行时必须确保 /database 是空的,否则 noauth 不生效!

自动升级机制

  • AutoUpdate=registry 启用后,Podman 的 systemd 集成会在 systemd.timer 定期触发时检查镜像更新
  • 默认检查周期:每日(受 podman-auto-update.timer 控制)
  • 升级时机:
    • 如果仓库有新版本镜像 → 下载新镜像
    • 自动重启受影响的服务,使用新镜像运行容器
  • 可手动触发:
systemctl --user start podman-auto-update.service

启动流程

mkdir -p /share/web \
      /share/filebrowser/database \
      /share/filebrowser/config

loginctl enable-linger $USER
systemctl --user daemon-reload
systemctl --user enable --now filebrowser.service

验证

systemctl --user status filebrowser
journalctl --user -u filebrowser.service -f
podman ps | grep filebrowser

访问:<http://<宿主机ip>:8080>