Skip to content

Instantly share code, notes, and snippets.

@noellabo
Created September 16, 2021 07:05
Show Gist options
  • Save noellabo/0a44147efde62f9909e666242a4de01e to your computer and use it in GitHub Desktop.
Save noellabo/0a44147efde62f9909e666242a4de01e to your computer and use it in GitHub Desktop.

さかさめさんにsystemdによるサービスの実行をオススメしたのは、Mastodonを含め、多くのサーバプロセスがsystemdを使用していて、その利用経験が今後の役に立つという観点からです。少々難しいところがあるかとも思いますが、ぜひ覚えておきましょう。

実行するユーザー

systemdなどでサービスとして実行する場合、普段使っているユーザーとは別の専用のユーザーを作成し、その権限の中で実行します。 (例:ユーザー bot を作成する)

このユーザーは、暴走したり、脆弱性をつかれて乗っ取られたりしても、周囲に悪い影響を与えないように、余計なアクセス権限を持たせないようにします。また逆に、このユーザーにだけアクセス・実行を許可したりします。

Mastodonでは、インストール手順の中で、mastodonユーザーを作成します。

adduser --disabled-login mastodon

直接ログインできないように指定してますね。(パスワード未設定にすることで実現しているので、passwordコマンドでパスワードを設定するとログインできようになる)

このユーザーを使う時は、suコマンドやsudoコマンドでユーザーを切り替えます。

su - mastodon
sudo -iu mastodon

sudoの利用をおすすめします。

systemdのunitでうまくいかなかったら

もちろん、journaldでログをみるのが基本です。

その前に……。

[Service] で User=bot にしたとして、botユーザーでExecStart=に指定したコマンドが実行できなければダメです。 その前に、WorkingDirectory=に指定したディレクトリに移動できる必要があります。

sudo -iu bot
cd /home/bot/bot01_sonya
/usr/bin/bash run

これが実行できなければ、systemd以前の問題ということになります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment