分1234今回はUbuntuの具体的な利用方法として,VPS,LXC,OpenVPNなどを利用して,Android端末からローカルにあるUbuntuマシンのコンテンツをインターネット越しに閲覧する方法を紹介します。目的を決める写真や動画のマルチメディアコンテンツの保存について頭を悩ませている人は多いでしょう。デジタルカメラやスマートフォンといった簡単に撮影できる機材が手元にあるおかげで,写真や動画が際限なく増えていくために整理が大変ですし,単体のファイルサイズも大きいのでクラウドストレージはすぐにあふれてしまいます。自分で撮影したデータは世界に1つだけなので,おいそれとは捨てられません。家にあるマシンに保存する場合,今度は閲覧が問題になってきます。できれば家の外からでも閲覧したい,そうすると家のマシンを常時起動しながらサーバーをインターネットに公開する必要がある,など考えるべきことが増えてきます。そこで今回はご家庭にあるメディアライブラリーを,インターネット越しにAndroidを使って閲覧することを目的に,その手段を考えてみようと思います(注1⁠)⁠。注1)と,最初に目的を立ててからその手段を模索するように書いていますが,ぜんぶ嘘(後付け)です。いつものように,手段(VPSとLXCを使って何かしたいというところ)から目的を考えました。VPSを経由するご家庭のメディアライブラリーをインターネットに公開する一番シンプルな方法は,ライブラリーをサーバーとして直接インターネットに繋ぐ方法です。この場合,次のような点を考慮する必要があります。外部からアクセスできるようにルーターを適切に設定するサーバーのIPアドレスを,クライアントが知る術を用意するDLNAなどルーター越しには使えないサービスについては代替手段を用意するこの中で一番やっかいなのはルーターの設定でしょう。ルーターごとに手順が異なるうえに,プロバイダーの契約内容によっては,できることが限定されるケースもよくあります。VPSを1台用意し,インターネット側のアクセスを待ち受けるのは,すべてVPS上に存在するサービスになるよう心がければ,ルーターの設定はほぼ変更しなくてすみます。2番目のIPアドレスについては,VPSなら最初からグローバルな固定IPアドレスが割り振られているので,対応不要になるでしょう。ちなみに3番目については,VPSにするだけでは状況は変わりません。VPSを使う場合,毎月1,000円前後の料金がかかってしまうというデメリットは存在します。ご家庭で常時PCを起動する時の電気代に比べるとそこまで高い料金ではありません(注2⁠)⁠。最近のVPSなら100Gバイト程度のディスク領域もついてくるので,自前でサービスをインターネットに公開することを考えているのであれば,クラウドサービスの有料枠を購入するよりはお手軽でしょう(注3⁠)⁠。よって今回はクライアントがインターネットから接続するサーバーは一度VPSを経由するような設定を紹介します。ご家庭内のサービスを外向けに公開する場合は,適宜VPSの部分をご家庭のサーバーに読み替えて設定してください。J1900搭載の省エネPCだと,高負荷時に20W前後,アイドル時に数Wぐらいとのことですので,これくらいのクラスやARMサーバーになってくると電気代だけ見るとVPSの方が割高になります。注3)ここでは電気代しか見ていませんが,ハードウェアの購入費や維持費,障害時の対応コストなども考慮に入れるとVPSはかなりお得です。接続方式としてOpenVPNを使う家庭内LANで公開されているホームサーバーをVPS経由でインターネットからアクセスする方法はいくつか存在します。VPSにプロキシーを設定する方法や,VPNやSSHを使ってトンネルを作成する方法,などです。今回はその中でも「OpenVPN」を利用します。OpenVPNはさまざまなプラットフォームに対応した,仮想プライベートネットワークを構築するソフトウェアです。特定のプロトコルのみをトンネルしたいとは限らないこと,Android側の設定ができるだけ簡単にしたいこと,パッケージマネージャーからすぐにインストールできることなどがOpenVPNを使用するおもな理由です。VPS上にOpenVPNサーバーを構築し,ホームサーバーやAndroid端末をOpenVPNクライアントとして設定します。OpenVPNサーバーはアクセスしてきたOpenVPNクライアント同士をLAN内で接続したように見せ,さらにOpenVPNを経由するパケットはOpenSSLを使って暗号化されます。今回はルーティングモード(tunデバイスを使う接続方法)のみを紹介します。メディアサーバーとしてDLNAを使う場合は,ブリッジモード(tapデバイスを使う接続方法)の方が望ましいのですが,Android側でブリッジモードを使うためにはrootを取る必要があるため除外しました。VPNを使うと良いでしょう。メディアリポジトリとしてWebDAVを使うメディアサーバーといえば前節でも述べたとおりまずDLNAが思いつきます。DLNAは配信機器を検知するためにSSDPのブロードキャストパケットを送信するのですが,ルーティングモードのOpenVPNはこのパケットを配送してくれませんので,そのままではDLNAサーバーを利用できません。今回はよりお手軽に,WebDAVでメディアリポジトリを公開して,AndroidのESファイルエクスプローラーでアクセスする形を採用します。WebDAVはWebサーバー上でリソースの移動やコピー,属性管理を行えるようにした,HTTPの拡張です。オンラインストレージサーバーとして人気のownCloudも,WebDAVのインターフェースとして実装されています。よって今回の手順はそのままownCloudにも適用できるはずです。ちなみにWebDAVサーバーとして,今回はnginxを使用します。ちなみに,WebDAVはLAN内部でファイルを公開するサーバーとして使っているだけなので,SambaやNFS,SFTPなどに置き換えることも可能です。Android側のアプリに合わせて,使いやすいものを使うと良いでしょう。LXCを使うここまでで紹介したソフトウェアはすべてLXCのコンテナ上にインストールすることにします。VPS上に直接OpenVPNをインストールしてももちろん良いのですが,コンテナ上にインストールしておけば,OpenVPNを使わなくなったら,コンテナごと止めてしまえるというメリットがあります(注4⁠)⁠。合わせてUbuntuでLXCを使う場合における,ネットワークやデバイス,AppArmorの設定についてもこのRecipeで確認していきましょう。注4)特権コンテナーを使用するので,セキュリティ面のメリットはあまりありません。最初にVPS側の設定を行います。LTSがインストールされているものとします。12.04でもそれほど変わるわけではありませんが,LXCの機能を考えるとカーネルはHWEカーネルにしてより新しくしておいたほうが良いでしょう。LXCチームのPPAを使用してください。linux-hwe-genericLXCのインストールVPS上に用意したUbuntuにLXCをインストールします。lxcUbuntuのLXCのコンテナ(ゲスト)はdnsmasqによって,10.0.3.2から10.0.3.254までのIPv4アドレスが動的に割り当てられます。そのままですと,NATの設定を行うときに不便なので,アドレスレンジのうち前半をDHCPで使用しつつ,後半は固定IPアドレスとして利用できるようにしておきます。lxcOpenVPN用のコンテナの作成OpenVPN用のコンテナ(コンテナ名:openvpn)を作成します。-un`/.ssh/authorized_keysubuntu-cloudは,クラウドインスタンス上で動作することを想定したイメージファイルです。ubuntuテンプレートがdebootstrapコマンドを使って一からルートファイルシステムを作るのに対して,ubuntu-cloudテンプレートはサーバーから既存のイメージをダウンロードして設定します。今回はubuntu-cloudテンプレートを使っていますが,ubuntuテンプレートでも後述のネットワーク設定方法以外は同じです。「--auth-keys」オプションは,コンテナの初期ユーザー(ユーザー名:ubuntu,パスワード:ubuntu)の.ssh/authorized_keysに書き込む公開鍵情報を指定します。公開鍵や既存のauthorized_keysを指定可能です。EC2の鍵情報やcloud-initで指定された鍵が最初から登録されることを前提に,sshd_configのPasswordAuthenticationをnoに設定しているためです。起動後にsshログインできるように,使用する鍵情報をこのオプションで渡しています(注5⁠)⁠。ubuntuテンプレートを使う場合は必要ありません。各テンプレート固有のオプションはテンプレートに「--help」オプションを渡すことで確認できます。ubuntu-cloudテンプレートについては,hook側にもいくつかオプションがあるので,後者のコマンドのように参照すると良いでしょう。Init用のデータを渡すことも可能です。--help次に,openvpnコンテナのIPv4アドレスを固定化します。ここでは,「⁠10.0.3.200」を割り当てることにします。ファイルパス名に出てくる「openvpn」はコンテナ名です。名前の異なるコンテナを作成した場合は,適宜読み替えてください。configuration」付近に次の2つのオプションを追加します。10.0.3.1interfacesファイルは,ubuntuテンプレートとubuntu-cloudテンプレートでファイル名が異なるので注意してください。内容はどちらも同じです。openvpnコンテナを起動し,sshでアクセスします。ユーザー名,パスワード共に「ubuntu」です。ubuntu@10.0.3.200うまく動作するようなら,openvpnコンテナが自動起動するように設定しておきましょう。YES以降,openvpnコンテナ上での作業は,プロンプトを「openvpn$」と表示します。注5)もちろん,シリアルコンソールを使用したり,ホスト上でゲストのルートファイルシステムをあとから直接編集するのであれば,最初にこのオプションを指定する必要はありません。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。