2018/04/新たにVPS借りてVPN環境を構築した (2018-05-09)

海外生活では自然と出先で仕事する機会が増えます。そして、出先では、共有Wi-Fiを使ってネットにつなぐことになります。そうなると、心配なのがセキュリティ。そこで、今回、セキュリティを担保するために、新たにVPSを借りてVPNサーバを建ててみました。その際の試行錯誤の記録と雑感です。

VPNサーバの構築 *

今回、一番の目的は、セキュリティ確保のためのVPNサーバの構築です。参考にしたのは、こちら、OpenVPNのインストールとセットアップからインターネット接続までのガイド..で、うまく手順がまとまっていました。

ただ、やはり、環境が違う点があり、うまく動かなかったので、かなり時間かかりました。これだけ、時間かかるなら、普通に月額の専用VPNサービス借りるのもありだったかと、度々思ったのでした。もちろん、汎用VPS借りれば、もっといろいろできるので、VPNサービスは、最初から考えていませんでした。

それで、いろいろ、はまったのですが、OSはubuntu16ですが、VPSのデフォルト設定ではiptablesでFirewallを管理するようになっており、何かがうまくいかなかったので、上記の手順に合わせるべく、iptablesでの管理を辞めて、ufwで管理するようにしたら、うまくいきました。(→さくらのvpsのubuntuでufwが有効にならない)

他にも、macOSのVPNクライアントTunnelblickで、不可解なエラーが出たりして、VPNサーバ側のserver.confを修正したりしました。

Webサービスのバックアップ先としても使う *

ところで、今回、さくらインターネットの石狩データセンターを選んでみました。というのも、管理している諸々のWebサイトのデータバックアップ先として使いたいとも考えたからです。

以前より、GITを使ってWebサイトを全部バージョン管理していますが、リポジトリ自体が同じマシン内にあったので、サーバが飛ぶとリポジトリも飛ぶことになっており、ドキドキしていました。日本は天災が多いので、地理的にサーバが分散しているのは、良いことです。

VPS上のデスクトップ環境しiPadで仕事してみる *

ついでに、タブレット端末だけで仕事できるように、VPS上にデスクトップ環境も作ってみました。試しに、半日そこで仕事してみたのですが、やっぱり、フルキーボードでないと、どうも調子がでませんでした。

もちろん、iPadはとても優秀ですし、Apple Pencilも最高で、かなり活用しているのですが、どうしても、ターミナル上でサーバ管理したり、プログラミングをするには向かないと思います。

もちろん、慣れの問題はあると思うのですが、仕事柄、Win/Macを行ったり来たりすることが多く、かなりの文章を入力するので、タブレットだと、マシンを切り替えたり、キャプチャをとったり、長文を打ち込んだりするのが、非常に煩わしく感じました。

それで、VPSのデスクトップ環境は、あくまでも緊急時のバックアップ用として使うことにします。これに対して、MicrosoftのSurfaceは、そもそもOSがWindowsなので、仕事の作業効率が担保できつつ、携帯性も高いと思われるので、iPadと比較してみたいところです。

今回の作業の反省点 *

今回、1日から2日を新VPSサーバの構築のために費やしましたが、まだまだ、セットアップが終わっていない部分も多いので、もう少し時間がかかります。

それで、よくよく考えてみると、今回実現したかった二点「セキュリティ確保のためのVPN」、「Webサーバのバックアップ」は、それぞれ、既に専用のサービスが安価で提供されています。

  • VPNサービス(月1080円ほど)
  • Webサーバのバックアップオプション(一契約につき月1000円ほど)

そもそもLinuxに詳しくないなら、最初から、構築にかかる手間とサービスの安定性を考えて、素直にお金を払うのが良いということが分かりました。

ただし、自分の思い通りになるサーバを手元に置いておけるというのは、楽しいものです。デスクトップ環境も構築したので、PC持たずに出た出先で急いで何か作業するときにも、役立ちそうですし、CRONを仕掛けて定期的にデータを収集するという用途にも使えます。加えて、LinuxにWineも入れたので、Windowsアプリもいろいろ動かすことができます。

あと、今回、OpenVPNを使ってVPNを構築したのですが、今、改めて調べてみたら、OSSのpritunlを使うと簡単にVPNを構築できるみたいです。pritunlとDockerの組み合わせとか、結構事例がたくさんあるので、もう少し、下調べしてから作業してみれば良かったかな?と反省です。

追伸 - 2018/05/09 *

前述の手順で、苦労して作成したVPNですが、思うところあって、改めて、OSを再インストールしたので、pritunlを使って、VPNを設定してみました。めちゃくちゃ簡単だったので、これから、VPNサーバ建てるときは、pritunl一択かと。

Amazon Fireタブレットで電源が入らない時の対処方法 (2018-02-13)

先日、久しぶりに、Amazon Fireタブレットの電源を入れたところ・・・
真っ暗で
ぜんぜん、何も反応がありません。

格安のタブレット、もう十分元は取ったのですが、このまま捨ててしまうのは、なんだか悔しい。

それで、調べてみると、ケースなどを外し、充電した状態で、電源ボタンを40秒ほど押しっぱなしにすると、直ることがあるとあったので、その通りやってみると・・・・

復活しました!

お困りの方は、試してみると良いでしょう。

動画から字幕を抽出する方法 (2018-02-23)

MP4ビデオから字幕を抽出する方法には、ffmpegを使う方法と、mp4boxを使う方法があります。ffmpegを使う方法が簡単です。

ffmpegを使う方法 *

まずは、ffmpegを使う方法から。後述のmp4boxだとトラック番号を調べる必要があるので、こちらの方が簡単です。まずは、ffmpegのインストール方法から。macOSであれば、Homebrewを使ってインストールできます。

$ brew install ffmpeg

ffmpegで字幕データ(srt)を抽出する方法:

[書式]
$ffmpeg -i (動画.mp4) (出力ファイル.srt)

テキストファイルで「出力ファイル.srt」を開くと、生のSRT(SubRip)形式のデータファイルを得ることができます。

ffmpeg+独自スクリプト *

しかし、生のsrtファイルは読みにくいので、人間の読みやすく整形して出力するスクリプトを、なでしこ3で作りました。前提として、Node.jsがインストールされている必要がありますが、以下のようにしてなでしこ3をインストールします。

# なでしこ3のインストール
$ npm -g install nadesiko3
# ffmpegのインストール
$ brew install ffmpeg

その上で、以下のスクリプトを、jimaku.nako3という名前で保存して、実行権限をつけます。(2018/02/23 更新)

#!/usr/bin/env cnako3
もし、コマンドラインの要素数が3以下ならば
  「jimaku.nako3 (動画ファイル)」と表示。終わる。
ここまで
MP4 = コマンドライン[3]
FSRT=MP4の「\.\w+$」を「.srt」に正規表現置換。
FOUT=MP4の「\.\w+$」を「.txt」に正規表現置換。
「ffmpeg -i "{MP4}" "{FSRT}"」を起動待機。
S=FSRTを開く
結果=空
Sを改行&改行で区切って反復
    N=それをトリム
    もし、N=空ならば、続ける
    J=(N&改行&改行&改行)を改行で区切る
    NO=J[0]
    TIME=J[1]
    BODY=J[2]&J[3]&J[4]
    TIME=TIMEの「^(\d+\:\d+:\d+).*」を「$1」で正規表現置換。
    BODY=BODYの「(\r|\n)」を「」に正規表現置換。
    BODY=BODYの「</font>」を「」に置換。
    BODY=BODYの「<font.*?>」を「」に正規表現置換。
    BODY=BODYの『{\an7}』を空に置換。
    R=「{TIME}> {BODY}」
    結果=結果&R&改行
ここまで
結果をFOUTへ保存。
「OK」と表示。

そして、以下のようにして、コマンドを実行すると、人間の目に読みやすい字幕ファイルを生成します。

$ ./jimaku.nako3 (動画ファイル.mp4)

出力されるテキストの例:

...
00:04:22>ヨブ記を読んでくださりじっと耳を傾けました
00:04:28>何度も読んできましたがその時は違っていました
00:04:32>話が心に深くしみました
...

mp4boxを使う方法 *

また、多少面倒ですが「mp4box」を使うと、MP4ビデオから字幕を抽出することができます。macならHomebrewでインストールできます。

$ brew install mp4box

使い方ですが、まず、動画の情報を確認します。

$ mp4box -info (動画ファイル.mp4)

すると、各トラックにどんなデータがあるのかが表示されます。そこで、字幕があるっぽいトラックの番号を調べます。

続いて、以下のコマンドを実行すると、字幕をファイルへ抽出できます。

$ mp4box -srt (トラック番号) (動画ファイル.mp4)

出力ファイル名は、「(動画ファイル名)_(トラック番号)_text.srt」という名前になっています。

これをテキストエディタで開くと、

1
00:00:00,000 --> 00:00:05,138
なんとかかんとか

2
00:00:05,138 --> 00:00:08,181
なんとかかんとか
...

という感じのデータとなっています。