借助超级笔记 Supernote 的私有云解决方案,您可以将服务器部署在任何位置——家里的 NAS 或公司的内部服务器,都能成为您的专属数据中心。让您在享受云同步便利的同时,确保笔记的绝对私密。
通过私有云,您可以实现笔记、文档、待办事项及摘录等数据的双向同步。在离线状态下,您依然可以自由编辑,所有改动将在设备联网后完成同步。同时,您可根据需求,自主设定私有云的访问范围,从受限的局域网到广阔的互联网,均由您掌控。
这给你带来什么
• 安全至上:您的文件保留在您的硬件上。它们绝不会上传到Supernote或任何其他第三方的服务器。无论是个人日记、商业机密,还是创意草图,都能享有绝对的私密性。
• 完全掌控:您可以自主决定如何管理这些珍贵的数字资产。对企业用户而言,可将重要资料、客户数据安全地存储在内部服务器中。同时,团队成员也可以在受控的环境下安全共享文件。
• 降低成本:充分利用已有的硬件资源,只需一次设置,就能长期使用,无需为云服务支付持续的费用。
如何开始
我们提供"Supernote 私有云部署手册",本手册提供分步指导:
- 清晰的说明: 它会准确告诉你所需的硬件/软件,并指导你完成安装。你无需是IT专家。
- 仅限 Linux/Unix: 该系统可与 Linux 操作系统(例如许多 NAS 设备,如 Synology DSM)配合使用。手册涵盖了在所有兼容系统上的设置方法。
- 支持: 本手册包含常见问题解答部分和相关链接,以便在安装过程中遇到任何问题时提供帮助。
| 部署手册 | 使用 Docker 容器进行部署 |
|---|---|
| 下载部署手册 | 下载部署手册 |
| 注意:您需要一台运行 Linux 或类似 Unix 系统的设备。目前不支持 Windows 系统。 | 注意:如果您希望使用 Docker 容器手动部署 Supernote 私有云,请按照本手册操作。 |
FAQ
如何使用 Nginx 为 HTTPS 实现反向代理
当前状态: 目前,Supernote私有云服务软件不包含内置的SSL/TLS加密配置选项。这意味着我们无法像Apache或Nginx那样,直接在私有云的配置文件中指定证书和密钥文件的路径。
核心原因如下: Supernote 团队无法为运行自有私有云部署的用户颁发可信的 SSL 证书。证书颁发依赖于可信的证书颁发机构,并且需要验证域名所有权——对于分布在无数用户管理服务器上的私有云服务而言,这一过程并不实际。
解决方案: 使用反向代理(推荐且符合行业标准)虽然私有云服务本身不处理 SSL,但标准且推荐的解决方案是使用反向代理服务器。该代理服务器位于互联网客户端(您的 Supernote 设备)和您的私有云服务之间,专门负责处理 SSL/TLS 加密和解密。
工作原理示意图:
Supernote Device (HTTPS) -> Reverse Proxy (Decryption) -> Supernote Private Cloud Service (HTTP)
Supernote Private Cloud Service (HTTP) -> Reverse Proxy (Encryption) -> Supernote Device (HTTPS)
您的数据在传输过程中始终保持加密状态——从您的设备到 AWS 服务器,再从服务器返回。但是,一旦数据进入您的 Supernote 私有云实例,反向代理将使用纯 HTTP 与 Supernote 私有云服务通信。这是最安全、最成熟且性能最优的方法。
Nginx反向代理配置流程 我们强烈建议使用Nginx或Apache作为反向代理。以下是使用Nginx的实现方法:
第一步:获取 SSL 证书 由于您的用途是商业用途,建议使用受信任的证书。有几种方法可以做到这一点:
- Let's Encrypt(免费、自动、可信):最受欢迎的选择。您可以使用 Certbot 工具自动获取和续订证书。这非常适合像 supernote.yourcompany.com 这样的场景。
- 购买商业证书:从 DigiCert、GoDaddy 等提供商处购买。
第二步: 安装和配置Nginx
- 在您的 Linux 或其他系统上安装 Nginx。
-
编辑 Nginx 配置文件 (例如:
/etc/nginx/sites-available/supernote-cloud.conf) 并创建一个新的虚拟主机。以下是一个基本配置示例:server { listen 80; listen 443 ssl; server_name your_domain_name; # 请设置您的外部域名。 ssl_certificate CERT_PATH; # 请输入SSL证书地址。 ssl_certificate_key KEY_PATH; # 请输入SSL证书私钥地址。 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; # 请设置访问日志路径。 error_log ERROR_LOG_PATH; # 请设置错误日志路径。 client_max_body_size 20480m; location / { # 请替换 “YOUR_PRIVATE_CLOUD_IP_ADDRESS” 使用您的私有云 IP 地址。 # 请替换 “PRIVATE_CLOUD_PORT” 为您的私有云端口号,如果您在部署私有云期间未设置此端口则请填写19072 proxy_pass http://YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT; proxy_set_header Host $proxy_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-Host $host; # Please replace “YOUR_PRIVATE_CLOUD_IP_ADDRESS” with your private cloud IP address. proxy_redirect http:///YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT/ https://$host/; proxy_redirect https:///YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT/ https://$host/; proxy_redirect ~*^https?://[^/]+:PRIVATE_CLOUD_PORT(/?.*)$ https://$host$1; sub_filter_once off; sub_filter_types *; # Please replace “YOUR_PRIVATE_CLOUD_IP_ADDRESS” with your private cloud IP address. sub_filter 'http:///YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT' 'https://$host'; sub_filter 'https:///YOUR_PRIVATE_CLOUD_IP_ADDRESS:PRIVATE_CLOUD_PORT' 'https://$host'; sub_filter ':PRIVATE_CLOUD_PORT' ''; proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; proxy_connect_timeout 6000; proxy_send_timeout 6000; proxy_read_timeout 6000; } }
第三步: 重启 Nginx 并进行测试。重启 Nginx 服务以应用配置更改。然后您可以使用以下方式访问您的私有云: https://supernote.yourcompany.com.
如何使用群晖 NAS 实现 HTTPS 反向代理
核心概念和网络拓扑
在开始配置之前,请先了解您的网络结构。假设您的环境如下:
-
Synology NAS: IP地址是
192.168.100.32 -
Supernote 私有云服务器: IP 地址为
192.168.100.32, 您的 Supernote 私有云在该地址的19072端口上运行 -
目标: 通过访问
https://notebook.your-domain.com访问内部网络服务器192.168.100.32:19072上的 Supernote 私有云服务。
数据流方向:浏览器/Supernote 设备 -> 反向代理 -> Supernote 私有云服务。
配置步骤(以 DSM 7.x 为例)
第一步:确保内部网络服务可访问。
-
例如,通过浏览器或设备直接访问 Supernote 私有云服务的内部 IP 地址和端口,以验证其是否正常运行:
http://192.168.100.32:19072. -
请确保您的内部网络防火墙允许来自 Synology NAS IP 地址的连接。 (
192.168.100.32).
第二步:在群晖 NAS 上配置反向代理
- 使用管理员帐户登录 DSM。
- 打开控制面板 -> 登录门户(或应用程序门户) -> 高级 -> 反向代理。
- 点击“创建”以创建新规则。
反向代理规则:
- 反向代理名称: 自定义一个易于识别的名称,例如 Supernote 私有云代理
-
来源(客户端如何访问 Synology)
-
协议:
HTTPS(推荐,安全) -
主机名: 您计划使用的外部域名,例如:
notebook.your-domain.com -
端口:
443(HTTPS 标准端口) - 启用HSTS: 不勾选
- 访问控制配置文件: 保持默认
-
协议:
-
Destination (Where should Synology requests be sent):
-
Protocol:
HTTPorHTTPS(Depending on the configuration of your internal network Supernote Private Cloud server, it is typically HTTP.) -
Hostname: The IP address of your internal Supernote Private Cloud server, for example
192.168.100.32 -
Port: The port your internal Supernote Private Cloud server listens on, by default
19072
-
Protocol:
第三步: 配置 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 设备进行自动同步。如果您需要使用自动功能,必须将此端口映射到 Docker 主机的18072端口,以允许从 Docker 主机外部访问。此端口暂时不支持自定义设置
- 容器内的
443端口由Nginx监听,其工作原理与8080相同,443端口 - 自定义默认主机端口映射 19072:
- Host Port Mapping 18072: 此端口主要用于将 supernote-service 容器内的自动同步功能映射到当前主机。通过此端口,您可以使用 SuperNote 设备上通过 WebSocket 协议实现的自动同步功能。如果您确认不会使用自动同步功能,则可以选择不打开此端口。有关端口配置的详细说明,请参阅 Docker 官方文档:https://docs.docker.com/engine/containers/run/#exposed-ports
端口规格常见问题解答
- 为什么 supernote-service 容器需要暴露 8080 端口?
- 容器内的 8080 端口由 Nginx 监听,Nginx 提供反向代理服务,将请求转发到 supernote-service 容器,以提供同步服务和 Web 管理界面。要使浏览器或 Supernote 设备能够访问私有云,必须将此端口映射到 Docker 主机以允许外部访问。
- Docker 官方文档明确指出:“默认情况下,容器运行时不会向主机暴露任何端口。要从主机访问容器内部监听的端口,必须发布该端口。” 端口发布通常使用 `-p {host_port}:{container_port}` 格式。参考:https://docs.docker.com/engine/containers/run/#exposed-ports
-
为什么要将主机上的端口 8080 映射到端口 19072?
Supernote 私有云必须满足无法使用反向代理的用户需求,因此我们需要在 Docker 主机上提供一个默认端口作为私有云容器服务的访问点。端口映射(例如,`-p 19072:8080`)是 Docker 推荐的标准做法:它会在主机上打开指定的端口(例如 19072),并将所有发往该端口的流量转发到容器的内部端口(例如 8080)。这是从主机外部访问容器服务的标准且必要的方法。参考:https://docs.docker.com/engine/containers/run/#exposed-ports - 为什么 Supernote 在容器内发布应用程序时默认使用端口 19072 而不是端口 80 或 443?
- Supernote私有云目前不提供HTTPS服务。端口80和443是常用的服务端口。直接将容器内的端口8080映射到Docker主机上的端口80或443容易导致端口冲突,进而造成服务不可用。因此,我们指定端口19072为默认映射端口,以降低冲突风险,确保服务稳定性。
-
要自定义端口,请按照以下步骤操作:
-
对于基于 Docker 进行部署的用户:直接修改 Docker 或 Docker Compose 配置中的
-p <自定义端口>:8080条目。 - 使用 install.sh 脚本部署的用户:目前端口固定为 19072
-
对于基于 Docker 进行部署的用户:直接修改 Docker 或 Docker Compose 配置中的
- 为什么 Supernote 无法提供 HTTPS 服务
- Supernote 团队无法为每个用户自行部署的私有云实例颁发可信的 SSL 证书。证书颁发需要来自可信证书颁发机构的验证以及域名所有权证明,这对于分布在众多用户自有服务器上的私有云服务而言并不实际。因此,Supernote 为需要 HTTPS 功能的用户提供了 Nginx 和 NAS 反向代理的示例配置。
- 我们已经将Supernote自签名证书集成到我们的镜像中,并已经默认启用 SSL/TLS 配置。
- 为什么需要端口 18072?
-
18072端口的作用在于 Supernote 设备与私有云之间的自动同步。如果您需要此自动同步功能,则必须在 Docker 主机上开放此端口。如果您确认不会使用自动同步,则可以关闭此端口。要禁用此端口,请按以下步骤操作。:
-
通过 Docker 或 Docker Compose 部署的用户可以直接删除
-p 18072:18072配置。 - 使用 install.sh 脚本部署的用户:目前端口固定为 18072
-
通过 Docker 或 Docker Compose 部署的用户可以直接删除