Claude Codeでsystemd設定ファイルを作成する方法

Claude Codeでsystemd設定ファイルを作成する方法

Claude Codeを使うと、Linuxサーバーのsystemd設定ファイルを効率よく作成できます。Node.js、Python、Go、Dockerなど様々なアプリケーション向けのUnitファイル生成、ログ設定、自動再起動設定、セキュリティ強化までまとめて整理できます。この記事では、Claude Codeでsystemd設定ファイルを作成する具体的な方法を解説します。

systemdとは何か

systemdは、Linuxでサービスを管理する仕組みです。

主な用途は以下です。

・サーバープロセス起動
・自動起動
・再起動管理
・ログ管理
・依存関係制御
・異常終了時の復旧

systemdを使うことで、アプリケーションを安定運用しやすくなります。

例えばNode.jsアプリを直接起動するだけでは、SSH切断時に停止したり、サーバー再起動後に自動復旧できません。

systemd管理にすると、次のような運用が可能になります。

・サーバー起動時に自動起動
・異常終了時に自動再起動
・journalctlでログ確認
・systemctlで状態管理

Claude Codeでsystemdファイルを生成する基本

Claude Codeには、実行環境や要件を具体的に伝えることが重要です。

悪い例です。

systemd作って

良い例です。

Ubuntu 22.04でNode.jsアプリをsystemd管理したいです。

条件:
・Node.js 20
・/var/www/app に配置
・自動再起動
・サーバー起動時に自動起動
・ログはjournalctlで確認
・実行ユーザーはubuntu
・本番環境

このように条件を明確にすると、運用向けのsystemdファイルを生成しやすくなります。

基本的なsystemd設定ファイル

Claude Codeが生成する代表的な例です。

[Unit]
Description=Node.js Application
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/app
ExecStart=/usr/bin/node server.js

Restart=always
RestartSec=5

Environment=NODE_ENV=production

StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

保存場所です。

/etc/systemd/system/app.service

設定反映コマンドです。

sudo systemctl daemon-reload
sudo systemctl enable app.service
sudo systemctl start app.service

状態確認です。

sudo systemctl status app.service

ログ確認です。

journalctl -u app.service -f

Node.js向けsystemd設定を作る

Node.js運用では、自動再起動設定が重要です。

Claude Codeには次のように依頼できます。

Node.js APIサーバー用のsystemd設定を作成してください。

条件:
・Express
・ポート3000
・pm2は使わない
・メモリ不足時の再起動対策
・異常終了時に自動再起動
・ログ確認しやすくしたい

生成例です。

[Unit]
Description=Express API Server
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/api

ExecStart=/usr/bin/node server.js

Restart=always
RestartSec=3

Environment=NODE_ENV=production
Environment=PORT=3000

LimitNOFILE=65535

StandardOutput=journal
StandardError=journal

SyslogIdentifier=express-api

[Install]
WantedBy=multi-user.target

LimitNOFILEを設定すると、大量接続時のファイルディスクリプタ不足対策になります。

Pythonアプリ向けsystemd設定

Pythonアプリでもsystemd管理がよく使われます。

Claude Codeへの依頼例です。

Python FastAPIアプリ用のsystemd設定を作成してください。

条件:
・uvicorn利用
・venv使用
・自動再起動
・Ubuntu環境
・ログ確認可能

生成例です。

[Unit]
Description=FastAPI Application
After=network.target

[Service]
User=ubuntu
Group=ubuntu

WorkingDirectory=/var/www/fastapi

ExecStart=/var/www/fastapi/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000

Restart=always
RestartSec=5

Environment=PYTHONUNBUFFERED=1

StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

venv環境のPythonを指定するのがポイントです。

Gunicorn運用向け設定

DjangoやFlaskではGunicornを使うケースが多いです。

Claude Codeには次のように依頼します。

Django + Gunicorn用のsystemd設定を作成してください。

条件:
・Ubuntu
・nginx連携
・socket利用
・再起動対応

生成例です。

[Unit]
Description=Gunicorn daemon
After=network.target

[Service]
User=www-data
Group=www-data

WorkingDirectory=/var/www/djangoapp

ExecStart=/var/www/djangoapp/venv/bin/gunicorn \
  --workers 3 \
  --bind unix:/run/gunicorn.sock \
  config.wsgi:application

Restart=always

[Install]
WantedBy=multi-user.target

NginxとUNIX socket連携するとパフォーマンス改善につながります。

Dockerコンテナ管理をsystemd化する

Docker単体起動をsystemd管理するケースもあります。

Claude Codeへの依頼例です。

Dockerコンテナをsystemdで管理したいです。

条件:
・サーバー再起動時に自動起動
・コンテナ異常停止時に復旧
・ログ確認可能

生成例です。

[Unit]
Description=Docker App Container
After=docker.service
Requires=docker.service

[Service]
Restart=always

ExecStart=/usr/bin/docker start -a myapp
ExecStop=/usr/bin/docker stop -t 10 myapp

[Install]
WantedBy=multi-user.target

Docker Compose運用の場合はcompose restartなども組み込めます。

systemdタイマーもClaude Codeで作れる

Cronの代わりにsystemd timerを使うケースも増えています。

Claude Codeには次のように依頼できます。

毎日2時にバックアップを実行するsystemd timerを作成してください。
ログ確認できる構成にしてください。

service側です。

[Unit]
Description=Daily Backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

timer側です。

[Unit]
Description=Run backup daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

有効化です。

sudo systemctl enable backup.timer
sudo systemctl start backup.timer

確認です。

systemctl list-timers

セキュリティを考慮したsystemd設定

systemdではセキュリティ強化も可能です。

Claude Codeには次のように依頼できます。

本番環境向けにsystemd設定をセキュア化してください。
不要な権限を制限し、侵害時リスクを減らしたいです。

例です。

NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/var/www/app/storage

これにより、サービスごとの権限分離を強化できます。

systemd運用で重要な確認コマンド

Claude Codeには運用確認コマンドもまとめてもらえます。

依頼例です。

systemd運用でよく使う確認コマンドを整理してください。
障害対応向けにまとめてください。

代表例です。

状態確認です。

systemctl status app.service

ログ確認です。

journalctl -u app.service -f

再起動です。

systemctl restart app.service

自動起動確認です。

systemctl is-enabled app.service

失敗サービス確認です。

systemctl --failed

設定確認です。

systemctl cat app.service

Claude Codeでsystemdレビューを行う

既存設定のレビューにもClaude Codeは便利です。

依頼例です。

このsystemd設定をレビューしてください。

確認したい点:
・本番運用で危険な設定
・自動再起動不足
・ログ設定
・セキュリティ
・メモリ不足対策
・権限設定

特に以下の問題を見つけやすくなります。

・root実行
・Restart未設定
・WorkingDirectory漏れ
・ExecStartミス
・環境変数漏れ
・ログ未設定
・依存サービス不足

systemdトラブル調査を効率化する

systemdトラブルでは、journalctl分析が重要です。

Claude Codeには次のように依頼できます。

このjournalctlログを分析してください。
systemd起動失敗原因を特定し、確認すべきポイントを優先順位付きで整理してください。

よくある原因です。

・ファイルパス間違い
・権限不足
・実行ユーザー問題
・venvパスミス
・ポート競合
・環境変数不足
・ExecStartエラー

ログ貼り付けだけでも、かなり原因を絞り込みやすくなります。

Claude Codeに依頼するときのコツ

systemd生成では、次の情報を具体化すると精度が上がります。

・OS種類
・アプリ種類
・実行ユーザー
・配置パス
・起動コマンド
・ログ要件
・自動再起動要件
・Docker利用有無
・セキュリティ要件

特に重要なのは、実際の起動コマンドを明確にすることです。

例えば以下です。

node server.js

または、

gunicorn config.wsgi:application

実行方法が曖昧だと、systemd設定も不正確になりやすいです。

まとめ

Claude Codeを使うと、systemd設定ファイル作成、レビュー、トラブル調査、セキュリティ強化を効率化できます。

特に役立つ用途は以下です。

・Node.js運用
・Python運用
・Docker管理
・Gunicorn設定
・systemd timer作成
・ログ管理
・障害対応
・セキュリティ強化

Linuxサーバー運用では、systemdを正しく設定することで安定性が大きく向上します。

Claude Codeを活用すると、運用に必要な設定や確認手順を短時間で整理しやすくなります。