www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | README

commit a4109df340d01168503c473d923c2dd49f853fbd
parent 7b47a0190736fe75f0aeed841e68c6528ccdcca4
Author: Matsuda Kenji <contact2655@matsudakenji.xyz>
Date:   Mon, 27 Jun 2022 16:03:51 +0900

add draft

Diffstat:
Ahttpd.conf | 12++++++++++++
Dman/computer/.openbsd_installation.html | 59-----------------------------------------------------------
Aman/draft/how_to_throw_away_smart_phone.html | 17+++++++++++++++++
Rdraft/keitai.html -> man/draft/keitai.html | 0
Rman/harmfull/.medical_care.html -> man/draft/medical_care.html | 0
Aman/draft/openbsd_installation.html | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aman/draft/setting_up_mail_server.html | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aman/draft/setting_up_web_server.html | 157+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dman/misc/.how_to_throw_away_smart_phone.html | 6------
Mman/static/base.css | 4++++
Anote.txt | 10++++++++++
Mpub/.files | 2+-
Apub/draft/how_to_throw_away_smart_phone.html | 38++++++++++++++++++++++++++++++++++++++
Apub/draft/keitai.html | 33+++++++++++++++++++++++++++++++++
Apub/draft/medical_care.html | 24++++++++++++++++++++++++
Apub/draft/openbsd_installation.html | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apub/draft/setting_up_mail_server.html | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apub/draft/setting_up_web_server.html | 178+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpub/sitemap.xml | 6++++++
Mpub/static/base.css | 4++++
Arss.xml | 25+++++++++++++++++++++++++
Atest | 2++
22 files changed, 869 insertions(+), 66 deletions(-)

diff --git a/httpd.conf b/httpd.conf @@ -0,0 +1,12 @@ +# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $ + +chroot "/home/kenji/docs/kagero" +logdir "" + +server "localhost" { + listen on 127.0.0.1 port 80 + location * { + root "/pub/" + directory auto index + } +} diff --git a/man/computer/.openbsd_installation.html b/man/computer/.openbsd_installation.html @@ -1,59 +0,0 @@ -<head> - <meta charset="utf-8"> -</head> -<h1>OpenBSDインストール</h1> -<time>2021-12-16</time> -<p>OpenBSDをノートパソコンにインストールしたのでその時のメモ</p> - -<p>インストール用のライブUSBを作成</p> -<p>ブート</p> -<p>指示通りインストール</p> - -<p>Reboot</p> -<p>通常ユーザーでログインしてルートユーザーになる</p> -<pre><code>$ su -Password: -</code></pre> - -<p><code>doas(1)</code>を設定して通常ユーザーに戻る</p> -<pre><code># cp /etc/examples/doas.conf /etc/ -# sed -i 's/permit keepenv :wheel/permit nopass keepenv :wheel/' /etc/doas.conf -# exit -$ doas echo unko -unko -</code></pre> - -<p><code>syspatch(8)</code>をあてる</p> -<pre><code>$ doas syspatch -... -Relinking to create unique kernel... done. -</pre></code> - -<p><code>apmd(8)</code>を設定</p> -<pre><code>$ doas rcctl enable apmd -$ doas set apmd flags -A -z 10 -$ rcctl start apmd -apmd (ok) -</pre></code> - -<p>wi-fiを設定</p> -<pre><code>$ ifconfig -... -iwn0 flags=... -... -$ ifconfig iwn0 up -$ doas sh -c 'echo "join <i>ssid</i> wpakey <i>password</i> -autoconf" > /etc/hostname.iwn0' -$ doas chown root:wheel /etc/hostname.iwn9 -$ doas chmod 0640 /etc/hostname.iwn0 -$ doas sh /etc/netstart -... -</pre></code> - -<p>必要なパッケージをインストール</p> -<p><code>dotfiles</code>をダウンロード</p> -<p>suckless utilitiesをインストール</p> -<p><code>man(1)</code>のパスを設定</p> -<p><code>slock(1)</code>を設定</p> -<p><code>xenodm(1)</code>を設定</p> -<p><code>mail(1)</code>の設定<a href="https://www.c0ffee.net/blog/openbsd-on-a-laptop/#base-utilities">ref</a></p> diff --git a/man/draft/how_to_throw_away_smart_phone.html b/man/draft/how_to_throw_away_smart_phone.html @@ -0,0 +1,17 @@ +<h1>携帯電話捨てた</h1> +<time>2021-12-20</time> +<h2>スマートフォンを捨てたくなった。</h2> +<p>この端末から得られる情報にはあまりにも無駄が多いこと、そしてGoogle等に自分の情報を売り飛ばしている懸念が大きいこと。この2点が徐々に気になりだした。さらに通信料を節約する観点から楽天モバイルに変え、あまりスマートフォンを持ち歩かなくなった。そうして今迄どれほどの時間と神経をこの小さな機械に奪われてきたかに気付かされた。それと並行して、なにか情報を得たい時にパソコンを利用する機会が増え、いよいよこの端末を持っていること自体が嫌になった。いっそうのこのスマートフォンのない生活をしてやろうと思いたったのだ。</p> +<p>ここで、僕が捨てたいのはスマートフォンだけでなく、「何時でも何処でも連絡が取れてしまう便利な機械」である。世の中には電話以外にほぼなにもできない端末も売られているが、それも持ちたくない。携帯電話の番号ごと捨ててしまいたいのだ。</p> +<p>ところがこれが案外難しい。現状スマートフォンで利用しているサービスは、LINE、SMS、銀行のワンタイムパスワード、マイナポータルくらいである。この内マイナポータルは多少面倒だが市役所に行けばいいし、銀行もコンビニのATMで済ませられる。LINEはほぼ使っていないがたまに学生の時のグループに連絡が入る。しかしこれもメールでできなくもない。厄介なのはSMSである。なぜかSMSによる二段階認証をしないと利用できないサービスが存在するのだ。これを最初に書いていた頃には暗号資産の取引所を利用していたが、現在は解約した。<p> +<p>Googleのメールアドレスを長らく使っていたが、サーバーを借りて独自ドメインのメールアドレスを手に入れたので、これを機にウェブサービスに登録しているアドレスを随時変更して行った。一部学生のころのアドレスを利用していたアカウントがうまく変更できずにいる。特にマイクロソフトのアカウントはログインすら出来なかった。しかし概ねメールアドレスの変更と、使っていないアカウントの削除はできたと思うのである程度は諦めることにした。どうせ就職活動の時に手当たり次第作ったものは作ったことすら忘れていたりするだろうし。</p> + +<h2>令和4年6月6日携帯を解約した。</h2> +<p>ひと通りウェブサービスのアカウントを整理した所で、いよいよ携帯電話を持っている必要が無くなってしまった。そして6月6日の夜、勢い余って楽天モバイルを解約し、ラインのアカウントも削除してしまった。この日は気分よく寝れた。</p> + +<h2>Googleにログインできなくなった。</h2> +<p>携帯を解約し、メールアドレスを変更したとは言え、まだGoogleのメールの方にもあちこちからメールが届いていた。自分で把握できていないウェブサービスからである。当面はこちらのメールも時々確認して、消し忘れていたアカウントを削除していこうと考えていた。</p> +<p>ところがいつのことだったか、パソコンのneomuttからGoogleのアカウントにアクセスできなくなった。どうやら二段階認証の設定が必須になったようだ。然しこの二段階認証は携帯電話の番号が必要なようで、携帯を解約した僕にはどうすることもできない。そこで仕方なくブラウザでGoogleにログインして利用することにした。10年以上前のパソコンではかなり重くて使い辛いが、まあ日常的に確認するものではないので問題なかった。然し今度はブラウザからのログインも不可能にされてしまった。これもSMSによる二段階認証以外の方法はないようである。知らぬ間にセキュリティ強化と称してこちらの選択肢を無くしてしまうやり方にとうとう愛想が尽きた。とりあえず母の携帯を借りてログインし、すぐにアカウントごと消してしまった。</p> + +<h2>選択の自由</h2> +<p> diff --git a/draft/keitai.html b/man/draft/keitai.html diff --git a/man/harmfull/.medical_care.html b/man/draft/medical_care.html diff --git a/man/draft/openbsd_installation.html b/man/draft/openbsd_installation.html @@ -0,0 +1,56 @@ +<h1>OpenBSDインストール</h1> +<time>2021-12-16</time> +<p>OpenBSDをノートパソコンにインストールしたのでその時のメモ</p> + +<p>インストール用のライブUSBを作成</p> +<p>ブート</p> +<p>指示通りインストール</p> + +<p>Reboot</p> +<p>通常ユーザーでログインしてルートユーザーになる</p> +<pre><code>$ su +Password: +</code></pre> + +<p><code>doas(1)</code>を設定して通常ユーザーに戻る</p> +<pre><code># cp /etc/examples/doas.conf /etc/ +# sed -i 's/permit keepenv :wheel/permit nopass keepenv :wheel/' /etc/doas.conf +# exit +$ doas echo unko +unko +</code></pre> + +<p><code>syspatch(8)</code>をあてる</p> +<pre><code>$ doas syspatch +... +Relinking to create unique kernel... done. +</pre></code> + +<p><code>apmd(8)</code>を設定</p> +<pre><code>$ doas rcctl enable apmd +$ doas set apmd flags -A -z 10 +$ rcctl start apmd +apmd (ok) +</pre></code> + +<p>wi-fiを設定</p> +<pre><code>$ ifconfig +... +iwn0 flags=... +... +$ ifconfig iwn0 up +$ doas sh -c 'echo "join <i>ssid</i> wpakey <i>password</i> +autoconf" > /etc/hostname.iwn0' +$ doas chown root:wheel /etc/hostname.iwn9 +$ doas chmod 0640 /etc/hostname.iwn0 +$ doas sh /etc/netstart +... +</pre></code> + +<p>必要なパッケージをインストール</p> +<p><code>dotfiles</code>をダウンロード</p> +<p>suckless utilitiesをインストール</p> +<p><code>man(1)</code>のパスを設定</p> +<p><code>slock(1)</code>を設定</p> +<p><code>xenodm(1)</code>を設定</p> +<p><code>mail(1)</code>の設定<a href="https://www.c0ffee.net/blog/openbsd-on-a-laptop/#base-utilities">ref</a></p> diff --git a/man/draft/setting_up_mail_server.html b/man/draft/setting_up_mail_server.html @@ -0,0 +1,102 @@ +<h1>OpenBSD、OpenSMTPDとDovecotによるメールサーバー構築</h1> +<time>2022-06-15</time> +<h2>はじめに</h2> +<p>長らくGmailを利用していたが、Googleが嫌になったので、自分のドメインを入手したのを機に自前のメールサーバーを構築してみた。</p> +<h2>環境</h2> +<ul> + <li>OpenBSD 7.1</li> + <li>OpenSMTPD 7.0.0</li> + <li>Dovecot 2.3.19</li> + <li>さくらのVPS</li> + <li>ムームードメイン</li> +</ul> + +<h2>手順</h2> +<h3>vmailユーザーを追加</h3> +<pre><code># useradd -m -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail</code></pre> + +<h3>サーバー証明書の発行と設定</h3> +<p>メールサーバーの他にウェブサーバーも設定するので、<code>httpd</code>と共にLet's Encryptを設定。</p> +<p><code>/etc/acme-client.conf</code>の<code>domain</code>を以下のように変更:</p> +<pre><code>domain mail.example.com { + domain key "/etc/ssl/private/mail.example.com.key" + domain full chain certificate "/etc/ssl/mail.example.com.fullchain.pem" + sign with letsencrypt +}</pre></code> + +<pre><code># acme-client -v example.com && rcctl start httpd +# crontab -e +43 1 * * * acme-client -v mail.example.com && rcctl restart smtpd && rcctl reload dovcot +&lt;Esc&gt;:wq</code></pre> + +<h3>smtpdの設定</h3> +<pre><code>pki "mail" cert "/etc/ssl/mail.example.com.fullchain.pem" +pki "mail" key "/etc/ssl/private/mail.example.com.key" + +table aliases file:/etc/mail/aliases +table passwd file:/etc/mail/passwd +table virtuals file:/etc/mail/virtuals + +filter dkimsign_rsa proc-exec\ + "filter-dkimsign -d mail.example.com -s selector1\ + -k /etc/mail/dkim/private.rsa.key" user _dkimsign group _dkimsign + +filter check_rdns phase connect match !rdns disconnect "550 no rDNS." +filter check_fcrdns phase connect match !fcrdns disconnect "550 no FCrDNS." + +listen on socket +listen on lo0 +listen on vio0 port 25 tls pki "mail" hostname "mail.example.com"\ + filter { check_rdns, check_fcrdns } + listen on vio0 mask-src port submission smtps pki "mail"\ + hostname "mail.matsudakenji.xyz" auth <passwd> filter dkimsign_rsa + +action "local_mail" mbox alias <aliases> +action "domain_mail" maildir "/var/vmail/example.com/%{dest.user:lowercase}"\ + virtual <virtuals> +action "outbound" relay + +match from any for domain "example.com" action "domain_mail" +match from local for local action "local_mail" +match from local for any action "outbound" +match auth from any for any action "outbound"</code></pre> + +<h3>メールユーザの設定</h3> +<p><code>/etc/mail/virtuals</code>:</p> +<pre><code>abuse@example.com admin@example.com +postmaster@example.com admin@example.com +webmaster@example.com admin@example.com +admin@example.com vmail +contact@example.com vmail</pre></code> + +<p><code>/etc/mail/passwd</code>:</p> +<pre><code>admin@example.com:$2b$10$..... +contact@example.com:$2b$10$.....</code></pre> + +<pre><code># rcctl restart smtpd</code></pre> + +<h3>Dovecotの設定</h3> +<h4>インストール</h4> +<pre><code># pkg_add dovecot</code></pre> + +<h4>ログインクラスの設定</h4> +<p>これをしないとなんかエラーが出る。</p> +<code>/etc/login.conf</code> +<pre><code>dovecot:\ + :openfiles-cur=1024:\ + :openfiles-max=2048:\ + :tc=daemon:</code></pre> +<pre><code># usermod -L dovecot _dovecot</pre></code> + +<h3>DNSの設定</h3> + +<h3>ファイアーウォールの設定</h3> + +<h3>DKIMproxyの設定</h3> + + +<h2>参考</h2> +<ul> + <li><a href="https://unixsheikh.com/tutorials/arch-linux-mail-server-tutorial-part-1-what-is-email.html">Arch Linux mail server tutorial - part 1 - What is email?</a></li> + <li><a href="https://unixsheikh.com/tutorials/arch-linux-mail-server-tutorial-part-2-opensmtpd-dovecot-dkimproxy-and-lets-encrypt.html">Arch Linux mail server tutorial - part 2 - OpenSMTPD, Dovecot, DKIMproxy, and Let's Encrypt</a></li> +</ul> diff --git a/man/draft/setting_up_web_server.html b/man/draft/setting_up_web_server.html @@ -0,0 +1,157 @@ +<h1>Webサーバーの設定</h1> +<time>2022-06-27</time> + +<h2>はじめに</h2> +<p>OpenBSDでWebサーバーを公開する方法のメモ。といってもmanページが完璧なのであまり書く必要はない。ドメインのあたりの知識は適当なので間違っていたらごめんなさい。コンピュータの知識は全部独学なので多少間違った理解をしていても訂正されることがない。言葉の定義等細かいことがいいかげんになりがちである。</p> + +<h2>環境</h2> +<ul> + <li>OS: OpenBSD 7.1</li> + <li>サーバー: httpd(OpenBSDに付属のもの)</li> + <li>サーバー証明書: Let's Encrypt</li> + <li>サーバー: さくらのVPS。ここではIPアドレスを<code><i>&lt;server_ip&gt;</i></code>とする。</li> + <li>ドメイン: さくらのドメイン。ここでは<code><i>&lt;server_domain&gt;</i></code>とする。</li> +</ul> + +<h2>設定の概要</h2> +<dl> + <dt>サーバーを用意</dt> + <dd>サーバーはウェブサイトのデータを保存し、ブラウザからアクセスされた時にそのデータを送り返すためのものである。ここではさくらのVPSを用いた。 </dd> + <dt>ドメインの取得とDNSの設定</dt> + <dd>インターネット上のサーバー等はIPアドレスを用いて識別されているが、数字の羅列なので人間には覚えにくい。そのためドメイン名という、好きなアルファベットの文字列をIPアドレスと紐付ける。インターネットにはこのドメイン名を用いて紐付いたサーバーと通信できるような仕組みがあり、これをDomain Name System(DNS)という。ドメインはインターネット上で利用料を支払うことで購入できる。IPアドレスとドメイン名の紐付け等DNSの設定は基本的にはドメインを購入したサイトでできるはずである。</dd> + <dt>httpdの設定</dt> + <dd>VPS上でサーバー用のソフトウェアを設定、起動する。</dd> + <dt>証明書の発行と自動更新の設定</dt> + <dd>ウェブブラウザとサーバーの間で暗号化された通信を行うために必要なものである。</dd> + <dt>ホームページのファイルをアップロード</dt> + <dd>ウェブページで配信したいものをVPSにアップロードする。</dd> + <dt>接続の確認</dd> +</dl> + +<h2>サーバーを用意</h2> +<p>サーバーをどこかで契約する。ここではさくらのVPSを利用。</p> + +<h2>ドメインの取得とDNSの設定</h2> +<p>ドメインを好きな場所で取得してDNSを設定する。さくらのドメインではドメインコントロールパネルのゾーン情報から設定できる。ここではサブドメインなしのものと、サブドメインがwwwのものを設定した。VPSのIPアドレスはVPSのコントロールパネルから確認できる。</p> +<pre><code>HOST TYPE POINTS TO TTL +<i>&lt;server_domain&gt;</i> A <i>&lt;server_ip&gt;</i> 3600 +www.<i>&lt;server_domain&gt;</i> A <i>&lt;server_ip&gt;</i> 3600</code></pre> +<p><code>HOST</code>はサーバーのFQDN。コントロールパネル上ではサブドメインの部分だけを設定すればよい。サブドメインが無い場合は<code>@</code>と記入する。<code>TYPE</code>は設定するレコードの属性でIPv4のサブドメインを設定する場合は<code>A</code>。この他、IPv6用の<code>AAAA</code>やメールサーバー用の<code>MX</code>、サーバーの別名を登録する<code>CNAME</code>等がある。<code>POINTS TO</code>はサーバーのIPアドレス。<code>TTL</code>はDNSのキャッシュの生存時間の秒数で、DNSの登録内容を変更した際にその変更が世界中のDNSサーバーに反映されるまでにかかる最大の時間である。世界中から多くのアクセスがあるサーバーの場合、DNSの登録内容を変更する前にTTLを短かくしておかないと、キャッシュが破棄されるまでアクセス不能になる。個人のウェブページではまあそんなにアクセスもないし適当でよさそう。ここでは1時間を指定した。</p> +<p>この設定が反映されれば、ドメイン名からサーバーにアクセスできるようになる。</p> +<pre><code>$ ping <i>&lt;server_domain&gt;</i> +PING <i>&lt;server_domain&gt;</i> (<i>&lt;server_ip&gt;</i>): 56 data bytes +64 bytes from <i>&lt;server_ip&gt;</i>: icmp_seq=0 ttl=243 time=38.032 ms +64 bytes from <i>&lt;server_ip&gt;</i>: icmp_seq=1 ttl=243 time=27.923 ms +^C</code></pre> + +<h2>httpdの設定</h2> +<p>VPSにログインし、httpdを設定する。まずは<code>/etc/examples/</code>にある設定ファイルのサンプルを<code>/etc/</code>にコピーして必要な部分を変更する。</p> +<pre><code>$ doas cp /etc/examples/httpd.conf /etc/ +vi /etc/httpd.conf</code></pre> + +<pre><code># $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $ + +server "<i>&lt;server_domain&gt;</i>" { + listen on * port 80 + location "/.well-known/acme-challenge/*" { + root "/acme" + request strip 2 + } + location * { + block return 302 "https://$HTTP_HOST$REQUEST_URI" + } +} + +server "<i>&lt;server_domain&gt;</i>" { + listen on * tls port 443 + tls { + certificate "/etc/ssl/<i>&lt;server_domain&gt;</i>.fullchain.pem" + key "/etc/ssl/private/<i>&lt;server_domain&gt;</i>.key" + } + location "/.well-known/acme-challenge/*" { + root "/acme" + request strip 2 + } + location "*" { + root "/htdocs/www.<i>&lt;server_domain&gt;</i>" + directory auto index + } +}</pre></code> +<p>一つ目の<code>server</code>ディレクティブは80番ポートにアクセスがあった時の設定。80番ポートは暗号化なしのアクセスなので、二つ目の<code>location</code>ディレクティブで暗号化ありの<code>https</code>の方にリダイレクトさせるようにしている。一つ目の<code>location</code>ディレクティブは<code>acme-client</code>がサーバー証明書を発行する際にアクセスされる場所である。既定値のままにしておけばよい。二つ目の<code>server</code>ディレクティブは443番ポートにアクセスがあった時の設定。<code>tls</code>ディレクティブにおいてサーバー証明書と、暗号化に利用する鍵が設定されている。これも既定値のままでいい。<code>location</code>ディレクティブはウェブサーバーにアクセスがあった時の処理である。一つ目は80番ポートと同じく<code>acme-client</code>用。二つ目はそれ以外である。<code>root</code>(ドキュメントルート)はアクセスがあったときにどこのディレクトリからファイルを探すかを決めるもので、<code>/var/www</code>からの相対パスで記述する。ここでは<code>/htdocs/www.<i>&lt;server_domain&gt;</i></code>にしたのでウェブページのデータは<code>/var/www/htdock/www.<i>&lt;server_domain&gt;</i>/</code>というディレクトリ以下に配置することになる。</p> +<p>ここで一度<code>httpd</code>を<code>-n</code>オプションを付けて実行し、設定ファイルのミスがないか確認しておく。</p> +<pre><code>$ doas httpd -n +configration OK</code></pre> + +<h2>証明書の発行と自動更新の設定</h2> +<p>httpsによる暗号化に対応するため、Let's Encryptを使って証明書を発行する。OpenBSDには<code>acme-client</code>という便利なスクリプトが付いてきてほぼ全部自動でやってくれる。まずはこの<code>acme-client</code>の設定を変更して自分のドメインの証明書を取得するようにする。</p> +<pre><code>$ doas cp /etc/examples/acme-client.conf /etc/ +$ doas vi /etc/acme-client.conf</code></pre> +<pre><code># +# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $ +# +authority letsencrypt { + api url "https://acme-v02.api.letsencrypt.org/directory" + account key "/etc/acme/letsencrypt-privkey.pem" +} + +authority letsencrypt-staging { + api url "https://acme-staging-v02.api.letsencrypt.org/directory" + account key "/etc/acme/letsencrypt-staging-privkey.pem" +} + +authority buypass { + api url "https://api.buypass.com/acme/directory" + account key "/etc/acme/buypass-privkey.pem" + contact "mailto:<i>&lt;your_mail_address&gt;</i>" +} + +authority buypass-test { + api url "https://api.test4.buypass.no/acme/directory" + account key "/etc/acme/buypass-test-privkey.pem" + contact "mailto:<i>&lt;your_mail_address&gt;</i>" +} + +domain <i>&lt;server_domain&gt;</i> { + alternative names { secure.<i>&lt;server_domain&gt;</i> } + domain key "/etc/ssl/private/<i>&lt;server_domain&gt;</i>.key" + domain full chain certificate "/etc/ssl/<i>&lt;server_domain&gt;</i>.fullchain.pem" + sign with letsencrypt +}</code></pre> +<p>変更箇所は<code>contact</code>の部分のメールアドレスと、<code>domain</code>の部分のドメイン名。</p> +<p>続いて<code>acme-client</code>を実行して証明書を発行する。</p> +<pre><code>$ doas acme-client -v <i>&lt;server_domain&gt;</i></code></pre> +<p>次に<code>cron</code>を用いて証明書の自動更新を行うようにする。</p> +<pre><code>$ doas crontab -e</code></pre> +<pre><code>... +#minute hour mday month wday [flags] command +19 2 * * * acme-client -v <i>&lt;server_domain&gt;</i> && rcctl reload httpd +... +</code></pre> +<p>ここで設定した時間は適当。サーバーが暇そうな時間にする。僕のサーバーはいつも暇。</p> + +<h2>ホームページのファイルのアップロード</h2> +<p>ウェブページに表示させたい内容のファイルをサーバーにアップロードする。試すだけであれば適当なファイルでいい。場所は今回の設定では<code>/var/www/htdocs/www.<i>&lt;server_domain&gt;</i>/</code>以下。ただし<code>httpd.conf</code>で<code>chroot</code>や、<code>server</code>ディレクティブの<code>location</code>ディレクティブの<code>root</code>の値を変更していれば、<code><i>&lt;chroot&gt;</i>/<i>&lt;root&gt;</i>/</code>にアップロードする。ここではテストのために適当なものを置いておく。</p> +<pre><code>$ doas mkdir /var/www/htdocs/www.<i>&lt;server_domain&gt;</i> +$ echo '&lt;h1&gt;unko&lt;/h1&gt;' | doas tee /var/www/htdocs/pub/index.html</code></pre> + +<h2>接続の確認</h2> +<p>最後に<code>httpd</code>を起動して接続を確認する。まずは<code>rc.conf.local</code>に<code>httpd</code>の起動を許可するように記入。</p> +<pre><code>$ echo 'httpd_flags=' | doas tee -a /etc/rc.conf/local</code></pre> +<p>続いてrcに登録、起動。</p> +<pre><code>$ doas rcctl start httpd +$ doas rcctl enable httpd</code></pre> +<p>ブラウザでアクセスしてみる。</p> + +<h2>おわりに</h2> +<p>とりあえず残したかったので書いてみたが、冒頭でも言った通り知識が曖昧であることに気づかされた。文章もいまいち分かりにくい箇所が多いがとりあえずこのまま置いておく。日記の記事ではないので気が向いたときに少しずつ改訂できればいいかな。</p> + +<h2>参考文献</h2> +<ul> + <li><a href="https://man.openbsd.org/httpd">httpd(8)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/httpd.conf">httpd.conf(5)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/acme-client">acme-crient(1)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/acme-client.conf">acme-crient.conf(5)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/crontab">crontab(1)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://letsencrypt.org/">Let's Encrypt</a>.Let's Encrypt.2022-06-27閲覧</li> + <li><a href="https://ja.wikipedia.org/wiki/Time_to_live#DNS%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AETime_to_live">Time to live</a>.Wikipedia.2022-06-27閲覧</li> +</ul> diff --git a/man/misc/.how_to_throw_away_smart_phone.html b/man/misc/.how_to_throw_away_smart_phone.html @@ -1,6 +0,0 @@ -<h1>携帯電話の捨て方</h1> -<time>2021-12-20</time> -<p>スマートフォンを捨てたくなった。<p> -<p>この端末から得られる情報にはあまりにも無駄が多いこと、そしてGoogle等に自分の情報を売り飛ばしている懸念が大きいこと。この2点が徐々に気になりだした。さらに通信料を節約する観点から楽天モバイルに変え、あまりスマートフォンを持ち歩かなくなった。そうして今迄どれほどの時間と神経をこの小さな機械に奪われてきたかに気付かされた。それと並行して、なにか情報を得たい時にパソコンを利用する機会が増え、いよいよこの端末を持っていること自体が嫌になった。いっそうのこのスマートフォンのない生活をしてやろうと思いたったのだ。</p> -<p>ここで、僕が捨てたいのはスマートフォンだけでなく、「何時でも何処でも連絡が取れてしまう便利な機械」である。世の中には電話以外にほぼなにもできない端末も売られているが、それも持ちたくない。携帯電話の番号ごと捨ててしまいたいのだ。</p> -<p>ところがこれが案外難しい。現状スマートフォンで利用しているサービスは、LINE、SMS、銀行のワンタイムパスワード、マイナポータルくらいである。この内マイナポータルは多少面倒だが市役所に行けばいいし、銀行もコンビニのATMで済ませられる。LINEはほぼ使っていないがたまに学生の時のグループに連絡が入る。しかしこれもメールでできなくもない。厄介なのはSMSである。なぜかSMSによる二段階認証をしないと利用できないサービスが存在するのだ。僕が使っているものでは暗号資産の取引所、さくらのVPS、 diff --git a/man/static/base.css b/man/static/base.css @@ -9,6 +9,10 @@ a { text-decoration: none; } +i { + font-style: italic; +} + figure { background-color #2b2b2b; } diff --git a/note.txt b/note.txt @@ -0,0 +1,10 @@ +articles to write + life without a phone + + openbsd installation + hosting website with httpd + hosting mailserver with opensmtpd and dovecot + hosting xmpp server + hosting git server with stagit + +plants diff --git a/pub/.files b/pub/.files @@ -1 +1 @@ -./index.html +./draft/setting_up_web_server.html diff --git a/pub/draft/how_to_throw_away_smart_phone.html b/pub/draft/how_to_throw_away_smart_phone.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>携帯電話捨てた</h1> +<time>2021-12-20</time> +<h2>スマートフォンを捨てたくなった。</h2> +<p>この端末から得られる情報にはあまりにも無駄が多いこと、そしてGoogle等に自分の情報を売り飛ばしている懸念が大きいこと。この2点が徐々に気になりだした。さらに通信料を節約する観点から楽天モバイルに変え、あまりスマートフォンを持ち歩かなくなった。そうして今迄どれほどの時間と神経をこの小さな機械に奪われてきたかに気付かされた。それと並行して、なにか情報を得たい時にパソコンを利用する機会が増え、いよいよこの端末を持っていること自体が嫌になった。いっそうのこのスマートフォンのない生活をしてやろうと思いたったのだ。</p> +<p>ここで、僕が捨てたいのはスマートフォンだけでなく、「何時でも何処でも連絡が取れてしまう便利な機械」である。世の中には電話以外にほぼなにもできない端末も売られているが、それも持ちたくない。携帯電話の番号ごと捨ててしまいたいのだ。</p> +<p>ところがこれが案外難しい。現状スマートフォンで利用しているサービスは、LINE、SMS、銀行のワンタイムパスワード、マイナポータルくらいである。この内マイナポータルは多少面倒だが市役所に行けばいいし、銀行もコンビニのATMで済ませられる。LINEはほぼ使っていないがたまに学生の時のグループに連絡が入る。しかしこれもメールでできなくもない。厄介なのはSMSである。なぜかSMSによる二段階認証をしないと利用できないサービスが存在するのだ。これを最初に書いていた頃には暗号資産の取引所を利用していたが、現在は解約した。<p> +<p>Googleのメールアドレスを長らく使っていたが、サーバーを借りて独自ドメインのメールアドレスを手に入れたので、これを機にウェブサービスに登録しているアドレスを随時変更して行った。一部学生のころのアドレスを利用していたアカウントがうまく変更できずにいる。特にマイクロソフトのアカウントはログインすら出来なかった。しかし概ねメールアドレスの変更と、使っていないアカウントの削除はできたと思うのである程度は諦めることにした。どうせ就職活動の時に手当たり次第作ったものは作ったことすら忘れていたりするだろうし。</p> + +<h2>令和4年6月6日携帯を解約した。</h2> +<p>ひと通りウェブサービスのアカウントを整理した所で、いよいよ携帯電話を持っている必要が無くなってしまった。そして6月6日の夜、勢い余って楽天モバイルを解約し、ラインのアカウントも削除してしまった。この日は気分よく寝れた。</p> + +<h2>Googleにログインできなくなった。</h2> +<p>携帯を解約し、メールアドレスを変更したとは言え、まだGoogleのメールの方にもあちこちからメールが届いていた。自分で把握できていないウェブサービスからである。当面はこちらのメールも時々確認して、消し忘れていたアカウントを削除していこうと考えていた。</p> +<p>ところがいつのことだったか、パソコンのneomuttからGoogleのアカウントにアクセスできなくなった。どうやら二段階認証の設定が必須になったようだ。然しこの二段階認証は携帯電話の番号が必要なようで、携帯を解約した僕にはどうすることもできない。そこで仕方なくブラウザでGoogleにログインして利用することにした。10年以上前のパソコンではかなり重くて使い辛いが、まあ日常的に確認するものではないので問題なかった。然し今度はブラウザからのログインも不可能にされてしまった。これもSMSによる二段階認証以外の方法はないようである。知らぬ間にセキュリティ強化と称してこちらの選択肢を無くしてしまうやり方にとうとう愛想が尽きた。とりあえず母の携帯を借りてログインし、すぐにアカウントごと消してしまった。</p> + +<h2>選択の自由</h2> +<p> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/draft/keitai.html b/pub/draft/keitai.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>携帯電話を持たない生活</h1> +<h2>はじめに</h2> +<p>学生の頃僕はスマートフォンをよく利用していた。今時の一般的な利用頻度だったと思う。LINEやSNSのアプリをインストールして利用していたし、ニュースや動画もよく閲覧していた。</p> +<p>学生生活も終わりに差し掛った頃、仕送りの残高の確認を怠ったことから一時お金に困ったことがある。親に泣き付くこともできただろうが、間も無く社会人になるこの時期に一度、出費の整理をしようと思いたった。家の中を見渡せばどれもこれも無駄なものばかりが溢れていた。物を片っ端から捨て、買う物を厳選するよう心掛けた。この時に携帯の料金も当然目に付いた。月に何千円も払ってるのがあまりにも無駄に思えた。かと言って電話が使えないのは少し困る。就職先との連絡にも使うかもしれない。この時は携帯電話を完全に解約することは考えず、ただ電話だけのプランに変更した。然しキャリアと少しトラブルがあり、楽天モバイルのサービス開始とも時期が重なったのでそちらに移行することにした。その後すぐ会社を辞めて実家に帰ることになったが、家ではwifiに繋ぎ、外にはほぼ持ち出さないのでずっと無料で使えていた。ところが最近になった突然無料プランが廃止されることになった。</p> +<p>今携帯電話はほとんど使っていない。家に置きっぱなしだし、その家ではwifiがあるので携帯電話の通信は必要ない。なにより僕はこのスマートフォンという機械が嫌いである。root権限を得られず、無駄なアプリが沢山インストールされており、削除することすらできない。更にGoogleのアカウントが無いと満足に使うこともできない。僕はこのハードウェアを購入しただけの積りだったが、どうやら知らぬ間にGoogleとの契約を交してしまったようだ。また、パソコンに慣れているということもあり、タッチパネルが苦手である。年老いたものだ。兎に角どこを取ってもこの機械を持ちたくない理由ばかりである。こんなものの為に毎月千円払うのはなんとも虚しいのだ。</p> +<p>とは言っても電話番号を捨てるのは少しばかりハードルが高かった。SMSによる二段階認証が必要なサービスをいくつか利用していたのだ。然し最近やたらあちこちに自分のアカウントが散らばっているのが気になり、少しずつ解約を進めていた。そして今、パソコンに保存していたパスワードを頼りに使わないものを一通り解約し終わった。これで携帯電話を解約できるはず。</p> +<p>ところがスマートフォンにはLINEが残っていた。アカウントには携帯の電話番号が登録されている。インターネットで検索したりLINEに直接問い合わせたが、どうやらこの番号は消せないようである。丁度良い機会なのでLINEのアカウントも削除してしまおうと思い、した!</p> +<p>胸がすく。</p> + +<h2>Apple、Google、Microsoft</h2> +<p>今の日本に於て携帯電話を持っていないのは異常である。そしてほとんどの携帯はスマートフォンである。スマートフォンのOSと言えばiOS若しくはAndroidがほとんどである。前者を利用するにはAppleのIDが、後者はGoogleのアカウントがそれぞれ必要である。つまりほとんど全ての日本人がAppleかGoogleに紐付いていると言える。もちろん他の選択肢も無いことはないが、それらを利用している人数はほぼ無視できるだろう[要出典]。パソコンの方に目を向けて見ても同じようなものである。最近Windowをインストールして利用するにはMicrosoftのアカウントが必須になったようだ。他のOSはAppleかGoogleのものであるので同じことである。ただしパソコンはLinuxやBSD、Plan9等もあるのでスマートフォンよりは圧倒的にましではある。</p> +<p>世の中の流れとは、あるいは世論とは、本来その世の中に生きる一人一人が作り出すものである。各自が自身の内面からくる欲望と、身近な人への配慮との間に自分の行動が発生するはずだ。ところが今、そういった世の流れはどこか遠くからやって来て、自分達はただその波にゆられるだけである。自分自身が波に影響を与えることがないと多くの人は思っているのではないか。ほんの少し前まではその波はテレビだったり新聞だったりが起していた。ところが今はインターネットに溢れる広告やら検索結果やらで知らぬ間に脳の中に入り込んでいる。</p> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/draft/medical_care.html b/pub/draft/medical_care.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>医療</h1> +<time>2022-01-24</time>作成 +<p> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/draft/openbsd_installation.html b/pub/draft/openbsd_installation.html @@ -0,0 +1,77 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>OpenBSDインストール</h1> +<time>2021-12-16</time> +<p>OpenBSDをノートパソコンにインストールしたのでその時のメモ</p> + +<p>インストール用のライブUSBを作成</p> +<p>ブート</p> +<p>指示通りインストール</p> + +<p>Reboot</p> +<p>通常ユーザーでログインしてルートユーザーになる</p> +<pre><code>$ su +Password: +</code></pre> + +<p><code>doas(1)</code>を設定して通常ユーザーに戻る</p> +<pre><code># cp /etc/examples/doas.conf /etc/ +# sed -i 's/permit keepenv :wheel/permit nopass keepenv :wheel/' /etc/doas.conf +# exit +$ doas echo unko +unko +</code></pre> + +<p><code>syspatch(8)</code>をあてる</p> +<pre><code>$ doas syspatch +... +Relinking to create unique kernel... done. +</pre></code> + +<p><code>apmd(8)</code>を設定</p> +<pre><code>$ doas rcctl enable apmd +$ doas set apmd flags -A -z 10 +$ rcctl start apmd +apmd (ok) +</pre></code> + +<p>wi-fiを設定</p> +<pre><code>$ ifconfig +... +iwn0 flags=... +... +$ ifconfig iwn0 up +$ doas sh -c 'echo "join <i>ssid</i> wpakey <i>password</i> +autoconf" > /etc/hostname.iwn0' +$ doas chown root:wheel /etc/hostname.iwn9 +$ doas chmod 0640 /etc/hostname.iwn0 +$ doas sh /etc/netstart +... +</pre></code> + +<p>必要なパッケージをインストール</p> +<p><code>dotfiles</code>をダウンロード</p> +<p>suckless utilitiesをインストール</p> +<p><code>man(1)</code>のパスを設定</p> +<p><code>slock(1)</code>を設定</p> +<p><code>xenodm(1)</code>を設定</p> +<p><code>mail(1)</code>の設定<a href="https://www.c0ffee.net/blog/openbsd-on-a-laptop/#base-utilities">ref</a></p> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/draft/setting_up_mail_server.html b/pub/draft/setting_up_mail_server.html @@ -0,0 +1,123 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>OpenBSD、OpenSMTPDとDovecotによるメールサーバー構築</h1> +<time>2022-06-15</time> +<h2>はじめに</h2> +<p>長らくGmailを利用していたが、Googleが嫌になったので、自分のドメインを入手したのを機に自前のメールサーバーを構築してみた。</p> +<h2>環境</h2> +<ul> + <li>OpenBSD 7.1</li> + <li>OpenSMTPD 7.0.0</li> + <li>Dovecot 2.3.19</li> + <li>さくらのVPS</li> + <li>ムームードメイン</li> +</ul> + +<h2>手順</h2> +<h3>vmailユーザーを追加</h3> +<pre><code># useradd -m -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail</code></pre> + +<h3>サーバー証明書の発行と設定</h3> +<p>メールサーバーの他にウェブサーバーも設定するので、<code>httpd</code>と共にLet's Encryptを設定。</p> +<p><code>/etc/acme-client.conf</code>の<code>domain</code>を以下のように変更:</p> +<pre><code>domain mail.example.com { + domain key "/etc/ssl/private/mail.example.com.key" + domain full chain certificate "/etc/ssl/mail.example.com.fullchain.pem" + sign with letsencrypt +}</pre></code> + +<pre><code># acme-client -v example.com && rcctl start httpd +# crontab -e +43 1 * * * acme-client -v mail.example.com && rcctl restart smtpd && rcctl reload dovcot +&lt;Esc&gt;:wq</code></pre> + +<h3>smtpdの設定</h3> +<pre><code>pki "mail" cert "/etc/ssl/mail.example.com.fullchain.pem" +pki "mail" key "/etc/ssl/private/mail.example.com.key" + +table aliases file:/etc/mail/aliases +table passwd file:/etc/mail/passwd +table virtuals file:/etc/mail/virtuals + +filter dkimsign_rsa proc-exec\ + "filter-dkimsign -d mail.example.com -s selector1\ + -k /etc/mail/dkim/private.rsa.key" user _dkimsign group _dkimsign + +filter check_rdns phase connect match !rdns disconnect "550 no rDNS." +filter check_fcrdns phase connect match !fcrdns disconnect "550 no FCrDNS." + +listen on socket +listen on lo0 +listen on vio0 port 25 tls pki "mail" hostname "mail.example.com"\ + filter { check_rdns, check_fcrdns } + listen on vio0 mask-src port submission smtps pki "mail"\ + hostname "mail.matsudakenji.xyz" auth <passwd> filter dkimsign_rsa + +action "local_mail" mbox alias <aliases> +action "domain_mail" maildir "/var/vmail/example.com/%{dest.user:lowercase}"\ + virtual <virtuals> +action "outbound" relay + +match from any for domain "example.com" action "domain_mail" +match from local for local action "local_mail" +match from local for any action "outbound" +match auth from any for any action "outbound"</code></pre> + +<h3>メールユーザの設定</h3> +<p><code>/etc/mail/virtuals</code>:</p> +<pre><code>abuse@example.com admin@example.com +postmaster@example.com admin@example.com +webmaster@example.com admin@example.com +admin@example.com vmail +contact@example.com vmail</pre></code> + +<p><code>/etc/mail/passwd</code>:</p> +<pre><code>admin@example.com:$2b$10$..... +contact@example.com:$2b$10$.....</code></pre> + +<pre><code># rcctl restart smtpd</code></pre> + +<h3>Dovecotの設定</h3> +<h4>インストール</h4> +<pre><code># pkg_add dovecot</code></pre> + +<h4>ログインクラスの設定</h4> +<p>これをしないとなんかエラーが出る。</p> +<code>/etc/login.conf</code> +<pre><code>dovecot:\ + :openfiles-cur=1024:\ + :openfiles-max=2048:\ + :tc=daemon:</code></pre> +<pre><code># usermod -L dovecot _dovecot</pre></code> + +<h3>DNSの設定</h3> + +<h3>ファイアーウォールの設定</h3> + +<h3>DKIMproxyの設定</h3> + + +<h2>参考</h2> +<ul> + <li><a href="https://unixsheikh.com/tutorials/arch-linux-mail-server-tutorial-part-1-what-is-email.html">Arch Linux mail server tutorial - part 1 - What is email?</a></li> + <li><a href="https://unixsheikh.com/tutorials/arch-linux-mail-server-tutorial-part-2-opensmtpd-dovecot-dkimproxy-and-lets-encrypt.html">Arch Linux mail server tutorial - part 2 - OpenSMTPD, Dovecot, DKIMproxy, and Let's Encrypt</a></li> +</ul> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/draft/setting_up_web_server.html b/pub/draft/setting_up_web_server.html @@ -0,0 +1,178 @@ +<!DOCTYPE html> +<html lang="ja"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <link rel="stylesheet" type="text/css" href="/static/base.css" /> + <link rel="icon" type="image/x-icon" href="/static/favicon.ico" /> + <title>はつかぜ</title> +</head> +<body> + <header> + </header> + <main> + <article> +<h1>Webサーバーの設定</h1> +<time>2022-06-27</time> + +<h2>はじめに</h2> +<p>OpenBSDでWebサーバーを公開する方法のメモ。といってもmanページが完璧なのであまり書く必要はない。ドメインのあたりの知識は適当なので間違っていたらごめんなさい。コンピュータの知識は全部独学なので多少間違った理解をしていても訂正されることがない。言葉の定義等細かいことがいいかげんになりがちである。</p> + +<h2>環境</h2> +<ul> + <li>OS: OpenBSD 7.1</li> + <li>サーバー: httpd(OpenBSDに付属のもの)</li> + <li>サーバー証明書: Let's Encrypt</li> + <li>サーバー: さくらのVPS。ここではIPアドレスを<code><i>&lt;server_ip&gt;</i></code>とする。</li> + <li>ドメイン: さくらのドメイン。ここでは<code><i>&lt;server_domain&gt;</i></code>とする。</li> +</ul> + +<h2>設定の概要</h2> +<dl> + <dt>サーバーを用意</dt> + <dd>サーバーはウェブサイトのデータを保存し、ブラウザからアクセスされた時にそのデータを送り返すためのものである。ここではさくらのVPSを用いた。 </dd> + <dt>ドメインの取得とDNSの設定</dt> + <dd>インターネット上のサーバー等はIPアドレスを用いて識別されているが、数字の羅列なので人間には覚えにくい。そのためドメイン名という、好きなアルファベットの文字列をIPアドレスと紐付ける。インターネットにはこのドメイン名を用いて紐付いたサーバーと通信できるような仕組みがあり、これをDomain Name System(DNS)という。ドメインはインターネット上で利用料を支払うことで購入できる。IPアドレスとドメイン名の紐付け等DNSの設定は基本的にはドメインを購入したサイトでできるはずである。</dd> + <dt>httpdの設定</dt> + <dd>VPS上でサーバー用のソフトウェアを設定、起動する。</dd> + <dt>証明書の発行と自動更新の設定</dt> + <dd>ウェブブラウザとサーバーの間で暗号化された通信を行うために必要なものである。</dd> + <dt>ホームページのファイルをアップロード</dt> + <dd>ウェブページで配信したいものをVPSにアップロードする。</dd> + <dt>接続の確認</dd> +</dl> + +<h2>サーバーを用意</h2> +<p>サーバーをどこかで契約する。ここではさくらのVPSを利用。</p> + +<h2>ドメインの取得とDNSの設定</h2> +<p>ドメインを好きな場所で取得してDNSを設定する。さくらのドメインではドメインコントロールパネルのゾーン情報から設定できる。ここではサブドメインなしのものと、サブドメインがwwwのものを設定した。VPSのIPアドレスはVPSのコントロールパネルから確認できる。</p> +<pre><code>HOST TYPE POINTS TO TTL +<i>&lt;server_domain&gt;</i> A <i>&lt;server_ip&gt;</i> 3600 +www.<i>&lt;server_domain&gt;</i> A <i>&lt;server_ip&gt;</i> 3600</code></pre> +<p><code>HOST</code>はサーバーのFQDN。コントロールパネル上ではサブドメインの部分だけを設定すればよい。サブドメインが無い場合は<code>@</code>と記入する。<code>TYPE</code>は設定するレコードの属性でIPv4のサブドメインを設定する場合は<code>A</code>。この他、IPv6用の<code>AAAA</code>やメールサーバー用の<code>MX</code>、サーバーの別名を登録する<code>CNAME</code>等がある。<code>POINTS TO</code>はサーバーのIPアドレス。<code>TTL</code>はDNSのキャッシュの生存時間の秒数で、DNSの登録内容を変更した際にその変更が世界中のDNSサーバーに反映されるまでにかかる最大の時間である。世界中から多くのアクセスがあるサーバーの場合、DNSの登録内容を変更する前にTTLを短かくしておかないと、キャッシュが破棄されるまでアクセス不能になる。個人のウェブページではまあそんなにアクセスもないし適当でよさそう。ここでは1時間を指定した。</p> +<p>この設定が反映されれば、ドメイン名からサーバーにアクセスできるようになる。</p> +<pre><code>$ ping <i>&lt;server_domain&gt;</i> +PING <i>&lt;server_domain&gt;</i> (<i>&lt;server_ip&gt;</i>): 56 data bytes +64 bytes from <i>&lt;server_ip&gt;</i>: icmp_seq=0 ttl=243 time=38.032 ms +64 bytes from <i>&lt;server_ip&gt;</i>: icmp_seq=1 ttl=243 time=27.923 ms +^C</code></pre> + +<h2>httpdの設定</h2> +<p>VPSにログインし、httpdを設定する。まずは<code>/etc/examples/</code>にある設定ファイルのサンプルを<code>/etc/</code>にコピーして必要な部分を変更する。</p> +<pre><code>$ doas cp /etc/examples/httpd.conf /etc/ +vi /etc/httpd.conf</code></pre> + +<pre><code># $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $ + +server "<i>&lt;server_domain&gt;</i>" { + listen on * port 80 + location "/.well-known/acme-challenge/*" { + root "/acme" + request strip 2 + } + location * { + block return 302 "https://$HTTP_HOST$REQUEST_URI" + } +} + +server "<i>&lt;server_domain&gt;</i>" { + listen on * tls port 443 + tls { + certificate "/etc/ssl/<i>&lt;server_domain&gt;</i>.fullchain.pem" + key "/etc/ssl/private/<i>&lt;server_domain&gt;</i>.key" + } + location "/.well-known/acme-challenge/*" { + root "/acme" + request strip 2 + } + location "*" { + root "/htdocs/www.<i>&lt;server_domain&gt;</i>" + directory auto index + } +}</pre></code> +<p>一つ目の<code>server</code>ディレクティブは80番ポートにアクセスがあった時の設定。80番ポートは暗号化なしのアクセスなので、二つ目の<code>location</code>ディレクティブで暗号化ありの<code>https</code>の方にリダイレクトさせるようにしている。一つ目の<code>location</code>ディレクティブは<code>acme-client</code>がサーバー証明書を発行する際にアクセスされる場所である。既定値のままにしておけばよい。二つ目の<code>server</code>ディレクティブは443番ポートにアクセスがあった時の設定。<code>tls</code>ディレクティブにおいてサーバー証明書と、暗号化に利用する鍵が設定されている。これも既定値のままでいい。<code>location</code>ディレクティブはウェブサーバーにアクセスがあった時の処理である。一つ目は80番ポートと同じく<code>acme-client</code>用。二つ目はそれ以外である。<code>root</code>(ドキュメントルート)はアクセスがあったときにどこのディレクトリからファイルを探すかを決めるもので、<code>/var/www</code>からの相対パスで記述する。ここでは<code>/htdocs/www.<i>&lt;server_domain&gt;</i></code>にしたのでウェブページのデータは<code>/var/www/htdock/www.<i>&lt;server_domain&gt;</i>/</code>というディレクトリ以下に配置することになる。</p> +<p>ここで一度<code>httpd</code>を<code>-n</code>オプションを付けて実行し、設定ファイルのミスがないか確認しておく。</p> +<pre><code>$ doas httpd -n +configration OK</code></pre> + +<h2>証明書の発行と自動更新の設定</h2> +<p>httpsによる暗号化に対応するため、Let's Encryptを使って証明書を発行する。OpenBSDには<code>acme-client</code>という便利なスクリプトが付いてきてほぼ全部自動でやってくれる。まずはこの<code>acme-client</code>の設定を変更して自分のドメインの証明書を取得するようにする。</p> +<pre><code>$ doas cp /etc/examples/acme-client.conf /etc/ +$ doas vi /etc/acme-client.conf</code></pre> +<pre><code># +# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $ +# +authority letsencrypt { + api url "https://acme-v02.api.letsencrypt.org/directory" + account key "/etc/acme/letsencrypt-privkey.pem" +} + +authority letsencrypt-staging { + api url "https://acme-staging-v02.api.letsencrypt.org/directory" + account key "/etc/acme/letsencrypt-staging-privkey.pem" +} + +authority buypass { + api url "https://api.buypass.com/acme/directory" + account key "/etc/acme/buypass-privkey.pem" + contact "mailto:<i>&lt;your_mail_address&gt;</i>" +} + +authority buypass-test { + api url "https://api.test4.buypass.no/acme/directory" + account key "/etc/acme/buypass-test-privkey.pem" + contact "mailto:<i>&lt;your_mail_address&gt;</i>" +} + +domain <i>&lt;server_domain&gt;</i> { + alternative names { secure.<i>&lt;server_domain&gt;</i> } + domain key "/etc/ssl/private/<i>&lt;server_domain&gt;</i>.key" + domain full chain certificate "/etc/ssl/<i>&lt;server_domain&gt;</i>.fullchain.pem" + sign with letsencrypt +}</code></pre> +<p>変更箇所は<code>contact</code>の部分のメールアドレスと、<code>domain</code>の部分のドメイン名。</p> +<p>続いて<code>acme-client</code>を実行して証明書を発行する。</p> +<pre><code>$ doas acme-client -v <i>&lt;server_domain&gt;</i></code></pre> +<p>次に<code>cron</code>を用いて証明書の自動更新を行うようにする。</p> +<pre><code>$ doas crontab -e</code></pre> +<pre><code>... +#minute hour mday month wday [flags] command +19 2 * * * acme-client -v <i>&lt;server_domain&gt;</i> && rcctl reload httpd +... +</code></pre> +<p>ここで設定した時間は適当。サーバーが暇そうな時間にする。僕のサーバーはいつも暇。</p> + +<h2>ホームページのファイルのアップロード</h2> +<p>ウェブページに表示させたい内容のファイルをサーバーにアップロードする。試すだけであれば適当なファイルでいい。場所は今回の設定では<code>/var/www/htdocs/www.<i>&lt;server_domain&gt;</i>/</code>以下。ただし<code>httpd.conf</code>で<code>chroot</code>や、<code>server</code>ディレクティブの<code>location</code>ディレクティブの<code>root</code>の値を変更していれば、<code><i>&lt;chroot&gt;</i>/<i>&lt;root&gt;</i>/</code>にアップロードする。ここではテストのために適当なものを置いておく。</p> +<pre><code>$ doas mkdir /var/www/htdocs/www.<i>&lt;server_domain&gt;</i> +$ echo '&lt;h1&gt;unko&lt;/h1&gt;' | doas tee /var/www/htdocs/pub/index.html</code></pre> + +<h2>接続の確認</h2> +<p>最後に<code>httpd</code>を起動して接続を確認する。まずは<code>rc.conf.local</code>に<code>httpd</code>の起動を許可するように記入。</p> +<pre><code>$ echo 'httpd_flags=' | doas tee -a /etc/rc.conf/local</code></pre> +<p>続いてrcに登録、起動。</p> +<pre><code>$ doas rcctl start httpd +$ doas rcctl enable httpd</code></pre> +<p>ブラウザでアクセスしてみる。</p> + +<h2>おわりに</h2> +<p>とりあえず残したかったので書いてみたが、冒頭でも言った通り知識が曖昧であることに気づかされた。文章もいまいち分かりにくい箇所が多いがとりあえずこのまま置いておく。日記の記事ではないので気が向いたときに少しずつ改訂できればいいかな。</p> + +<h2>参考文献</h2> +<ul> + <li><a href="https://man.openbsd.org/httpd">httpd(8)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/httpd.conf">httpd.conf(5)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/acme-client">acme-crient(1)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/acme-client.conf">acme-crient.conf(5)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://man.openbsd.org/crontab">crontab(1)</a>.Openbsd manual pages.2022-06-27閲覧</li> + <li><a href="https://letsencrypt.org/">Let's Encrypt</a>.Let's Encrypt.2022-06-27閲覧</li> + <li><a href="https://ja.wikipedia.org/wiki/Time_to_live#DNS%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AETime_to_live">Time to live</a>.Wikipedia.2022-06-27閲覧</li> +</ul> + </article> + + </main> + <footer> + </footer> +</body> +</html> diff --git a/pub/sitemap.xml b/pub/sitemap.xml @@ -5,6 +5,12 @@ <url><loc>https://www.matsudakenji.xyz/computer/</loc><lastmod>2022-06-8</lastmod></url> <url><loc>https://www.matsudakenji.xyz/computer/rtx1200-qos.html</loc><lastmod>2022-01-15</lastmod></url> <url><loc>https://www.matsudakenji.xyz/computer/what-i-use.html</loc><lastmod>2021-12-13</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/how_to_throw_away_smart_phone.html</loc><lastmod>2022-06-25</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/keitai.html</loc><lastmod>2022-06-6</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/medical_care.html</loc><lastmod>2022-01-24</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/openbsd_installation.html</loc><lastmod>2022-06-25</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/setting_up_mail_server.html</loc><lastmod>2022-06-23</lastmod></url> +<url><loc>https://www.matsudakenji.xyz/draft/setting_up_web_server.html</loc><lastmod>2022-06-27</lastmod></url> <url><loc>https://www.matsudakenji.xyz/error/404.html</loc><lastmod>2021-06-18</lastmod></url> <url><loc>https://www.matsudakenji.xyz/error/moved.html</loc><lastmod>2022-01-14</lastmod></url> <url><loc>https://www.matsudakenji.xyz/farm/</loc><lastmod>2022-06-8</lastmod></url> diff --git a/pub/static/base.css b/pub/static/base.css @@ -9,6 +9,10 @@ a { text-decoration: none; } +i { + font-style: italic; +} + figure { background-color #2b2b2b; } diff --git a/rss.xml b/rss.xml @@ -0,0 +1,25 @@ +<rss version="2.0"> +<channel> + <title>はつかぜ</title> + <description>はつかぜの更新履歴</description> + <language>ja-jp</language> + <link>https://matsudakenji.xyz/rss.xml</link> + <atom:link href="https://matsudakenji.xyz/rss.xml" rel="self" type="application/rss+xml"/> + <image> + <title>はつかぜ</title> + <url>https://matsudakenji.xyz/static/icon.jpeg</url> + <link>https://matsudakenji.xyz/rss.xml</link> + </image> + + <item> + <title>Title</title> + <guid>https://matsudakenji.xyz/#</guid> + <link>https://matsudakenji.xyz/#</link> + <pubDate></pubDate> + <description> + main content here + </description> + </item> + +</channel> +</rss> diff --git a/test b/test @@ -0,0 +1,2 @@ +unko2 +unko2