<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>インフラTips on えやみぐさ</title>
    <link>https://blog.aoirint.com/categories/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9tips/</link>
    <description>Recent content in インフラTips on えやみぐさ</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>ja</language>
    <lastBuildDate>Sat, 09 Dec 2023 17:25:00 +0900</lastBuildDate>
    <atom:link href="https://blog.aoirint.com/categories/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9tips/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ubuntu, ファイルシステムがマウントされていない場合に書き込みを失敗させる</title>
      <link>https://blog.aoirint.com/entry/2023/ubuntu_fail_write_operation_if_unmounted/</link>
      <pubDate>Sat, 09 Dec 2023 17:25:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/ubuntu_fail_write_operation_if_unmounted/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;ext4ファイルシステム&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;外部ストレージなどのファイルシステムのマウントに失敗したとき、
定期実行スクリプトやDockerコンテナなどが、実際にはマウントされていないマウントポイント以下に書き込みしてしまう場合があります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/fstab&lt;/code&gt;から&lt;code&gt;nofail&lt;/code&gt;の指定を外せば、マウントに失敗した場合にOSが起動しなくなることで誤った操作を防げますが、
外部ストレージと関係のない他のサービスが共存している、遠隔操作を前提とした運用をしている、などの理由で、OSは起動してほしい場合があります。&lt;/p&gt;
&lt;p&gt;マウントポイントがext4ファイルシステムにある場合、&lt;code&gt;chattr&lt;/code&gt;コマンドを使って、変更を禁止することができます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/mnt/mystorage&lt;/code&gt;のマウントを解除した状態で、以下のように指定します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chattr +i /mnt/mystorage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これによりマウントしている間、immutable属性がなくなり、変更できるようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount /mnt/mystorage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/570255/prevent-the-possiblity-of-writing-data-to-an-unmounted-mount-point-directory&#34;&gt;linux - Prevent the possiblity of writing data to an unmounted mount point directory - Server Fault&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://linux.die.net/man/1/chattr&#34;&gt;chattr(1): change file attribs on file system - Linux man page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>MinIO CLI（mcコマンド）でエイリアスが登録されているか確認する</title>
      <link>https://blog.aoirint.com/entry/2023/minio_cli_check_if_alias_exists/</link>
      <pubDate>Sat, 09 Dec 2023 17:05:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/minio_cli_check_if_alias_exists/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ mc --version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mc version RELEASE.2023-12-02T11-24-10Z &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;commit-id&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;d920e2b34b22a15bca4cd081201d3b301c623d87&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Runtime: go1.21.5 linux/amd64
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Copyright &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 2015-2023 MinIO, Inc.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;License GNU AGPLv3 &amp;lt;https://www.gnu.org/licenses/agpl-3.0.html&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;MinIO CLI（mcコマンド）では、サーバーURLや認証情報などを&lt;code&gt;mc alias set&lt;/code&gt;コマンドで保存して、
設定したエイリアスを使って操作します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mc cp&lt;/code&gt;や&lt;code&gt;mc mirror&lt;/code&gt;では、&lt;code&gt;{alias}/{bucket}/{object}&lt;/code&gt;のように操作対象のオブジェクトを指定します。
このとき&lt;code&gt;alias&lt;/code&gt;が登録されていなかった場合、ファイルシステム上の相対パスとして扱われるため、意図しない操作が行われるおそれがあります。&lt;/p&gt;
&lt;p&gt;エイリアス&lt;code&gt;myalias&lt;/code&gt;が登録されているかどうかは、&lt;code&gt;mc alias list {alias}&lt;/code&gt;コマンドの終了コードで判別できます。
終了コードが0の場合、エイリアスは存在します。終了コードが1の場合、エイリアスは存在しません。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mc alias list myalias
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo $?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;シェルスクリプトでは、以下のようなコードを追加して、エイリアスが存在しなかった場合にスクリプトを異常終了させられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# set +e&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# check alias exists&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mc alias list myalias &amp;gt;/dev/null 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; $? !&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: mc alias myalias does not exist&amp;#34;&lt;/span&gt; &amp;gt; /dev/stderr
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# set -e&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Dockerコンテナ内の名前解決をプライベートIPアドレスにする</title>
      <link>https://blog.aoirint.com/entry/2023/docker_private_ip_extra_hosts/</link>
      <pubDate>Sat, 09 Dec 2023 16:50:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/docker_private_ip_extra_hosts/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Docker Engine 24.0&lt;/li&gt;
&lt;li&gt;Docker Compose 2.21&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;プライベートDNSを運用しているネットワークで、
Dockerコンテナからネットワーク内の別のホストに通信したいとき、
デフォルトではGoogle Public DNS&lt;code&gt;8.8.8.8&lt;/code&gt;でホスト名がグローバルIPアドレスに解決されるため、
ISPやCloudflare Tunnelなどの外部を経由して通信することになり、非効率で危険な通信経路になります。&lt;/p&gt;
&lt;p&gt;また、IPアドレスによるアクセス制限を設けている場合、
プライベートIPアドレスがソースとなる通信になるように通信経路を制御したい場合があります。&lt;/p&gt;
&lt;p&gt;以下の設定により、コンテナ内で&lt;code&gt;example.com&lt;/code&gt;が&lt;code&gt;192.168.0.50&lt;/code&gt;に解決されるようになります。&lt;/p&gt;
&lt;h2 id=&#34;docker&#34;&gt;Docker&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker run --rm --add-host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;example.com:192.168.0.50&amp;#34;&lt;/span&gt; hello-world
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/engine/reference/run/#managing-etchosts&#34;&gt;Managing /etc/hosts - Docker run reference | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker-compose&#34;&gt;Docker Compose&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hello-world&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;extra_hosts&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;example.com:192.168.0.50&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/compose/compose-file/05-services/#extra_hosts&#34;&gt;extra_hosts - Services top-level element | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Docker Registryをホストしてhtpasswdで認証する</title>
      <link>https://blog.aoirint.com/entry/2023/self_hosted_docker_registry_htpasswd_auth/</link>
      <pubDate>Sat, 09 Dec 2023 14:50:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/self_hosted_docker_registry_htpasswd_auth/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/_/registry/&#34;&gt;registry - Official Image | Docker Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://distribution.github.io/distribution/about/deploying/#native-basic-auth&#34;&gt;Native basic auth - Restricting access - Deploy a registry server | CNCF Distribution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;htpasswdファイルの作成&#34;&gt;htpasswdファイルの作成&lt;/h2&gt;
&lt;p&gt;htpasswdファイルを作成します。
registryイメージ（Distribution Registry）はbcrypt形式のパスワードのみサポートしているため、パスワードをbcrypt形式でハッシュ化する必要があります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install apache2-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir auth
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd auth
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;htpasswd -cB htpasswd myuser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;永続化ディレクトリの作成&#34;&gt;永続化ディレクトリの作成&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;docker-composeymlファイルの作成&#34;&gt;docker-compose.ymlファイルの作成&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;registry&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;registry:2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_AUTH&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;htpasswd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_AUTH_HTPASSWD_PATH&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/auth/htpasswd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_AUTH_HTPASSWD_REALM&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Registry Realm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# ports:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#   - &amp;#34;0.0.0.0:5000:5000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./data:/var/lib/registry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./auth:/auth&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;コンテナの実行&#34;&gt;コンテナの実行&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コンテナのTCP 5000番ポートでDocker Registry HTTP APIがリッスンします。
このポート宛にCloudflaredやリバースプロキシを設定して、&lt;code&gt;https://docker.example.com&lt;/code&gt;のようにサービスを公開します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockerコンテナのメモリ使用量を制限する</title>
      <link>https://blog.aoirint.com/entry/2023/docker_limit_memory_usage/</link>
      <pubDate>Sat, 09 Dec 2023 14:10:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/docker_limit_memory_usage/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Docker Engine 24.0&lt;/li&gt;
&lt;li&gt;Docker Compose 2.21&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker&#34;&gt;Docker&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 100 MB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --memory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;100m&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 1 GB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --memory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1g&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 制限を解除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --memory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;docker-compose&#34;&gt;Docker Compose&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hello-world&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;resources&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;limits&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;memory&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1g&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/34654697/update-the-limitation-of-memory-cpu-for-existing-container-in-docker&#34;&gt;Update the limitation of memory/CPU for existing container in docker - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler&#34;&gt;Runtime options with Memory, CPUs, and GPUs | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/compose/compose-file/deploy/#resources&#34;&gt;Compose Deploy Specification | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>DockerコンテナのCPU使用量を制限する</title>
      <link>https://blog.aoirint.com/entry/2023/docker_limit_cpu_usage/</link>
      <pubDate>Sat, 09 Dec 2023 14:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/docker_limit_cpu_usage/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Docker Engine 24.0&lt;/li&gt;
&lt;li&gt;Docker Compose 2.21&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker&#34;&gt;Docker&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# CPU 1個&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --cpus &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# CPU 0.01個（最小）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --cpus &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.01&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 制限を解除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo docker update --cpus &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CONTAINER_ID&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;docker-compose&#34;&gt;Docker Compose&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;hello-world&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;resources&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;limits&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;cpus&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/34654697/update-the-limitation-of-memory-cpu-for-existing-container-in-docker&#34;&gt;Update the limitation of memory/CPU for existing container in docker - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler&#34;&gt;Runtime options with Memory, CPUs, and GPUs | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/compose/compose-file/deploy/#resources&#34;&gt;Compose Deploy Specification | Docker Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ubuntu 22.04, コマンドラインでパスワードをハッシュ化する（htpasswd bcrypt, doveadm SHA-512, openssl SHA-512）</title>
      <link>https://blog.aoirint.com/entry/2023/hash_password_on_command_line/</link>
      <pubDate>Wed, 01 Nov 2023 23:45:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/hash_password_on_command_line/</guid>
      <description>&lt;h2 id=&#34;htpasswd--bcrypt&#34;&gt;htpasswd + bcrypt&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt install apache2-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt list --installed apache2-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apache2-utils/jammy-updates,now 2.4.52-1ubuntu4.6 amd64 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;installed&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ htpasswd -nB myuser
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;New password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Re-type new password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;myuser:$2y$05$aw7xqaxQ207POKX8bavQleo52mb1jxRT7WenwvXqW21FA4wnygHjq
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/307994/compute-bcrypt-hash-from-command-line&#34;&gt;password - Compute bcrypt hash from command line - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;doveadm--sha-512&#34;&gt;doveadm + SHA-512&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt install dovecot-core
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt list --installed dovecot-core
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dovecot-core/jammy-updates,now 1:2.3.16+dfsg1-3ubuntu2.2 amd64 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;installed&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ doveadm pw -s SHA512-CRYPT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter new password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Retype new password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;SHA512-CRYPT&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;$6$jtT1Mdke./dCtWSp$5ptqP0pgduBjHiRHCfh0nrWstAI46Jmytf88VlrJgpMsBPSNVhFG1cdgxkHVAXLporwb0d9pcYskAfFPqdtEy1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/52108/how-to-create-sha512-password-hashes-on-command-line&#34;&gt;security - How to create SHA512 password hashes on command line - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;openssl--sha-512&#34;&gt;openssl + SHA-512&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt list --installed openssl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;openssl/jammy-updates,jammy-security,now 3.0.2-0ubuntu1.12 amd64 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;installed&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ openssl version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OpenSSL 3.0.2 &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; Mar &lt;span style=&#34;color:#ae81ff&#34;&gt;2022&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;Library: OpenSSL 3.0.2 &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; Mar 2022&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ openssl passwd -6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Verifying - Password: password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$6$TmbOcErpIJRy.gWH$phJqAZzmdBj206D4kQEJNEq638KJyUwcnLbK61yBQeVsImjIg0SYXeClDjyMFCVCAvjqeNszhwtz1aUtTPKo70
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/52108/how-to-create-sha512-password-hashes-on-command-line&#34;&gt;security - How to create SHA512 password hashes on command line - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/yumenomatayume/items/2c77ec52e7b2257f6800&#34;&gt;LinuxでSHA-512のパスワードハッシュ作成方法まとめ #Python - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ubuntu コマンドの実行を1度だけスケジュールする（atコマンド）</title>
      <link>https://blog.aoirint.com/entry/2023/ubuntu_at_command/</link>
      <pubDate>Wed, 28 Jun 2023 19:15:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/ubuntu_at_command/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install at
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コマンドは&lt;code&gt;/bin/sh&lt;/code&gt;で実行される。&lt;/p&gt;
&lt;h2 id=&#34;次の1800に1度だけコマンドを実行&#34;&gt;次の18:00に1度だけコマンドを実行&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wondershaper clear eno1&amp;#39;&lt;/span&gt; | sudo at 18:00
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2023年6月29日-1800に1度だけコマンドを実行&#34;&gt;2023年6月29日 18:00に1度だけコマンドを実行&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wondershaper clear eno1&amp;#39;&lt;/span&gt; | sudo at 18:00 2023-06-29
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;実行スケジュールジョブ一覧を確認する&#34;&gt;実行スケジュール（ジョブ一覧）を確認する&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo at -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;ジョブ1番の実行スケジュールをキャンセルする&#34;&gt;ジョブ1番の実行スケジュールをキャンセルする&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo at -d &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://yuya-hirooka.hatenablog.com/entry/2021/01/22/215657&#34;&gt;https://yuya-hirooka.hatenablog.com/entry/2021/01/22/215657&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ubuntu ネットワーク帯域を制限する（Wondershaper）</title>
      <link>https://blog.aoirint.com/entry/2023/ubuntu_limit_network_bandwidth/</link>
      <pubDate>Wed, 28 Jun 2023 19:15:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/ubuntu_limit_network_bandwidth/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install wondershaper
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 上下300kbpsに制限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper eno1 &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper enp0s31f6 &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 下り1000kbps、上り300kbpsに制限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper eno1 &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper enp0s31f6 &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;300&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 帯域制限を解除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper clear eno1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo wondershaper clear enp0s31f6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://askubuntu.com/questions/20872/how-do-i-limit-internet-bandwidth&#34;&gt;https://askubuntu.com/questions/20872/how-do-i-limit-internet-bandwidth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rootユーザでbinshによるコマンド実行をスケジュールatコマンド&#34;&gt;rootユーザで/bin/shによるコマンド実行をスケジュール（atコマンド）&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wondershaper eno1 300 300&amp;#34;&lt;/span&gt; | sudo at 18:00 2023-06-29
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wondershaper clear eno1&amp;#34;&lt;/span&gt; | sudo at 2:00 2023-06-29
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ubuntu ネットワーク通信量をターミナルからグラフで見る（Speedometer）</title>
      <link>https://blog.aoirint.com/entry/2023/ubuntu_terminal_network_traffic_graph/</link>
      <pubDate>Fri, 19 May 2023 09:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/ubuntu_terminal_network_traffic_graph/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Ubuntu Server 22.04&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install speedometer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通信量を見たいネットワークデバイスの名前を調べる（&lt;code&gt;eno1&lt;/code&gt;、&lt;code&gt;enp0s31f6&lt;/code&gt;、&lt;code&gt;enp3s0&lt;/code&gt;、&lt;code&gt;eth0&lt;/code&gt;、&lt;code&gt;wlan0&lt;/code&gt;など）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip addr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;eno1&lt;/code&gt;を目的のデバイスの名前に置き換えて、以下のコマンドを実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speedometer -l -r eno1 -t eno1 -m &lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# other examples&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speedometer -l -r enp0s31f6 -t enp0s31f6 -m &lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speedometer -l -r enp3s0 -t enp3s0 -m &lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speedometer -l -r eth0 -t eth0 -m &lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speedometer -l -r wlan0 -t wlan0 -m &lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://askubuntu.com/questions/257263/how-to-display-network-traffic-in-the-terminal&#34;&gt;networking - How to display network traffic in the terminal? - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Jenkinsのapt GPGキーを更新する</title>
      <link>https://blog.aoirint.com/entry/2023/jenkins_update_apt_gpg_key/</link>
      <pubDate>Mon, 17 Apr 2023 09:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/jenkins_update_apt_gpg_key/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Err:9 https://pkg.jenkins.io/debian-stable binary/ Release.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY 5BA31D57EF5975CA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://pkg.jenkins.io/debian-stable binary/ Release: The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY 5BA31D57EF5975CA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: Failed to fetch https://pkg.jenkins.io/debian-stable/binary/Release.gpg  The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY 5BA31D57EF5975CA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: Some index files failed to download. They have been ignored, or old ones used instead.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&#34;Jenkins GPG key update notice&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2023/jenkins_update_apt_gpg_key/images/jenkins_gpg_key_update_notice.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>自宅サーバのDocker NetworkのIPアドレスプールが枯渇した</title>
      <link>https://blog.aoirint.com/entry/2023/docker_network_ip_address_pool_exhaustion/</link>
      <pubDate>Thu, 26 Jan 2023 04:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/docker_network_ip_address_pool_exhaustion/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/aoirint/status/1617993934625722368&#34;&gt;https://twitter.com/aoirint/status/1617993934625722368&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;弊自宅サーバでは、サーバソフトウェアや定期実行プログラムのデプロイに、基本的にDocker Composeを使用しています。&lt;/p&gt;
&lt;p&gt;先日、新しいソフトウェアをDocker Composeでデプロイしようとして、以下のエラーが発生しました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Docker Networkが使用するIPアドレスプールが枯渇し、新しいIPアドレスブロックを確保できなかったという内容のエラーです。&lt;/p&gt;
&lt;h2 id=&#34;環境&#34;&gt;環境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker -v
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Docker version 20.10.23, build &lt;span style=&#34;color:#ae81ff&#34;&gt;7155243&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker compose version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Docker Compose version v2.15.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;原因&#34;&gt;原因&lt;/h2&gt;
&lt;p&gt;このエラーは、30個程度のDocker Networkを作成すると発生するようです。&lt;/p&gt;
&lt;p&gt;Docker Composeでは通常、プロジェクト1つあたり、1つのDocker Networkが作成されます（複雑なプロジェクトでは、2つ以上使用することがあるかもしれません）。
手元の環境では、Docker Composeのプロジェクトが27個稼働しており、28個目のプロジェクトを起動したときにエラーが発生しました。&lt;/p&gt;
&lt;p&gt;Docker Networkの一覧は、以下のコマンドで確認できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker network ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Docker NetworkのIPアドレスには、いわゆるプライベートIPアドレスの範囲が使用されます。&lt;/p&gt;
&lt;p&gt;プライベートIPアドレスの範囲は、以下のようになります（CIDR表記）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10.0.0.0/8&lt;/li&gt;
&lt;li&gt;172.16.0.0/12&lt;/li&gt;
&lt;li&gt;192.168.0.0/16&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作成されたDocker Networkに割り当てられたIPレンジは&lt;code&gt;docker network inspect&lt;/code&gt;コマンドで確認できます。
以下の記事で紹介されているコマンドが便利です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HashiCorpのapt GPGキーを更新する</title>
      <link>https://blog.aoirint.com/entry/2023/hashicorp_update_apt_gpg_key/</link>
      <pubDate>Wed, 25 Jan 2023 04:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/hashicorp_update_apt_gpg_key/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Err:2 https://apt.releases.hashicorp.com focal InRelease
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://apt.releases.hashicorp.com focal InRelease: The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: Failed to fetch https://apt.releases.hashicorp.com/dists/focal/InRelease  The following signatures couldn&amp;#39;t be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;W: Some index files failed to download. They have been ignored, or old ones used instead.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.hashicorp.com/terraform/cli/install/apt&#34;&gt;https://developer.hashicorp.com/terraform/cli/install/apt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;lsb_release -cs&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; main&amp;#34;&lt;/span&gt; | sudo tee /etc/apt/sources.list.d/hashicorp.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>自宅ネットワークのbind9をdocker composeに移行した</title>
      <link>https://blog.aoirint.com/entry/2023/bind9_docker_compose/</link>
      <pubDate>Wed, 25 Jan 2023 03:40:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2023/bind9_docker_compose/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;自宅ネットワークのbind9をdocker compose化したので記録。&lt;/li&gt;
&lt;li&gt;これまでホストで直接動かしていたけれど、OOM Killerか何かに3,4日に1度くらいでキルされていたので不便だった&lt;/li&gt;
&lt;li&gt;これでdocker composeのrestart機構で再起動がかかるようになる
&lt;ul&gt;
&lt;li&gt;systemdのrestart機構ワカラナイ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dockerイメージ: &lt;a href=&#34;https://hub.docker.com/r/ubuntu/bind9&#34;&gt;https://hub.docker.com/r/ubuntu/bind9&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;コード&#34;&gt;コード&lt;/h2&gt;
&lt;h3 id=&#34;docker-composeyml&#34;&gt;docker-compose.yml&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;bind9&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;ubuntu/bind9:9.18-22.04_beta&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0.0.0:53:53/udp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./volumes/bind_etc/named.conf.local:/etc/bind/named.conf.local:ro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./volumes/bind_etc/named.conf.options:/etc/bind/named.conf.options:ro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./volumes/bind_var_cache:/var/cache/bind:rw&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./volumes/bind_var_lib:/var/lib/bind:rw&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;TZ=Asia/Tokyo&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BIND9_USER=bind&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# UID=101&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;volumesbind_etcnamedconfoptions&#34;&gt;volumes/bind_etc/named.conf.options&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-named&#34; data-lang=&#34;named&#34;&gt;acl my-network {
  10.0.0.0/8;
  172.16.0.0/12;
  192.168.0.0/16;
  localhost;
};

options {
  directory &amp;#34;/var/cache/bind&amp;#34;;
  response-policy { zone &amp;#34;rpz&amp;#34;; };

  allow-query { any; };
  allow-recursion { my-network; };
  allow-query-cache { my-network; };

  dnssec-validation auto;

  forward only;
  forwarders {
    # ISP DNS1;
    # ISP DNS2;
    8.8.8.8;
    8.8.4.4;
    1.1.1.1;
  };
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;volumesbind_etcnamedconflocal&#34;&gt;volumes/bind_etc/named.conf.local&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-named&#34; data-lang=&#34;named&#34;&gt;zone &amp;#34;example.com&amp;#34; IN {
  type master;
  file &amp;#34;example.com.zone&amp;#34;;
};

zone &amp;#34;rpz&amp;#34; {
  type master;
  file &amp;#34;rpz.zone&amp;#34;;
  allow-query { none; };
};
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;volumesbind_var_cacheexamplecomzone&#34;&gt;volumes/bind_var_cache/example.com.zone&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-zone&#34; data-lang=&#34;zone&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$ORIGIN&lt;/span&gt; example.com.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$TTL&lt;/span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@&lt;/span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;SOA&lt;/span&gt;   ns.example.com.   &lt;span style=&#34;color:#a6e22e&#34;&gt;root.example.com&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;2023012500&lt;/span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;; Serial&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;3600&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;; Refresh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;900&lt;/span&gt;             &lt;span style=&#34;color:#75715e&#34;&gt;; Retry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;604800&lt;/span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;; Expire&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;86400&lt;/span&gt;           &lt;span style=&#34;color:#75715e&#34;&gt;; Minimum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;NS&lt;/span&gt;    ns.example.com.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ns&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt;     &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@&lt;/span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt;     &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;sub&lt;/span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;CNAME&lt;/span&gt; example.com.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;volumesbind_var_cacherpzzone&#34;&gt;volumes/bind_var_cache/rpz.zone&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-zone&#34; data-lang=&#34;zone&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$TTL&lt;/span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@&lt;/span&gt;       &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;SOA&lt;/span&gt;   localhost. root.localhost. (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;2023012500&lt;/span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;; Serial&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;3600&lt;/span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;; Refresh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;900&lt;/span&gt;             &lt;span style=&#34;color:#75715e&#34;&gt;; Retry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;604800&lt;/span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;; Expire&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;86400&lt;/span&gt;           &lt;span style=&#34;color:#75715e&#34;&gt;; Minimum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;NS&lt;/span&gt;    localhost.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;; block malicious domains&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;malicious.example.com&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.0.0.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;既知の問題&#34;&gt;既知の問題&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;libvirt dnsmasqが53/udpを先に取ると動かなくなりそう？&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ホストのbind9をアンインストール&#34;&gt;ホストのbind9をアンインストール&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt purge bind9
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rm -rf /var/cache/bind/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>OpenVPNとnginxをOpenVPNのPort Share機能で共存させる</title>
      <link>https://blog.aoirint.com/entry/2022/openvpn_nginx_port_share/</link>
      <pubDate>Wed, 19 Oct 2022 00:50:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/openvpn_nginx_port_share/</guid>
      <description>&lt;p&gt;TCP 443番ポートは、一般にHTTPSの通信に使われ、ファイアウォールやプロキシによる制限の強いネットワークでも通過できることが多い。
一方、WebサーバをホストしたいIPアドレスと、443番ポートでVPNをホストしたいIPアドレスが同一の場合、443番ポートの取り合い（ポート番号の重複）が起きてしまう。&lt;/p&gt;
&lt;p&gt;OpenVPNには、OpenVPNが待ち受けるポートへの通信が、
VPNのパケットか、VPN以外のパケット（例えばnginxへのHTTPS通信）かを自動で判別して、
VPN以外のパケットを中継してくれるPort Share機能がある。&lt;/p&gt;
&lt;p&gt;つまり、OpenVPNが443番（&lt;code&gt;0.0.0.0:443&lt;/code&gt;）で待ち受け、
nginxは他の適当なポート（例えば&lt;code&gt;127.0.0.1:4443&lt;/code&gt;）で待ち受けるようにして、
Port Share機能の転送先をnginxに設定すれば、443番で待ち受けるOpenVPNと、本来443番で待ち受けたいnginxとが共存できる。&lt;/p&gt;
&lt;p&gt;UbuntuサーバへのOpenVPNの導入は、以下のDigitalOceanの記事が有用なので、参照されたい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenVPNで使用するサーバー証明書・クライアント証明書を発行するCAサーバをセットアップする記事: &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-ubuntu-20-04&#34;&gt;https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-ubuntu-20-04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenVPNをセットアップする記事: &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04-ja&#34;&gt;https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04-ja&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenVPNのインストールにあたっての重要な点として、
&lt;code&gt;ステップ7 — OpenVPNの設定&lt;/code&gt;の&lt;code&gt;（オプション）DNSの変更をプッシュして、VPNを介してすべてのトラフィックをリダイレクトする&lt;/code&gt;を実行した上で、
&lt;code&gt;ステップ9 — ファイアウォールの設定&lt;/code&gt;を手順通り実行することがある。
NAT下にあるなどの理由でufwの設定をしていなかったサーバーでも、新たにufwの設定をすることで、トラブルなくOpenVPNのインストールができる。
このステップを行わないと、VPN外へのパケットの転送が動作せず、VPN接続中のクライアントがインターネットに接続できない状況に陥る。&lt;/p&gt;
&lt;p&gt;また、&lt;code&gt;（オプション）ポートとプロトコルの調整&lt;/code&gt;で、待ち受けポートを443番、プロトコルをTCPにしておく。
OpenVPNの起動の際には、nginxとポート番号を取り合って起動に失敗しないように、nginxをあらかじめ停止し、ポート番号を書き換えておく。&lt;/p&gt;
&lt;h2 id=&#34;nginx-設定ファイル&#34;&gt;nginx 設定ファイル&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/etc/nginx/sites-enabled/&lt;/code&gt;などにあるnginxの設定ファイルを書き換え、
4443番で待ち受けるようにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;server&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;listen&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4443&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;http2&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;ssl&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;大量にサイトをホストしている場合、コマンドやVSCodeなどでまとめて書き換えるとよい。&lt;/p&gt;
&lt;h2 id=&#34;etcopenvpnserverserverconf&#34;&gt;/etc/openvpn/server/server.conf&lt;/h2&gt;
&lt;p&gt;OpenVPNのサーバー設定ファイルに&lt;code&gt;port-share&lt;/code&gt;を追記する。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-openvpn&#34; data-lang=&#34;openvpn&#34;&gt;port 443
port-share 127.0.0.1 4443

proto tcp
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;openvpnからnginxへのパケット転送の許可ufw&#34;&gt;OpenVPNからnginxへのパケット転送の許可（ufw）&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ufw allow from 10.8.0.0/24 to any port &lt;span style=&#34;color:#ae81ff&#34;&gt;4443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;nginx-openvpnの再起動&#34;&gt;nginx, OpenVPNの再起動&lt;/h2&gt;
&lt;p&gt;nginxおよびOpenVPNを再起動し、443番ポート宛てのHTTPS通信（nginx宛て）、443番ポート宛てのVPN接続（OpenVPN宛て）が正常に動作することを確認する。&lt;/p&gt;</description>
    </item>
    <item>
      <title>nginx, リバースプロキシからのReferrer-Policyヘッダを置換する</title>
      <link>https://blog.aoirint.com/entry/2022/nginx_replace_referrer_policy_header/</link>
      <pubDate>Fri, 01 Jul 2022 09:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/nginx_replace_referrer_policy_header/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;add_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Referrer-Policy&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;no-referrer&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# add_header Referrer-Policy same-origin;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_hide_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Referrer-Policy&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;# remove Referrer-Policy from original response
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://takuya-1st.hatenablog.jp/entry/2018/11/01/040000&#34;&gt;https://takuya-1st.hatenablog.jp/entry/2018/11/01/040000&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referrer-Policy&#34;&gt;https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referrer-Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/a/55692346&#34;&gt;https://stackoverflow.com/a/55692346&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mastodon&#34;&gt;Mastodon&lt;/h2&gt;
&lt;p&gt;Mastodonでリファラを送らないようにしたかった。&lt;/p&gt;
&lt;p&gt;HTMLタグのmetaタグを使う方法をよく使うのだけれど、
ブログとかによくあるheadタグへの任意HTML追加機能のようなものは
Mastodon v3.5.3にはなさそうだった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mastodon/mastodon/issues/9183&#34;&gt;https://github.com/mastodon/mastodon/issues/9183&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同一オリジンでもリファラを送らないようにする（no-referrer）とMastodonの一部の設定が更新できなくなくなるようなので、
Mastodonでは&lt;code&gt;Referrer-Policy: same-origin&lt;/code&gt;に設定した。&lt;/p&gt;
&lt;p&gt;単純に&lt;code&gt;add_header&lt;/code&gt;するだけだと、Mastodonが返す&lt;code&gt;Referrer-Policy&lt;/code&gt;とnginxが追加する&lt;code&gt;Referrer-Policy&lt;/code&gt;で2つのヘッダになってしまった。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;referrer-policy: origin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;referrer-policy: no-referrer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そこで、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_hide_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Referrer-Policy&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;でMastodonから返ってきたReferrer-Policyを削除するようにした。&lt;/p&gt;
&lt;p&gt;あとは、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;add_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Referrer-Policy&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;same-origin&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;するだけ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mstdn.aoirint.com/@aoirint/108569086590516035&#34;&gt;https://mstdn.aoirint.com/@aoirint/108569086590516035&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Let&#39;s Encrypt Failure Rate Limit</title>
      <link>https://blog.aoirint.com/entry/2022/lets_encrypt_failure_rate_limit/</link>
      <pubDate>Thu, 16 Jun 2022 15:52:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/lets_encrypt_failure_rate_limit/</guid>
      <description>&lt;p&gt;設定に自信がないときは、Rate limitが緩いLet&amp;rsquo;s EncryptのStaging環境で試してから本番環境でやり直す
Staging環境を使うには、certbotのオプションに &lt;code&gt;--test-cert&lt;/code&gt; をつける&lt;/p&gt;
&lt;p&gt;本番環境の場合、1時間内に5回失敗すると一時的に弾かれるようになる（too many failed authorizations recently）
Staging環境の場合、1時間内に60回失敗まで緩められている&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本番環境
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://letsencrypt.org/docs/rate-limits/&#34;&gt;https://letsencrypt.org/docs/rate-limits/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Staging環境
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://letsencrypt.org/docs/staging-environment/&#34;&gt;https://letsencrypt.org/docs/staging-environment/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Use MinIO with AWS CLI</title>
      <link>https://blog.aoirint.com/entry/2022/minio_with_aws_cli/</link>
      <pubDate>Fri, 10 Jun 2022 02:31:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/minio_with_aws_cli/</guid>
      <description>&lt;p&gt;AWS S3互換を意識して、設定にあたってMinIOに依存しすぎないようにしたい
（それはそれとしてMinIO ClientはAWS S3互換クライアントとして便利らしい）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&#34;&gt;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;aws-cli version: 2.7.7&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip&amp;#34;&lt;/span&gt; -o &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;awscliv2.zip&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unzip awscliv2.zip
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ./aws/install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html&#34;&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;--endpoint-url&lt;/code&gt;で操作対象をAWS S3からMinIOに変更できる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://awscli.amazonaws.com/v2/documentation/api/latest/topic/config-vars.html&#34;&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/topic/config-vars.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AWS_ACCESS_KEY_ID&lt;br&gt;
AWS_SECRET_ACCESS_KEY&lt;br&gt;
AWS以外の認証情報を~/.aws/credentialsに保持するのもいまいちな感があるので、環境変数に設定することにする&lt;br&gt;
（AWSのIAM？がどうなってるのかよくわからんけど、本来マニュアルオペレーションするときはAWSのアカウントで認証するのかな？）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3-commands.html&#34;&gt;https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-services-s3-commands.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まずは特権アクセスでBucketを作る&lt;br&gt;
MinIOのrootユーザのユーザ名・パスワードを設定する（MINIO_ROOT_USER、MINIO_ROOT_PASSWORD）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export AWS_ACCESS_KEY_ID&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;minioadmin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export AWS_SECRET_ACCESS_KEY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;minioadmin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bucket一覧&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws --endpoint-url http://127.0.0.1:9000 s3 ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bucket作成（create-bucketも大して変わらんと思うので、あえて高レベルAPIのs3 mbを使わなくていい気もするけどまあいいでしょう）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aws --endpoint-url http://127.0.0.1:9000 s3 mb s3://mybucket
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;アクセス制御（Policy）周りはS3と一部互換性がない&lt;br&gt;
Policyの構文自体はほぼ同じに作られているけれど、仕様が違うように思われる（AWS S3の仕様をよく知らんけど）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/minio/minio/issues/9530#issuecomment-625883667&#34;&gt;https://github.com/minio/minio/issues/9530#issuecomment-625883667&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bucket policyはパブリックアクセスのルール、User/ServiceAccount Policyは認証付きルールと使い分ければいいと思われる&lt;br&gt;
Bucket policyはAWS S3互換APIから設定できる&lt;br&gt;
User/ServiceAccount PolicyはAWS互換APIから設定できないのでWeb UIまたはMinIO Clientから設定する&lt;/p&gt;
&lt;p&gt;Bucket policy: allow anonymous user (public) to read mybucket/*&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2012-10-17&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Statement&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Effect&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Principal&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;AWS&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Action&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;s3:GetObject&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;Resource&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;arn:aws:s3:::mybucket/*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;PrincipalはMinIO上のBucketとしては意味がないと思うが、Web Consoleでいじると必要だといわれるので付けておく&lt;/p&gt;</description>
    </item>
    <item>
      <title>PIDから対応するdockerコンテナを見つける</title>
      <link>https://blog.aoirint.com/entry/2022/find_docker_container_by_pid/</link>
      <pubDate>Sun, 22 May 2022 15:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/find_docker_container_by_pid/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;docker-pidパッケージが便利
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.glia-computing.com/blog/listing-process-ids-on-docker-containers/&#34;&gt;https://www.glia-computing.com/blog/listing-process-ids-on-docker-containers/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/masatanish/docker-pid&#34;&gt;https://github.com/masatanish/docker-pid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip3 install docker==5.0.3 docker-pid==0.0.3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Self-hosted GitLab Runnerで安全にdockerを扱えるようにするためにどうしたらいいかわからない</title>
      <link>https://blog.aoirint.com/entry/2022/self_hosted_gitlab_runner_docker_safely/</link>
      <pubDate>Tue, 10 May 2022 12:47:51 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/self_hosted_gitlab_runner_docker_safely/</guid>
      <description>&lt;p&gt;適当に検索すると、ホストへの特権昇格を許す設定ばかり見かける。
自分だけしか使わないならば構わないかもしれないけれど、なんらかのCIを実行する権限さえあれば、ホストのroot権限をとれるというのは危険だと思う。
（コードレビュー必須でPRではマージ済みのCIが実行されるならいいのか&amp;hellip;？）&lt;/p&gt;
&lt;p&gt;GitLabの公式Shared Runnerがやっているように、docker-machineを使うのがいいはず。
おそらくdocker入りの仮想マシンをCIジョブごとに立てて、privilegedなコンテナからブレイクアウトしても仮想マシンの外に出られないようになっていると思う。
GitLabはいろいろオープンなので、実際のShared Runnerの構成・設定が公開されている。たいへん助かる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.gitlab.com/ee/ci/runners/saas/linux_saas_runner.html&#34;&gt;https://docs.gitlab.com/ee/ci/runners/saas/linux_saas_runner.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;のだけれども、GCPでこれを稼働させるのはちょっと費用面がよくわからない&amp;hellip;。&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;ツリー
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/aoirint/status/1523826104343343105&#34;&gt;https://twitter.com/aoirint/status/1523826104343343105&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/aoirint/status/1524426103615500288&#34;&gt;https://twitter.com/aoirint/status/1524426103615500288&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Windows hostsファイルを編集する</title>
      <link>https://blog.aoirint.com/entry/2022/windows_edit_hosts/</link>
      <pubDate>Mon, 07 Feb 2022 12:12:18 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/windows_edit_hosts/</guid>
      <description>&lt;p&gt;管理者PowerShellに以下を貼り付ける。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;notepad C:\WINDOWS\system32\drivers\etc\hosts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Windows シンボリックリンクを作成する</title>
      <link>https://blog.aoirint.com/entry/2022/windows_create_symbolic_link/</link>
      <pubDate>Mon, 07 Feb 2022 12:12:18 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/windows_create_symbolic_link/</guid>
      <description>&lt;p&gt;管理者cmdで実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;; ファイル
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;mklink&lt;/span&gt; C:\link C:\original
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;; ディレクトリ
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;mklink&lt;/span&gt; /D C:\link C:\original
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PostgreSQL 13 ユーザ（ロール）のパスワード変更</title>
      <link>https://blog.aoirint.com/entry/2022/postgresql_change_user_password/</link>
      <pubDate>Sun, 06 Feb 2022 09:36:47 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/postgresql_change_user_password/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;psql --user myuser postgres
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ALTER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ROLE&lt;/span&gt; myuser &lt;span style=&#34;color:#66d9ef&#34;&gt;WITH&lt;/span&gt; PASSWORD &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;new_password&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.postgresql.jp/document/13/html/sql-alterrole.html&#34;&gt;https://www.postgresql.jp/document/13/html/sql-alterrole.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.postgresql.org/docs/13/sql-alterrole.html&#34;&gt;https://www.postgresql.org/docs/13/sql-alterrole.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/12720967/how-to-change-postgresql-user-password&#34;&gt;https://stackoverflow.com/questions/12720967/how-to-change-postgresql-user-password&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>PostgreSQL 13 データベースの名前変更</title>
      <link>https://blog.aoirint.com/entry/2022/postgresql_change_table_name/</link>
      <pubDate>Sun, 06 Feb 2022 09:36:47 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2022/postgresql_change_table_name/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;psql --user myuser postgres
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ALTER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;DATABASE&lt;/span&gt; mydatabase &lt;span style=&#34;color:#66d9ef&#34;&gt;RENAME&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TO&lt;/span&gt; new_mydatabase;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.postgresql.jp/document/13/html/sql-alterdatabase.html&#34;&gt;https://www.postgresql.jp/document/13/html/sql-alterdatabase.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.postgresql.org/docs/13/sql-alterdatabase.html&#34;&gt;https://www.postgresql.org/docs/13/sql-alterdatabase.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.postgresqltutorial.com/postgresql-rename-database/&#34;&gt;https://www.postgresqltutorial.com/postgresql-rename-database/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ubuntu 20.04, ネットワーク設定変更時の認証を回避する</title>
      <link>https://blog.aoirint.com/entry/2021/ubuntu_disable_network_change_auth/</link>
      <pubDate>Mon, 29 Nov 2021 20:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/ubuntu_disable_network_change_auth/</guid>
      <description>&lt;p&gt;Ubuntu 20.04にアップデートしてから、ネットワーク設定の変更時（接続のON/OFFなど）に&lt;code&gt;System policy prevents control of network connections&lt;/code&gt;と表示され、認証を要求されるようになりました。&lt;/p&gt;
&lt;p&gt;ここまではまだいいのですが、認証が表示されるたびに数秒間デスクトップがハングする状態になっていて、ストレスでした。
Keyringのロックを解除するときも数秒間ハングするので、似た原因がありそうです。&lt;/p&gt;
&lt;p&gt;ひとまず、設定変更時の認証を要求されないようにして、ハングを防ぐことを試みました。結果として試みは成功し、ハングを回避できるようになりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/534469/system-policy-prevents-control-of-network-connections&#34;&gt;https://unix.stackexchange.com/questions/534469/system-policy-prevents-control-of-network-connections&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://code.luasoftware.com/tutorials/linux/ubuntu-prompt-system-policy-prevents-modification-of-network-settings-for-all-users/&#34;&gt;https://code.luasoftware.com/tutorials/linux/ubuntu-prompt-system-policy-prevents-modification-of-network-settings-for-all-users/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;etcpolkit-1localauthority50-locald50-allow-network-managerpkla&#34;&gt;/etc/polkit-1/localauthority/50-local.d/50-allow-network-manager.pkla&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-pkla&#34; data-lang=&#34;pkla&#34;&gt;[Allow Network Manager all Users]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.network-control
ResultAny=no
ResultInactive=no
ResultActive=yes
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl restart network-manager.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ubuntu 20.04, Unattended Upgradesを停止</title>
      <link>https://blog.aoirint.com/entry/2021/ubuntu_stop_unattended_upgrades/</link>
      <pubDate>Mon, 08 Nov 2021 07:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/ubuntu_stop_unattended_upgrades/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/470709/how-do-i-stop-disable-unattended-upgrades-from-being-launched-automatically&#34;&gt;https://unix.stackexchange.com/questions/470709/how-do-i-stop-disable-unattended-upgrades-from-being-launched-automatically&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;勝手にnvidia driverの更新が走って、
カーネルに読み込まれているdriverバージョンと、
ディスク上にあるdriverバージョンが一致しなくなって、
デスクトップアプリが起動しなくなったりする。&lt;/p&gt;
&lt;p&gt;どうせ結構な頻度でapt upgradeするし、
再起動が保証されないタイミングで更新されて、
不安定になるのはいただけない。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dpkg-reconfigure -plow unattended-upgrades
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これでTUIが起動するので、&lt;code&gt;&amp;lt;No&amp;gt;&lt;/code&gt;を選ぶ。&lt;/p&gt;</description>
    </item>
    <item>
      <title>cron</title>
      <link>https://blog.aoirint.com/entry/2021/cron/</link>
      <pubDate>Fri, 05 Nov 2021 02:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/cron/</guid>
      <description>&lt;p&gt;Linux上でプログラムの実行をスケジュールするためのプログラム。&lt;/p&gt;
&lt;p&gt;独自の書式をもつcrontabファイルでスケジュールを設定する。&lt;/p&gt;
&lt;h2 id=&#34;想定環境&#34;&gt;想定環境&lt;/h2&gt;
&lt;p&gt;Ubuntu 20.04&lt;/p&gt;
&lt;h2 id=&#34;etccrontab&#34;&gt;/etc/crontab&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SHELL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PATH&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MAILTO&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Example of job definition:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# .---------------- minute (0 - 59)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# |  .------------- hour (0 - 23)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# |  |  .---------- day of month (1 - 31)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# |  |  |  |  |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# *  *  *  *  * user-name command to be executed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; * * * * root    cd / &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; run-parts --report /etc/cron.hourly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; * * * root test -x /usr/sbin/anacron &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; cd / &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; run-parts --report /etc/cron.daily &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;47&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; * * &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; root test -x /usr/sbin/anacron &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; cd / &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; run-parts --report /etc/cron.weekly &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;52&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; * * root test -x /usr/sbin/anacron &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; cd / &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; run-parts --report /etc/cron.monthly &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;crontabの時刻形式は独特で、複雑な設定を新しく書き起こすのは面倒くさい。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PulseAudioでSSHサーバ側の音声をクライアント側で再生する</title>
      <link>https://blog.aoirint.com/entry/2021/pulseaudio_over_ssh/</link>
      <pubDate>Sat, 09 Oct 2021 20:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/pulseaudio_over_ssh/</guid>
      <description>&lt;p&gt;RDPと違い、VNCでは接続先の音声を送れないことがある。&lt;/p&gt;
&lt;p&gt;接続先のデスクトップ（SSH・VNCサーバ）で再生された音声をSSH経由で送信し、SSH・VNCクライアント側で再生できるようにする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://raspberrypi.stackexchange.com/questions/8621/how-to-set-up-a-pulseaudio-sink&#34;&gt;https://raspberrypi.stackexchange.com/questions/8621/how-to-set-up-a-pulseaudio-sink&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-tunnel-sink-new&#34;&gt;https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-tunnel-sink-new&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;module-tunnel-sink-new&lt;/code&gt;の実装はすでに&lt;code&gt;module-tunnel-sink&lt;/code&gt;で動くようになっている（&lt;code&gt;pulseaudio 13.99.1&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;音声を受け取る側sshvncクライアントpulseaudioサーバ&#34;&gt;音声を受け取る側（SSH・VNCクライアント、PulseAudioサーバ）&lt;/h2&gt;
&lt;h3 id=&#34;受信側-etcpulsedefaultpa&#34;&gt;受信側 /etc/pulse/default.pa&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-pulseaudio&#34; data-lang=&#34;pulseaudio&#34;&gt;load-module module-native-protocol-tcp auth-ip-acl=127.0.0.0/8

load-module module-null-sink sink_name=DummyOutputRemote0 sink_properties=device.description=&amp;#34;DummyOutputRemote0&amp;#34;
load-module module-loopback source=DummyOutputRemote0.monitor source_dont_move=true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;DummyOutputRemote0に対して音声が送られてくる。&lt;/p&gt;
&lt;p&gt;DummyOutputRemote0.monitorで入力として音声を拾うこともできる。&lt;/p&gt;
&lt;h3 id=&#34;受信側-sshconfig&#34;&gt;受信側 ~/.ssh/config&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-pulseaudio&#34; data-lang=&#34;pulseaudio&#34;&gt;Host your-server
    # VNC
    LocalForward 15900 localhost:5900
    # PulseAudio
    RemoteForward 14713 localhost:4713
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;音声を送る側sshvncサーバpulseaudioクライアントサーバ中継用&#34;&gt;音声を送る側（SSH・VNCサーバ、PulseAudioクライアント・サーバ＝中継用）&lt;/h2&gt;
&lt;h3 id=&#34;送信側-etcpulsedefaultpa&#34;&gt;送信側 /etc/pulse/default.pa&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-pulseaudio&#34; data-lang=&#34;pulseaudio&#34;&gt;load-module module-tunnel-sink sink_name=Remote server=tcp:127.0.0.1:14713 sink=DummyOutputRemote0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;PulseAudio再起動（&lt;code&gt;pulseaudio -k&lt;/code&gt;）後、
接続先のデスクトップ上で音声出力デバイス（Sink）をDummyOutputRemote0に設定する。
DummyOutputRemote0が表示されない場合、どこか設定が間違っていると思われる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;電源メニューから音声デバイスを変更できるようにするGNOME拡張
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/906/sound-output-device-chooser/&#34;&gt;https://extensions.gnome.org/extension/906/sound-output-device-chooser/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>SendGrid</title>
      <link>https://blog.aoirint.com/entry/2021/sendgrid/</link>
      <pubDate>Sat, 11 Sep 2021 13:10:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/sendgrid/</guid>
      <description>&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;Discourseをセットアップしようとしていたところ、いくつかのEmailプロバイダが紹介されていた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/discourse/discourse/blob/4e0a43f2117ac83bcf7e0f9bed65370f6c4c15bb/docs/INSTALL-email.md&#34;&gt;https://github.com/discourse/discourse/blob/4e0a43f2117ac83bcf7e0f9bed65370f6c4c15bb/docs/INSTALL-email.md&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mailgun.com/&#34;&gt;Mailgun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sendgrid.com/&#34;&gt;SendGrid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mailjet.com/pricing&#34;&gt;Mailjet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://elasticemail.com/&#34;&gt;Elastic Email&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Discourseはセットアップにメールサーバが要求される。以前のMastodonのセットアップでは、Gmailとアプリパスワードを使った簡易セットアップを使ったが、経験積みとセキュリティ上の懸念から、今回はメールサーバを用意することにした。&lt;/p&gt;
&lt;p&gt;名前を聞いたことのあるSendGridを使う。業務上の利用を想定しているようだが、個人による利用として続行する。スケールする商用サービスでの利用ではないが、利用経験は技術選定の上で大事だと思う。その分、Abuseしないように考えなければならないが。&lt;/p&gt;
&lt;h2 id=&#34;freeプラン&#34;&gt;Freeプラン&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sendgrid.com/pricing/&#34;&gt;https://sendgrid.com/pricing/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1日に100メールまではFreeプランが使用できる。自分しか使わない、またはごくごく小規模な利用では十分だろう。&lt;/p&gt;
&lt;h2 id=&#34;登録&#34;&gt;登録&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sendgrid.com/&#34;&gt;https://sendgrid.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Start For Free&lt;/code&gt;から登録する。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;&amp;ldquo;Start For Free&amp;quot;をクリックする&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/signup_button.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;細かい登録の過程は省略する。&lt;/p&gt;
&lt;h2 id=&#34;ドメインの認証&#34;&gt;ドメインの認証&lt;/h2&gt;
&lt;p&gt;ダッシュボードを開く。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://app.sendgrid.com/&#34;&gt;https://app.sendgrid.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;&amp;ldquo;authenticate a domain instead&amp;quot;をクリックする&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/authenticate_a_domain_instead.png&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://app.sendgrid.com/settings/sender_auth/domain/create&#34;&gt;https://app.sendgrid.com/settings/sender_auth/domain/create&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;DNSホストの選択&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/authenticate_your_domain.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;ドメインプロバイダ（DNSホスト）の選択を求められる。
お名前.comはリストになかったので、&lt;code&gt;Other Host (Not Listed)&lt;/code&gt;を選択し続行する。
あまり意味はないだろうが、Which DNS Hostにプロバイダ名を書いておく。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;ドメイン名の入力&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/input_domain.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;ドメイン名を入力する。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;認証用のDNSレコード情報&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/dns_info.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;DNSサーバに登録すべき認証用のレコードが表示される（DNSサーバにクエリを送れば誰でも確認できるので公開情報）。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;お名前.comでのDNSレコード設定&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/onamae_dns_setup.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;ドメインプロバイダ/DNSサーバでDNSレコードを設定する。
設定が反映されるまでしばらく待つ。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;ドメイン認証完了&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/domain_verified.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;ドメインが認証された。
これでSendGridを使って、このドメインからのメールを送信できるようになった。&lt;/p&gt;
&lt;h2 id=&#34;apiキーの発行送信テスト&#34;&gt;APIキーの発行（送信テスト）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://app.sendgrid.com/guide/integrate&#34;&gt;https://app.sendgrid.com/guide/integrate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;APIキーの利用方法の選択&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/choose_setup_method.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Web APIを選択する。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;プログラミング言語/利用プログラムの選択&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/webapi_langs.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;プログラミング言語/利用プログラムを選択する。チュートリアルの出し分けをするだけで、ここでの選択に特に意味はないと思われる（チュートリアルなしでAPIキーを発行もできる： &lt;a href=&#34;https://app.sendgrid.com/settings/api_keys&#34;&gt;https://app.sendgrid.com/settings/api_keys&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;APIキーの発行&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/create_api_key.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;とりあえずcURLでテストすることにして、APIキーを発行する。&lt;/p&gt;
&lt;p&gt;下のcurlコマンドの送信JSONデータを編集する。
toを自分のメールアドレス、fromを認証したドメインのメールアドレスに変える。
特にfromのメールアカウントを作成する必要はなく、
&lt;code&gt;hoge@example.com&lt;/code&gt;のように適当なアカウント名をつけたアドレスを使えばよい。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;受信したEメール&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/received_email.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;コマンドを適当な端末で実行し、メールが届けば成功。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Eメール送信成功&#34; loading=&#34;lazy&#34; src=&#34;https://blog.aoirint.com/entry/2021/sendgrid/images/email_send_succeeded.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;SendGrid上でも送信成功を確認できる。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SmokePing in Docker</title>
      <link>https://blog.aoirint.com/entry/2021/smokeping_docker/</link>
      <pubDate>Sun, 22 Aug 2021 09:45:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/smokeping_docker/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/dperson/smokeping&#34;&gt;https://hub.docker.com/r/dperson/smokeping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;copy-configs&#34;&gt;Copy Configs&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run --name smokeping --rm -d dperson/smokeping:latest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker cp smokeping:/etc/smokeping ./config
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker rm -f smokeping
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;docker-composeyml&#34;&gt;docker-compose.yml&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;3.9&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;smokeping&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dperson/smokeping:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{SMOKEPING_PORT:-127.0.0.1:8000}:80&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./config:/etc/smokeping:ro&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./data:/var/lib/smokeping&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;TZ&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Asia/Tokyo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configconfigdtargets&#34;&gt;config/config.d/Targets&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-smokeping&#34; data-lang=&#34;smokeping&#34;&gt;*** Targets ***

probe = FPing

menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of xxx Company. \
         Here you will learn all about the latency of our network.

+ Home

menu = Home
title = Home Network
#parents = owner:/Test/James location:/

++ Router

menu = Router (192.168.0.1)
title = Router (192.168.0.1)
host = 192.168.0.1

++ MyServer

menu = MyServer (192.168.0.2)
title = MyServer (192.168.0.2)
host = 192.168.0.2
#alerts = someloss
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>透過プロキシ（macOS, go-transproxy）</title>
      <link>https://blog.aoirint.com/entry/2021/transproxy_macos/</link>
      <pubDate>Mon, 21 Jun 2021 18:40:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/transproxy_macos/</guid>
      <description>&lt;h2 id=&#34;環境変数&#34;&gt;環境変数&lt;/h2&gt;
&lt;p&gt;シェル起動時にネットワーク設定からプロキシ設定を環境変数に読み出すようにしている場合、GUIで設定すればOK。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export HTTP_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy.example.com:8080/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export HTTPS_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy.example.com:8080/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export NO_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;localhost,127.0.0.0/8,::1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NO_PROXYには必ずlocalhost/ローカルループバックアドレスを設定しておくこと（無限ループする）。&lt;/p&gt;
&lt;h2 id=&#34;ビルド&#34;&gt;ビルド&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/wadahiro/go-transproxy&#34;&gt;https://github.com/wadahiro/go-transproxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://github.com/wadahiro/go-transproxy.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd go-transproxy/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls go-transproxy/bin/transproxy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# check network device name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ifconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;transproxypfconf&#34;&gt;~/transproxy/pf.conf&lt;/h2&gt;
&lt;p&gt;MacBookの無線LANカード：&lt;code&gt;en0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mac miniなどの場合はNIC名が異なる場合があるので注意。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-pf&#34; data-lang=&#34;pf&#34;&gt;Packets = &amp;#34;proto tcp from en0 to {!192.168.0.0/16}&amp;#34;
rdr pass log on lo0 $Packets port 80 -&amp;gt; 127.0.0.1 port 3129
rdr pass log on lo0 $Packets port 443 -&amp;gt; 127.0.0.1 port 3130
pass out on en0 route-to lo0 inet $Packets port {80, 443} keep state
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;有効化&#34;&gt;有効化&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pfctl -ef ~/transproxy/pf.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;transproxy -disable-iptables
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;無効化&#34;&gt;無効化&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# stop transproxy process (Ctrl+C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# reset pf configs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pfctl -df /etc/pf.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/informationsea/items/094146d0a811f3edc96b&#34;&gt;Macでプロキシとの戦いに疲れたので、透過型プロキシを導入してみた - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>透過プロキシ（Ubuntu, go-transproxy）</title>
      <link>https://blog.aoirint.com/entry/2021/transproxy_ubuntu/</link>
      <pubDate>Mon, 21 Jun 2021 18:10:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/transproxy_ubuntu/</guid>
      <description>&lt;h2 id=&#34;etcsudoers&#34;&gt;/etc/sudoers&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-sudoers&#34; data-lang=&#34;sudoers&#34;&gt;Defaults        env_keep+=&amp;#34;HTTP_PROXY&amp;#34;
Defaults        env_keep+=&amp;#34;HTTPS_PROXY&amp;#34;
Defaults        env_keep+=&amp;#34;NO_PROXY&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;環境変数&#34;&gt;環境変数&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export HTTP_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy.example.com:8080/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export HTTPS_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy.example.com:8080/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export NO_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;localhost,127.0.0.0/8,::1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;NO_PROXYには必ずlocalhost/ローカルループバックアドレスを設定しておくこと（無限ループする）。&lt;/p&gt;
&lt;p&gt;デスクトップの場合はGUI設定でOK。&lt;/p&gt;
&lt;h2 id=&#34;usrlocalbintransproxy&#34;&gt;/usr/local/bin/transproxy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/wadahiro/go-transproxy&#34;&gt;https://github.com/wadahiro/go-transproxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;usrlocalbintransproxy-start&#34;&gt;/usr/local/bin/transproxy-start&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -eu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# iptables -t nat -I OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# iptables -t nat -I OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -I OUTPUT -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt; -j REDIRECT --to-ports &lt;span style=&#34;color:#ae81ff&#34;&gt;3129&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -I OUTPUT -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -j REDIRECT --to-ports &lt;span style=&#34;color:#ae81ff&#34;&gt;3130&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;transproxy -disable-iptables &lt;span style=&#34;color:#75715e&#34;&gt;# -dns-over-https-enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;usrlocalbintransproxy-stop&#34;&gt;/usr/local/bin/transproxy-stop&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -eu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# iptables -t nat -D OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# iptables -t nat -D OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -D OUTPUT -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;443&lt;/span&gt; -j REDIRECT --to-ports &lt;span style=&#34;color:#ae81ff&#34;&gt;3130&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -t nat -D OUTPUT -p tcp --dport &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt; -j REDIRECT --to-ports &lt;span style=&#34;color:#ae81ff&#34;&gt;3129&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;iptablesのルールを書き換えるため、実行時にはroot権限が必要。&lt;/p&gt;</description>
    </item>
    <item>
      <title>bind9</title>
      <link>https://blog.aoirint.com/entry/2021/bind9/</link>
      <pubDate>Wed, 09 Jun 2021 01:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/bind9/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server$ sudo apt install bind9
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用中のdnsサーバの確認&#34;&gt;使用中のDNSサーバの確認&lt;/h2&gt;
&lt;p&gt;クライアントに設定されているDNSサーバは&lt;code&gt;nmcli&lt;/code&gt;コマンドで確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ nmcli device show | grep DNS
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IP4.DNS&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;1&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:                             8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IP4.DNS&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;2&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:                             8.8.4.4
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IP4.DNS&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;3&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;:                             1.1.1.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://askubuntu.com/questions/152593/command-line-to-list-dns-servers-used-by-my-system&#34;&gt;Command-line to list DNS servers used by my system - Ask Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;用語&#34;&gt;用語&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://cos.linux-dvr.biz/archives/category/bind-dns%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89&#34;&gt;BIND DNSサーバー構築 | CentOSサーバー構築入門&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;コンテンツサーバ権威サーバ&#34;&gt;コンテンツサーバ（権威サーバ）&lt;/h3&gt;
&lt;p&gt;あるゾーン（DNSにおける名前の管理単位）に関する名前解決要求（非再帰問い合わせ）を受け取り、自身が管理するゾーンならば名前解決結果を、委任情報を持つゾーンならば委任先の権威サーバ情報を応答する。&lt;/p&gt;
&lt;p&gt;ルートゾーン（FQDN: &lt;code&gt;.&lt;/code&gt;）を管理するルートサーバは、TLD（例えば &lt;code&gt;jp.&lt;/code&gt;）の権威サーバへの委任情報を持つ。&lt;/p&gt;
&lt;p&gt;ゾーン情報において、NSレコードにより指定される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jprs.jp/glossary/index.php?ID=0155&#34;&gt;JPRS用語辞典｜ルートゾーン&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jprs.jp/glossary/index.php?ID=0145&#34;&gt;JPRS用語辞典｜権威サーバー（権威DNSサーバー）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jprs.jp/glossary/index.php?ID=0157&#34;&gt;JPRS用語辞典｜ネームサーバー（DNSサーバー）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;キャッシュサーバフルサービスリゾルバ&#34;&gt;キャッシュサーバ（フルサービスリゾルバ）&lt;/h3&gt;
&lt;p&gt;クライアントから名前解決要求（再帰問い合わせ）を受け取り、
コンテンツサーバへ反復的に名前解決要求（反復問い合わせ）を送ることで任意のドメイン名の名前解決を行う。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jprs.jp/glossary/index.php?ID=0158&#34;&gt;JPRS用語辞典｜フルサービスリゾルバー（キャッシュDNSサーバー）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例えば&lt;code&gt;hoge.example.jp.&lt;/code&gt;というドメインの名前解決要求を受け取ったとき、
ルートサーバ&lt;code&gt;.&lt;/code&gt;への非再帰問い合わせにより&lt;code&gt;jp.&lt;/code&gt;権威サーバへの委任情報を取得する。
&lt;code&gt;jp.&lt;/code&gt;権威サーバへの非再帰問い合わせにより&lt;code&gt;example.jp.&lt;/code&gt;権威サーバへの委任情報を取得する。
&lt;code&gt;example.jp.&lt;/code&gt;権威サーバへの非再帰問い合わせにより&lt;code&gt;hoge.example.jp.&lt;/code&gt;のIPアドレスを取得する、のような流れで反復的に問い合わせを行うことで&lt;code&gt;hoge.example.jp.&lt;/code&gt;の名前解決を行う。&lt;/p&gt;
&lt;p&gt;ISPの提供するDNSサーバや会社などの組織内DNSサーバ、GoogleやCloudflareなどが提供するパブリックDNSがある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ascii.jp/elem/000/000/463/463076/&#34;&gt;ASCII.jp：DNSによる名前解決の仕組みを理解しよう (1/2)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;回送&#34;&gt;回送&lt;/h3&gt;
&lt;p&gt;プロキシのように、受け取った名前解決要求を他のDNSサーバに送り、
応答を返す。&lt;/p&gt;
&lt;h2 id=&#34;etcbindnamedconfoptions&#34;&gt;/etc/bind/named.conf.options&lt;/h2&gt;
&lt;p&gt;自身が管理していない情報（ゾーン、委任情報）に関する問い合わせについて、
他のDNSサーバ（フルサービスリゾルバ）に問い合わせを回送するように設定する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.atmarkit.co.jp/ait/articles/1510/28/news013.html&#34;&gt;「再帰問い合わせ」と「非再帰問い合わせ」の違いを教えてください：DNS Tips - ＠IT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://cos.linux-dvr.biz/archives/category/bind-dns%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89&#34;&gt;BIND DNSサーバー構築 | CentOSサーバー構築入門&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://ddns.blog.jp/archives/13568266.html&#34;&gt;フォワード（回送） : お父さんのためのDNS講座&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;デフォルト設定ファイル&#34;&gt;デフォルト設定ファイル&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bind&#34; data-lang=&#34;bind&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;options&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;directory&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#34;/var/cache/bind&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;there&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;firewall&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;between&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;nameservers&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;want&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;talk&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to,&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;may&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;need&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;fix&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;firewall&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;allow&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;multiple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;ports&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; talk.  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;See&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;http://&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;www.kb.cert.org&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/vuls/id/&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;800113&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;your&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;ISP&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;provided&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;one&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;or&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;more&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;IP&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;addresses&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;stable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;nameservers,&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;probably&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;want&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;use&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;them&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;as&lt;/span&gt; forwarders.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;Uncomment&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;following&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;block,&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;insert&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;addresses&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;replacing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;all-&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;s&lt;/span&gt; placeholder.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;forwarders&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt;      &lt;span style=&#34;color:#ae81ff&#34;&gt;0.0.0.0&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//========================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;If&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;BIND&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;logs&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;error&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;messages&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;about&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;being&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;expired,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;will&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;need&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;update&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;your&lt;/span&gt; keys.  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;See&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;https://&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;www.isc.org&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/bind-keys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;//========================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;dnssec-validation&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;auto&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;auth-nxdomain&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;no&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;    # conform to RFC1035&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;listen-on-v6&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;any&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;; };&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;変更点&#34;&gt;変更点&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bind&#34; data-lang=&#34;bind&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;forwarders&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;8.8.8.8&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;8.8.4.4&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1.1.1&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.isoroot.jp/blog/2929/&#34;&gt;初歩から解説！BINDでシンプルDNSサーバー構築【構築編】｜ 開発者ブログ ｜ 株式会社アイソルート&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;確認&#34;&gt;確認&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;server$ systemctl restart bind9.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;client$ dig @192.168.x.x aoirint.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;;; ANSWER SECTION:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aoirint.com.  &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt; IN A 185.199.108.153
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aoirint.com.  &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt; IN A 185.199.111.153
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aoirint.com.  &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt; IN A 185.199.109.153
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aoirint.com.  &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt; IN A 185.199.110.153
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/hana_shin/items/e99f64a01f2632b7a719&#34;&gt;digコマンドの使い方 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;etcbindnamedconflocal&#34;&gt;/etc/bind/named.conf.local&lt;/h2&gt;
&lt;p&gt;DNSサーバの管理するゾーンの名前と対応する設定ファイル（ゾーンファイル）を設定する。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu/Raspberry Pi/Debianの時刻ずれを解消する</title>
      <link>https://blog.aoirint.com/entry/2021/ubuntu_ntp/</link>
      <pubDate>Sun, 04 Apr 2021 06:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/ubuntu_ntp/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get:1 http://raspbian.raspberrypi.org/raspbian buster InRelease &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;15.0 kB&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get:2 http://archive.raspberrypi.org/debian buster InRelease &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;32.9 kB&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Reading package lists... Done  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Release file &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; http://raspbian.raspberrypi.org/raspbian/dists/buster/InRelease is not valid yet &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;invalid &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; another 27d 15h 31min 39s&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;. Updates &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; this repository will not be applied.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E: Release file &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; http://archive.raspberrypi.org/debian/dists/buster/InRelease is not valid yet &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;invalid &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; another 26d 5h 35min 24s&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;. Updates &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; this repository will not be applied.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こういうエラーが出ることがある（ログはRaspberry Pi OS）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo timedatectl set-timezone Asia/Tokyo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo date --set 2021-04-04
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo date --set 06:00
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;まずは手動でタイムゾーンと時刻を合わせる（だいたいでOK）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH Port Forwardingを使ってNAT間で通信するPort Proxy Server in Docker</title>
      <link>https://blog.aoirint.com/entry/2021/ssh_proxy_server_docker/</link>
      <pubDate>Sun, 21 Mar 2021 03:32:29 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2021/ssh_proxy_server_docker/</guid>
      <description>&lt;h2 id=&#34;sshポートフォワーディング踏み台による中継接続&#34;&gt;SSHポートフォワーディング：踏み台による中継接続&lt;/h2&gt;
&lt;p&gt;SSHポートフォワーディングには、
ローカルポートフォワーディング、
リモートポートフォワーディングの2種類があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/mechamogera/items/b1bb9130273deb9426f5&#34;&gt;sshポートフォワーディング - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ローカルポートフォワーディングでは、
SSHサーバ側から見えるネットワークポートを
SSHクライアント側に転送することができます。
例えば、ファイアウォール（NAT）に守られたネットワーク（ネットワークA）内にあるWebサーバ（ホストX）に
外部ネットワーク（ネットワークB）にあるクライアント（ホストY）から接続したいとき、
踏み台となる、ネットワークBから接続可能なSSHサーバ（ホストZ）がネットワークA内にあれば、
ホストYがホストZにSSH接続することで、
ホストXのWebサーバのネットワークポートに、
ホストYの指定したポートから接続できるようになります
（「ホスト」は「各ネットワークに接続した、NICに割り当てられたIPアドレス」に対応）。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@hostY.networkB.example: $ ssh user@hostZ.networkA.example -L &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;127.0.0.1:10080:hostX.networkA.example:80&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@hostY.networkB.example: $ wget http://127.0.0.1:10080/index.html
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I am &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hostX.networkA.example:80&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;リモートポートフォワーディングでは、
SSHクライアント側から見えるネットワークポートを
SSHサーバ側に転送することができます。
先の例でいうと、ホストXがネットワークBに接続していて、
ファイアウォール（NAT）によってネットワークAにあるホストZから接続できないとき、
ホストYがホストZにSSH接続することで、ホストZからホストXに接続できるようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@hostY.networkB.example: $ ssh user@hostZ.networkA.example -R &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;127.0.0.1:10080:hostX.networkB.example:80&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@hostZ.networkA.example: $ wget http://127.0.0.1:10080/index.html
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I am &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hostX.networkB.example:80&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この方法は、ネットワーク内のあるホストにSSH接続ができる環境さえあれば、
VPNや他のTCPプロキシをセットアップするより簡単に隠されたネットワークにアクセスすることができるように思います。&lt;/p&gt;
&lt;h2 id=&#34;ポートプロキシサーバ2種類のsshポートフォワーディングの組み合わせ&#34;&gt;ポートプロキシサーバ：2種類のSSHポートフォワーディングの組み合わせ&lt;/h2&gt;
&lt;p&gt;ここで、別の構成のネットワークについても考えてみます。
新しくネットワークCを導入して、
ホストXはNAT内のネットワークC（&lt;code&gt;hostX.networkC.example&lt;/code&gt;）、
ホストYはNAT内のネットワークB（&lt;code&gt;hostY.networkB.example&lt;/code&gt;）、
ホストZはネットワークB、Cからともに接続可能なネットワークA（&lt;code&gt;hostZ.networkA.example&lt;/code&gt;）
という構成を考えてみます。&lt;/p&gt;
&lt;p&gt;この構成で、ホストYからホストXに接続可能な環境を作るには、次のような手順が考えられます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ホストXからホストZにSSH接続し、リモートポートフォワーディングによってホストZ上の&amp;quot;ポートQ&amp;quot;をホストX上の&amp;quot;ポートP&amp;quot;に転送する&lt;/li&gt;
&lt;li&gt;ホストYからホストZにSSH接続し、ローカルポートフォワーディングによってホストY上の&amp;quot;ポートR&amp;quot;をホストZ上の&amp;quot;ポートQ&amp;quot;に転送する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これにより、ホストYは、自身のポートRを使って、ホストXのポートPに接続することができます。
もしホストXに物理的にアクセスできない環境でも、
あらかじめホストXをホストZに常時接続するように設定しておけば、
その接続（ポートQからポートPへの転送）が生きている限り、好きなタイミングでホストYからホストXに接続（ポートRからポートQへの転送、すなわちポートRからポートPへの転送）することができます。&lt;/p&gt;
&lt;h2 id=&#34;ssh-port-forwardingを使ったport-proxy-server-in-docker&#34;&gt;SSH Port Forwardingを使ったPort Proxy Server in Docker&lt;/h2&gt;
&lt;p&gt;前項のポートプロキシサーバの問題として、次の3つを考えました。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debianパッケージから内容物を抽出する</title>
      <link>https://blog.aoirint.com/entry/2020/extract_from_deb_file/</link>
      <pubDate>Tue, 08 Dec 2020 22:40:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/extract_from_deb_file/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://packages.debian.org/buster/bash&#34;&gt;Debian &amp;ndash; buster の bash パッケージに関する詳細&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://ftp.jp.debian.org/debian/pool/main/b/bash/bash_5.0-4_amd64.deb&#34;&gt;http://ftp.jp.debian.org/debian/pool/main/b/bash/bash_5.0-4_amd64.deb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget http://ftp.jp.debian.org/debian/pool/main/b/bash/bash_5.0-4_amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir bash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf bash_5.0-4_amd64.deb -C bash/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd bash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir data
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf data.tar.xz -C data/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd data
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# here is root directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Dockerイメージから内容物を抽出する</title>
      <link>https://blog.aoirint.com/entry/2020/extract_from_docker_image/</link>
      <pubDate>Tue, 08 Dec 2020 22:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/extract_from_docker_image/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/engine/reference/commandline/save/#save-an-image-to-a-targz-file-using-gzip&#34;&gt;docker save | Docker Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker pull alpine:3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker save -o out.tar alpine:3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir out
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf out.tar -C out/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd out/6709f754bd0ccbbea9a7481e92772a494cca1543b3421978edff62bc5de16662
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvf layer.tar -C layer/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd layer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# here is root directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Docker &#43; Docker Compose on Vagrant Ubuntu Server</title>
      <link>https://blog.aoirint.com/entry/2020/docker_on_vagrant_ubuntu_server/</link>
      <pubDate>Thu, 22 Oct 2020 16:30:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/docker_on_vagrant_ubuntu_server/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.virtualbox.org/wiki/Downloads&#34;&gt;Downloads – Oracle VM VirtualBox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.vagrantup.com/downloads.html&#34;&gt;Downloads | Vagrant by HashiCorp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://app.vagrantup.com/ubuntu/boxes/bionic64&#34;&gt;Vagrant box ubuntu/bionic64 - Vagrant Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/engine/install/ubuntu/&#34;&gt;Install Docker Engine on Ubuntu | Docker Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.docker.com/compose/install/&#34;&gt;Install Docker Compose | Docker Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;kvm (qemu)を使うこともできるらしいが、対応したboxを用意する必要があるのでVirtualBoxを使う。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://knowledge.sakura.ad.jp/2535/&#34;&gt;KVM用仮想マシンをVagrantで手軽に作る | さくらのナレッジ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 起動&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 削除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant destroy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# ssh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant ssh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 停止（シャットダウン）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vagrant halt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;vagrantfile&#34;&gt;Vagrantfile&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# -*- mode: ruby -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# vi: set ft=ruby :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Vagrant&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;configure(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vm&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;box &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ubuntu/bionic64&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vm&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hostname &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ubuntu-docker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# config.vm.network &amp;#34;forwarded_port&amp;#34;, guest: 80, host: 8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# config.vm.network &amp;#34;forwarded_port&amp;#34;, guest: 80, host: 8080, host_ip: &amp;#34;127.0.0.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vm&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;provider &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;virtualbox&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;vb&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ubuntu-docker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;memory &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1024&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# vb.gui = true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vm&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;provision &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;shell&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;inline&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt;-SHELL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;get update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;get install &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;y \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;transport&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;https \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ca&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;certificates \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      curl \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      gnupg&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;agent \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      software&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;properties&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;common
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    curl &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;fsSL &lt;span style=&#34;color:#e6db74&#34;&gt;https&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;//&lt;/span&gt;download&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;docker&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;linux&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;ubuntu&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gpg &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;key add &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    add&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;repository &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;y \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deb [arch=amd64] https://download.docker.com/linux/ubuntu \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      $(lsb_release -cs) \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      stable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;get update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;get install &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;y \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      docker&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;ce \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      docker&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;ce&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;cli \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      containerd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;io
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    curl &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;L &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;o &lt;span style=&#34;color:#e6db74&#34;&gt;/usr/&lt;/span&gt;local&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bin&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;docker&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    chmod &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;x &lt;span style=&#34;color:#e6db74&#34;&gt;/usr/&lt;/span&gt;local&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bin&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;docker&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    adduser vagrant docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;SHELL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ubuntu プロキシ設定</title>
      <link>https://blog.aoirint.com/entry/2020/ubuntu_proxy/</link>
      <pubDate>Fri, 02 Oct 2020 15:40:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/ubuntu_proxy/</guid>
      <description>&lt;h2 id=&#34;user-desktop-settings--network--network-proxy&#34;&gt;User (Desktop): Settings &amp;gt; Network &amp;gt; Network Proxy&lt;/h2&gt;
&lt;p&gt;Settings &amp;gt; Network &amp;gt; Network Proxy &amp;gt; Manualに設定する。
自動的に環境変数HTTP_PROXY, HTTPS_PROXYにスキームが追加された状態で設定される。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP Proxy: &lt;code&gt;proxy&lt;/code&gt; &lt;code&gt;port&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;HTTPS Proxy: &lt;code&gt;proxy&lt;/code&gt; &lt;code&gt;port&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ignore Hosts: &lt;code&gt;localhost, 127.0.0.0/8, ::1&lt;/code&gt;（プライベートネットワーク・組織内ネットワークのIPアドレス範囲またはドメインも追加する）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;curlやwget、pipなど主要コマンドは
注意点として、別ユーザとしてコマンドを実行すると環境変数が引き継がれない。
例えばsudo curlしたときにプロキシに接続しにいかない。&lt;/p&gt;
&lt;h2 id=&#34;etcsudoers&#34;&gt;/etc/sudoers&lt;/h2&gt;
&lt;p&gt;sudoでコマンドを実行したとき、実行時シェルに設定されている環境変数を引き継ぐようにする。
sudoersは書き込み禁止になっているためvisudoで編集する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# run as root&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;visudo -f /etc/sudoers
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-sudoers&#34; data-lang=&#34;sudoers&#34;&gt;Defaults env_keep+=&amp;#34;HTTP_PROXY&amp;#34;
Defaults env_keep+=&amp;#34;HTTPS_PROXY&amp;#34;
Defaults env_keep+=&amp;#34;NO_PROXY&amp;#34;
Defaults env_keep+=&amp;#34;EDITOR&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;etcenvironment&#34;&gt;/etc/environment&lt;/h2&gt;
&lt;p&gt;システム全体の環境変数として設定される。影響範囲が大きいので注意。
デスクトップユーザではSettings側の設定（Disabledなら設定されない）が優先されるようだった。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTP_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy:port
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HTTPS_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://proxy:port
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NO_PROXY&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;localhost, 127.0.0.0/8, ::1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;apt-etcaptaptconf&#34;&gt;apt: /etc/apt/apt.conf&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-apt&#34; data-lang=&#34;apt&#34;&gt;Acquire::http::proxy &amp;#34;http://proxy:port&amp;#34;;                             
Acquire::https::proxy &amp;#34;http://proxy:port&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;snap-systemctl-edit-snapdservice&#34;&gt;Snap: systemctl edit snapd.service&lt;/h2&gt;
&lt;p&gt;/etc/systemd/system/snapd.service.d/override.confにsystemdの設定ファイルを作成する。&lt;/p&gt;</description>
    </item>
    <item>
      <title>docker-compose run --rm終了時に他のコンテナも削除する</title>
      <link>https://blog.aoirint.com/entry/2020/docker_compose_run_rm_linked_containers/</link>
      <pubDate>Mon, 28 Sep 2020 10:10:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/docker_compose_run_rm_linked_containers/</guid>
      <description>&lt;p&gt;&lt;code&gt;docker-compose run --rm app&lt;/code&gt;を実行するとサービスappが起動してコンテナが作られ、実行が終わり次第コンテナは削除される。
このとき削除されるコンテナはforegroundで実行されたもののみで、
&lt;code&gt;depends_on&lt;/code&gt;などの設定からリンクを通じて起動した他サービスのdetachedコンテナは削除されず残り続ける。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/docker/compose/issues/2791&#34; title=&#34;docker-compose run &amp;lt;container&amp;gt; --rm does not rm links · Issue #2791 · docker/compose&#34;&gt;docker-compose run &amp;lt;container&amp;gt; &amp;ndash;rm does not rm links · Issue #2791 · docker/compose&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このissueでlinked containersを同時に削除する機能について議論されているが、
&lt;code&gt;run&lt;/code&gt;コマンドにオプションを増やしたくない、ということで却下されている。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As mentioned in this thread, docker-compose rm -f &amp;ndash;all and docker-compose down already allow cleaning up a project&amp;rsquo;s containers / resources. We won&amp;rsquo;t overload run with more options at that point.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ひとまず&lt;code&gt;docker-compose run&lt;/code&gt;終了後に&lt;code&gt;docker-compose down&lt;/code&gt;を実行するシェルスクリプトで対応する。&lt;/p&gt;
&lt;p&gt;compose_run.sh&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker-compose run --rm &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$@&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;EXIT_CODE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker-compose down
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit $EXIT_CODE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ubuntu 18.04のKernelをアップデートした（HWE Kernel）</title>
      <link>https://blog.aoirint.com/entry/2020/ubuntu_kernel_update/</link>
      <pubDate>Mon, 21 Sep 2020 00:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/ubuntu_kernel_update/</guid>
      <description>&lt;p&gt;環境の整理を兼ねて、UbuntuのKernelのアップデートをしたので、そのときのメモ。&lt;/p&gt;
&lt;h2 id=&#34;メイン-ubuntu-1804のkernelをアップデートしたhwe-kernel&#34;&gt;メイン Ubuntu 18.04のKernelをアップデートした（HWE Kernel）&lt;/h2&gt;
&lt;h3 id=&#34;カーネルバージョンについて&#34;&gt;カーネルバージョンについて&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;/lib/modules&lt;/code&gt;を見る限りインストール時のバージョンは&lt;code&gt;4.10.0-28&lt;/code&gt;で、
&lt;code&gt;/usr/src&lt;/code&gt;を見る限り&lt;code&gt;4.15.0-115&lt;/code&gt;をしばらく使ったあと、
&lt;code&gt;4.16.18&lt;/code&gt;に更新していた。&lt;/p&gt;
&lt;p&gt;バージョン&lt;code&gt;4.10.x&lt;/code&gt;はおそらくUbuntu 16.04をクリーンインストールしたときのもので、
バージョン&lt;code&gt;4.15.x&lt;/code&gt;は&lt;code&gt;dist-upgrade&lt;/code&gt;でUbuntu 18.04にアップデートしたときに変更されたと思われる。
その後ソフトウェア導入のためのバージョン合わせかなにかで&lt;code&gt;4.16.x&lt;/code&gt;にして、そのまま使っていた。&lt;/p&gt;
&lt;p&gt;4.15.xから4.16.xにアップデートするときにはUKUU（Ubuntu Kernel Update Utility）を使っていた。
このとき参考にしたサイト： &lt;a href=&#34;https://linuxhint.com/upgrade-kernel-ubuntu-1804/&#34; title=&#34;Upgrade Kernel on Ubuntu 18.04 – Linux Hint&#34;&gt;Upgrade Kernel on Ubuntu 18.04 – Linux Hint&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ところで、カーネルバージョンの後ろに付いているハイフン以降の数字はUbuntu Release ABIというらしいのだが、
UKUUを使ってカーネルをインストールするとこの部分がバージョン番号（ハイフンの前）を6ケタの数字に直したようなものになるので、
これはABIとは違いそうだ（ABIは0から255までの範囲のように思われる）。
ABIのドキュメントらしきものがあったので、機会があれば読みたい：&lt;a href=&#34;https://wiki.ubuntu.com/KernelTeam/BuildSystem/ABI&#34; title=&#34;KernelTeam/BuildSystem/ABI - Ubuntu Wiki&#34;&gt;KernelTeam/BuildSystem/ABI - Ubuntu Wiki&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;ukuuとセキュリティアップデートについて&#34;&gt;UKUUとセキュリティアップデートについて&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kledgeb.blogspot.com/2020/09/ubuntu-2004-164-linux-kerneldos.html&#34; title=&#34;Ubuntu 20.04 その164 - Linux kernelにDoSや任意コード実行の脆弱性・アップデートを - kledgeb&#34;&gt;Ubuntu 20.04 その164 - Linux kernelにDoSや任意コード実行の脆弱性・アップデートを - kledgeb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ubuntu.com/security/notices/USN-4489-1&#34; title=&#34;USN-4489-1: Linux kernel vulnerability | Ubuntu security notices | Ubuntu&#34;&gt;USN-4489-1: Linux kernel vulnerability | Ubuntu security notices | Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常の方法でインストールされるカーネルを使っている場合、
Linux Kernelに脆弱性が発見されてもこのようにUbuntu側からセキュリティアップデートが提供される。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GPU PC (Desktop) のセットアップメモ</title>
      <link>https://blog.aoirint.com/entry/2020/gpu_pc_setup/</link>
      <pubDate>Fri, 18 Sep 2020 20:00:00 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/gpu_pc_setup/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://releases.ubuntu.com/18.04.5/&#34; title=&#34;Ubuntu 18.04.5 LTS (Bionic Beaver)&#34;&gt;Ubuntu 18.04.5 LTS (Bionic Beaver)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ubuntu 18.04、Windows 10のデュアルブート環境を構築する。
プロキシ下を想定しているので、不要な場合は適宜調整。&lt;/p&gt;
&lt;h2 id=&#34;時刻ずれの解消&#34;&gt;時刻ずれの解消&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://linux.just4fun.biz/?Linux%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB%E3%83%96%E3%83%BC%E3%83%88%E3%81%AEWindows%E6%99%82%E5%88%BB%E3%82%92UTC%E3%81%AB%E3%81%99%E3%82%8B&#34; title=&#34;Linux環境設定/デュアルブートのWindows時刻をUTCにする - Linuxと過ごす&#34;&gt;Linux環境設定/デュアルブートのWindows時刻をUTCにする - Linuxと過ごす&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;デュアルブート環境では、BIOSの時刻を介してWindows側の時刻管理（ローカル時間）とUbuntu側の時刻管理（UTC時間）が衝突して、タイムゾーンの時差分、時計がずれてしまう。ここでは、Windows側の時刻管理をUTC時間にするようにレジストリを変更して対処する。&lt;/p&gt;
&lt;p&gt;Windows上で管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;reg add &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation&amp;#34;&lt;/span&gt; /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;ntpサーバの設定プロキシ環境&#34;&gt;NTPサーバの設定（プロキシ環境）&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sicklylife.hatenablog.com/entry/2016/02/03/201557&#34; title=&#34;Ubuntu 18.04 / 16.04 で時刻合わせの設定を変更する - Sickly Life Blog&#34;&gt;Ubuntu 18.04 / 16.04 で時刻合わせの設定を変更する - Sickly Life Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://yyatsuo.com/post-1297/&#34; title=&#34;systemdのSNTPクライアント機能を使ってみる | Keep the Light Alive&#34;&gt;systemdのSNTPクライアント機能を使ってみる | Keep the Light Alive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://go-journey.club/archives/9491&#34; title=&#34;【Windows】「ハードウェアクロック」と「システムクロック」と「NTP 時刻同期」の関係 | 100%レンタルサーバーを使いこなすサイト&#34;&gt;【Windows】「ハードウェアクロック」と「システムクロック」と「NTP 時刻同期」の関係 | 100%レンタルサーバーを使いこなすサイト&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;時刻同期のためプロキシ内のNTPサーバを設定する。&lt;/p&gt;
&lt;p&gt;Settings &amp;gt; Details &amp;gt; Date &amp;amp; Timeで使われるNTPサービスは&lt;code&gt;systemd-timesyncd&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>nginx basic auth, reverse proxy, static files</title>
      <link>https://blog.aoirint.com/entry/2020/nginx_basicauth_reverseproxy_staticfiles/</link>
      <pubDate>Fri, 27 Mar 2020 10:30:13 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/nginx_basicauth_reverseproxy_staticfiles/</guid>
      <description>&lt;h2 id=&#34;basic-auth&#34;&gt;Basic auth&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/kotarella1110/items/be76b17cdbe61ff7b5ca&#34;&gt;Nginx で Basic 認証 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;auth_basic&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authentication&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;Required&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;auth_basic_user_file&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;DIRECTORY/.htpasswd&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reverse-proxy&#34;&gt;Reverse proxy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/schwarz471/items/9b44adfbec006eab60b0&#34;&gt;Nginxによるリバースプロキシの設定方法 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;HOST&lt;/span&gt; $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Real-IP&lt;/span&gt; $remote_addr;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-Host&lt;/span&gt; $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-Server&lt;/span&gt; $host;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;X-Forwarded-For&lt;/span&gt; $proxy_add_x_forwarded_for;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;proxy_pass&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;http://localhost:8000&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;static-files&#34;&gt;Static files&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://shoya.io/ja/posts/nginx-root/&#34;&gt;Nginxの静的ファイル配信でハマった - shoya.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;location&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/static/&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;PARENT_OF_STATIC_DIRECTORY&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Let&#39;s Encrypt certbot Error Ubuntu（ImportError: cannot import name &#39;constants&#39;）</title>
      <link>https://blog.aoirint.com/entry/2020/certbot_importerror/</link>
      <pubDate>Fri, 27 Mar 2020 10:09:41 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/certbot_importerror/</guid>
      <description>&lt;p&gt;間違えてOSのパッケージリポジトリからcertbotを入れてしまった.&lt;/p&gt;
&lt;p&gt;コマンド&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo certbot --nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;エラー1（初期状態）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ImportError: cannot import name &amp;#39;constants&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;エラー2（&lt;code&gt;pip3 uninstall certbot&lt;/code&gt;の後）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-plain&#34; data-lang=&#34;plain&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AttributeError: module &amp;#39;acme.challenges&amp;#39; has no attribute &amp;#39;TLSSNI01Response&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx&#34;&gt;Certbot - Ubuntubionic Nginx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pip3 uninstall certbot acme
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt purge certbot python-certbot-nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# HERE: register official ppa repository (see official guide)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install certbot python-certbot-nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>systemd service</title>
      <link>https://blog.aoirint.com/entry/2020/systemd_service/</link>
      <pubDate>Thu, 19 Mar 2020 06:32:01 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/systemd_service/</guid>
      <description>&lt;p&gt;テンプレート（一般ユーザ権限、bashrc使用）&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-systemd&#34; data-lang=&#34;systemd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Description&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;My Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Type&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;simple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;User&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Group&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Restart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;WorkingDirectory&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;WORKING_DIR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ExecStart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/bin/bash -c &amp;#34;COMMAND&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[Install]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;WantedBy&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;multi-user.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo ln -s my_service.service /etc/systemd/system/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl enable my_service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl restart my_service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# After you edit service file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Check log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo systemctl status my_service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you are using python, maybe you need to set environment &lt;code&gt;PYTHONUNBUFFERED=1&lt;/code&gt; to see log.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-systemd&#34; data-lang=&#34;systemd&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# In [Service] Section&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Environment&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PYTHONUNBUFFERED=1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Environment&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;KEY=VALUE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/DQNEO/items/0b5d0bc5d3cf407cb7ff&#34;&gt;Systemdを使ってさくっと自作コマンドをサービス化してみる - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/ch7821/items/369090459769c603bb6b&#34;&gt;systemd サービスユニット覚書 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/a_yasui/items/f2d8b57aa616e523ede4&#34;&gt;Systemd メモ書き - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/ukiuni@github/items/400e4fdaae14b9bc0fcf&#34;&gt;Systemd Unit File チートシート - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ubuntu, add user to group</title>
      <link>https://blog.aoirint.com/entry/2020/ubuntu_add_user_to_group/</link>
      <pubDate>Sun, 15 Mar 2020 10:39:03 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2020/ubuntu_add_user_to_group/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;usermod -aG GROUP USER
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adduser USER GROUP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://qiita.com/orangain/items/056db6ffc16d765a8187&#34;&gt;https://qiita.com/orangain/items/056db6ffc16d765a8187&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>SSD換装時のOS移動（スケールダウン）</title>
      <link>https://blog.aoirint.com/entry/2018/move_os_storage_scale_down/</link>
      <pubDate>Wed, 29 Aug 2018 04:09:07 +0900</pubDate>
      <guid>https://blog.aoirint.com/entry/2018/move_os_storage_scale_down/</guid>
      <description>&lt;p&gt;容量の小さなSSDに換装する（HDD 500GBからSSD 250GB）。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;対象のHDD, SSD以外でUbuntuを起動（USBブートなど）&lt;/li&gt;
&lt;li&gt;GPartedで必要なパーティションをHDDからSSDにコピー（Boot, OSとか）&lt;/li&gt;
&lt;li&gt;コピー先でパーティションを右クリック、Manage Flagsからコピー元のパーティションとFlagsを一致させる&lt;/li&gt;
&lt;li&gt;Ubuntuとのデュアルブートにしていたため、EFIをマウントして&amp;quot;ubuntu&amp;quot;を削除&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
