ハードウェアからサーバ・アプリまでワンストップで開発

脱クラウド計画(4)

Napier-NETを使って自社サイトを公開する

先日リリースしたNapier-NETを利用して、弊社ホームページを公開しました。現在このサイトはNapier-NET経由で公開されています。

https://www.napier-net.com/

Napier-NETは、ファイヤーウォールの内側のサービスを「誰でも」「簡単に」、インターネットに公開するためのサービスです。

前回のセットアップ時(脱クラウド計画(1))から特に大きな問題もなく運用してきましたが、無事Napier-NETのリリースも完了したため、当初の計画(脱クラウド計画(0))通り、最終ステップを実施しました。

関連エントリー

Napier-NETをリリースしました

これまでの脱クラウド計画
脱クラウド計画(0)
脱クラウド計画(1)
脱クラウド計画(2)
脱クラウド計画(3)

Napierについてのエントリー
Napierエントリーまとめ

環境

Naiper-NET移行前の環境と移行後のネットワーク環境について説明します。

移行前のネットワーク環境

Napier-NET利用前の弊社サイトにアクセスするまでの流れは以下の通りです。

SSL対応のため、途中ALBを挟んで証明書の管理にACMを利用していました。EC2上ではNginxによるリバースプロキシで同じ社内VPNにあるWebサーバーにアクセスを転送します。

移行後のネットワーク環境

リバースプロキシをNapier-NETに変更しました。Napier-NETはSSLの機能を持つため、AWS上で利用していたALBも不要となります。証明書などはLet's Encryptで発行したものを使うことにしました。DNSだけ引き続きAmazonのRoute53を利用します。

導入まで

Napier-NETの導入までのステップは以下の通りです。

  1. SSL証明書の作成
  2. Napier-NET上にプロファイルを作成
  3. Napier-Clientの設定
  4. DNSの変更

1. SSL証明書の作成

証明書はLet's Encryptを利用しました。証明書の作成方法の詳細は詳しいサイトがたくさんありますので、手順だけ記載します。

証明書を取得するためのツール(certbot)をインストール

$ sudo apt-get install certbot

証明書の作成

Let's Encrpytの証明書の有効期間は90日でcertbotは証明書の自動更新など便利な機能も付いていますが、今回は証明書の作成のみ実施します。また、ドメインの使用権のチェックにはDNSを使った認証を指定しました。Webベースの認証方法が都合がよい場合は適宜変更すると良いです。

$ sudo certbot certonly --manual --preferred-challenges dns

順次必要情報を要求されるので、答えていきます。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): <ドメイン名を指定 ex. www.wasp.co.jp >
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for <指定したドメイン名が表示される>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

DNSを使った認証まできたら、DNSサーバー上(今回はRoute53上)で、指示されたレコード名と値を設定します。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.<指定したドメイン名が表示される> with the following value:

<DNSレコードに指定するコード>

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

DNSサーバー上で指定されたレコードを作成したら、Enterを押して続行します。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/<指定したドメイン名>/fullchain.pem
   Your key file has been saved at:
 /etc/letsencrypt/live/<指定したドメイン名>/privkey.pem
 Your cert will expire on 2023-08-21. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot
 again. To non-interactively renew *all* of your certificates, run
 "certbot renew"
- If you like Certbot, please consider supporting our work by:

 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le

正常に終了すると、/etc/letsencrypt/の下にドメイン名ごとに証明書が生成されます。次は、この証明書とドメインをNapier-NETに登録します。

2. Napier-NET上にプロファイルを作成

2-1. Napier-NETにアクセスします。

https://www.napier-net.com/

右上のログインからアカウントがあればそのままログイン、アカウントがなければ「Register a new membership」のリンクから作成します。

2-2. プロファイルの作成

ログインできたら、プロファイルを作成します。

先ほど作成した証明書と、ドメイン、プロファイル名を指定します。

各項目の説明です。

 

Name*

プロファイルにつけられた名前です。CLIを使う時には、この名前を使って接続を指定します。

名前に特に制限は設けていませんが、CLIを使う場合にはコマンドラインで使うことのできる名前にしておいて下さい。

Path*

この接続が提供するURLパスです。このパスにマッチするURLへのアクセスが、このプロファイルの接続を通って転送されて来ます。

通常はURLのホスト部を指定します。プロトコル部は指定しません。

パス部も指定可能ですが、サーバに通知されるパスからはここで指定したパス部を除いて通知されるので、サーバ側でそれをうまく配慮する必要があります。パス部を指定するのは、このあたりのことを理解して行わなければなりません。

SSL

httpへのアクセスを強制的にhttpsに転送します。どうしてもhttpへのアクセスを許可したい時以外はonにします。

証明書情報

httpsでアクセスする時に使う証明書の情報です。個々の項目の意味は、証明書発行機関の説明等をご覧下さい。

Napier-NET.COMでは特に指定しなくても、Napier-NET.COMとしての証明書(ワイルドカード証明書)が使われます。デフォルトプロファイルを使う場合には、SSLを使う場合でも特に指定する必要はありません(自分で取得した場合はそちらを優先的に使います)。

「証明書」にはフルチェーンのものを指定して下さい。

Napier CLIクライアントの使い方 - Napier-Net

3. Napier-Clientの設定

Napier-Clientのインストール

ローカルサーバー上にNapier-Clientをインストールします。

$ git clone https://github.com/waspcojp/napier-client.git
$ cd napier-client
$ npm update

設定ファイルの作成

$ cd
$ vi web.config
{ 
  "url": "https://www.napier-net.com",
 "localPort": <転送したい先のローカルサーバーのポート>,
 "reConnect": false,
 "webServer": false,
 "user": "<Napier-NETのユーザー名>",
 "password": "<Napier-NETのパスワード>"
}

実行

$ cd napier-client
$ npm run cli -- --config ../web.config <Napier-NETで作成したプロファイル名>

あとは、永続化のための設定を必要に応じて別途設定すればよいと思います。

4.DNSの変更

最後に、DNSサーバー上で設定したドメインのホスト名をdefaultプロファイルのPathにaliasします。
詳しくは「Napier CLIクライアントの使い方 - Napier-Net(8.3. DNSの設定)」もご覧ください。

Napier-NETのdefaultプロファイルのPathはログインした状態でサイドメニューの「プロファイル」から「default」のプロファイルをダブルクリックすると確認できます。

おわり

今のところ安定して動作しており、表示速度も問題なさそうです。

脱クラウド計画がはじまってから約1年、ようやく計画していたことが完了しました。
こればかりに付きっきりであったわけではないですが、なんだか感慨深いですね。

今回は独自ドメインのプロキシの設定でしたが、独自ドメインがなくても、Napier-NETのドメインで利用は開始できます。試しに作ったアプリケーションの公開や一時的に立てる公開サーバー等気軽に使ってみてください。

https://www.napier-net.com/

Napier-NETは、ファイヤーウォールの内側のサービスを「誰でも」「簡単に」、インターネットに公開するためのサービスです。

最近のエントリー

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル