トップ 追記

Days of Speed

過ぎゆく日々を書こう。忘れっぽい未来の自分のために


2021-09-18

_ フラットファイルCMSのBluditドキュメント日本語版を公開しています

フラットファイルCMSのBluditドキュメントを翻訳してgithubで公開していましたが、フォーラムに連絡しても反応無くて公式から公開される気配も無いので暫定的に自分のサイトで公開することにしました。ご覧ください。

Tags: bludit

2021-09-16

_ vagrant-libvirtを使うときのファイル共有はvagrant-sshfsを使うのがいい

VirtualBoxからvirt-manager(kvm)に移行したのでVagrantもvagrant-libvirtに移行しました。 以前、良いと言っていたvagrant-lxdですが、機能自体は軽くて素晴らしいのですがboxがなくて面倒になったので普通のVirtualBoxのVagrantに戻ってました…。

vagrant-libvirtは、libvirtが使える環境なら(使えない場合は上の「移行した」のリンク先を参考に環境を整えてから)、READMEに書いてある必要なパッケージをインストールして(おそらくほとんど入っているけど念のため)

 $ sudo apt-get build-dep vagrant ruby-libvirt
 $ sudo apt-get install qemu libvirt-daemon-system libvirt-clients ebtables dnsmasq-base
 $ sudo apt-get install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev
 $ sudo apt-get install libguestfs-tools

vagrantからプラグインをインストールすれば使えます。

 $ vagrant plugin install vagrant-libvirt

デフォルトでlibvirtを使うなら環境変数も設定しておきます。

 export VAGRANT_DEFAULT_PROVIDER=libvirt

これでlibvirtのboxで以下のようにすれば起動する…

 $ vagrant init debian/bullseye64
 $ vagrant up --provider libvirt

 Bringing machine 'default' up with 'libvirt' provider...
 It appears your machine doesn't support NFS, or there is not an
 adapter to enable NFS on this machine for Vagrant. Please verify
 that `nfsd` is installed on your machine, and try again. If you're
 on Windows, NFS isn't supported. If the problem persists, please
 contact Vagrant support.

起動しない。確かにnfsdは入れてないけどなぜ?と思って「vagrant-libvirt nfs」で検索すると、vagrant-libvirtのsynced folderにNFSを使っているからという理由が判明。

理由はわかったし解決方法も一緒に書いているけど(そもそもドキュメントにも書いてた)、NFSを入れるのもイヤだし9pも微妙だなと思ってたときに、vagrant-sshfsがあったことを思い出した。

ということで早速試してみた。プラグインをインストールして

 $ vagrant plugin install vagrant-sshfs

Vagrantfileに設定を追加。

 config.vm.synced_folder "./", "/vagrant", type: "sshfs"

これはなかなかいいんじゃないかな。

Tags: vagrant

2021-09-15

_ さくらのVPSサーバーがメモリ1Gなのでzramを入れた

サーバーのメモリが1Gでカツカツなので、移行するまでzramで耐えることにした。

zramはDebianのパッケージとして入っているので以前のように設定することもなくaptでインストール。

 $ sudo apt install zram-tools

/etc/default/zramswapの設定は、メモリ1GBなら変更しなくても大丈夫なのでコメントだけ外して、以下のコマンドで再起動しておしまい。

 $ sudo systemctl restart zramswap.service

2021-09-14

_ サーバー移行したのにもうピンチ

サーバーをVPSに移行しましたが、メモリ1GBプランではカツカツです。 いや、現状は大丈夫だけど、これから他にいろいろ入れてと考えていたことを実行するリソースがありません。

今、契約しているプランが古いプランなのでスケールアップできず、上に上げるにしても再移行するしかない状態。

すぐに移動できるようにはしてあるけど、もう一度は面倒だな。

Tags: nofuture

2021-09-13

_ tDiaryをDocker Composeで動かす

tDiaryのDockerイメージはあるけど、ドキュメントは無いしDocker Hubのページにもなんにも書いていないので動かし方を書いておきます。 この時代に新規にtDiaryを使う変わり者はいないと思うので既存データを持ってくる前提です。

ディレクトリを作成して、その中に既存tDiaryの日記データフォルダ、公開フォルダ、tdiary.confをコピーします。

 tDiary/
 ├ data/ tDiaryの日記データフォルダ
 ├ public/ 公開フォルダ
 ├ tdiary.conf tDiaryの設定
 └ docker-compose.yml 以下を参照して作成

以下のようにdocker-compose.ymlを作成します。設定は自分の環境に合わせて適宜変更してください。 このdocker-copose.ymlでは、tDiaryコンテナに直下にあるdataとpublicフォルダ、tdiary.confをバインドマウントしています。

 version: "3"

 services:
   tdiary:
     image: tdiary/tdiary
     volumes:
       - "./data:/usr/src/app/data"
       - "./public:/usr/src/app/public"
       - "./tdiary.conf:/usr/src/app/tdiary.conf"
     ports:
       - "80:9292"

これで docker-compose up -dと入力すれば動きます。

Tags: docker tdiary

_ ローカル環境でhttpsのテストするためにmkcertを使って証明書を作る

上のtDiaryを動かす例ではhttpそのままですが、本番で動かすにはhttpsにする必要があるので前段にnginxのリバースプロキシを置いています。

SSLのテストには証明書が必要になりますが、ローカルでLet's Encryptを使ったり、OpenSSLでオレオレ証明書を作るのも面倒です。mkcertを使うと手元で手軽に証明書が生成できます。

mkcertを使ってみる

mkcertのgithubリリースページにLinux用バイナリがあるのでダウンロードします。

ダウンロードしたらバイナリに実行権限を付けておいてください。あと、ファイル名が「mkcert-v1.4.3-linux-amd64」と長いので、mkcertにリネームしておきましょう。

そして、mkcertが使うlibnss3-toolsパッケージをインストールします。

 $ sudo apt install libnss3-tools

これで準備ができたのでmkcertを使って認証局をインストールします。mkcertを使わなくなった場合は、オプションに-uninstallを指定すればアンインストールできます。

 $ ./mkcert -install

利用するドメインを列挙して証明書を発行します。

 $ ./mkcert www.example.com.localhsot foo.example.com.localhost

これで、www.example.com.localhost+3-key.pemとwww.example.com.localhost+3.pemが生成されたので、適当なディレクトリに置いておきます。

あとは、nginxの設定ファイルなどに証明書を指定します。こんな感じです。

 server {
   server_name www.example.com.localhost;

   listen 443 ssl;
   ssl_certificate /etc/letsencrypt/live/www.example.com.localhost/www.example.com.localhost+1.pem; ← これ
   ssl_certificate_key /etc/letsencrypt/live/www.example.com.localhost/www.example.com.localhost+1-key.pem; ← これ

   ssl_session_cache shared:le_nginx_SSL:10m;
   ssl_session_timeout 1440m;
   ssl_session_tickets off;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_prefer_server_ciphers off;

   ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";

   後略
 }
Tags: server tips

_ Docker Compose同士のネットワークをつなぐにはどうしたらいい?

Docker Composeは、デフォルトでcomposeファイルだけの閉じたネットワークを自動作成するので他のネットワークとはつながりません。ネットワークは、docker network lsで確認できます。何も指定していない場合「(サービス名)_default」というbridgeネットワークが確認できます。

共通のネットワークを作成するには、docker networkで作ります。

 $ docker network create (ネットワーク名)

作成したら、composeファイルのservicesとnetworkにネットワークに参加する設定を追記します。

 services:
   hoge:
       (中略)
     networks:
       - (ネットワーク名)

 networks:
   (ネットワーク名):
     external: true
Tags: docker

_ Docker環境でLet's EncryptのHTTPSに対応したnginxリバースプロキシを使うには何を選ぶといい?

  • nofuture.tvでの答え: 素のnginxコンテナとホスト側(Debian)のcertbotで証明書取得と更新にした。

Let's Encryptしつつ単純にバックエンドに流すだけなら、https-portalコンテナを使うのが楽です。

ほかにも便利機能を持ったコンテナもありますが、このnofuture.tvでは「rewriteを使ってサービスごとにURLのマッピングをしなければいけない」という条件がありました。これが、便利コンテナだけで対応は難しいので最終的には素のnginxコンテナに自分で設定を追加することにしました。

そしてLet's Encryptは、certbotコンテナもありますが、Debianパッケージのcertbotを使えば証明書の取得はもちろん更新のcronも設定されているので、それを使うことにしました。

検索をしているとリバースプロキシの振り分けもLet's Encryptの取得、更新も全部コンテナだけで済まそうとして、めちゃくちゃ複雑になっている人を多く見かけました。コンテナにとらわれず自分の環境で楽に設定できる方法を考えるのがいいんじゃないでしょうか。

Tags: docker nginx

2021-09-12

_ 北海道石狩サーバーからこんにちは(さくらのVPSに移転しました)

この2週間ぐらいずっと、このnofuture.tvサーバー移転作業していました。ということで、これが見えてればちゃんと移転できたということですね。

サーバーの移転にあたっては「自宅だけじゃなく、どこにでも持っていけるようにサーバーのポータビリティを上げたい!」という気持ちがありました。ということでサーバーで動かしているものは全部、Dockerで動かしています。

動いているもの(システム)とデータを分離したので、アップデートも楽にできるようになったし管理もめっちゃ楽になるはず。

Tags: nofuture

2021-09-07

_ certbotで、あっという間にSSL化完了

nofuture.tvのサーバーは、長らくApache2で運用していましたが、2年ほど前にフロントにnginxのリバースプロキシを置いて、後ろでapacheを動かすようにしていました。

tDiaryのDocker運用の目処が付いたので投入しようかと思ったけれど、ふと、実サーバーでLet's Encryptを設定して使う方法を知らないことに気がついたので、今の環境にLet's EncryptでSSLの設定してみました。

手順とか

自分がインストールした環境は、前段にnginxのリバースプロキシがあって後ろにApache2あります。サイトはバーチャルホストでいくつかあって、/etc/nginx/sites-available以下にそれぞれのサイトの設定を置いています。今回は、前段にあるnginxにLet's Encryptを使ってSSL化します。

インストールは、aptでcertbotとpython3-certbot-nginxをインストールしました。

 # apt install certbot python3-certbot-nginx

そして、nginxに適用するのでオプション--nginxをつけて、-dでバーチャルホストのドメインを指定して実行。

 # certbot --nginx -d www.nofuture.tv -d silverrecipe.nofuture.tv -d uracci.nofuture.tv -d walkmon.nofuture.tv

最初、使っていないドメインも指定してエラーが出て止まったけれど、それを外して実行したら、それぞれのドメインの証明書を取得して、nginxの/etc/nginx/sites-availableに置いているバーチャルホストの設定も書き換えて何もせずに全サイトのSSL化完了。

めっちゃ楽だわー。すぐ手を付けてればよかった。


2001|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|06|08|12|
2011|01|02|03|06|07|08|09|10|11|12|
2012|01|02|03|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|12|
2014|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|10|11|12|
2017|01|02|11|12|
2018|01|02|03|04|07|09|10|11|12|
2019|01|03|04|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|

クリエイティブ・コモンズ・ライセンス Jun NOGATA を著作者とするこの 作品クリエイティブ・コモンズの 表示 - 継 承 4.0 国際 ライセンスで提供されています。