Obsidian 发布网站 - Obsidian 中文百科 - Obsidian Publish
# 创建网站
## 未创建过网站
### 准备工作
- 一个 Obsidian 账户。如果你还没有账户,请[注册](https://obsidian.md/account#mode=signup)。
- 发布服务订阅。如果你还没有订阅,请在[账户页面](https://obsidian.md/account)进行订阅。
### 步骤 1:登录 Obsidian 账户
1. 打开**设置**。
2. 在侧栏中,点击**关于**。
3. 在**账户 → 你的账户**下,点击**登录**。
4. 在**邮箱**中,输入账号邮箱。
5. 在**密码**中,输入密码。
6. 点击**登录**。
### 步骤 2:启用发布插件
1. 打开**设置**。
2. 在侧栏中,选择**核心插件**。
3. 启用[[发布插件|发布插件]]。
### 步骤 3:创建一个网站
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 在**网站 ID**中,输入你想要使用的网站 ID。网站 ID 将为你网站地址的一部分。例如,ID 为 `my-amazing-site` 的网站可以通过网址 publish. Obsidian. Md/my-amazing-site 访问。
3. 点击**创建**。
### 步骤 4:设置站点名称
1. 再次点击**发布更改**按钮。在**发布更改**对话框中,选择**更改网站设置**选项( ![[lucide-cog.svg#icon]] )。
2. 在**常规**设置下的**网站名称**设置中,输入你的网站名称。
3. 点击**保存网站设置**。
### 步骤 5:选择要发布的笔记
1. 回到**发布更改**对话框中,在**未发布**栏位中查看仓库中尚未发布的笔记。
2. 选中要发布的笔记。
3. 点击**发布**。
随后,所选的笔记将可以在网站上访问。
## 已经创建过网站
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 由于已经创建了一个网站,请点击**切换网站**(箭头图标)。
3. 在**网站 ID**中,输入你想要使用的网站 ID。网站 ID 将为你网站地址的一部分。例如,ID 为 `my-amazing-site` 的网站可以通过网址 publish.obsidian.md/my-amazing-site 访问。
4. 点击**创建**。
> [! 注意] 拥有的网站数量取决于发布服务的订阅数量。新建网站前,请确保订阅数量。
# 发布笔记
## 发布笔记
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,展开**未发布**栏位查看所有尚未发布的笔记。
3. 选择你想要发布的笔记。
4. 点击**发布**。
## 取消发布笔记
即使取消发布,笔记仍会保留在本地仓库中。
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,展开**已发布**栏位查看所有已发布的笔记。
3. 选择你想要取消发布的笔记。
4. 点击**发布**。
## 更新已发布的笔记
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,展开**本地有更改**栏位查看所有在本地上有修改的笔记。
3. 选择你想要更新的笔记。
4. 点击**发布**。
## 发布相关笔记
如果你只发布了某篇笔记 a,而未发布笔记 a 中所链接的笔记,那么访客在阅读笔记 a 时就无法通过链接跳转到相关内容。为了防止这种情况,发布服务能让你在发布某篇笔记的同时将相关笔记也一起发布。
要将与发布队列中笔记相关的所有笔记加入发布队列中,请在**发布更改**对话框中点击**添加相关文件**。
不过在使用这个功能后,我们建议你仔细检查发布队列,以防止一些不想发布的文件意外混入其中。
## 默认加入/不加入发布队列
见[[publish 属性]]
## 为笔记设置永久链接
见 [[permalink 属性]]
# 设置访问密码
为了增强发布网站的安全性,可以为网站设置密码。其他人只有在正确输入密码后才可浏览网站内容。当然,如果想移除密码也是可以的。移除密码后,整个网站将再次对公众可见。
> [! Warning] 目前不支持单独为已发布的笔记设置密码保护。
## 添加网站访问密码
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,点击**更改网站设置**选项(齿轮图标)。
3. 在**其他设置**下,点击**密码**旁边的**管理**按钮。
4. 点击**添加密码**。
5. 在**密码**输入框中,输入网站访问密码。
6. (可选)在**密码名称**中,输入密码的昵称。密码名称常用于提示其用途,比如谁将使用这个密码进行访问。
7. 点击**添加此密码**。
## 移除访问密码
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,点击**更改网站设置**选项(齿轮图标)。
3. 在**其他设置**下,点击**密码**旁边的**管理**按钮。
5. 点击要删除的密码旁边的叉号图标。
# 删除现有网站
> [! 注意] 删除网站后,笔记仍会保留在你的本地仓库中。
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 点击**切换网站**(箭头图标)。
3. 点击要删除网站右侧的**删除网站**(叉号图标)。
4. 点击**删除**以执行删除操作。
# 在网站之间切换
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 点击**切换网站**(箭头图标)。
3. 点击要切换到的网站右侧的**选择**按钮。
# 更改网站 ID
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 点击**切换网站**(箭头图标)。
3. 点击要编辑 ID 的网站右侧的**编辑网站 ID**按钮(铅笔图标)。
4. 在**网站 ID**中,输入网站的新 ID。
5. 点击**更改**。
# 查看网站选项
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 在**发布更改**对话框中,点击[[更改网站设置]] 按钮(齿轮图标)。
# 协作
参考[[Obsidian 发布服务-应用-团队]]
# 重定向
见[[别名-应用-Obsidian 发布网站]]
# 自定义网站
## 自定义分享链接
很多社交网站都支持在分享网站时显示网站的要点信息。借助属性,可以自定义网站在分享时的要点信息。
> [! Warning] 警告
> 此部分中部分内容**仅**适用于网络爬虫。为了提高网站的访问性能,一般情况下浏览器仅显示未经修改的页面。
- 自定义摘要,使用 [[description 属性]]。
- 自定义图片,使用 [[cover 属性]]
## 自定义域名
对于每个网站,都可以通过自定义域名访问。可以为网站设置自定义域名或子域名。
> [! Warning]
> 目前,官方仅支持使用以下方法配置自定义域名:
>
> - 使用 [CloudFlare](https://cloudflare.com) 的[全模式](https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full/)。
> - 使用代理设置。
>
> 目前官方还没有代替配置 SSL 证书的方法。
### 使用 CloudFlare 进行设置
设置自定义域名或子域名的最简单方式是创建一个 [CloudFlare](https://cloudflare.com) 账户,并让 CloudFlare 管理你的域名 DNS。
以下是使用 CloudFlare 来为发布网站配置自定义域名的步骤,无论是使用根域名(`mysite.com`)还是子域名(`notes.mysite.com`)。
> [! Important] 提示
> CloudFlare 是**我们主要推荐的服务**。因此下文将基于 CloudFlare 进行说明。
**在 CloudFlare 中:**
1. 打开 Cloudflare 到想要使用域名,比如 `mysite.com`,或如 `notes.mysite.com` 的子域名。
2. 转到**DNS**并点击**Add Record**。
3. 选择**CNAME**。
4. 在**name**中输入域名或子域名,例如 `notes.mysite.com`。
5. 在**target**中输入 `publish-main.obsidian.md`。注意,不要在此处加入个人网站的 ID,因为发布服务会自动处理相关设置。
6. 确保**proxy status**已启用。默认情况下应该是启用的。
7. 转到**SSL/TLS**并将 SSL/TLS 加密模式设置为“Full”,以便自动配置 SSL/TLS 证书。
> [! 注意]
> 要将 `mysite.com` 和 `www.mysite.com` 都重定向到 Obsidian Publish,你需要创建一个[页面规则](https://support.cloudflare.com/hc/en-us/articles/200172336-Creating-Page-Rules),具体设置如下:
>
> - URL 匹配:`www.mysite.com/*`
> - 转发 URL - 301 永久重定向
> - 重定向 URL:`https://mysite.com/$1`
>
> 创建完页面规则后,为 `www.mysite.com` 创建一个 CNAME 记录,就像为 `mysite.com` 做的一样。
**在 Obsidian 中:**
1. 打开 Obsidian。
1. 在功能区中,点击**发布更改**按钮(纸飞机图标)。
2. 在**发布更改**对话框中,点击**更改网站设置**选项(齿轮图标)。
4. 点击**自定义域名**设置项旁边的**设置**按钮。
5. 在**自定义 URL**中,输入你的域名或子域名。
> [! 注意]
> 如果你的自定义域名出现了循环重定向,很可能是因为将 CloudFlare 中的加密模式设置为“Flexible”而不是“Full”。
### 使用代理进行设置
你也可以通过使用自己的 Web 服务器为自定义域名设置 SSL/TLS。
如果你已经在域名或子域名下托管了一个网站,你也可以使用这个选项,将网站设置为在特定 URL 路径下加载你的 Obsidian 发布网站,而不是完全托管整个发布网站。
将所有请求代理到 `https://publish.obsidian.md/serve?url=mysite.com/my-notes/...` 的 URL 路径下,并在 Obsidian 中的网站设置中将**自定义 URL**设置为 `mysite.com/my-notes`。
你还可以将 Obsidian 发布网站设置为你网站的子 URL。例如,`https://mysite.com/my-notes/`。为此,你必须托管自己的服务器,并将所有请求代理到我们的服务器 `https://publish.obsidian.md/`。
#### NGINX
在你的 NGINX 配置中添加以下内容:
```nginx
location /my-notes {
proxy_pass https://publish.obsidian.md/serve?url=mysite.com/my-notes/;
proxy_ssl_server_name on;
proxy_set_header Host publish.obsidian.md;
}
```
#### Apache
在 `.htaccess` 中添加以下内容:
```htaccess
RewriteEngine on
RewriteRule "^my-notes/(.*)
quot; "https://publish.obsidian.md/serve?url=mysite.com/my-notes/$1" [L,P]
```
> [! 注意]
> 必须启用 `mod_rewrite`,你可能还需要配置 [SSLProxyEngine](https://stackoverflow.com/questions/40938148/reverse-proxy-for-external-url-apache)。
#### Netlify
```plain
[[redirects]]
from = "https://mysite.com/my-notes/*"
to = "https://publish.obsidian.md/serve?url=mysite.com/my-notes/:splat"
status = 200
force = true
```
#### Vercel
在 `vercel.json` 中,[配置重写](https://vercel.com/docs/configuration#project/rewrites):
```json
{
...
"rewrites": [
{
"source": "/my-notes/",
"destination": "https://publish.obsidian.md/serve?url=mysite.com/my-notes"
},
{
"source": "/my-notes/:path*",
"destination": "https://publish.obsidian.md/serve?url=mysite.com/my-notes/:path*"
}
]
}
```
#### Caddy
```plain
mysite.com {
encode zstd gzip
handle /my-notes* {
reverse_proxy https://publish.obsidian.md {
header_up Host {upstream_hostport}
}
rewrite * /serve?url=mysite.com{path}
}
}
```
#### Traefik
这个最小配置将会把 `mysite.com` 重定向到 Obsidian 发布网站。
查看 [Traefik文档](https://doc.traefik.io/traefik/routing/overview/)获取完整示例。
```yaml
http:
routers:
mysite:
rule: Host(`mysite.com`)
service: obsidian-publish
middlewares:
- "publish-headers"
services:
obsidian-publish:
loadBalancer:
servers:
- url: https://publish.obsidian.md
middlewares:
publish-headers:
headers:
customRequestHeaders:
Host: "publish.obsidian.md"
x-obsidian-custom-domain: "mysite.com"
```
#### 支持的 HTTP X-Headers
如果你的代理服务不允许查询路径,你可以使用 `https://publish.obsidian.md/`,并设置一个自定义头 `x-obsidian-custom-domain`,将其设置为你的网站 URL `mysite.com/my-subpath`。
### 将旧网站重定向到自定义域名
如果你想将访客从旧的 `publish.obsidian.md` 网站重定向到新的自定义域名,请在配置自定义域名时启用**重定向至你的自定义域名**选项。
### 故障排除
一旦设置了自定义域名,如果你还从以前的 `https://publish.obsidian.md/slug` 链接访问发布网站,你可能需要清除浏览器缓存,以使字体、图表或密码等内容能够正常工作。这是由当下浏览器强加的跨域安全限制策略导致的。但好消息是,如果你只允许访客使用你的自定义域名,那么你网站的读者应该永远不会遇到这个问题。
## 自定义外观
这篇笔记将教你如何自定义网站的外观。
### 静态资源
以下文件是网站外观的设置文件。你可以创建并发布它们,以此来自定义你的网站:
- `publish.css` :网站的 CSS 文件
- `publish.js`:自定义 JavaScript
- `favicon-32x32.png`:自定义的网站标志
**注意:**
- 由于 Obsidian 不支持编辑 CSS 和 JavaScript 文件,因此你需要使用其他应用程序来创建和编辑它们。
- `publish.css` 和 `publish.js` 必须发布于仓库的根目录(`/`)中。
- 默认情况下,`publish.css` 和 `publish.js` 不会出现在文件列表里,但你仍然可以通过**发布更改**对话框来发布它们。
- 要启用 `publish.js` 中的自定义 JavaScript,你需要使用自定义域名。
对于标志,发布服务支持以下命名语法,其中 `32` 代表了标志的像素尺寸:
- `favicon-32.png`
- `favicon-32x32.png`
- `favicon.ico`
我们建议你的标志文件为以下尺寸之一(或多个尺寸):
- `favicon-32x32.png`
- `favicon-128x128.png`
- `favicon-152x152.png`
- `favicon-167x167.png`
- `favicon-180x180.png`
- `favicon-192x192.png`
- `favicon-196x196.png`
标志文件可以存放在仓库中任意位置。只要它们被发布了就能生效。
### 使用社区主题
要在网站上使用社区主题:
1. 在系统资源管理器中打开本地仓库。
2. 进入仓库设置文件夹(默认名称为 `.obsidian`)。
3. 打开 `themes` 文件夹。
4. 复制你想要用于网站的 CSS 文件。
5. 将文件粘贴到本地仓库的根文件夹中。
6. 将这个 CSS 文件重命名为 `publish.css`。
7. 发布 `publish.css` 文件。
**注意:**
- 如果发布主题文件后网站外观仍然没有变化,请尝试清空浏览器缓存。
- 你可以在[[更改网站设置|网站设置]]中开启切换颜色的开关。
> [! Tip] 开发你自己的主题
> 找不到适合的主题?[自己构建一个主题吧](https://docs.obsidian.md/Themes/Obsidian+Publish+themes/Build+a+Publish+theme)。
### 调整界面功能
你可以启用网站的界面组建,如局部关系图或大纲等。
具体界面功能请参考[[更改网站设置|网站设置]]中**阅读体验**和**组件**部分设置。
#### 自定义文件列表
在发布服务中,你可以自定义文件和文件夹在网站[[文件列表]]中的顺序,以及显示情况。默认情况下,文件列表中的项目按发布顺序排列。未发布的笔记不会出现在网站的文件列表中。
##### 进入自定义文件列表设置
1. 在功能区中,点击**发布更改**按钮( ![[lucide-send.svg#icon]] )。
2. 在**发布更改**对话框中,点击**更改网站设置**(齿轮图标)。
3. 在**组件**设置下,点击**自定义文件列表**旁边的**管理**按钮。
随后将出现一个名为**自定义文件列表**的窗口,你可以在其中对文件列表进行自定义。
##### 调整文件列表顺序
在标有**文件列表显示顺序**的部分,你可以调整文件列表中项目的显示顺序。
1. 选择要调整的文件夹或文件。
2. 将其拖动到所需位置。
3. 在窗口右下角,点击**完成**。
发布服务会将更改推送到网站。
##### 隐藏和取消隐藏列表项目
如果你不希望一些已发布的文件或文件夹显示在文件列表中,你可以隐藏这些项目。
1. 选中要隐藏的文件夹或文件。
2. 右键单击并点击**隐藏**。随后该项目将从**预览**列表中消失。
3. 在窗口右下角,点击**完成**。
发布服务会将更改推送到网站。
> [! Tip] 您可以通过点击**在文件列表中隐藏文件或文件夹**标题右侧的恢复按钮来**取消隐藏**文件
##### 常见问题
> [! Question]- 问:我可以在**自定义文件列表**中将文件从一个文件夹移动到另一个文件夹吗?
> 答:不可以。
>
> 你只能调整文件夹内文件的顺序(包括根目录内的文件)以及文件夹之间的顺序。
> [! Question]- 问:我可以在调整多个文件和文件夹的顺序吗?
> 答:可以!
> [! Question]- 问:如何恢复这些修改?
> 答:**显示顺序**:点击**自定义文件列表**旁边的**恢复默认**图标(逆时针旋转箭头)。这将让文件列表恢复为按字母顺序排列。
>
> **隐藏情况**:点击**在文件列表中隐藏文件或文件夹**旁边的**恢复默认**图标(逆时针旋转箭头)。这将让隐藏项目恢复为可见状态。