diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-09-20 19:56:52 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-09-20 19:56:57 +0900 |
| commit | a84908b7e8a0e2423afd6b836eccf27a420270b4 (patch) | |
| tree | 00204b62358f8c57fcb36f601db360626484cc1a /vhosts/blog/content/posts/2022-10-28 | |
| parent | 0b488f85380f964c40b0b9aae69c6611bc7978bc (diff) | |
| download | nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.tar.gz nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.tar.zst nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.zip | |
feat(blog/nuldoc): change content format from DocBook to NulDoc
Diffstat (limited to 'vhosts/blog/content/posts/2022-10-28')
| -rw-r--r-- | vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.ndoc | 309 | ||||
| -rw-r--r-- | vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.xml | 313 |
2 files changed, 309 insertions, 313 deletions
diff --git a/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.ndoc b/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.ndoc new file mode 100644 index 00000000..97b19b4a --- /dev/null +++ b/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.ndoc @@ -0,0 +1,309 @@ +--- +[article] +title = "【備忘録】 このサイト用の VPS をセットアップしたときのメモ" +description = "GitHub Pages でホストしていたこのサイトを VPS へ移行したので、そのときにやったことのメモ。99 % 自分用。" +tags = [ + "note-to-self", +] + +[[article.revisions]] +date = "2022-10-28" +remark = "公開" + +[[article.revisions]] +date = "2023-08-30" +remark = "ssh_config に IdentitiesOnly yes を追加" +--- +<article> + <section id="intro"> + <h>はじめに</h> + <p> + これまでこの blog は GitHub Pages でホストしていたのだが、先日 VPS に移行した。 + そのときにおこなったサーバのセットアップ作業を書き残しておく。 + 99 % 自分用の備忘録。別のベンダに移したりしたくなったら見に来る。 + </p> + <p> + 未来の自分へ: 特に自動化してないので、せいぜい苦しんでくれ。 + </p> + </section> + <section id="vps"> + <h>VPS</h> + <p> + <a href="https://vps.sakura.ad.jp/">さくらの VPS</a> の 2 GB プラン。 + そこまで真面目に選定していないので、困ったら移動するかも。 + </p> + </section> + <section id="preparation"> + <h>事前準備</h> + <section id="preparation--hostname"> + <h>サーバのホスト名を決める</h> + <p> + モチベーションが上がるという効能がある。今回は藤原定家から取って <code>teika</code> にした。 + たいていいつも源氏物語の帖か小倉百人一首の歌人から選んでいる。 + </p> + </section> + <section id="preparation--ssh-key"> + <h>SSH の鍵生成</h> + <p> + ローカルマシンで鍵を生成する。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/teika.key + $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github2teika.key + ]]> + </codeblock> + <p> + <code>teika.key</code> はローカルからサーバへの接続用、<code>github2teika.key</code> は、 + GitHub Actions からサーバへのデプロイ用。 + </p> + </section> + <section id="preparation--ssh-config"> + <h>SSH の設定</h> + <p> + <code>.ssh/config</code> に設定しておく。 + </p> + <codeblock language="ssh_config"> + <![CDATA[ + Host teika + HostName ********** + User ********** + Port ********** + IdentityFile ~/.ssh/teika.key + IdentitiesOnly yes + ]]> + </codeblock> + </section> + </section> + <section id="basic-setup"> + <h>基本のセットアップ</h> + <section id="basic-setup--login"> + <h>SSH 接続</h> + <p> + VPS 契約時に設定した管理者ユーザとパスワードを使ってログインする。 + </p> + </section> + <section id="basic-setup--user"> + <h>ユーザを作成する</h> + <p> + 管理者ユーザで作業すると危ないので、メインで使うユーザを作成する。 + <code>sudo</code> グループに追加して <code>sudo</code> できるようにし、<code>su</code> で切り替え。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo adduser ********** + $ sudo adduser ********** sudo + $ su ********** + $ cd + ]]> + </codeblock> + </section> + <section id="basic-setup--hostname"> + <h>ホスト名を変える</h> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo hostname teika + ]]> + </codeblock> + </section> + <section id="basic-setup--public-key"> + <h>公開鍵を置く</h> + <codeblock language="shell-session"> + <![CDATA[ + $ mkdir ~/.ssh + $ chmod 700 ~/.ssh + $ vi ~/.ssh/authorized_keys + ]]> + </codeblock> + <p> + <code>authorized_keys</code> には、ローカルで生成した <code>~/.ssh/teika.key.pub</code> と + <code>~/.ssh/github2teika.key.pub</code> の内容をコピーする。 + </p> + </section> + <section id="basic-setup--ssh-config"> + <h>SSH の設定</h> + <p> + SSH の設定を変更し、少しでも安全にしておく。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak + $ sudo vi /etc/ssh/sshd_config + ]]> + </codeblock> + <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> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo systemctl restart sshd + $ sudo systemctl status sshd + ]]> + </codeblock> + </section> + <section id="basic-setup--ssh-connect"> + <h>SSH で接続確認</h> + <p> + 今の SSH セッションは閉じずに、ターミナルを別途開いて疎通確認する。 + セッションを閉じてしまうと、SSH の設定に不備があった場合に締め出しをくらう。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ ssh teika + ]]> + </codeblock> + </section> + <section id="basic-setup--close-ports"> + <h>ポートの遮断</h> + <p> + デフォルトの 22 番を閉じ、設定したポートだけ空ける。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo ufw deny ssh + $ sudo ufw allow ******* + $ sudo ufw enable + $ sudo ufw reload + $ sudo ufw status + ]]> + </codeblock> + <p> + ここでもう一度 SSH の接続確認を挟む。 + </p> + </section> + <section id="basic-setup--ssh-key-for-github"> + <h>GitHub 用の SSH 鍵</h> + <p> + GitHub に置いてある private リポジトリをサーバから clone したいので、SSH 鍵を生成して置いておく。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github.key + $ cat ~/.ssh/github.key.pub + ]]> + </codeblock> + <p> + <a href="https://github.com/settings/ssh">GitHub の設定画面</a> から、この公開鍵を追加する。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ vi ~/.ssh/config + ]]> + </codeblock> + <p> + 設定はこう。 + </p> + <codeblock language="ssh_config"> + <![CDATA[ + Host github.com + HostName github.com + User git + Port 22 + IdentityFile ~/.ssh/github.key + IdentitiesOnly yes + ]]> + </codeblock> + <p> + 最後に接続できるか確認しておく。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ ssh -T github.com + ]]> + </codeblock> + </section> + <section id="basic-setup--upgrade-packages"> + <h>パッケージの更新</h> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo apt update + $ sudo apt upgrade + $ sudo apt update + $ sudo apt upgrade + $ sudo apt autoremove + ]]> + </codeblock> + </section> + </section> + <section id="site-hosting-setup"> + <h>サイトホスティング用のセットアップ</h> + <section id="site-hosting-setup--dns"> + <h>DNS に IP アドレスを登録する</h> + <p> + このサーバは固定の IP アドレスがあるので、<code>A</code> レコードに直接入れるだけで済んだ。 + </p> + </section> + <section id="site-hosting-setup--install-softwares"> + <h>使うソフトウェアのインストール</h> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo apt install docker docker-compose git make + ]]> + </codeblock> + </section> + <section id="site-hosting-setup--docker"> + <h>メインユーザが Docker を使えるように</h> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo adduser ********** docker + ]]> + </codeblock> + </section> + <section id="site-hosting-setup--open-http-ports"> + <h>HTTP/HTTPS を通す</h> + <p> + 80 番と 443 番を空ける。 + </p> + <codeblock language="shell-session"> + <![CDATA[ + $ sudo ufw allow 80/tcp + $ sudo ufw allow 443/tcp + $ sudo ufw reload + $ sudo ufw status + ]]> + </codeblock> + </section> + <section id="site-hosting-setup--clone-repositories"> + <h>リポジトリのクローン</h> + <codeblock language="shell-session"> + <![CDATA[ + $ cd + $ git clone git@github.com:nsfisis/nsfisis.dev.git + $ cd nsfisis.dev + $ git submodule update --init + ]]> + </codeblock> + </section> + <section id="site-hosting-setup--certbot"> + <h>certbot で証明書取得</h> + <codeblock language="shell-session"> + <![CDATA[ + $ docker-compose up -d acme-challenge + $ make setup + ]]> + </codeblock> + </section> + <section id="site-hosting-setup--run-server"> + <h>サーバを稼動させる</h> + <codeblock language="shell-session"> + <![CDATA[ + $ make serve + ]]> + </codeblock> + </section> + </section> + <section id="outro"> + <h>感想</h> + <p> + (業務でなく) 個人だと数年ぶりのサーバセットアップで、これだけでも割と時間を食ってしまった。 + とはいえ式年遷宮は楽しいので、これからも定期的にやっていきたい。 + コンテナデプロイにしたい気持ちもあるのだが、色々実験したい関係上、本物のサーバも欲しくはある。 + 次の式年遷宮では、手順の一部だけでも自動化したいところ。 + </p> + </section> +</article> diff --git a/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.xml b/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.xml deleted file mode 100644 index b0ad60e0..00000000 --- a/vhosts/blog/content/posts/2022-10-28/setup-server-for-this-site.xml +++ /dev/null @@ -1,313 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0"> - <info> - <title>【備忘録】 このサイト用の VPS をセットアップしたときのメモ</title> - <abstract> - GitHub Pages でホストしていたこのサイトを VPS へ移行したので、そのときにやったことのメモ。99 % 自分用。 - </abstract> - <keywordset> - <keyword>note-to-self</keyword> - </keywordset> - <revhistory> - <revision> - <date>2022-10-28</date> - <revremark>公開</revremark> - </revision> - <revision> - <date>2023-08-30</date> - <revremark>ssh_config に IdentitiesOnly yes を追加</revremark> - </revision> - </revhistory> - </info> - <section xml:id="intro"> - <title>はじめに</title> - <para> - これまでこの blog は GitHub Pages でホストしていたのだが、先日 VPS に移行した。 - そのときにおこなったサーバのセットアップ作業を書き残しておく。 - 99 % 自分用の備忘録。別のベンダに移したりしたくなったら見に来る。 - </para> - <para> - 未来の自分へ: 特に自動化してないので、せいぜい苦しんでくれ。 - </para> - </section> - <section xml:id="vps"> - <title>VPS</title> - <para> - <link xl:href="https://vps.sakura.ad.jp/">さくらの VPS</link> の 2 GB プラン。 - そこまで真面目に選定していないので、困ったら移動するかも。 - </para> - </section> - <section xml:id="preparation"> - <title>事前準備</title> - <section xml:id="preparation--hostname"> - <title>サーバのホスト名を決める</title> - <para> - モチベーションが上がるという効能がある。今回は藤原定家から取って <literal>teika</literal> にした。 - たいていいつも源氏物語の帖か小倉百人一首の歌人から選んでいる。 - </para> - </section> - <section xml:id="preparation--ssh-key"> - <title>SSH の鍵生成</title> - <para> - ローカルマシンで鍵を生成する。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/teika.key - $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github2teika.key - ]]> - </programlisting> - <para> - <literal>teika.key</literal> はローカルからサーバへの接続用、<literal>github2teika.key</literal> は、 - GitHub Actions からサーバへのデプロイ用。 - </para> - </section> - <section xml:id="preparation--ssh-config"> - <title>SSH の設定</title> - <para> - <literal>.ssh/config</literal> に設定しておく。 - </para> - <programlisting language="ssh_config" linenumbering="unnumbered"> - <![CDATA[ - Host teika - HostName ********** - User ********** - Port ********** - IdentityFile ~/.ssh/teika.key - IdentitiesOnly yes - ]]> - </programlisting> - </section> - </section> - <section xml:id="basic-setup"> - <title>基本のセットアップ</title> - <section xml:id="basic-setup--login"> - <title>SSH 接続</title> - <para> - VPS 契約時に設定した管理者ユーザとパスワードを使ってログインする。 - </para> - </section> - <section xml:id="basic-setup--user"> - <title>ユーザを作成する</title> - <para> - 管理者ユーザで作業すると危ないので、メインで使うユーザを作成する。 - <literal>sudo</literal> グループに追加して <literal>sudo</literal> できるようにし、<literal>su</literal> で切り替え。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo adduser ********** - $ sudo adduser ********** sudo - $ su ********** - $ cd - ]]> - </programlisting> - </section> - <section xml:id="basic-setup--hostname"> - <title>ホスト名を変える</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo hostname teika - ]]> - </programlisting> - </section> - <section xml:id="basic-setup--public-key"> - <title>公開鍵を置く</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ mkdir ~/.ssh - $ chmod 700 ~/.ssh - $ vi ~/.ssh/authorized_keys - ]]> - </programlisting> - <para> - <literal>authorized_keys</literal> には、ローカルで生成した <literal>~/.ssh/teika.key.pub</literal> と - <literal>~/.ssh/github2teika.key.pub</literal> の内容をコピーする。 - </para> - </section> - <section xml:id="basic-setup--ssh-config"> - <title>SSH の設定</title> - <para> - SSH の設定を変更し、少しでも安全にしておく。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - $ sudo vi /etc/ssh/sshd_config - ]]> - </programlisting> - <itemizedlist> - <listitem><literal>Port</literal> を変更</listitem> - <listitem><literal>PermitRootLogin</literal> を <literal>no</literal> に</listitem> - <listitem><literal>PasswordAuthentication</literal> を <literal>no</literal> に</listitem> - </itemizedlist> - <para> - そして設定を反映。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo systemctl restart sshd - $ sudo systemctl status sshd - ]]> - </programlisting> - </section> - <section xml:id="basic-setup--ssh-connect"> - <title>SSH で接続確認</title> - <para> - 今の SSH セッションは閉じずに、ターミナルを別途開いて疎通確認する。 - セッションを閉じてしまうと、SSH の設定に不備があった場合に締め出しをくらう。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ ssh teika - ]]> - </programlisting> - </section> - <section xml:id="basic-setup--close-ports"> - <title>ポートの遮断</title> - <para> - デフォルトの 22 番を閉じ、設定したポートだけ空ける。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo ufw deny ssh - $ sudo ufw allow ******* - $ sudo ufw enable - $ sudo ufw reload - $ sudo ufw status - ]]> - </programlisting> - <para> - ここでもう一度 SSH の接続確認を挟む。 - </para> - </section> - <section xml:id="basic-setup--ssh-key-for-github"> - <title>GitHub 用の SSH 鍵</title> - <para> - GitHub に置いてある private リポジトリをサーバから clone したいので、SSH 鍵を生成して置いておく。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ ssh-keygen -t ed25519 -b 521 -f ~/.ssh/github.key - $ cat ~/.ssh/github.key.pub - ]]> - </programlisting> - <para> - <link xl:href="https://github.com/settings/ssh">GitHub の設定画面</link> から、この公開鍵を追加する。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ vi ~/.ssh/config - ]]> - </programlisting> - <para> - 設定はこう。 - </para> - <programlisting language="ssh_config" linenumbering="unnumbered"> - <![CDATA[ - Host github.com - HostName github.com - User git - Port 22 - IdentityFile ~/.ssh/github.key - IdentitiesOnly yes - ]]> - </programlisting> - <para> - 最後に接続できるか確認しておく。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ ssh -T github.com - ]]> - </programlisting> - </section> - <section xml:id="basic-setup--upgrade-packages"> - <title>パッケージの更新</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo apt update - $ sudo apt upgrade - $ sudo apt update - $ sudo apt upgrade - $ sudo apt autoremove - ]]> - </programlisting> - </section> - </section> - <section xml:id="site-hosting-setup"> - <title>サイトホスティング用のセットアップ</title> - <section xml:id="site-hosting-setup--dns"> - <title>DNS に IP アドレスを登録する</title> - <para> - このサーバは固定の IP アドレスがあるので、<literal>A</literal> レコードに直接入れるだけで済んだ。 - </para> - </section> - <section xml:id="site-hosting-setup--install-softwares"> - <title>使うソフトウェアのインストール</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo apt install docker docker-compose git make - ]]> - </programlisting> - </section> - <section xml:id="site-hosting-setup--docker"> - <title>メインユーザが Docker を使えるように</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo adduser ********** docker - ]]> - </programlisting> - </section> - <section xml:id="site-hosting-setup--open-http-ports"> - <title>HTTP/HTTPS を通す</title> - <para> - 80 番と 443 番を空ける。 - </para> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ sudo ufw allow 80/tcp - $ sudo ufw allow 443/tcp - $ sudo ufw reload - $ sudo ufw status - ]]> - </programlisting> - </section> - <section xml:id="site-hosting-setup--clone-repositories"> - <title>リポジトリのクローン</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ cd - $ git clone git@github.com:nsfisis/nsfisis.dev.git - $ cd nsfisis.dev - $ git submodule update --init - ]]> - </programlisting> - </section> - <section xml:id="site-hosting-setup--certbot"> - <title>certbot で証明書取得</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ docker-compose up -d acme-challenge - $ make setup - ]]> - </programlisting> - </section> - <section xml:id="site-hosting-setup--run-server"> - <title>サーバを稼動させる</title> - <programlisting language="shell-session" linenumbering="unnumbered"> - <![CDATA[ - $ make serve - ]]> - </programlisting> - </section> - </section> - <section xml:id="outro"> - <title>感想</title> - <para> - (業務でなく) 個人だと数年ぶりのサーバセットアップで、これだけでも割と時間を食ってしまった。 - とはいえ式年遷宮は楽しいので、これからも定期的にやっていきたい。 - コンテナデプロイにしたい気持ちもあるのだが、色々実験したい関係上、本物のサーバも欲しくはある。 - 次の式年遷宮では、手順の一部だけでも自動化したいところ。 - </para> - </section> -</article> |
