更新履歴
- : 公開
- : ssh_config に IdentitiesOnly yes を追加
はじめに
これまでこの blog は GitHub Pages でホストしていたのだが、先日 VPS に移行した。 そのときにおこなったサーバのセットアップ作業を書き残しておく。 99 % 自分用の備忘録。別のベンダに移したりしたくなったら見に来る。
未来の自分へ: 特に自動化してないので、せいぜい苦しんでくれ。
VPS
さくらの VPS の 2 GB プラン。 そこまで真面目に選定していないので、困ったら移動するかも。
事前準備
サーバのホスト名を決める
モチベーションが上がるという効能がある。今回は藤原定家から取って teika
にした。 たいていいつも源氏物語の帖か小倉百人一首の歌人から選んでいる。
SSH の鍵生成
ローカルマシンで鍵を生成する。
$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/teika.key
$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github2teika.key
teika.key
はローカルからサーバへの接続用、github2teika.key
は、 GitHub Actions からサーバへのデプロイ用。
SSH の設定
.ssh/config
に設定しておく。
Host teika
HostName **********
User **********
Port **********
IdentityFile ~/.ssh/teika.key
IdentitiesOnly yes
基本のセットアップ
SSH 接続
VPS 契約時に設定した管理者ユーザとパスワードを使ってログインする。
ユーザを作成する
管理者ユーザで作業すると危ないので、メインで使うユーザを作成する。 sudo
グループに追加して sudo
できるようにし、su
で切り替え。
$ sudo adduser **********
$ sudo adduser ********** sudo
$ su **********
$ cd
ホスト名を変える
$ sudo hostname teika
公開鍵を置く
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ vi ~/.ssh/authorized_keys
authorized_keys
には、ローカルで生成した ~/.ssh/teika.key.pub
と ~/.ssh/github2teika.key.pub
の内容をコピーする。
SSH の設定
SSH の設定を変更し、少しでも安全にしておく。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
$ sudo vi /etc/ssh/sshd_config
-
Port
を変更 -
PermitRootLogin
をno
に -
PasswordAuthentication
をno
に
そして設定を反映。
$ sudo systemctl restart sshd
$ sudo systemctl status sshd
SSH で接続確認
今の SSH セッションは閉じずに、ターミナルを別途開いて疎通確認する。 セッションを閉じてしまうと、SSH の設定に不備があった場合に締め出しをくらう。
$ ssh teika
ポートの遮断
デフォルトの 22 番を閉じ、設定したポートだけ空ける。
$ sudo ufw deny ssh
$ sudo ufw allow *******
$ sudo ufw enable
$ sudo ufw reload
$ sudo ufw status
ここでもう一度 SSH の接続確認を挟む。
GitHub 用の SSH 鍵
GitHub に置いてある private リポジトリをサーバから clone したいので、SSH 鍵を生成して置いておく。
$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github.key
$ cat ~/.ssh/github.key.pub
GitHub の設定画面 から、この公開鍵を追加する。
$ vi ~/.ssh/config
設定はこう。
Host github.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/github.key
IdentitiesOnly yes
最後に接続できるか確認しておく。
$ ssh -T github.com
パッケージの更新
$ sudo apt update
$ sudo apt upgrade
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
サイトホスティング用のセットアップ
DNS に IP アドレスを登録する
このサーバは固定の IP アドレスがあるので、A
レコードに直接入れるだけで済んだ。
使うソフトウェアのインストール
$ sudo apt install docker docker-compose git make
メインユーザが Docker を使えるように
$ sudo adduser ********** docker
HTTP/HTTPS を通す
80 番と 443 番を空ける。
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload
$ sudo ufw status
リポジトリのクローン
$ cd
$ git clone git@github.com:nsfisis/nsfisis.dev.git
$ cd nsfisis.dev
$ git submodule update --init
certbot で証明書取得
$ docker-compose up -d acme-challenge
$ make setup
サーバを稼動させる
$ make serve
感想
(業務でなく) 個人だと数年ぶりのサーバセットアップで、これだけでも割と時間を食ってしまった。 とはいえ式年遷宮は楽しいので、これからも定期的にやっていきたい。 コンテナデプロイにしたい気持ちもあるのだが、色々実験したい関係上、本物のサーバも欲しくはある。 次の式年遷宮では、手順の一部だけでも自動化したいところ。