著者アーカイブ takahashi

takahashi 著者:takahashi

無料DDNSサービスのMyDNSがLet’s Encryptのワイルドカード証明書取得の自動化をサポート。

個人的にもいろいろなところでお世話になっている無料のDDNS(Dynamic Domain Name Server)、MyDNSがLet’sEncryptのdns-01認証の自動化に対応したようです。

MyDNS

2018.07 Let’s Encrypt用API提供開始
Let’s Encryptで、DNS-01方式でサーバー証明書を取得する場合の、–manual-auth-hookならびに–manual-cleanup-hook用のスクリプトをGitHubに公開しました。
詳しくはREADMEをお読みいただければわかるかと思いますが、これによりワイルドカードのサーバー証明書の取得および更新が非常にしやすくなったかと思います。
どうぞご活用ください。

MyDNSとは、自宅サーバ勢御用達の無料DDNSホスティングサービス。
DNSホスティングとの違いは、定期的にサービスに対してIPアドレスを通知することにより、IP固定契約をしていなくても自分の回線とドメイン名を継続的に紐づけることを可能にしている点です。

管理画面からの変更もできますが、プログラムからも通知できるような仕組みを供えているので、cronなどを利用すれば特に操作しなくてもサーバーからMyDNSに対して継続的にIPアドレスを通知し続けることもできます。

一方Let’s Encyptは一定の条件を満たせば無料でSSL証明書を発行してもらうことができるサービス。
以前にも何度か取り上げていますし、ご存知の方も多いかと思いますが、最近はワイルドカード証明書の取り扱いも開始し、ドメインごとにSSL証明書を取得する必要がなくなりました。

ただし、このワイルドカード証明書をLet’s Encryptで取得するためには、DNSサーバの設定を操作して指定された値を登録することでドメインの所有権を確認する”dns-01″方式で認証する必要があります。

また、DNSサーバーに設定する値はドメインの更新時も変化するため、更新のたびにDNSサーバーの値を書き換える必要があり、Let’s Encryptの証明書期限も3か月しかないため、かなり大変でした。

今回、MyDNSが自動更新に対応したことにより、スクリプト一つで自動的にLet’sEncryptから指示された値を自動的にMyDNS側に登録することができるようになったため、一度成功させてしまえば以降はユーザーの操作が一切なくても継続的にワイルドカード証明書の取得、更新が可能となりました。

次回の記事で、実際の設定方法をご紹介したいと思います。
もし待てない、という方はMyDNSさんのGitHubリポジトリに方法が記載されていますので、そちらをご参照いただければと思います。

DirectEdit – GitHub

takahashi 著者:takahashi

Laravelの設定ファイルがわかりづらい。

最近Laravelを触り始めた、Laravel初心者です。

fuelPHPなどのフレームワークはconfig周りをまとめたフォルダがあり、Laravelにもドキュメントルート下にconfigというフォルダがあり、

DOCROOT/config/database.php

を書き換えればデータベースに接続できるものだと思っていました。
ところが、database.phpの情報を書き換えた後、

php artisan migrate --seed

を実行したところ、Connection refusedエラーが。
確認したところ、実際にプログラムに渡されている値がdatabase.phpで定義されているものではなく、規定値のままになっていることがわかりました。

更にいろいろ調べたところ、Laravelでは下記の操作が必要であることがわかりました。

・ドキュメントルート直下の .env.example を .env にリネームする。
・.env内にもDB接続先の指定があるため、その項目を書き換える。
・php artisan config:cache コマンドを実行して、設定のキャッシュを作り直す

今回の場合、この手順でデータベースの接続先設定を書き換えることができました。

一方、configフォルダの方の設定はどのように使用するのか、まだ調べ中です。

正直、個人的に2箇所に設定ファイルが存在しているのはちょっとわかりづらい気がするのですが、どうなんでしょう…

takahashi 著者:takahashi

長時間停電に遭ってわかった台風が来る前に対策すべきこと

先日の台風、僕も被害に遭いまして、自分の家も長時間停電していました。
マンションによっては電動ポンプをつかって水道を供給しているため、停電してしまうと断水が発生する建物もあったようです。

自分の家は幸いにも比較的早く復旧(それでも12時間以上は停電していましたが…)したのですが、復旧するまでは「もっと時間がかかったらどうしよう…」と本気で心配で仕方ありませんでした。

今回は停電状況で過ごした際に、個人的に「次同ことが起きそうになったら準備しておきたいなー」と思った点をまとめておきたいと思います。

  1. 台風が来る前にお風呂場などに水をためておく(特にマンション)先程も少し書きましたが、マンションには電動ポンプで水を送るような仕組みになっている所も多いようで、停電してしまうと水道管は無事でも水道水の供給が止まってしまうことがあるようです。水が止まってしまって、特に困るのはトイレとお風呂。
    最悪飲み水はある程度買いだめしておけばそこそこしのげますが、トイレやお風呂は大量に水を必要とするので市販の水だけだとなかなか賄うのは難しいかと思います。台風のように、予測できる災害に見舞われそうになったら、空きのバケツ・ペットボトルやバスタブに水をためておけば、暫くの間は困らずに済むのではないかなと思います。
  2. ランタンのような、広範囲を照らせる光源を持っておく。いざ停電してみて、しまった…!となったのが光源の確保。
    自分の場合、自宅にかろうじてLED懐中電灯があったのでその光でしばらく過ごしていましたが、一部しか照らせないため見える視界が狭く、例えば何かものを探すときはちょっと苦労しました。通常の懐中電灯に加えて、一つランタンのような広範囲を照らしてくれるライトがあれば便利だったかな、と思いました。
  3. 持っている情報機器はとにかく可能な限りすべて充電しておく。普段から情報機器に囲まれた生活をしていたので気づかなかったのですが、一度停電してしまうと電源が取れなくなってしまうため、使用できる情報機器の数や時間がかなり制限されます。特に、固定のインターネット回線は利用できなくなってしまうため、モバイル回線が利用できる機器はかなり貴重になります。
    停電状態ではテレビすら見ることができないので、モバイル端末が唯一外の情報を知る手段となるためです。
    外からの情報が無くなってしまうととても不安ですし、いかに長時間動かせるかがとても大事だと感じました。自分の場合、停電した状態でインターネットへ接続できる端末はモバイルルータ1台とスマホ1台が手元にあったので、ルーターの方は必要な時だけ電源を入れるなど、うまく使い分けつつ運用してました。
    スマートフォンは起動するたびにかなり電源を消費してしまうため、つけっぱなしは鉄則です。
    代わりに、自分が使用しているスマートフォン、Xperia Z5には緊急省電力モードがついていたので利用しました。緊急省電力モード – Xperia使いこなしガイド

    緊急省電力モードは、必要最低限のアプリのみ起動を許可し、それ以外のプロセスやアプリの起動をすべて禁止してしまうことで電気の消費を抑える究極の省電力モードです。

    必要最低限度といいつつも、緊急速報アプリは勿論、TwitterやFacebook、LineなどのSNSアプリ、ラジオやワンセグ、Chromeブラウザも利用でき、情報を得るのに必要なものはちゃんと使うことができます。

    自分の端末の場合、下記画像にあるアプリが使用できるようになっていました。

あとはモバイルバッテリーも複数用意しておくとより安心できるのではないかなと思いました。

  • 最後に 

    普段「電気がちょっとの間使えなくなるぐらい何とかなるでしょー」と思ってましたが、いざこうやって体験してみるとやっぱり備えって大事なんだなぁ、と痛感しました。自分の地域の電気はほぼ回復してきましたが、ニュースなどを見るとまだ停電している地域も多いとのことで、記事を書いている現在でもまだ復旧していない地域がある状況です。

    ただ、地震などによる停電とは違い、今回は電気がすぐに復旧した地域もすぐ近くにあったのは救いでした。
    自分の場合、結局水が使えない状況に耐えられず、運よく運転が再開したバスに乗って、浜松駅付近の既に電気が復旧して営業を再開していたネットカフェに避難しました。

    ネットカフェなら電源も取れるので電源を消耗した機器を充電できますし、何よりトイレが使えたのがとてもありがたかったです。
    もし他の場所に移動する手段があるのであれば、無理にとどまるのではなく、ホテルやネットカフェ、またもし助けてくれる身内・知り合いの方がいらっしゃるのであればその方の家などに一時的に非難することもとても重要なのではないかと感じました。

takahashi 著者:takahashi

mac OSの回復USBディスクを作成する方法

最近、会社のiMacのmac OSが立ち上がらなくなってしまっため、OSの上書きを試みましたが、内臓のリカバリーモードではうまく行きませんでした。
そこで、外部メディアにインストーラーイメージを入れて、外部からリカバリしてみることにしました。

今回の操作を行うには、メディア作成時に正常に起動するMacintoshと約12GB以上の容量を持つ空のUSBメモリが必要になります。
データが入ったUSBメモリも使用できますが、今回の手順を試すとUSBメモリ内の全データが削除されてしまうので注意してください。

手元に正常に稼働するMacintoshが1台しかない方は、緊急時に備えてあらかじめ1本作っておくことをお勧めします。
なお、OSの再インストールに使う際はバージョンをアップグレードするごとに作成する必要があります。

まずはmacOSを起動して、AppStoreから現行のmacOSを探します。
リカバリディスクが作れるのは、AppStoreからダウンロードできるバージョンに限られますので注意してください。

写真は既に入手した後の画面のため、”開く”になっていますが、ダウンロード前に開くと”ダウンロード”というボタンになっているので、クリックします。
ダウンロードが終了すると、アプリケーションフォルダに”macOS Mojaveインストール”が追加されます。

この状態になっていることを確認したらアプリケーションからTerminal.appを開き、次のようにコマンドを入力します。(※この手順を実行するとUSBメモリ内のデータがすべて削除されます)

sudo /Applications/Install\ macOS\ バージョン名(例:mojave).app/Contents/Resources/createinstallmedia --volume /Volumes/インストールメディアにするUSBメモリのデバイス名

コマンドを実行すると、USBへのインストーラーイメージの書き込みが開始されます。
コマンドライン上に進行状況が表示されるので、完了するまで待ちます。

Ready to start.
To continue we need to erase the volume at /Volumes/Install macOS (バージョン名)/.
If you wish to continue type (Y) then press return: Y
Erasing disk: 0%... 10%... 20%... 30%... 100%
Copying to disk: 0%... 10%... 20%... 30%... 40%... 50%... 60%... 70%... 80%... 90%... 100%
Making disk bootable...
Copying boot files...
Install media now available at "/Volumes/Install macOS (バージョン名)"

完了したら、”Install macOS (バージョン名)を取り出す”をクリックしてUSBを取り外し、保管しておきます。

作成したUSBインストールメディアを使用する際は、まずmacOSが起動している場合は一度シャットダウンします。
そのあと、USBを本体に差し込み、

キーボード左下あたりにある”option(alt)キー”を押したまま電源ボタンを押します。

すると、どのディスクからOSを起動するか選択する画面が出てきますので

“Install macOS (バージョン名)”
を選択します。

あとは言語を選べば…

内臓のリカバリーモードと同等の画面が表示されました。
内容もそのままリカバリーモードと同じなので、OSのインストール以外にもディスクチェックやTerminalの起動も行うことができます。

困ったときは是非参考になれば幸いです。

takahashi 著者:takahashi

Windows10で回復ディスクを作る方法

最近のWindowsは、Windowsが起動していない状態で起動オプションを呼び出すのがデフォルトでできなくなっており、折角回復パーティションをインストールしてあってもWindowsそのものが立ち上がらなくなってしまうと回復オプションにすらアクセスできなくなってしまう可能性があります。

そんなときのために、回復オプションを呼び出すための専用のWindows、Windows RE(Recovery Enviroment)があります。
Windows REを使えば、スタートアップ修復やWindows外からのシステムの修復、初期化の操作などを行うことが可能です。

今回は、Windows上からWindows REが起動できる光学ディスクの作り方を説明します。

まず、スタートメニューを開き、検索欄に”コントロールパネル”と入力します。

コントロールパネルの項目が出てくるので、クリックして開きます。

コントロールパネルを開いたら、右上の検索欄に

バックアップと復元

と入力してエンター。

“バックアップと復元(Windows7)”または”バックアップと復元”の項目をクリックします。


左側の”システム修復ディスクの作成”をクリックします。

するとウィザードが開きます。

ディスクドライブにディスクを入れ、”作成”を押せばWindows REの入った回復ディスクが作られます。

起動するときは、作成したディスクをドライブに入れ、起動オプションでドライブから起動するように指定すれば、Windowsの回復オプションを表示させることができます。

基本的に同じOSのバージョン間であれば使いまわし可能なはずですので、あらかじめ作っておくと便利かもしれません。

takahashi 著者:takahashi

Google検索でヤマト運輸の荷物追跡ができるようになっていた件

先日、Amazonで注文した荷物の状態を確認しようと、Google検索でヤマト運輸のサイトを検索していたところ、

いつの間にこんな機能が…
早速試してみました。

ヤマト 追跡番号
のように入力して検索すると…

こんな風に、ヤマト運輸の追跡結果ページへの直リンクを表示してくれます。

毎回ヤマト運輸のホームページから機能をたどらなくても、一発で結果ページを表示してくれるので便利です。
よくネットショップなどでヤマト運輸を使用する方は是非試してみてはいかがでしょうか。

takahashi 著者:takahashi

各ブラウザで”about:”(chrome://)で指定できるコマンドの一覧を表示する方法

ブラウザのシステム情報や隠し機能の一覧を表示させたりする際、”about:”から始まるコマンドをURL欄に入れたりすることがあるかと思います。
特にGoogleChromeではabout:flags(chrome://flags)とアドレスバーに入れるとアクセスできる実験機能有効/無効画面はよくお世話になっています。

この”about:”コマンドですが、搭載しているブラウザほぼ共通で、利用できる”about:”コマント一覧を表示させることができるコマンドがあります。

一覧画面はアドレスバーに
about:about
と入力すると確認できます。


Firefox


Google Chrome

最近のモダンブラウザは機能面ではどれも徐々に似た作りになっているものが多くなっていますが、このabout:で指定できる内容にはまだブラウザ毎にそこそこ異なっていることもあるようです。

こういった部分で、それぞれのブラウザの違いを探してみるのも面白いかもしれませんね。

takahashi 著者:takahashi

nginxでnet::ERR_CONTENT_LENGTH_MISMATCHが出た時の対処法

今まで普通に動いていたサイトが、ある日突然正常に表示されなくなるという問題に遭遇。
Chromeの開発者ツールで調べると

net::ERR_CONTENT_LENGTH_MISMATCH

上記のメッセージが大量に発生しており、サイトのアセットの読み込みに失敗していたようでした。
ERR_CONTENT_LENGTH_MISMATCHはヘッダーのContentLengthと実際に受け取ったバイト数が違うと発生するようです。

nginxでのERR_CONTENT_LENGTH_MISMATCHの解決法 – Qiita

いろいろなサイトを見てみると、サーバーにNginxを使っている場合、サイトのキャッシュの保存が失敗したときに先程のエラーが出現するようで、その場合は指定パスに書き込み可能なディレクトリを用意すれば解消するようです。

しかし、今回問題が発生した環境では、該当のログが見当たらなかったため、問題が発生していたサイトのキャッシュを禁止する方法で対策してみました。
変更としてはnginxの設定ファイルを下記のように修正します。

server {
  server_name  .example.com;

  listen          443;

  ssl on;
  ssl_certificate       /path/to/hoge.crt;
  ssl_certificate_key   /path/to/hoge.key;

  client_max_body_size 1g;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  proxy_set_header X-Forwarded-Host $host; 
  proxy_set_header X-Forwarded-Server $host; 
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Fowarded-Proto \$scheme;
  proxy_max_temp_file_size 0; #この記述を追加
  location / {
    proxy_pass https://localhost:8081;
  }
}

これでnet::ERR_CONTENT_LENGTH_MISMATCHエラーが消滅し、とりあえず無事サイトが表示されるようになりました。
しかしなぜ突然こんなエラーが出るようになってしまったのか…原因は分かっていないので、さらに調査が必要そうです。

参考サイト
Consul Web UIで画面が表示されない時の対処法 – Qiita

takahashi 著者:takahashi

SystemdでNode.jsのサーバープログラムをお手軽にデーモン化する方法

以前SoftEtherVPNを手軽にSystemdでデーモン化する方法をご紹介しましたが、実は、最近よく使われるNode.jsで書いたサーバープログラムも、Systemdを使うと簡単にデーモン化できるようです。

centos7で標準のsystemdを使いnode.js製サーバーをデーモン化する – Qiita

Node.jsはjavascriptのサーバーサイド版の言語・実行環境で、ほぼjavascriptと同じ言語を使ってサーバー側の処理を書くことができます。
Node.jsのライブラリにも”forever”というプログラムをデーモン化してくれるライブラリがあるのですが、OS起動時と同時に実行させたりする際はちょっと不安が残ります。

起動時にうまくNode.js製のサーバーをデーモンとして動作させる方法がないか探したところ、なんとSystemdのみで実現できるとのことだったので、実際に試してみました。
nodeのプログラムをsystemdを使ってデーモン化するには、

/etc/systemd/system/デーモン名.service

のような名前でファイルを作り、下記のように設定を書き込みます。

[Unit]
Description=node server #任意の説明
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /path/to/Node.jsProgramPath #記法:ExecStart=node.js本体のパス node.js向けに書いたサーバープログラムのパス
WorkingDirectory=/path/to/ #作業ディレクトリの場所(スクリプト実行時にカレントディレクトリになっていて欲しい場所)
KillMode=process
Restart=always
User=centos #node.jsプログラム実行ユーザー
Group=centos #node.jsプログラム実行ユーザー

[Install]
WantedBy=multi-user.target

上記のような内容でファイルを保存したら後はお決まりの

systemctl enable デーモン名
systemctl start デーモン名

これだけでnode.jsのプログラムがデーモン化され、OS起動時の自動起動にも登録されます。

Systemdはファイルの記法がわかりづらくて嫌煙されがちな印象でしたが、いろんなプログラムをいとも簡単にデーモン化できてしまうあたり、もしかするとかなり優秀なのかもしれません…

takahashi 著者:takahashi

“純正Android端末”なGoogle Pixelシリーズ、ついに日本での発売が決定!!!

今朝、突然のビッグニュースが飛び込んできました!!!

Google PixelシリーズはGoogle社が直接設計・販売する正真正銘の純正ブランドで、今回発売が予告されたAndroidスマートフォンはPixelシリーズの新モデルのスマートフォンであるPixel 3である可能性が高いとのこと。

Googleの「Pixel 3」日本発売が濃厚に。ティザーサイト公開 – 価格.com

Pixel 3はAndroid OSの最新バージョン”Android 9 Pie”が搭載される予定となっており、また、Google公式ビルドのAndroid OSがインストールされるため、OSのアップデートも継続的に入手できる可能性が高いと思われます。

さらにPixelではGoogleの最新の成果(“Google Lens”や”Google アシスタント”のような)もいち早く試すことができるのも大きな特徴で、Google・Androidのファンにとってはまさに夢のような端末になっています。

Pixelシリーズのスマートフォンは、今まで第二世代まで出ていましたが、いずれも日本国内での販売はありませんでした。
そればかりか、発展途上国向けとされる(Wikipedia)純正Android OSを搭載したブランド、”Android One“が日本国内で発売されており、一部では、現状iPhone一強となっている日本国内向けにGoogleがPixelシリーズの端末を発売すること自体が絶望視されてきました。

Google Pixel 3は日本発売されないだろう……と考える3つの理由 – naenote.net

そういった経緯もあり、今回の発表にはガジェット界隈全体で大きな話題となっています。

現状日本で発売されているAndroid端末はAndroid Oneを除き、新発売の機種に最新のAndroid OSが搭載されなかったり、発売から1、2年ほどでメーカーやキャリアがアップデートを打ち切ってしまったりする問題があり、Androidへの待遇はあまりいいものではありませんでした。
スマートフォンのスペックも一定のラインまで達してしまった現在、Androidを搭載する端末もどこか陳腐化してしまっているような印象だったので、今回のGoogle Pixelの発売がそういったAndroidスマートフォンの現状に風穴を開けてくれるのではないかと密かに期待をしています。

ただ、以前から指摘されていたように、端末を”買わせる”ことで収益を上げようとしてきた国内の大手キャリアが、Pixelのように比較的”長く使える”端末をどのように受け入れていくのかはとても気になるところです。

なお、今回発表された”日本版 Pixel”に、おサイフケータイの搭載があるのではないか、と予測する記事もあり、Pixelの”日本仕様”への対応の可否も気になる点となっています。

グーグルスマホ「Pixel」日本上陸が確定 ── iPhone対抗の肝は「おサイフ」対応である理由 – Business Insider Japan

Googleは米国時間の10月9日に、Made by Googleというイベントを計画しているとのこと。
Pixelの日本発売が予告されて初のイベントとなるので、どんな発表がされるのか是非チェックしたいですね。

また、Google公式のティザーサイトでは、最新情報のメールマガジンの登録ができるようになっているので、Pixelの情報が気になる方は是非登録してみてはいかがでしょうか。

Google Pixel