diff options
Diffstat (limited to 'vhosts/blog/public/posts/2022-10-28')
| -rw-r--r-- | vhosts/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html | 132 |
1 files changed, 44 insertions, 88 deletions
diff --git a/vhosts/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html b/vhosts/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html index cce709ac..ceba0dcd 100644 --- a/vhosts/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html +++ b/vhosts/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html @@ -61,54 +61,46 @@ </ol> </section> <section id="section--intro"> - <h2><a href="#section--intro">はじめに</a></h2> + <h2><a href="#section--intro">はじめに</a></h2> <p> - これまでこの blog は GitHub Pages でホストしていたのだが、先日 VPS に移行した。そのときにおこなったサーバのセットアップ作業を書き残しておく。99 % 自分用の備忘録。別のベンダに移したりしたくなったら見に来る。 + これまでこの blog は GitHub Pages でホストしていたのだが、先日 VPS に移行した。 そのときにおこなったサーバのセットアップ作業を書き残しておく。 99 % 自分用の備忘録。別のベンダに移したりしたくなったら見に来る。 </p> - <p> - 未来の自分へ: 特に自動化してないので、せいぜい苦しんでくれ。 + 未来の自分へ: 特に自動化してないので、せいぜい苦しんでくれ。 </p> </section> - <section id="section--vps"> - <h2><a href="#section--vps">VPS</a></h2> + <h2><a href="#section--vps">VPS</a></h2> <p> - <a href="https://vps.sakura.ad.jp/" rel="noreferrer" target="_blank">さくらの VPS</a> の 2 GB プラン。そこまで真面目に選定していないので、困ったら移動するかも。 + <a href="https://vps.sakura.ad.jp/" rel="noreferrer" target="_blank">さくらの VPS</a> の 2 GB プラン。 そこまで真面目に選定していないので、困ったら移動するかも。 </p> </section> - <section id="section--preparation"> - <h2><a href="#section--preparation">事前準備</a></h2> + <h2><a href="#section--preparation">事前準備</a></h2> <section id="section--preparation--hostname"> - <h3><a href="#section--preparation--hostname">サーバのホスト名を決める</a></h3> + <h3><a href="#section--preparation--hostname">サーバのホスト名を決める</a></h3> <p> - モチベーションが上がるという効能がある。今回は藤原定家から取って <code>teika</code> にした。たいていいつも源氏物語の帖か小倉百人一首の歌人から選んでいる。 + モチベーションが上がるという効能がある。今回は藤原定家から取って <code>teika</code> にした。 たいていいつも源氏物語の帖か小倉百人一首の歌人から選んでいる。 </p> </section> - <section id="section--preparation--ssh-key"> - <h3><a href="#section--preparation--ssh-key">SSH の鍵生成</a></h3> + <h3><a href="#section--preparation--ssh-key">SSH の鍵生成</a></h3> <p> - ローカルマシンで鍵を生成する。 + ローカルマシンで鍵を生成する。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/teika.key</span></span> <span class="line"><span>$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github2teika.key</span></span></code></pre> </div> - <p> - <code>teika.key</code> はローカルからサーバへの接続用、<code>github2teika.key</code> は、GitHub Actions からサーバへのデプロイ用。 + <code>teika.key</code> はローカルからサーバへの接続用、<code>github2teika.key</code> は、 GitHub Actions からサーバへのデプロイ用。 </p> </section> - <section id="section--preparation--ssh-config"> - <h3><a href="#section--preparation--ssh-config">SSH の設定</a></h3> + <h3><a href="#section--preparation--ssh-config">SSH の設定</a></h3> <p> <code>.ssh/config</code> に設定しておく。 </p> - <div class="codeblock" language="ssh_config"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>Host teika</span></span> <span class="line"><span> HostName **********</span></span> @@ -119,22 +111,19 @@ </div> </section> </section> - <section id="section--basic-setup"> - <h2><a href="#section--basic-setup">基本のセットアップ</a></h2> + <h2><a href="#section--basic-setup">基本のセットアップ</a></h2> <section id="section--basic-setup--login"> - <h3><a href="#section--basic-setup--login">SSH 接続</a></h3> + <h3><a href="#section--basic-setup--login">SSH 接続</a></h3> <p> - VPS 契約時に設定した管理者ユーザとパスワードを使ってログインする。 + VPS 契約時に設定した管理者ユーザとパスワードを使ってログインする。 </p> </section> - <section id="section--basic-setup--user"> - <h3><a href="#section--basic-setup--user">ユーザを作成する</a></h3> + <h3><a href="#section--basic-setup--user">ユーザを作成する</a></h3> <p> - 管理者ユーザで作業すると危ないので、メインで使うユーザを作成する。<code>sudo</code> グループに追加して <code>sudo</code> できるようにし、<code>su</code> で切り替え。 + 管理者ユーザで作業すると危ないので、メインで使うユーザを作成する。 <code>sudo</code> グループに追加して <code>sudo</code> できるようにし、<code>su</code> で切り替え。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo adduser **********</span></span> <span class="line"><span>$ sudo adduser ********** sudo</span></span> @@ -142,79 +131,65 @@ <span class="line"><span>$ cd</span></span></code></pre> </div> </section> - <section id="section--basic-setup--hostname"> - <h3><a href="#section--basic-setup--hostname">ホスト名を変える</a></h3> + <h3><a href="#section--basic-setup--hostname">ホスト名を変える</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo hostname teika</span></span></code></pre> </div> </section> - <section id="section--basic-setup--public-key"> - <h3><a href="#section--basic-setup--public-key">公開鍵を置く</a></h3> + <h3><a href="#section--basic-setup--public-key">公開鍵を置く</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ mkdir ~/.ssh</span></span> <span class="line"><span>$ chmod 700 ~/.ssh</span></span> <span class="line"><span>$ vi ~/.ssh/authorized_keys</span></span></code></pre> </div> - <p> <code>authorized_keys</code> には、ローカルで生成した <code>~/.ssh/teika.key.pub</code> と <code>~/.ssh/github2teika.key.pub</code> の内容をコピーする。 </p> </section> - <section id="section--basic-setup--ssh-config"> - <h3><a href="#section--basic-setup--ssh-config">SSH の設定</a></h3> + <h3><a href="#section--basic-setup--ssh-config">SSH の設定</a></h3> <p> - SSH の設定を変更し、少しでも安全にしておく。 + SSH の設定を変更し、少しでも安全にしておく。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak</span></span> <span class="line"><span>$ sudo vi /etc/ssh/sshd_config</span></span></code></pre> </div> - <ul> <li> <code>Port</code> を変更 </li> - <li> <code>PermitRootLogin</code> を <code>no</code> に </li> - <li> <code>PasswordAuthentication</code> を <code>no</code> に </li> </ul> - <p> - そして設定を反映。 + そして設定を反映。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo systemctl restart sshd</span></span> <span class="line"><span>$ sudo systemctl status sshd</span></span></code></pre> </div> </section> - <section id="section--basic-setup--ssh-connect"> - <h3><a href="#section--basic-setup--ssh-connect">SSH で接続確認</a></h3> + <h3><a href="#section--basic-setup--ssh-connect">SSH で接続確認</a></h3> <p> - 今の SSH セッションは閉じずに、ターミナルを別途開いて疎通確認する。セッションを閉じてしまうと、SSH の設定に不備があった場合に締め出しをくらう。 + 今の SSH セッションは閉じずに、ターミナルを別途開いて疎通確認する。 セッションを閉じてしまうと、SSH の設定に不備があった場合に締め出しをくらう。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ ssh teika</span></span></code></pre> </div> </section> - <section id="section--basic-setup--close-ports"> - <h3><a href="#section--basic-setup--close-ports">ポートの遮断</a></h3> + <h3><a href="#section--basic-setup--close-ports">ポートの遮断</a></h3> <p> - デフォルトの 22 番を閉じ、設定したポートだけ空ける。 + デフォルトの 22 番を閉じ、設定したポートだけ空ける。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo ufw deny ssh</span></span> <span class="line"><span>$ sudo ufw allow *******</span></span> @@ -222,35 +197,28 @@ <span class="line"><span>$ sudo ufw reload</span></span> <span class="line"><span>$ sudo ufw status</span></span></code></pre> </div> - <p> - ここでもう一度 SSH の接続確認を挟む。 + ここでもう一度 SSH の接続確認を挟む。 </p> </section> - <section id="section--basic-setup--ssh-key-for-github"> - <h3><a href="#section--basic-setup--ssh-key-for-github">GitHub 用の SSH 鍵</a></h3> + <h3><a href="#section--basic-setup--ssh-key-for-github">GitHub 用の SSH 鍵</a></h3> <p> - GitHub に置いてある private リポジトリをサーバから clone したいので、SSH 鍵を生成して置いておく。 + GitHub に置いてある private リポジトリをサーバから clone したいので、SSH 鍵を生成して置いておく。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github.key</span></span> <span class="line"><span>$ cat ~/.ssh/github.key.pub</span></span></code></pre> </div> - <p> <a href="https://github.com/settings/ssh" rel="noreferrer" target="_blank">GitHub の設定画面</a> から、この公開鍵を追加する。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ vi ~/.ssh/config</span></span></code></pre> </div> - <p> - 設定はこう。 + 設定はこう。 </p> - <div class="codeblock" language="ssh_config"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>Host github.com</span></span> <span class="line"><span> HostName github.com</span></span> @@ -259,18 +227,15 @@ <span class="line"><span> IdentityFile ~/.ssh/github.key</span></span> <span class="line"><span> IdentitiesOnly yes</span></span></code></pre> </div> - <p> - 最後に接続できるか確認しておく。 + 最後に接続できるか確認しておく。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ ssh -T github.com</span></span></code></pre> </div> </section> - <section id="section--basic-setup--upgrade-packages"> - <h3><a href="#section--basic-setup--upgrade-packages">パッケージの更新</a></h3> + <h3><a href="#section--basic-setup--upgrade-packages">パッケージの更新</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo apt update</span></span> <span class="line"><span>$ sudo apt upgrade</span></span> @@ -280,36 +245,31 @@ </div> </section> </section> - <section id="section--site-hosting-setup"> - <h2><a href="#section--site-hosting-setup">サイトホスティング用のセットアップ</a></h2> + <h2><a href="#section--site-hosting-setup">サイトホスティング用のセットアップ</a></h2> <section id="section--site-hosting-setup--dns"> - <h3><a href="#section--site-hosting-setup--dns">DNS に IP アドレスを登録する</a></h3> + <h3><a href="#section--site-hosting-setup--dns">DNS に IP アドレスを登録する</a></h3> <p> - このサーバは固定の IP アドレスがあるので、<code>A</code> レコードに直接入れるだけで済んだ。 + このサーバは固定の IP アドレスがあるので、<code>A</code> レコードに直接入れるだけで済んだ。 </p> </section> - <section id="section--site-hosting-setup--install-softwares"> - <h3><a href="#section--site-hosting-setup--install-softwares">使うソフトウェアのインストール</a></h3> + <h3><a href="#section--site-hosting-setup--install-softwares">使うソフトウェアのインストール</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo apt install docker docker-compose git make</span></span></code></pre> </div> </section> - <section id="section--site-hosting-setup--docker"> - <h3><a href="#section--site-hosting-setup--docker">メインユーザが Docker を使えるように</a></h3> + <h3><a href="#section--site-hosting-setup--docker">メインユーザが Docker を使えるように</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo adduser ********** docker</span></span></code></pre> </div> </section> - <section id="section--site-hosting-setup--open-http-ports"> - <h3><a href="#section--site-hosting-setup--open-http-ports">HTTP/HTTPS を通す</a></h3> + <h3><a href="#section--site-hosting-setup--open-http-ports">HTTP/HTTPS を通す</a></h3> <p> - 80 番と 443 番を空ける。 + 80 番と 443 番を空ける。 </p> - <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ sudo ufw allow 80/tcp</span></span> <span class="line"><span>$ sudo ufw allow 443/tcp</span></span> @@ -317,9 +277,8 @@ <span class="line"><span>$ sudo ufw status</span></span></code></pre> </div> </section> - <section id="section--site-hosting-setup--clone-repositories"> - <h3><a href="#section--site-hosting-setup--clone-repositories">リポジトリのクローン</a></h3> + <h3><a href="#section--site-hosting-setup--clone-repositories">リポジトリのクローン</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ cd</span></span> <span class="line"><span>$ git clone git@github.com:nsfisis/nsfisis.dev.git</span></span> @@ -327,27 +286,24 @@ <span class="line"><span>$ git submodule update --init</span></span></code></pre> </div> </section> - <section id="section--site-hosting-setup--certbot"> - <h3><a href="#section--site-hosting-setup--certbot">certbot で証明書取得</a></h3> + <h3><a href="#section--site-hosting-setup--certbot">certbot で証明書取得</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ docker-compose up -d acme-challenge</span></span> <span class="line"><span>$ make setup</span></span></code></pre> </div> </section> - <section id="section--site-hosting-setup--run-server"> - <h3><a href="#section--site-hosting-setup--run-server">サーバを稼動させる</a></h3> + <h3><a href="#section--site-hosting-setup--run-server">サーバを稼動させる</a></h3> <div class="codeblock" language="shell-session"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span>$ make serve</span></span></code></pre> </div> </section> </section> - <section id="section--outro"> - <h2><a href="#section--outro">感想</a></h2> + <h2><a href="#section--outro">感想</a></h2> <p> - (業務でなく) 個人だと数年ぶりのサーバセットアップで、これだけでも割と時間を食ってしまった。とはいえ式年遷宮は楽しいので、これからも定期的にやっていきたい。コンテナデプロイにしたい気持ちもあるのだが、色々実験したい関係上、本物のサーバも欲しくはある。次の式年遷宮では、手順の一部だけでも自動化したいところ。 + (業務でなく) 個人だと数年ぶりのサーバセットアップで、これだけでも割と時間を食ってしまった。 とはいえ式年遷宮は楽しいので、これからも定期的にやっていきたい。 コンテナデプロイにしたい気持ちもあるのだが、色々実験したい関係上、本物のサーバも欲しくはある。 次の式年遷宮では、手順の一部だけでも自動化したいところ。 </p> </section> </div> |
