さくらVPSにRails8をKamalでデプロイする
rails8をKamalでデプロイする | FJORD BOOT CAMP(フィヨルドブートキャンプ) を参考にさくらVPSにRails8をKamalでデプロイしました。
手順どおりでほぼ問題なくデプロイできるのですが、さくらVPSは管理ユーザーがubuntuに固定(Kamalはrootを想定)されているので、それに対応するための手順が必要だった。
config/deploy.yml を編集して
ssh:
user: ubuntu
を追加するのと、サーバー側で、
# root シェルで実行
echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/ubuntu
と実行し、ubuntu ユーザーがパスワードなしで sudo を実行できるようにします。
その後
bin/kamal setup
を実行しますが、これはいったん
ERROR (SSHKit::Command::Failed): Exception while executing on host test.machique.st: docker exit status: 1
docker stdout: Nothing written
docker stderr: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://<中略> ": dial unix /var/run/docker.sock: connect: permission denied
というエラーがでて失敗します。
bin/kamal setup によって docker グループが作成されているので、
sudo usermod -aG docker ubuntu
を実行して、ubuntu を docker グループに追加する必要があります。
これによって、
# /etc/ssh/sshd_config:
PermitRootLogin prohibit-password
PubkeyAuthentication yes
と変更する必要はありませんでした。
あと、最初、IPアドレスを host 名に設定したり、テストだからと ssl なしでデプロイしようとしたところはまりまくったので、サブドメインを用意し、ssl ありでデプロイするようにしました。
IPアドレスでもアクセスできるなど、下手に知っているのがあだとなりました。令和ははじめからサブドメイン用意し、ssl は始めからオン、Rails のレールに乗るのが大切ということを思い知りました。
2025/05/15 18:00:00