docs-mastodon/content/zh-cn/admin/tootctl.md

24 KiB
Raw Blame History

title description menu
使用管理 CLI 可以从 CLI 运行的 tootctl 命令。
docs
weight parent
60 admin

Mastodon 的命令行界面是一个名为 tootctl 的可执行文件,位于 Mastodon 根目录中的 bin 目录内。每次执行它时,你必须通过指定 RAILS_ENV 环境变量来指定你打算使用的环境。除非你是在本地机器上工作的开发人员,否则你需要使用 RAILS_ENV=production。如果你确信永远不需要其他环境(用于开发、测试或暂存),可以为方便起见将其添加到 .bashrc 文件中,例如:

echo "export RAILS_ENV=production" >> ~/.bashrc

如果这样做,你就不需要每次都在行内指定它。如果未配置全局环境变量,且 Mastodon 代码被检出在 /home/mastodon/live 中,对 tootctl 的调用通常会像这样:

cd /home/mastodon/live
RAILS_ENV=production bin/tootctl help

CLI 基础命令

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/base.rb" caption="lib/mastodon/cli/base.rb" >}}


tootctl self-destruct

向其他所有已知实例广播账户删除活动,从联邦中擦除此服务器。这允许运行 Mastodon 的站点从联邦宇宙中"干净退出",因为它几乎不会在其他实例上留下缓存。该命令始终是交互式的,需要两次确认。

本地数据实际上并未被删除,因为清空数据库或删除整个 VPS 更快。如果你运行此命令后继续操作实例,则可能会导致状态不匹配,进而导致联合出现故障和问题。

{{< hint style="danger" >}} 在运行此命令之前,请确保你完全了解自己在做什么。 此操作不可逆转,并且可能需要很长时间。站点将在此命令完成后处于损坏状态。需要一个正在运行的 Sidekiq 进程,因此在队列完全清空之前不要关闭站点。 {{< /hint >}}

--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.8.0 - 该命令被添加


tootctl --version

显示当前运行的 Mastodon 实例的版本。

版本历史:
2.7.0 - 该命令被添加


账户 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/accounts.rb" caption="lib/mastodon/cli/accounts.rb" >}}


tootctl accounts rotate

生成并广播新的 RSA 密钥,作为安全维护的一部分。

USERNAME
账户的本站用户名。
--all
可以代替 USERNAME 提供,为所有本站账户轮换密钥。

版本历史:
2.5.0 - 该命令被添加


tootctl accounts create

使用给定的 USERNAME 和提供的 --email 创建新用户账户。

USERNAME
新账户的本站用户名。{{}}
--email EMAIL
用户的电子邮件地址。{{}}
--confirmed
跳过发送确认电子邮件的流程并立即激活账户。
--role ROLE
通过提供对应[用户组]({{< relref "entities/Role" >}})的 name 来定义新账户的自定义用户组。默认用户组包括 OwnerAdminModerator(区分大小写)。
--reattach
在账户被删除后重新使用旧的 USERNAME。
--force
强制删除任何具有此 USERNAME 的现有账户,并重新创建同名的新账户。
--skip-sign-in-token
强制确保用户永远不会被要求提供电子邮件发送的安全代码。

版本历史:
2.6.0 - 该命令被添加
4.0.0 - --role 不再接受硬编码的 usermoderatoradmin 用户组。请指定自定义用户组的名称(区分大小写)。


tootctl accounts modify

修改用户账户的用户组、邮箱、活动状态、批准状态或 2FA 要求。

USERNAME
账户的本站用户名。{{}}
--role ROLE
通过提供对应[用户组]({{< relref "entities/Role" >}})的 name 来定义现有账户的自定义用户组。默认用户组包括 OwnerAdminModerator(区分大小写)。
--remove-role
从用户中移除当前用户组。
--email EMAIL
将用户的邮箱地址更新为 EMAIL
--confirm
--email 一起使用时,跳过确认邮件。
--disable
锁定 USERNAME 使其无法访问其账户。
--enable
如果 USERNAME 的账户当前被禁用,则解锁该账户。
--approve
若你的实例处于/曾处于批准模式,则批准 USERNAME 的账户。
--disable-2fa
移除其它的身份认证因素并允许使用密码登录。
--reset-password
重置给定账户的密码。
--skip-sign-in-token
强制确保用户永远不会被要求提供发送到邮箱中的安全代码。

版本历史:
2.6.0 - 该命令被添加
3.1.2 - 添加 --reset-password
4.0.0 - --role 不再接受硬编码的 usermoderatoradmin 用户组。请指定自定义用户组的名称(区分大小写)。使用 --remove-role 移除当前用户组。


tootctl accounts delete

删除具有给定 USERNAME 的用户账户。

USERNAME
要删除的账户的本站用户名。{{}}

版本历史:
2.6.0 - 该命令被添加


tootctl accounts backup

为具有给定 USERNAME 的用户账户请求备份。备份将在 Sidekiq 中异步创建,完成后,用户将收到一封包含备份链接的电子邮件。

USERNAME
要备份的账户的本站用户名。{{}}

版本历史:
2.6.0 - 该命令被添加


tootctl accounts cull

移除不再存在的外站账户。查询数据库中的每个外站账户,以确定它在原始服务器上是否仍然存在,如果不存在,则从数据库中移除它。在过去一周内有确认活动的账户不包括在检查中,以防服务器只是暂时下线。

DOMAIN[...]
可选择传递特定域名进行清理
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.6.0 - 该命令被添加
2.8.0 - 添加 --dry-run
3.5.0 - 添加传递特定域名的能力


tootctl accounts refresh

重新获取一个或多个账户的外站用户数据和文件。

USERNAME
外站账户的 username@domain。
--all
可以代替 USERNAME,刷新所有外站账户。
--domain DOMAIN
可以代替 USERNAME,仅对来自此 DOMAIN 的外站账户进行操作。
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.6.0 - 该命令被添加


tootctl accounts merge

将两个外站账户合并为一个。这主要用于修复由其他服务器更改其域名导致的重复。默认情况下,这仅在公钥相同时有效,但可以覆盖此设置。

FROM
要移除的外站账户的 username@domain。{{}}
TO
要保留的外站账户的 username@domain。{{}}
--force
覆盖公钥检查。

版本历史:
3.3.0 - 该命令被添加


tootctl accounts follow

强制所有本站账户关注具有给定用户名的本站账户。

USERNAME
本站用户名。{{}}
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。

版本历史:
2.7.0 - 该命令被添加
3.0.0 - 使用 USERNAME 代替 ACCT


tootctl accounts unfollow

强制所有本站账户取消关注指定的账户。

ACCT
username@domain 地址。{{}}
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。

版本历史:
2.7.0 - 该命令被添加


tootctl accounts reset-relationships

重置本站账户的所有关注和/或关注者关系。

USERNAME
本站用户名。
--follows
强制 USERNAME 取消关注所有人,然后重新关注他们。
--followers
移除 USERNAME 的所有关注者。

版本历史:
2.8.0 - 该命令被添加


tootctl accounts approve

当实例处于批准模式时,批准新的注册申请。

USERNAME
本站用户名。
--number N
批准最早的 N 个待处理注册申请。
--all
批准所有待处理的注册申请。

版本历史:
2.8.0 - 该命令被添加


tootctl accounts prune

清理从未与本站用户互动过的外站账户。

--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.8.0 - 该命令被添加


缓存 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/cache.rb" caption="lib/mastodon/cli/cache.rb" >}}


tootctl cache clear

清除缓存存储。

版本历史:
2.8.1 - 该命令被添加


tootctl cache recount

从头开始计算引用记录,更新 TYPE 的硬缓存计数器。这与数据库的大小有关,可能需要很长时间才能完成。将刷新账户的关注者、关注和嘟文计数,以及嘟文的回复、转发和收藏计数。

TYPE
accountsstatuses。{{}}
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。

版本历史:
3.0.0 - 该命令被添加


实例 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/domains.rb" caption="lib/mastodon/cli/domains.rb" >}}


tootctl domains purge

从给定 DOMAIN 中移除所有账户,且不留下任何记录。与封禁不同,如果 DOMAIN 在互联网中仍然在线,则意味着如果再次解析,账户可能仍会返回。

DOMAIN[...]
要清除的域名,以空格分隔。
--by-uri
在 actor URI 中匹配域名,而不是在 Webfinger 地址中匹配。
--limited-federation-mode
可以代替 DOMAIN 提供。不是从单个域名清除,而是从数据库中移除所有不在许可列表中的域名的账户。在启用有限联合模式并定义许可列表后使用此选项。
--concurrency N
用于此任务的作业线程数量。默认为 5。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.6.0 - 该命令被添加
2.8.0 - 添加 --whitelist-mode
2.9.0 - 同时移除自定义表情
3.0.0 - 可以接受多个域名
3.2.0 - 将 --whitelist-mode 重命名为 --limited-federation-mode
3.5.0 - 添加 --by-uri


tootctl domains crawl

使用 Mastodon REST API 端点来爬取已知的联邦宇宙,访问该端点获取所有已知的实例,并进一步从这些实例收集统计数据(如果对应实例支持该 API 端点)。当没有给出 START 时,该命令使用服务器自己的已知实例数据库作为初始列表进行爬取。返回总实例数、总注册用户数、过去一周的总活跃用户数以及过去一周加入的总用户数。

START
可选择从不同的域名开始。
--exclude-suspended
不要在输出中包含你已屏蔽的实例。这还包括被封禁实例域名的任何子域名。
--concurrency N
用于此任务的作业线程数量。默认为 N=50。
--format FORMAT
控制结果的返回方式。summary 将打印摘要。domains 将返回所有发现的对等节点的换行符分隔列表。json 将转储聚合的原始数据。默认为 summary

版本历史:
2.7.0 - 该命令被添加
3.0.0 - 添加 --exclude-suspended


邮件域名屏蔽 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/email_domain_blocks.rb" caption="lib/mastodon/cli/email_domain_blocks.rb" >}}


tootctl email-domain-blocks list

列出所有当前被屏蔽的邮件域名。

版本历史:
3.2.0 - 该命令被添加


tootctl email-domain-blocks add

向邮件域名屏蔽列表添加条目。

DOMAIN[...]
要屏蔽的邮件域名,以空格分隔。{{}}
--with-dns-records
如果提供,还将查找 A、AAAA 和 MX 记录并阻止它们。

版本历史:
3.2.0 - 该命令被添加


tootctl email-domain-blocks remove

从邮件域名屏蔽列表中移除条目。

DOMAIN[...]
要取消屏蔽的邮件域名,以空格分隔。{{}}

版本历史:
3.2.0 - 该命令被添加


表情 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/emoji.rb" caption="lib/mastodon/cli/emoji.rb" >}}


tootctl emoji export

将自定义表情导出到 PATH 下的 export.tar.gz

PATH
创建包含图片的 .tar.gz 归档文件的路径。{{}}
--overwrite
覆盖 PATH 处的任何现有归档文件。
--category CATEGORY
仅导出指定的 CATEGORY。如果未提供,将导出所有表情。

版本历史:
3.1.4 - 该命令被添加


tootctl emoji import

从给定路径的 .tar.gz 归档文件导入自定义表情。归档文件应包含不大于 50KB 的 PNG 或 GIF 文件,短代码将被设置为不包含扩展名的文件名,可以提供前缀和/或后缀。

PATH
创建包含图片的 .tar.gz 归档文件的路径。{{}}
--prefix PREFIX
在生成的短代码的开头添加 PREFIX。
--suffix SUFFIX
在生成的短代码的末尾添加 SUFFIX。
--overwrite
不跳过现有表情,用短代码一致的已发现表情替换原有表情。
--category CATEGORY
在选择器中将本次处理的表情分组在 CATEGORY 下。
--unlisted
处理的表情不会显示在表情选择器中,只能通过直接使用短代码使用。

版本历史:
2.5.0 - 该命令被添加


tootctl emoji purge

移除所有自定义表情。

--remote-only
如果提供,仅移除外站自定义表情。

版本历史:
2.8.0 - 该命令被添加
3.1.0 - 该命令被添加 --remote-only


信息流 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/feeds.rb" caption="lib/mastodon/cli/feeds.rb" >}}


tootctl feeds build

为一个或所有用户构建主页和列表信息流。信息流将从数据库构建并在 Redis 的内存缓存中存储。Mastodon 自动管理活跃用户的主页信息流。

USERNAME
要重新生成信息流的本站用户名。
--all
可以代替 USERNAME 提供,刷新所有外站账户。
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.6.0 - 该命令被添加


tootctl feeds clear

从 Redis 中移除所有主页和列表信息流。

版本历史:
2.6.0 - 该命令被添加


维护 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/maintenance.rb" caption="lib/mastodon/cli/maintenance.rb" >}}


tootctl maintenance fix-duplicates

修复可能由于更改排序规则导致的数据库索引损坏。删除或合并重复的账户、嘟文、表情等。必须停止 Mastodon 才能运行此任务,该任务将花费很长时间并可能具有破坏性。如果你的数据库索引由于诸如 https://wiki.postgresql.org/wiki/Locale_data_changes 等问题而损坏,这将非常有用。

版本历史:
3.3.0 - 该命令被添加


媒体 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/media.rb" caption="lib/mastodon/cli/media.rb" >}}


tootctl media remove

移除来自其他服务器的媒体附件、头像或账户页横幅背景的本站缓存副本。默认情况下,只移除媒体附件。

--days N
指定多旧的媒体附件才能被移除。对于头像和横幅背景,时间间隔针对对用户的最后一次 webfinger 请求和更新时间计算,默认为 7。
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--prune-profiles
不移除媒体附件,而是移除来自其他服务器的头像和横幅背景的本站缓存副本。不能与 --remove-headers 结合使用。
--remove-headers
不移除媒体附件,而是移除来自其他服务器的横幅背景的本站缓存副本。不能与 --prune-profiles 结合使用。
--include-follows
覆盖 --prune-profiles--remove-headers 的默认行为,移除所有外站实例的头像(和横幅背景)的本站缓存副本,无论关注状态如何(默认情况下,只有本站没有被关注或没有关注任何人的账户的头像和横幅背景会被移除)。只能与 --prune-profiles--remove-headers 一起使用。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
2.5.0 - 该命令被添加
2.6.2 - 显示释放的磁盘空间
4.1.0 - 添加 --prune-profiles、--remove-headers 和 --include-follows。


tootctl media remove-orphans

扫描不属于现有媒体附件的文件,并移除它们。请注意,某些存储提供商对列出对象所需的 API 请求收费。此外,此操作需要遍历每个文件,因此速度会很慢。

--start-after
循环将开始的 Paperclip 附件键。如果命令在之前被中断,请使用此选项。
--dry-run
仅打印预期结果,不执行任何操作。
--prefix
仅遍历系统中特定前缀的文件。
--fix-permissions
根据环境变量将 S3 ACL 设置为默认值。

版本历史:
3.1.0 - 该命令被添加
3.1.3 - 添加 --prefix
3.3.0 - 添加 --fix-permissions


tootctl media refresh

从其他实例重新获取外站媒体附件。你必须使用 --status--account--domain--days 指定媒体附件的来源。如果附件已存在于数据库中,除非你使用 --force,否则不会被覆盖。

--account ACCT
username@domain 格式的用户名字符串
--domain DOMAIN
FQDN 格式的字符串
--status ID
数据库中嘟文的本站数字 ID。
--days N
限制此任务检查的天数范围。
--concurrency N
用于此任务的作业线程数量。默认为 5。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。
--force
强制重新下载外站资源并覆盖本站附件。

版本历史:
3.0.0 - 该命令被添加
3.0.1 - 添加 --force 并默认跳过已下载的附件
4.0.0 - 添加 --days


tootctl media usage

计算 Mastodon 消耗的磁盘空间。

版本历史: 3.0.1 - 该命令被添加


tootctl media lookup

提示输入媒体 URL然后查找显示该媒体的状态。

版本历史:
3.1.0 - 该命令被添加


预览卡片 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/preview_cards.rb" caption="lib/mastodon/cli/preview_cards.rb" >}}


tootctl preview_cards remove

移除预览卡片的本地缩略图。

--days N
指定多旧的缩略图才会被移除。默认为 180。注意不建议删除最近 14 天内的预览卡片,因为除非链接在最后一次之后的 2 周内重新发布,否则不会重新获取预览卡片。)
--concurrency N
用于此任务的作业线程数量。默认为 N=5。
--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。
--link
只删除链接类型的预览卡片;保留视频和照片卡片不变。

版本历史:
3.0.0 - 该命令被添加


{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/search.rb" caption="lib/mastodon/cli/search.rb" >}}


tootctl search deploy

创建或更新 Elasticsearch 索引并填充它。如果 Elasticsearch 为空,此命令将创建必要的索引,然后将数据库中的数据导入到这些索引中。如果自上次运行以来底层架构已更改,此命令也会升级索引。

--batch-size
默认为 100。较高的批处理大小可以使 Elasticsearch 更快地处理记录,减轻 PostgreSQL 数据库的负载,但在索引期间可能会增加 Elasticsearch 节点的内存压力。
--only INDEX
指定索引名称 [instancesaccountstagsstatusespublic_statuses] 以仅创建或更新该索引。
--concurrency N
在多个线程上并行执行命令。默认为 5。
--import
将数据从数据库导入到索引
--clean
从索引中删除过时的文档
--reset-chewy
重置 Chewy 的内部索引

版本历史: 2.8.0 - 该命令被添加
3.0.0 - 添加 --processes 用于并行处理
3.3.0 - 更改可选参数
3.5.0 - 添加 --batch-size
3.5.3 - 将 --batch-size 默认值从 1000 更改为 100--concurrency 从 2 更改为 5添加 --import--clean
4.2.0 - 为 --only 添加 instancespublic_statuses 选项,添加 --reset-chewy


设置 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/settings.rb" caption="lib/mastodon/cli/settings.rb" >}}


tootctl settings registrations open

开放注册。

版本历史:
2.6.0 - 该命令被添加


tootctl settings registrations close

关闭注册。

版本历史:
2.6.0 - 该命令被添加


tootctl settings registrations approved

将注册设为需要批准。

版本历史:
3.5.2 - 该命令被添加

--require_reason
如果为真,用户注册时必须输入原因。

嘟文 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/statuses.rb" caption="lib/mastodon/cli/statuses.rb" >}}


tootctl statuses remove

从数据库中删除未引用的嘟文,例如来自中继的、不被任何本站账户关注、且未被回复或以其他方式互动的嘟文。

这是一个计算密集的过程,它在开始前创建额外的数据库索引,并在之后删除它们。

--days N
指定多旧的嘟文才会被删除。默认为 90。
--skip-media-remove
跳过删除媒体,以防 S3 出错。默认为 false。

版本历史:
2.8.0 - 该命令被添加
3.1.3 - 该命令被添加 --skip-media-remove
3.5.0 - 现在删除孤立记录并执行额外的清理任务


升级 CLI

{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/lib/mastodon/cli/upgrade.rb" caption="lib/mastodon/cli/upgrade.rb" >}}


tootctl upgrade storage-schema

升级存储架构,将所有非本站媒体资源存储在顶级缓存目录中。警告:这是可选的,仅适用于 v3.1.4 之前的部署。由于可能移动数 TB 的数据,此命令可能会导致巨大的对象存储成本。

--verbose
在任务处理过程中输出额外信息。
--dry-run
仅打印预期结果,不执行任何操作。

版本历史:
3.1.4 - 该命令被添加

{{< translation-status-zh-cn raw_title="Using the admin CLI" raw_link="/admin/tootctl/" last_translation_time="2025-04-21" raw_commit="6addd5cf525adec1859f48c52dafcfe1f96e558a">}}