0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry PiでClaude Codeを起動時に自動実行してDiscordボットとして常駐させる

0
Last updated at Posted at 2026-03-30

はじめに

Raspberry Pi を常時稼働サーバーとして使い、PC起動時に Claude Code を自動起動して Discord
チャンネルに常駐させる方法を紹介します。

ターミナルウィンドウが画面上に表示されるので、Claude の動作状況をいつでも目視で確認できます。

環境

  • Raspberry Pi 5 (aarch64)
  • Debian 13 (trixie) / Raspberry Pi OS
  • Claude Code 2.1.x
  • デスクトップ環境 (Wayland / lxterminal)

前提条件

セットアップ手順

1. tmux のインストール

(必須ではありませんが、あると便利です)

sudo apt-get install -y tmux

2. Claude 実行スクリプトの作成

Claude Code を適切な環境変数付きで起動するスクリプトです。

mkdir -p ~/.local/bin

~/.local/bin/claude-run.sh

#!/bin/bash
export HOME=/home/$USER
export PATH="$HOME/.bun/bin:$HOME/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export CLAUBBIT=1
exec claude --dangerously-skip-permissions --channels plugin:discord@claude-plugins-official

ポイント: CLAUBBIT=1 を設定することで、非対話環境で表示されるワークスペース信頼ダイアログをスキップできます。

chmod +x ~/.local/bin/claude-run.sh

3. 起動スクリプトの作成

デスクトップが準備できるまで待ってから、ターミナルウィンドウを開くスクリプトです。

~/.local/bin/claude-startup.sh

#!/bin/bash
# Claude startup script - runs at boot via systemd
# Opens a visible terminal window on the desktop
export HOME=/home/$USER
export PATH="$HOME/.bun/bin:$HOME/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export WAYLAND_DISPLAY=wayland-0
export DISPLAY=:0

# Wait for desktop to be ready
until [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ] || [ -S "/tmp/.X11-unix/X0" ]; do
    sleep 2
done
sleep 3

# Open a terminal window running Claude (--no-remote prevents fork)
exec lxterminal --no-remote --title="Claude Discord" -e ~/.local/bin/claude-run.sh
chmod +x ~/.local/bin/claude-startup.sh

解説:

  • until ループでデスクトップ環境(Wayland または X11)が起動するまで待機します
  • lxterminal --no-remote でフォークせずにプロセスが維持されます(systemd が正しくプロセスを追跡するために必要)

4. systemd ユーザーサービスの作成

~/.config/systemd/user/claude-startup.service

[Unit]
Description=Claude Startup Service
After=network-online.target graphical-session.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=%h/.local/bin/claude-startup.sh
Restart=on-failure
RestartSec=30
Environment=HOME=%h

[Install]
WantedBy=default.target

5. Linger の有効化とサービスの起動

# ログインしていなくてもユーザーサービスが起動するようにする
sudo loginctl enable-linger $USER

# デーモンをリロードしてサービスを有効化・起動
systemctl --user daemon-reload
systemctl --user enable claude-startup.service
systemctl --user start claude-startup.service

動作確認

サービスの状態を確認

systemctl --user status claude-startup.service

Active: active (running) と表示されれば成功です。

画面の確認

デスクトップに「Claude Discord」というタイトルのターミナルウィンドウが表示され、Claude Code
が動作しているのが確認できます。

よく使うコマンド

操作 コマンド
サービス停止 systemctl --user stop claude-startup.service
サービス起動 systemctl --user start claude-startup.service
サービス再起動 systemctl --user restart claude-startup.service
状態確認 systemctl --user status claude-startup.service
ログ確認 journalctl --user -u claude-startup.service -f
自動起動を無効化 systemctl --user disable claude-startup.service

トラブルシューティング

信頼ダイアログが表示される

claude-run.shexport CLAUBBIT=1
が設定されているか確認してください。この環境変数がワークスペース信頼ダイアログをスキップします。

ターミナルが表示されない

デスクトップ環境のディスプレイサーバーの種類を確認してください。

echo $XDG_SESSION_TYPE  # wayland or x11
echo $WAYLAND_DISPLAY   # wayland-0 など

Wayland の場合は WAYLAND_DISPLAY、X11 の場合は DISPLAY の値を claude-startup.sh に合わせて修正してください。

サービスがすぐに終了する

lxterminal--no-remote オプションが付いているか確認してください。これがないとプロセスがフォークして systemd
がサービス終了と判断します。

別のターミナルエミュレータを使う場合

lxterminal 以外を使う場合は、claude-startup.shexec 行を変更してください。

# GNOME Terminal の場合
exec gnome-terminal --title="Claude Discord" -- ~/.local/bin/claude-run.sh

# xterm の場合
exec xterm -title "Claude Discord" -e ~/.local/bin/claude-run.sh

おわりに

この設定により、Raspberry Pi の電源を入れるだけで Claude Code が自動的に Discord
に接続し、ターミナルウィンドウで動作状況を確認できるようになります。常時稼働の AI アシスタントとして活用できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?