Elabftw系统管理员指南

总体概述

系统管理员

  • 是第一个注册用户

  • 可以访问 Sysconfig 面板,其中包含影响服务器上托管的每个团队的常规设置

  • 可以创建/编辑/删除团队

  • 可以向所有用户群发电子邮件

  • 可以设置默认语言

  • 可以配置时间戳(如果需要另一个 TSA)

  • 可以更改安全设置(登录尝试次数、新用户的手动验证)

  • 可以有多个“Sysadmin”帐户

创建账户

新用户需要在注册页面注册一个账号,注册页面可从登录页面访问。新用户需要从列表中选择一个团队。

默认情况下,新创建的帐户是禁用的。团队管理员需要进入管理面板并激活新用户来验证这些帐户。本指南假设您已在服务器上安装了 eLabFTW。系统管理员可以访问 eLabFTW 实例的核心设置,例如电子邮件配置或安全偏好设置。

设置电子邮件(必需)

如果安装后只做一件事,那就是设置电子邮件。否则用户将无法重置密码或接收通知!

要配置 eLabFTW 发送电子邮件,您需要 SMTP 服务的凭证。如果您使用的 SMTP 服务无需凭证,同样有效。

进入 Sysadmin 面板。您将看到以下警告:

单击“电子邮件”选项卡并添加所需信息以连接到您的 SMTP 服务器。

如果您不知道该怎么做,我强烈建议您使用 SMTP2GO (使用此推荐链接),他们提供的免费计划可能足以满足您的使用情况。

使用以下链接注册一个帐户: SMTP2GO 。登录后,添加一个 SMTP 用户:它将为您提供登录名和密码,以连接到 SMTP 服务器“mail.smtp2go.com”。在系统管理员面板上输入这些凭据,然后测试发送电子邮件。

设置备份

请参阅专用备份页面。

配置团队 (可选)

如果您的实例托管不同的研究小组/团队,您可以从 Sysadmin 面板 ( sysconfig.php ) 创建它们。

您可能还需要编辑默认团队名称。下面的屏幕截图中显示了四个团队。“组织 ID”是一个属性,如果您希望使用外部身份验证服务(例如 SAML 或 LDAP)发送的信息将团队分配给新用户,则可以设置该属性。它基本上允许您将 eLabFTW 上的团队与您目录中的团队进行匹配。

“可见”属性允许您在“注册”页面隐藏团队。例如,可以将其用于管理团队。只有完全空白的团队才可以被删除。

配置身份验证 (可选)

eLabFTW 目前支持四种身份验证机制:

  • 本地身份验证:本地存储的电子邮件+密码,这是默认的

  • SAML 身份验证:使用一个或多个身份提供商 (IDP) 对用户进行身份验证。请参阅专门的 SAML 文档页面

  • LDAP 身份验证:使用 LDAP 服务验证登录。请参阅专门的 LDAP 文档页面

  • 外部身份验证:使用您自己的中间件添加的请求标头来验证用户(例如 Apache 的 auth_mellon)

可以同时使用多种机制,但建议只保留一种对用户可见。因此,如果您配置了 LDAP 或 SAML,请禁用本地登录,以免用户混淆。

如果您禁用了本地身份验证,并且由于其他方法失败而无法重新登录,则需要运行此 SQL 查询(如果您使用 Dockerized MySQL 服务, elabctl mysql 将为您提供 MySQL 提示符):

update config set conf_value = '1' where conf_name = 'local_auth_enabled';

设置时间戳 (可选)

eLabFTW 为您的实验提供了一种简单的方法来执行可信时间戳 ,因此您的实验室笔记本具有强大的法律价值。

默认情况下,它设置为使用 pki.dfn.de 作为 TSA 。它对研究人员免费。唯一的问题是,他们没有这项服务的 ETSI 认证(尽管他们的 PKI 基础设施已通过 ETSI TS 102 042 认证)。

因此,如果您需要更强大的认证,应该选择提供 RFC 3161 时间戳文档的商业解决方案。我们推荐 Universign.com ,因为它们是最严谨、最受认可的 TSA 之一,但您也可以选择自己喜欢的方案。

您可以从预配置的 TSA 列表中进行选择,或者通过提供 URL 和登录名/密码来使用自定义的 TSA。

请记住:没有数据发送到 TSA(TimeStampingAuthority) ,只发送数据的哈希值,因此不会泄露任何信息!

配置自动时间戳

您可能希望自动为实验添加时间戳,而不依赖于用户手动触发操作。为此,您需要设置一个周期性任务(cronjob 或 systemd 定时器),该任务将调用控制台命令。

命令为: bin/console experiments:timestamp –help 。它需要一个参数,即执行时间戳的用户 ID。大多数情况下,使用 1 即可。或者,您也可以为此目的创建一个特定用户。


默认情况下,所有在过去一周内修改的实验都会被添加时间戳。因此,您需要调整循环任务的周期,使其与 –modified-since / -m 设置保持一致。此选项请使用英文描述,例如“1 个月”或“2 周”。

Example:  例子:

# timestamp all the modified experiments from past week
# run on every Saturday at 3AM
0 3 * * 6 docker exec elabftw bin/console experiments:timestamp 1

# timestamp all the modified experiments of past month
# run the first day of the month at 3AM, in verbose mode
0 3 1 * *  docker exec elabftw bin/console experiments:timestamp 1 -m "1 month" -v

配置 Keeex

eLabFTW 提供了一种在时间戳操作期间使用 Keeex 服务的方法。该技术可以自主且无需第三方介入地保证文件的完整性和真实性。

启用后,生成的用于加盖时间戳的 pdf 将被发送到以 http 模式在您的网络上运行的 Keeex Fusion 服务,以对 pdf 进行 keeex/timestamping,然后通过您的 RFC3161 提供程序加盖时间戳。

如果您想使用此服务,请联系我们

配置存储 (可选)

默认情况下,上传的文件存储在挂载在容器外部的 uploads/ 文件夹中,以实现持久化。您可以选择使用 S3 兼容服务(存储桶)来存储这些文件。“上传”选项卡允许您配置此存储。

要使用 S3 存储,请在配置文件中设置 ELAB_AWS_ACCESS_KEY 和 ELAB_AWS_SECRET_KEY 。您可以使用 bin/console uploads:migrate 将现有的本地上传文件迁移到 S3 存储。

使用 Scaleway S3 的示例设置:

  • 存储桶名称:elabftw-example

  • S3 区域:fr-par

  • S3 端点: https://s3.fr-par.scw.cloud

  • S3 路径前缀:上传

  • 验证 TLS 证书:已启用

设置 cronjob 来更新 TLS 证书 (可选)

重要的是要考虑如何更新 TLS 证书。Let's Encrypt 证书的有效期只有 3 个月,这是一件好事,因为它可以让你更快地了解你的设置是否有效。

您可以在此处找到使用 certbot 进行续订的文档: certbot 续订证书

如果您遇到问题,请随时加入 eLabFTW 聊天室寻求帮助: gitter 聊天(矩阵室)

保持更新

保持安装最新的错误修复和新功能非常重要。

订阅新闻通讯以便在发布新版本时收到通知,或者从 repo 页面上 GitHub 的“关注”按钮中选择“仅发布”。

请参阅有关如何更新 eLabFTW 的更新说明。

系统管理员面板

服务器选项卡

设置

关于“允许基本权限设置«只有我»”的注意事项:如果您希望阻止用户使用此基本权限,请在此处选择否。

为了检查现有条目并更改基本权限为“仅限我”的所有条目并将其设置为“仅限我+管理员”,您可以执行以下 SQL 请求:

-- experiments read permissions
update experiments set canread = json_set(canread, '$.base', 20) where
json_extract(canread, '$.base') = 10;

-- experiments write permissions
update experiments set canwrite = json_set(canwrite, '$.base', 20) where
json_extract(canwrite, '$.base') = 10;

远程目录配置

如果您不是 CNRS 实验室,请忽略此内容。

这允许查询外部端点以获取可添加到 eLabFTW 本地用户数据库的用户列表。

用户选项卡

系统管理员可以像管理员管理其团队中的用户一样管理用户,但具有更多选项,例如更改密码或属性,以及管理用户的团队。

要将用户添加到多个团队,请搜索用户,然后点击右侧的三个垂直点按钮打开菜单,然后选择“为用户管理团队”。模态窗口将允许您为该用户添加团队。用户可以在一个团队中担任管理员,而在另一个团队中则不担任管理员。


“是所有者”属性允许您确定团队中哪些管理员是该团队的“所有者”。该属性没有任何实际作用,仅供参考。

监控

健康检查

要监控 nginx 服务,请使用 /healthcheck 端点,如果 nginx 正在运行,它会回复状态代码 204

要监控 php-fpm 服务,请使用 /php-ping ,如果 php-fpm 正在运行,它会回复状态代码 200

要监控 nginx、php-fpm 和 MySQL 连接,请使用 /healthcheck.php ,如果一切正常,它会回复状态代码 200 ,并在响应正文中 ok

指标

要从 php-fpm 服务收集指标,请使用 /php-status ,它会返回有关 php-fpm 进程的信息。更多详情,请参阅 PHP FPM 状态页面文档

要从 nginx 服务收集指标,请使用 /nginx-status ,它会返回有关 nginx 进程的信息。有关更多详细信息,请参阅 Nginx 状态模块文档

/php-status/nginx-status 页面受到基本身份验证的保护:

  • user: elabftw
    用户: elabftw

  • password: the value of STATUS_PASSWORD environment variable
    密码: STATUS_PASSWORD 环境变量的值

如果未设置此变量(默认),则会生成一个随机的未知密码,但不会显示,从而有效地禁用对这些页面的访问。

所有上述端点都不会产生访问日志条目。

日志记录

访问和错误日​​志

eLabFTW、nginx 或 PHP-FPM 生成的日志会被重定向到容器的 /dev/stdout/dev/stderr 。它们会通过命令 docker logs elabftw 输出。默认情况下,日志记录驱动程序为 local ,这意味着它会在主机上创建文件。

建议使用其他日志驱动程序(例如 sysloggraylogloki (由 grafana 开发))将日志发送到集中式服务。为此,请更改 Compose 文件配置,使其包含适合您基础架构的正确设置。

审计日志

除了存储在数据库中之外,还可以将审计日志配置为在常规日志中发出。对您来说,在集中式、逐出式服务中跟踪这些操作可能很重要。要启用此行为,请转到 Sysconfig 面板的“审计日志”选项卡,并启用“发送带有 PHP 错误日志的审计日志”。事件消息为 JSON 格式,其结构如下:

{
 category_value: number,
 category_name: string,
 message: string,
 requester_userid: number,
 target_userid: number
}

 例子:

{
    "category_value": 10,
    "category_name": "Login",
    "message": "User logged in",
    "requester_userid": 1,
    "target_userid": 1
}

然后,您可以配置集中登录系统来解释这些消息以构建高级查询。

暂存实例

暂存实例(有时称为“预生产”)是与生产实例一起运行的另一个 eLabFTW 实例,用于测试升级或配置更改而不会影响生产实例。

强烈建议设置一个暂存实例。

如何创建暂存实例

  1. 将生产实例的配置文件( /etc/elabftw.yml )复制到另一个文件夹( /path/to/elabftw-staging/docker-compose.yml )

  2. 更改 SITE_URL 值:例如从 elab.uni.de 更改为 elab-test.uni.de

  3. 同样,更改 SERVER_NAME 值

  4. 修改卷 ,使其指向两个容器的生产文件夹以外的其他文件夹

当然,请根据您的设置调整这些说明。尽量使两者的设置尽可能接近。如果您使用 NFS 存储和外部 MySQL 服务器,请对暂存实例执行相同的操作。

使用 docker compose up -d 启动你的临时实例。确保相应地调整 DNS、证书、负载均衡器和反向代理。

使用恢复备份说明将生产数据复制到暂存实例。建议定期执行此操作,尤其是在更新之前,这样暂存数据才能与生产数据保持一致,避免出现意外情况。如果备份尚未实现自动化,这也是一个测试备份的好机会。

在主要版本发布之前,更新暂存实例,可选择询问用户此实例上的一切是否正常,一旦一切都得到验证,您就可以升级生产实例。

温馨提示

建议从 Sysconfig 面板中的“通信”选项卡发布一般公告,以告知用户这是一个测试实例,防止他们错误地输入数据。

修复旧密码存储的弃用警告

如果您的 MySQL 日志中充满了“警告“sha256_password”已弃用并将在未来版本中移除”的消息,则您需要更新密码存储机制。出现此消息是因为您的 Compose 文件中存在行 command: --default-authentication-plugin=mysql_native_password 。这行代码以前是必需的,但现在不再需要,甚至已被弃用。

警告

首先确保您的 MySQL 数据库有一个可用的备份!

首先获取 root mysql shell:

docker exec -it mysql bash
mysql -uroot -p$MYSQL_ROOT_PASSWORD
-- List users
mysql> select host, user, plugin from mysql.user;
-- Change password and use modern mechanism
mysql> alter user 'elabftw'@'%' identified with caching_sha2_password by '<elabftw password>';
mysql> alter user 'root'@'%' identified with caching_sha2_password by '<root password>';
mysql> alter user 'root'@'localhost' identified with caching_sha2_password by '<root password>';


然后删除 docker-compose 文件中的该行并重新启动容器。

将上传内容从本地存储迁移到 S3

在某些情况下,使用 S3 存储来存储已上传的文件可能会更有优势。如果您想将现有的已上传文件( uploads/ 文件夹)移动到 S3 存储,请按照以下步骤操作:

  1. 运行 bin/console uploads:check 只是为了验证一切正常

  2. 配置容器使用 S3 存储:添加 ELAB_AWS_{ACCESS/SECRET}_KEY 环境变量

  3. 在 Sysconfig 面板中,从“UPLOADS”选项卡配置存储桶,通过在实验中上传文件进行测试

  4. 正确配置 S3 后,运行 bin/console uploads:migrate 。这会将所有本地存储的文件复制到 S3 存储桶中。

  5. 最后一步是从容器运行时配置中删除绑定挂载的 /elabftw/uploads/ 文件夹


Elabftw系统管理员指南
https://www.lfelab.cn/archives/TjIoMVlP
作者
Administrator
发布于
2025年05月16日
许可协议