WordPressをやめて静的サイトジェネレータに乗り換えようかと考え始めた

きっかけは Qiita のこの記事を読んで。

 cf. 7年間使ってきたWordPressを捨ててContentful+Gatsby+Netlifyにしたら爆速になったし経緯とか教訓とか語る – Qiita

正直、Contentful も Gatsby も Netlify もどういうものかよく分かってないんだけど、WordPress に不満が溜まってきたからだ。

これ以上は後で書く。

使わなくなった外付けHDDのデータを消去する

年末にサーバを1台止めたので、そこに繋いでいた外付け HDD を使わなくなった。1TB の HDD で、もう使いみちもなさそうだから処分しようと思う。というわけで、中のデータを完全消去することにした。

Ubuntu (というか Linux?)には、shred というコマンドがある。ファイルやディスクにランダムデータやゼロを書き込んで、データを消去、復元できなくするコマンドだ。

処分予定の HDD を Ubuntu マシンに繋いでみると、つぎのようになった。

takatoh@apostrophe $ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi
├─sda2   8:2    0 927.1G  0 part /
└─sda3   8:3    0   3.9G  0 part [SWAP]
sdb      8:16   0 931.5G  0 disk 
└─sdb1   8:17   0 931.5G  0 part /media/takatoh/805ec9ee-d5ae-4894-95b2-cea22ab0
sr0     11:0    1  1024M  0 rom

sdb が対象の HDD だ。このディスクのデータを消去するにはつぎのようにする。

takatoh@apostrophe $ sudo shred -uvz /dev/sdb

デフォルトでは、ランダムデータを書き込むことを3回繰り返す。指定したオプションの意味はつぎの通り。

  • -u 上書き後にファイルを消去
  • -v コマンド実行中の詳細(進捗)を表示
  • -z ランダムデータ書き込み後にゼロを書き込む

というわけで、今回のケースでは都合4回書き込むことになるんだけど、昨日の夜に始めて約12時間くらいが経過した今朝の段階でやっと2回目の書き込みが始まったところ。予想以上に時間がかかりそうだなぁ。

MyDNSに独自ドメインを設定してみる

マイIPが遅いので、何か別の方法はないかと調べていたところ、別のサーバで使っている MyDNS が独自ドメインも使えるということが分かった。

MyDNS を使っているのは、WiMAX でインターネットに接続してるサーバだ。WiMAX はグローバルアドレスを付与してくれるサービスがあるけど、そのアドレスは固定ではないので DDNS の MyDNS を使っていたわけ。で、これを使い始めた時には、無料で使えるのは MyDNS のサブドメインだけだと思ったんだけど、いま調べたら独自ドメインでも無料で使えるようだ。早速試してみよう。

MyDNS のドメイン登録情報を変更する

独自ドメインのホスト名を仮に server3.panicblanket.com としよう。

MyDNS にログインして、DOMAIN INFO のページに移動する。このページで Domain、MX、Hostname を新しいホスト名に合わせて書き換えて、変更を反映させる。

つぎに、サーバのほうで、IP アドレスを通知するスクリプトを実行して、実際に使っているアドレスを通知する。

さくらインターネットでゾーン編集

ドメイン自体はさくらインターネットで管理しているので、server3.panicblanket.com だけ、MyDNS のネームサーバを参照するように編集する。

具体的には、ゾーン編集の画面でつぎのように設定する。

  • エントリ名: server3.panicblanket.com
  • 種別: NS
  • 値: ns0.mydns.jp.

ns0.mydns.jp は MyDNS のネームサーバ。最後に . (ドット)をつけるのを忘れないこと。server3.panicblanket.com の名前解決には ns0.mydns.jp を参照しろってことだな。

さて、これで設定は完了のはず。

結果

新しい名前で ping もとおるし、ssh での接続もできるようになった。大丈夫のようだ。

マイIPは遅い

先日、インターリンク社のマイIPサービスを使って固定IPアドレスを割り当てたわけだけど、はっきり言って通信速度が遅い。どのくらい遅いか、マイIPを使わない場合と比べてみた。

  • マイIPなし: 770Mbps,アップロード 560Mbps
  • マイIPあり: 5.9Mbps、 アップドード 5.6Mbps

通信速度は fast.com ってページで測った。マイIP経由だと約1/100だ。何度か測ってみたけどだいたいこのオーダー。これじゃせっかくの NURO光回線(下り2Gbps,上り1Gbps)がもったいない。

そりゃもちろん、VPN を介してインターリンク社のネットワークを経由するんだから、その分遅くなるのは承知してたけど、これほどとは。これは何かほかの方法を考えるかなぁ。

[追記]

インターリンクの FAQ に通信速度について書いてあった。曰く:

実際の通信速度は弊社のマイIPサーバーとお客様のPCとの間の接続環境によって変化します。
弊社ではおよそ 2Mbps~4Mbpsと推測しております。

マイIPサービスの通信速度はどれくらいですか? – インターリンク FAQ

だいたい実測通りだ。さきに言ってよ……(いや、見つけられなかったオレが悪いんだけどさ)。

インターリンクのマイIPサービスでCentOS8マシンに固定IPアドレスを割り当てる

インターリンクのマイIPサービス

NURO光は固定IPアドレスを割り当てるサービスを提供していないので、インターリンク社のマイIPというサービスを使って固定IPアドレスを割り当てる。

 cf. INTERLINK

上のページから、マイIPサービスに申し込んだ。申し込み自体は何も難しくはない。クレジット払いにしたのですぐに利用できるようになる。

問題はここから。マイIPサービスは、VPN を使って PC とインターリンクのサーバを繋ぎ、PC の ppp0 インターフェイスに固定IPアドレスを割り当てるようになっている(ようだ)。そのためには PPTP クライアントの設定が必要なんだけど、これでハマった。

環境

まずは環境を整理しておこう。

  • OS: CentOS 8.0
  • マイIPに必要な情報は取得済み

設定作業(1)

インターリンクの公開しているマニュアルに沿って作業する。

 cf. https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=501

マイIP接続ツールをダウンロードして /etc 以下に展開。

[takatoh@rollo ~]$ curl -O https://www.interlink.or.jp/support/vpn/myip/myiptools/myiptools.tar.gz
[takatoh@rollo ~]$ sudo tar xvzf myiptools.tar.gz -C /etc

設定ファイル /etc/myip/myip.conf を自分の接続情報に合わせて編集。

[takatoh@rollo ~]$ sudo vim /etc/myip/myip.conf

初期設定スクリプトを実行。

[takatoh@rollo ~]$ sudo /etc/myip/myip-setup

ここでエラーが起きた。メッセージを抜粋する。

一致した引数がありません: pptp-setup
エラー: 一致するものが見つかりません
/etc/myip/myip-setup: 行 111: pptpsetup: コマンドが見つかりません
/etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません

myip_miXXXXXX っていうファイルは自分用の設定ファイル(実際には miXXXXXX の部分に自分のログインIDが入る)。

初期設定スクリプト myip-setup の中を覗いてみて分かったのは、pptp-setup っていうパッケージをインストールしようとしているけどそれが失敗しているということと、そのせいか pptpsetup コマンドが見つからないようだ、ってことだ。

じゃあ、手動で pptp-setup パッケージをインストールしてやればいいかというと、そんなパッケージは無いらしい。

[takatoh@rollo ~]$ dnf search pptp-setup
一致する項目はありませんでした。

というところまでが昨日の話。

設定作業(2)

今日になっていろいろググってみたところ、PPTP Client の公式サイトを見つけた。

 cf. http://pptpclient.sourceforge.net/

このページの Download セクションには、pptp には pptpsetup が含まれている、と書いてある。

pptp, the helper program used by pppd to make a tunnel, which also includes pptpsetup,

なら、ここからダウンロードして pptpsetup をコピーしてやったらいいんじゃないか。というわけで早速ダウンローとして展開。するとたしかに含まれていた。

[takatoh@rollo ~]$ wget https://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.10.0/pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ tar xzvf pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ ls pptp-1.10.0
AUTHORS            dirutil.c        pptp_compat.h   routing.c
COPYING            dirutil.h        pptp_ctrl.c     routing.h
ChangeLog          options.pptp     pptp_ctrl.h     test-redirections.c
DEVELOPERS         orckit_quirks.c  pptp_gre.c      test-redirections.h
Documentation      orckit_quirks.h  pptp_gre.h      util.c
INSTALL            ppp_fcs.c        pptp_msg.h      util.h
Makefile           ppp_fcs.h        pptp_options.h  vector.c
NEWS               pptp.8           pptp_quirks.c   vector.h
PROTOCOL-SECURITY  pptp.c           pptp_quirks.h   vector_test.c
README             pptp_callmgr.c   pptpsetup       version.c
TODO               pptp_callmgr.h   pqueue.c        version.h
USING              pptp_compat.c    pqueue.h

この pptpsetup、中を覗いてみると Perl のスクリプトのようだ。/usr/sbin にコピーして実行権限をつけてやる。

[takatoh@rollo ~]$ sudo cp pptp-1.10.0/pptpsetup /usr/sbin
[takatoh@rollo ~]$ sudo chmod 755 /usr/sbin/pptpsetup

さあ、これでどうだろう。初期設定スクリプトを実行。

[takatoh@rollo ~]$ sudo /etc/myip/myip-setup
CentOS-8 - AppStream                            2.0 kB/s | 4.3 kB     00:02    
CentOS-8 - Base                                 3.2 kB/s | 3.9 kB     00:01    
CentOS-8 - Extras                               673  B/s | 1.5 kB     00:02    
Package gawk-4.2.1-1.el8.x86_64 is already installed.
Package sed-4.5-1.el8.x86_64 is already installed.
依存関係が解決しました。
行うべきことはありません。
完了しました!
/sbin/pptpsetup: can't write to '/etc/ppp/peers/myip_miXXXXXX': No such file or directory
/etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません
done.

pptpsetup コマンドは実行できたようだけど、ファイルが書き込めないといっている。調べてみると /etc/ppp/peers ディレクトリが無いようなので作ってやる。

[takatoh@rollo ~]$ sudo mkdir /etc/ppp/peers

こんどはどうだ。

[takatoh@rollo ~]$ sudo /etc/myip/myip-setup
メタデータの期限切れの最終確認: 0:01:04 時間前の 2019年12月15日 10時20分25秒 に実施しました。
Package gawk-4.2.1-1.el8.x86_64 is already installed.
Package sed-4.5-1.el8.x86_64 is already installed.
依存関係が解決しました。
行うべきことはありません。
完了しました!
done.

エラーなし。うまくいったようだ。これでやっと次にすすめる。

設定作業(3)

マニュアルによると:

PPTP接続に必要なTCPポート1723およびGREプロトコルを通過できるようにしておく必要があります。

と書いてあるけど、やり方が書いてない。ポートの開け方はわかる。

[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-port=1723/tcp --permanent

GREプロトコルの方はググったら↓のページを見つけた。

 cf. https://www.vultr.com/docs/how-to-establish-a-gre-tunnel-between-two-centos-7-servers
 cf. https://github.com/firewalld/firewalld/issues/30

ip_gre モジュールをロードする。

[takatoh@rollo ~]$ modprobe ip_gre

GRE プロトコルを通過させるのは firewall-cmd でできるようだ。

[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-rich-rule='rule protocol value="47" accept' --permanent

さあ、これで準備は整ったはずだ。

接続開始

myip-up コマンドで接続を開始する。

[takatoh@rollo ~]$ sudo /etc/myip/myip-up
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 202.241.129.128
remote IP address 202.241.128.1
private IP mode.
done.

ifconfig コマンドの出力(下はその抜粋)をみると、ppp0 インターフェイスに固定IPアドレスが割り振られているのがわかる。

ppp0: flags=4305  mtu 1346
        inet 202.241.129.128  netmask 255.255.255.255  destination 202.241.128.1
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 7  bytes 100 (100.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 134 (134.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ちなみに、接続を終了するには /etc/myip/myip-down コマンドを実行する。

確認

別のネットワークに繋がってる Windows マシンから、http://202.241.129.128/hello.html にアクセスしたところ、ちゃんと「Hello, this is rollo.」と表示されるのを確認した(rollo ってのは VPN 接続したホストの名前)。

これにて無事完了。

[追記 12/16]

一昨日(12/14)、スクリプトがエラーになって先に進めなくなったところで、インターリンク社に問い合わせをしたんだけど、今日になってその回答が来た。曰く:

大変申し訳ございませんが、マイIPはCentOS 8.0に対応しておりません。

……まぁ、予想はしてたけどね。リリースされたばっかりのディストリビューションだしね。

それに、パッケージが無かったりすりのはディストリビューションの方の問題であって、インターリンク社が悪いわけではない。

ともかく、CentOS 8.0 でマイIPサービスを使おうという人がいたら、上に書いた方法でうまくいったということを参考にしてもらおう。

NURO光が開通した

昨日のことなんだけど、時間がとれなかったので今日書く。

回線の工事をやってもらって、NURO光が開通した。工事は宅内工事と屋外工事が必要なんだけど、1日でやってもらった(追加工事費がかかる)。宅内工事は午前中に、屋外工事は午後4時ころには終わった。

で、設置された ONU というルータみたいな機器に、apostrophe と rollo の2台を有線で繋いで試してみた。結果、2台のコンピュータ同士も通信できるし、もちろんインターネットにも接続できる。まずは大丈夫のようだ。この記事もNURO光で接続して書いてる。

ネットワークアドレスを変更

デフォルトではネットワークアドレスが 192.168.1.0/24 になってるんだけど、これでは既存のネットワークとかぶるので、192.168.2.0/24 に変更する。

ONU は web 画面で設定できるようになっているので、http://192.168.1.1 にブラウザでアクセスしてログイン。ONU 自身のアドレスを始め、DHCP で割り当てるアドレスの範囲、デフォルトゲートウェイなどを 192.168.2.0/24 になるように変更した。これで電源を入れなおせばひとまずは完了。

あとは、web サーバをインターネットに公開するために、固定IPアドレスの設定なんかをやってたんだけどなかなかうまくいかずに昨日は時間切れ。というわけで今日書いてる次第。これについては記事を分ける。

Samba がこわれた

ローカルネットワーク上に作った Samba サーバがこわれた。先週の土曜日の話で、細かいことは覚えてないのでおおまかに書く。

最初に書いておくと、この Samba サーバは、ホスト名を wplj といい、OS は Ubuntu 16.04。

事の発端は Samba サーバにユーザを限定した共有フォルダを作ろうとしたことだ。下のページあたりを参考に /etc/samba/smb.conf ファイルに追記して samba サービスをリスタートしたところ、エラーになった。

 cf. アクセス権付の共有フォルダ作成 – Server World

追記した部分を削除してリスタートしてもエラーになる。仕方がないので Samba 自体をいったん削除してインストールしなおしても同じだった。再インストール後は最低限の設定だけで、共有フォルダを作らなくてもエラーになるんだから訳がわからない。設定自体は、さっきまで動いていた設定ファイル(バックアップしておいた)からコピペしたんだから間違ってないはずだ。どういうわけさ。

Samba サーバは Windows マシンのデータバックアップ用で、データ自体は残っているので大丈夫といえば大丈夫なんだけど、Windows からアクセスできなくなったのは不便だ。どうしようか。

[追記]

とりあえず、データバックアップ用サーバの nightschool にデータを移動して、Samba サーバを立てた。nightschool は CentOS 7.7 だけど、すんなりといった。何が違うんだ。

とにかく、データに Windows からもアクセスできるようにはなったので良しとする。上に書いたように Samba は Windows マシンのデータバックアップ用途だったので、そういう意味では nightschool にまとまってよかったのかも。

ユーザを限定した共有フォルダを作る件についてはまた今度。

Ubuntu 16.04 に Dropbox をインストール

メインマシンの apostrophe (OS は Ubuntu 16.04 LTS)に Dropbox をインストールする。

まずはこのページから .deb ファイルをダウンロード。で、インストールする。.deb ファイルのインストールは dpkg コマンド。apt じゃないんだな。

takatoh@apostrophe $ cd Downloads
takatoh@apostrophe $ ls
dropbox_2019.02.14_amd64.deb
takatoh@apostrophe $ sudo dpkg -i dropbox_2019.02.14_amd64.deb
[sudo] takatoh のパスワード: 
以前に未選択のパッケージ dropbox を選択しています。
(データベースを読み込んでいます … 現在 239399 個のファイルとディレクトリがインストールされています。)
dropbox_2019.02.14_amd64.deb を展開する準備をしています …
dropbox (2019.02.14) を展開しています…
dpkg: 依存関係の問題により dropbox の設定ができません:
 dropbox は以下に依存 (depends) します: libpango1.0-0 (>= 1.36.3) …しかし:
  パッケージ libpango1.0-0 はまだインストールされていません。

dpkg: パッケージ dropbox の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
man-db (2.7.5-1) のトリガを処理しています …
desktop-file-utils (0.22-1ubuntu5.2) のトリガを処理しています …
bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています …
Rebuilding /usr/share/applications/bamf-2.index…
gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています …
mime-support (3.59ubuntu1) のトリガを処理しています …
hicolor-icon-theme (0.15-0ubuntu1.1) のトリガを処理しています …
処理中にエラーが発生しました:
 dropbox

あれ、エラーが発生した。libpango1.0-0 っていうパッケージがインストールされてないみたいだ。インストールする。こんどは apt で。

takatoh@apostrophe $ sudo apt install libpango1.0-0

もういちど Dropbox のインストール。

takatoh@apostrophe $ sudo dpkg -i dropbox_2019.02.14_amd64.deb
(データベースを読み込んでいます … 現在 239431 個のファイルとディレクトリがインストールされています。)
dropbox_2019.02.14_amd64.deb を展開する準備をしています …
dropbox (2019.02.14) で (2019.02.14 に) 上書き展開しています …
dropbox (2019.02.14) を設定しています …
Please restart all running instances of Nautilus, or you will experience problems. i.e. nautilus --quit
Dropbox installation successfully completed! You can start Dropbox from your applications menu.
man-db (2.7.5-1) のトリガを処理しています …
desktop-file-utils (0.22-1ubuntu5.2) のトリガを処理しています …
bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています …
Rebuilding /usr/share/applications/bamf-2.index…
gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています …
mime-support (3.59ubuntu1) のトリガを処理しています …
hicolor-icon-theme (0.15-0ubuntu1.1) のトリガを処理しています …

こんどは大丈夫のようだ。しばらく待つと、Dropbox のウィンドウが立ち上がるので、指示に従って Dropbox をスタート。あとはアカウントの設定をすれば、ファイルの同期が始まる。

web サーバからファイルをダウンロードできない問題、その後

前エントリ、というかその追記部分の続き。

MyDNS にログインして、DNS の更新ログを見てみると、最後に IPv4 が更新されたのが24日の17時ころ。その後更新されてない。

いったんはうまくいったのは、24日17時ころに更新した IPv4 アドレスが有効だったからだろう。その後 WiMAX 端末に割り当てられたアドレスが変わったにもかかわらず、DNS が更新されなかったのが原因ではないか。もう少し正確に言うと、IPv6 アドレスだけが更新されて IPv4 アドレスが更新されなかったのが原因なんだと思う。

そこで、試しに MyDNS の設定ページで IPv4 アドレスを 0.0.0.0、IPv6 アドレスを 0:0:0:0:0:0:0:0 に設定しておいて、bigswifty 上でアドレス通知のスクリプトを実行してみた。すると案の定、IPv6 アドレスだけが更新されて、IPv4 アドレスは 0.0.0.0 のままだった。思ったとおりだ。

で、どうすればいいかというと、MyDNS のページにヒントが書いてあった。曰く、IPv4 と IPv6 のデュアルスタックのマシンでは通常の通知先 www.mydns.jp ではうまくいかないことがあるらしく、IPv4 アドレスを更新したい場合は ipv4.mydns.jp に通知しろ、ということのようだ。

なのでアドレス通知スクリプトの中の通知先ホスト名を上記の通り変更して、実行してみた。すると、今度はちゃんと IPv4 アドレスが更新された。ログでも確認できたし、ping も通るようになった。

さあ、これでやっと解決だ……というところまでが昨日の朝の話。

その後、夕方ころに出先からファイルダウンロードを試してみたらちゃんとダウンロードできたので大丈夫だと思っていた。ところが家に返ってきて試してみると、やっぱりエラーページが表示されてダウンロードできない。けれどふと気がついて、借りている VPS に ssh でログインして、そこから(つまり家のローカルネットワークでないところから)試してみると、ちゃんとダウンロードできる。どうも家のネットワークからだとエラーになるみたいだ。どゆこと?

でも、まぁ、外部向けの web サーバなんだから外部から使えればそれでいいか。

CentOS 8 に Nginx をインストールしてみた

インストール

dnf install コマンドでインストール。

[takatoh@rollo ~]$ sudo dnf install nginx

有効化とスタート。

[takatoh@rollo ~]$ sudo systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[takatoh@rollo ~]$ sudo systemctl start nginx

ステータスの確認。

[takatoh@rollo ~]$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-11-19 03:01:37 JST; 8min ago
  Process: 10021 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 10019 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 10017 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 10022 (nginx)
    Tasks: 5 (limit: 26213)
   Memory: 8.9M
   CGroup: /system.slice/nginx.service
           ├─10022 nginx: master process /usr/sbin/nginx
           ├─10023 nginx: worker process
           ├─10024 nginx: worker process
           ├─10025 nginx: worker process
           └─10026 nginx: worker process
11月 19 03:01:37 rollo systemd[1]: Starting The nginx HTTP and reverse proxy server…
11月 19 03:01:37 rollo nginx[10019]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
11月 19 03:01:37 rollo nginx[10019]: nginx: configuration file /etc/nginx/nginx.conf test is successful
11月 19 03:01:37 rollo systemd[1]: Started The nginx HTTP and reverse proxy server.

OK。ちゃんと起動したようだ。

ファイアウォールの設定

80番ポートを開ける。

[takatoh@rollo ~]$ sudo firewall-cmd --permanent --zone=public --add-service=http
success

firewalld をリロード。

[takatoh@rollo ~]$ sudo firewall-cmd --reload
success

これで OK のはず。ほかのマシンからブラウザでアクセスしてみたら、ちゃんと Nginx のデフォルトページが表示された。