Mastodonの外部メディア削除作業をsystemd-timerで自動化

Overview

Mastodonサーバ運用の際に発生する定期的な作業の一つとして、外部サーバのメディアを自分のサーバから削除するというものがあります。

今までは手作業でちまちまメンテ用のVM生やしてその上でやってたんですが、Linodeに移りCPUクレジットを気にせずメインのサーバで重いタスク流しても特に問題なさそうだなーと昨日3.2.0rc1へアプデしていて気づきまして。

タスク自体は週イチで実行したいのでせっかくだし使ったことがないsystemd-timerを使ってみよー、という話。

完成品

Arch wikiを見ながら適当に試した結果できあがったものがこれ。

mstdn-media-remove.service

[Unit]
Description=Mastodon remote media remove service

[Service]
Type=simple
Environment=COMPOSE_INTERACTIVE_NO_CLI=1
ExecStart=/usr/bin/docker-compose -f /mastodon/mstdn-asterism-xyz.manage.yml run --rm maintenance ./bin/tootctl media remove
WorkingDirectory=/mastodon/

mstdn-media-remove.timer

[Unit]
Description=Mastodon remote media remove timer

[Timer]
OnCalendar=Mon *-*-* 00:00:00 Asia/Tokyo

[Install]
WantedBy=timers.target

docker-composeを使っているのでCOMPOSE_INTERACTIVE_NO_CLI=1が無いとTTYが無いと働けないよと起こられます。

後は

  • こいつらを/etc/systemd/system/に設置
  • systemctl daemon-reload
  • systemctl enable mstdn-media-remove.timer

とかやればおk

一応書いておくとここに乗せているファイルは実環境とは実行パスなんかは別です。

参考

https://wiki.archlinux.jp/index.php/Systemd/%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC

comments powered by Disqus