Supernote で書かれたメモは、どれも大切な記録です。そのデータをお手元のハードウェアだけで完全にプライベートに保ちながら、同期などのクラウド機能を使える方法をご用意しました。
これは一般的なクラウドサービスではありません。Supernoteのすべてのファイル(メモ、ドキュメントなど)をご自身のマシンに保存する仕組みです。自宅のNAS(ネットワークストレージボックス)でも、社内サーバーでも構いません。そこが「あなた専用のクラウド」になります。
得られるメリット
- セキュリティ:すべてのファイルはあなたのハードウェア上にのみ保存されます。Supernoteやその他のサードパーティのサーバーにアップロードされることはありません。データのプライバシーを最大限に守ることができます。
- コントロール:どのようにリソースを管理するを完全に自分できめられます。特に企業利用では、重要な会議メモや顧客データを社内にとどめ、セキュリティルールやコンプライアンスに沿った運用が可能になります。
- コスト削減:既存のハードウェアをそのまま活用できます。一度設定すれば、外部クラウドのように継続的な料金が発生しません。
始める方法
Supernote では、導入をサポートする「Supernote プライベートクラウド導入マニュアル」 をご用意しています。以下の内容をステップごとに解説しています。
- わかりやすい説明:必要なハードウェア・ソフトウェア、セットアップ手順を丁寧に解説します。特別なITの専門知識は必要ありません。
- Linux/Unixのみ対応:本システムは Linux ベースの OS(例:Synology DSM を搭載する多くの NAS)で動作します。マニュアルには対応システム別の設定方法を記載しています。
- サポート: マニュアルには FAQ や、セットアップ時に役立つリンク類も収録しています。
マニュアルはここからダウンロードできます:
| 展開マニュアル | Dockerコンテナを使用したデプロイメント |
|---|---|
| マニュアルをダウンロード | マニュアルをダウンロード |
| 注: Linux または同様の Unix 系システムを実行しているデバイスが必要です。現在、Windows はサポートされていません。 | 注意: Docker コンテナを使用して Supernote Private Cloud を手動でデプロイする場合は、このマニュアルに従ってください。 |
よくある質問
Nginx を使用して HTTPS のリバースプロキシを実装する方法
現状: Supernoteプライベートクラウドサービスソフトウェアには、SSL/TLS暗号化設定オプションが組み込まれていません。そのため、ApacheやNginxのように、プライベートクラウドの設定ファイル内で証明書と鍵ファイルのパスを直接指定することはできません。
主な理由は次のとおりです。ご指摘のとおり、Supernoteチームは、独自のプライベートクラウド環境を運用しているユーザーに対して信頼できるSSL証明書を発行できません。証明書の発行は信頼できる証明機関に依存しており、ドメイン所有権の検証が必要です。これは、ユーザーが管理する無数のサーバーに分散されたプライベートクラウドサービスでは現実的ではありません。
解決策:リバースプロキシを使用する(推奨および業界標準)プライベートクラウドサービス自体はSSLを処理できませんが、標準的かつ推奨される解決策はリバースプロキシサーバーを使用することです。このプロキシサーバーは、インターネットクライアント(Supernoteデバイス)とプライベートクラウドサービスの間に位置し、SSL/TLSの暗号化と復号化を専門に処理します。
動作原理の概略図:
スーパーノート デバイス (HTTPS) -> 逆行する プロキシ (復号化) -> スーパーノート プライベート 雲 サービス (HTTP)
スーパーノート プライベート 雲 サービス (HTTP) -> 逆行する プロキシ (暗号化) -> スーパーノート デバイス (HTTPS)
データは、デバイスからAWSサーバーへ、そしてAWSサーバーからデバイスへ、送信中も暗号化されたままです。Supernote Private Cloudインスタンス内に入ると、リバースプロキシがSupernote Private CloudサービスとHTTPで通信します。これは、最も安全で成熟した、パフォーマンスが最適化されたアプローチです。
Nginxリバースプロキシの設定プロセスリバースプロキシとしてNginxまたはApacheを使用することを お勧めします。Nginxを使用した実装方法は次のとおりです。
ステップ1:SSL証明書を取得する商用利用を目的としているため、信頼できる証明書を使用することをお勧めします。いくつかの方法があります。
-
Let's Encrypt(無料、自動化、信頼性):最も人気のある選択肢です。Certbotツールを使用すると、証明書の取得と更新を自動化できます。supernote.yourcompany.comのようなシナリオに最適
supernote.yourcompany.com。 - 商用証明書を購入する: DigiCert、GoDaddy などのプロバイダーから取得します。
ステップ2: Nginxのインストールと設定
- Linux またはその他のインスタンスに Nginx をインストールします。
-
Nginx設定ファイル(例:
/etc/nginx/sites-available/supernote-cloud)を編集し、新しいサーバーブロックを作成します。以下に基本的な設定例を示します。server { listen 80; listen 443 ssl; server_name your_domain_name; # Please set up your external domain name. ssl_certificate CERT_PATH; # Please enter the SSL certificate address. ssl_certificate_key KEY_PATH; # Please enter the SSL certificate private key address. ssl_session_timeout 60m; ssl_protocols TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; access_log ACCESS_LOG_PATH; # Please set your access log path. error_log ERROR_LOG_PATH; # Please set your error log path. client_max_body_size 20480m; location / { # Please replace “YOUR_PRIVATE_CLOUD_IP_ADDRESS” with your private cloud IP address. # Please replace “PRIVATE_CLOUD_PORT” with your private cloud port number. If you did not set this port during private cloud deployment, enter 19072. proxy_pass http://YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Scheme $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_connect_timeout 6000; proxy_send_timeout 6000; proxy_read_timeout 6000; } }
ステップ3:Nginxを再起動してテストする設定変更を適用するため、Nginxサービスを再起動します。その後、 https://supernote.yourcompany.comからプライベートクラウドにアクセスできるようになります。
Synology NAS を使用して HTTPS のリバースプロキシを実装する方法
コアコンセプトとネットワークトポロジ
設定を始める前に、ネットワーク構造を理解してください。環境は以下のとおりであると仮定します。
-
Synology NAS: IPアドレスは
192.168.100.32です -
Supernote プライベート クラウド サーバー: IP アドレスは
192.168.100.32で、Supernote プライベート クラウドはポート 19072 で実行されています。 - **目的: **https:
https://notebook.your-domain.comにアクセスして、内部ネットワーク サーバー192.168.100.32:19072上の Supernote プライベート クラウド サービスにアクセスします。
データフローの方向:ブラウザー/Supernote デバイス->リバース プロキシ-> Supernote プライベート クラウド サービス。
設定手順(DSM 7.x を例に)
ステップ 1: 内部ネットワーク サービスにアクセスできることを確認します。
-
ブラウザまたはデバイスで内部 IP アドレスとポートを介して Supernote プライベート クラウド サービスに直接アクセスし、正しく動作することを確認します (例:
http://192.168.100.32:19072)。 -
内部ネットワーク ファイアウォールが Synology NAS IP アドレス (
192.168.100.32) からの接続を許可していることを確認します。
ステップ2:Synology NASでリバースプロキシを設定する
- 管理者アカウントを使用して DSM にログインします。
- コントロール パネル->ログイン ポータル(またはアプリケーション ポータル) ->詳細設定->リバース プロキシを開きます。
- 新しいルールを作成するには、 [作成] をクリックします。
リバースプロキシルール:
- リバースプロキシ名: Supernote Private Cloud Proxy など、わかりやすい名前をカスタマイズします。
-
ソース(クライアントは Synology にどのようにアクセスするか)
-
プロトコル:
HTTPS(推奨、安全) -
ホスト名:使用する予定の外部ドメイン名(例:
notebook.your-domain.com -
ポート:
443(HTTPS標準ポート) - HSTSを有効にする: チェックしない
- アクセス制御プロファイル: デフォルトのままにする
-
プロトコル:
-
送信先(Synologyリクエストの送信先):
-
プロトコル:
HTTPまたはHTTPS(Supernote プライベートクラウドサーバーの内部ネットワークの構成によって異なりますが、通常は HTTP です。) -
ホスト名:内部SupernoteプライベートクラウドサーバーのIPアドレス(例:
192.168.100.32 -
ポート:内部のSupernoteプライベートクラウドサーバーがリッスンするポート。デフォルトでは
19072
-
プロトコル:
ステップ3: SSL証明書を構成する
外部ドメインが適切に機能することを保証するには、このドメインの SSL 証明書を構成する必要があります。
- コントロールパネル->セキュリティ->証明書に移動します。
- [追加]をクリックし、 [新しい証明書の追加]を選択します。
-
「証明書のインポート」または「Let's Encrypt から証明書を取得」を選択し、 「ドメイン」フィールドにホスト名 (
notebook.your-domain.com) を入力します。 - 証明書をインポートした後、またはLet's Encrypt から証明書を取得した後、 [セキュリティ] > [証明書] > [設定]に移動し、入力したホスト名を選択し、 Let's Encrypt からインポート/取得した証明書を選択して、この証明書をデフォルトとして設定します。
-
ブラウザまたは Supernote を使用して HTTPS 経由でアクセスします。例:
https://notebook.your-domain.com
コンテナポートの使い方
Supernote プライベートクラウド コンテナポート使用ガイド
- コンテナポート 8080:コンテナ内のポート 8080 は Nginx によってリッスンされます。Nginx はリバースプロキシとして動作し、リクエストを supernote-service コンテナに転送して同期および Web 管理インターフェースサービスを提供します。ブラウザまたは Supernote デバイスを使用してプライベートクラウドにアクセスするには、このポートを Docker ホストにマッピングして、Docker ホスト外部からのアクセスを許可する必要があります。Docker コンテナ内からアプリケーションを公開する手順については、「ポートの公開」セクション(「ホストポートマッピング 19072」を参照)を参照してください。
- コンテナポート18072:このポートは主にsupernote-serviceとの自動同期に使用されます。
- コンテナポート443 :コンテナ内のポート443はNginxによってリッスンされており、ポート8080と同様に動作します。ポート443はデフォルトでHTTPSサービスを提供します。HTTPSの設定手順については、最新のデプロイメントマニュアルを参照してください。
- ホストポートマッピング 19072:このポートは主に、supernote-service コンテナの 8080 ポートを、Supernote Private Cloud が現在デプロイされている Docker ホストにマッピングするために使用されます。このポートマッピングにより、ホスト上の Supernote サービスの Web 管理インターフェースにアクセスし、ブラウザベースの管理と設定が可能になります。このマッピングにより、Docker ホスト上のポート (例: 19072) が開かれ、そのホストポート宛てのすべてのトラフィックが指定されたコンテナの内部ポート (例: 8080) に直接転送されるルールが作成されます。ポート公開に関する Docker 公式ドキュメント ( https://docs.docker.com/engine/containers/run/#exposed-ports ) を参照してください。
- ホストポートマッピング 18072:このポートは、主に supernote-serce コンテナ内の自動同期機能を現在のホストにマッピングします。このポートを通じて、SuperNote デバイス上の WebSocket プロトコル経由で実装された自動同期機能を利用できます。自動同期機能を使用しない場合は、このポートを開かなくても構いません。ポート設定の詳細な手順については、Docker の公式ドキュメント ( https://docs.docker.com/engine/containers/run/#exposed-ports ) を参照してください。
ポート仕様に関するよくある質問
- supernote-service コンテナがポート 8080 を公開する必要があるのはなぜですか?
- コンテナ内のポート8080はNginxによってリッスンされており、Nginxは同期サービスとWeb管理インターフェースのためのリクエストをsupernote-serviceコンテナに転送するためのリバースプロキシサービスを提供しています。ブラウザやSupernoteデバイスからプライベートクラウドにアクセスできるようにするには、このポートをDockerホストにマッピングして外部アクセスできるようにする必要があります。
-
Dockerの公式ドキュメントには、「デフォルトでは、コンテナランタイムはホストにポートを公開しません。コンテナ内でリッスンしているポートにホストからアクセスするには、ポートを公開する必要があります。」と明記されています。ポートの公開は通常、
-p {host_port}:{container_port}という形式で実行されます。参考: https://docs.docker.com/engine/containers/run/#exposed-ports
-
ホスト上のポート 8080 をポート 19072 にマッピングする必要があるのはなぜですか?
Supernote Private Cloud はリバースプロキシを利用できないユーザーにも対応する必要があるため、プライベートクラウドコンテナサービスへのアクセスポイントとして、Docker ホストにデフォルトポートを提供する必要があります。ポートマッピング(例:-p 19072:8080)は、Docker が推奨する標準的な方法です。これは、ホストマシン上の指定されたポート(例:19072)を開き、そのポート宛てのすべてのトラフィックをコンテナの内部ポート(例:8080)に転送します。これは、ホストマシンの外部からコンテナサービスにアクセスするための標準的かつ必須の方法です。参考: https://docs.docker.com/engine/containers/run/#exposed-ports - Supernote がコンテナ内でアプリケーションを公開するときに、デフォルトでポート 80 や 443 ではなくポート 19072 を使用するのはなぜですか?
- Supernote Private Cloudは現在、HTTPSサービスを提供しておりません。ポート80と443は一般的に使用されるサービスポートです。コンテナ内のポート8080をDockerホストのポート80または443に直接マッピングすると、ポート競合が発生しやすく、サービスが利用できなくなる可能性があります。そのため、競合リスクを軽減し、サービスの安定性を確保するため、デフォルトのマッピングポートをポート19072に指定しました。
-
ポートをカスタマイズするには、次の手順に従います。
-
docker ベースでデプロイするユーザーの場合: Docker または Docker Compose 構成で
-p <custom port>:8080エントリを直接変更します。 - install.sh スクリプトを使用してデプロイするユーザー: ポートは現在 19072 に固定されています。次のバージョンではカスタム構成がサポートされます。
-
docker ベースでデプロイするユーザーの場合: Docker または Docker Compose 構成で
- SupernoteがHTTPSサービスを提供できない理由
- Supernoteチームは、各ユーザーが独自に展開したプライベートクラウドインスタンスに対して信頼できるSSL証明書を発行することはできません。証明書の発行には、信頼できる証明機関による検証とドメイン所有権の証明が必要ですが、多数のユーザー所有サーバーに分散されたプライベートクラウドサービスでは現実的ではありません。そのため、SupernoteはHTTPS機能を必要とするユーザー向けに、NginxおよびNASリバースプロキシのサンプル構成を提供しています。
- 信頼されていない証明書のサポートをウェブサーバーに統合し、SSL/TLS 構成をデフォルトで有効化する可能性について、現在積極的に検討を進めています。今後のアップデートにご期待ください。
- ポート 18072 が必要なのはなぜですか?
-
ポート18072は、SuperNoteデバイスとプライベートクラウド間の自動同期を可能にします。この自動機能が必要な場合は、Dockerホストでこのポートを公開する必要があります。自動同期を使用しない場合は、このポートを閉じても構いません。無効にするには、以下の手順を実行してください。
-
Docker または Docker Compose 経由でデプロイしたユーザーは、
-p 18072:18072構成を直接削除できます。 - install.sh スクリプトを使用してデプロイするユーザー: ポートは現在 19072 に固定されています。次のバージョンではカスタム構成がサポートされます。
-
Docker または Docker Compose 経由でデプロイしたユーザーは、