diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..783af81
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+# Shell scripts must use LF line endings
+*.sh text eol=lf
+.env* text eol=lf
+*.conf text eol=lf
+docker-compose.yml text eol=lf
diff --git a/base/setup.sh b/base/setup.sh
old mode 100644
new mode 100755
index 0641852..ca77018
--- a/base/setup.sh
+++ b/base/setup.sh
@@ -7,7 +7,7 @@
# ============================================
# 避免重复 source
-if [ -n "$_BASE_SETUP_LOADED" ]; then
+if [ -n "${_BASE_SETUP_LOADED:-}" ]; then
return 0 2>/dev/null || true
fi
_BASE_SETUP_LOADED=1
diff --git a/certd/README.md b/certd/README.md
index 53f4904..daac533 100644
--- a/certd/README.md
+++ b/certd/README.md
@@ -50,8 +50,11 @@ certd/
### 第一步:上传文件到服务器
```bash
-# 在本地执行,上传 base 和 certd 目录
-scp -r base/ certd/ root@<服务器IP>:/opt/
+# 在本地执行,上传 certd 目录
+scp -r certd/ root@<服务器IP>:/opt/certd
+
+# 如果服务器上还没有部署过 base(首台服务或全新服务器),还需上传 base
+scp -r base/ root@<服务器IP>:/opt/base
```
### 第二步:登录服务器执行部署
diff --git a/certd/backup.sh b/certd/backup.sh
old mode 100644
new mode 100755
diff --git a/certd/deploy.sh b/certd/deploy.sh
old mode 100644
new mode 100755
diff --git a/gitea/README.md b/gitea/README.md
index 99a816b..1776134 100644
--- a/gitea/README.md
+++ b/gitea/README.md
@@ -63,7 +63,6 @@ scp -r gitea/ root@服务器IP:/opt/gitea
```bash
ssh root@服务器IP
cd /opt/gitea
-chmod +x deploy.sh backup.sh upgrade.sh migrate.sh
# 首次运行 → 自动安装系统依赖 + Docker + Nginx
# 然后生成 .env 配置文件(密码已随机生成)并退出
@@ -327,7 +326,6 @@ docker compose up -d # 启动
```bash
cd /opt/gitea
-chmod +x upgrade.sh
# 交互式选择要升级的组件
bash upgrade.sh
@@ -581,7 +579,6 @@ docker compose up -d
```bash
# ===== 旧服务器 =====
cd /opt/gitea
-chmod +x migrate.sh
# 导出迁移包(会自动停服 → mysqldump → 打包数据 → 打包配置)
bash migrate.sh export
diff --git a/gitea/backup.sh b/gitea/backup.sh
old mode 100644
new mode 100755
diff --git a/gitea/deploy.sh b/gitea/deploy.sh
old mode 100644
new mode 100755
diff --git a/gitea/migrate.sh b/gitea/migrate.sh
old mode 100644
new mode 100755
diff --git a/gitea/upgrade.sh b/gitea/upgrade.sh
old mode 100644
new mode 100755
diff --git a/siyuan/README.md b/siyuan/README.md
index c817b3c..563e3cb 100644
--- a/siyuan/README.md
+++ b/siyuan/README.md
@@ -59,8 +59,11 @@ siyuan/
### 第一步:上传文件到服务器
```bash
-# 在本地执行,上传 base 和 siyuan 目录
-scp -r base/ siyuan/ root@<服务器IP>:/opt/
+# 在本地执行,上传 siyuan 目录
+scp -r siyuan/ root@<服务器IP>:/opt/siyuan
+
+# 如果服务器上还没有部署过 base(首台服务或全新服务器),还需上传 base
+scp -r base/ root@<服务器IP>:/opt/base
```
### 第二步:登录服务器执行部署
@@ -129,6 +132,63 @@ SiYuan 容器通过 `PUID` 和 `PGID` 环境变量控制运行用户。部署脚
chown -R 1000:1000 /data/siyuan/workspace
```
+## 使用指南
+
+### 基本操作
+
+1. 浏览器访问 `https://note.yourdomain.com`,输入授权码登录
+2. 点击左上角「笔记本」图标 → 「新建笔记本」
+3. 在笔记本中点击「+」新建文档,即可开始编辑
+
+### 编辑器快捷操作
+
+| 操作 | 说明 |
+|------|------|
+| `/` | 呼出斜杠菜单(插入标题、列表、代码块、公式等) |
+| `((` | 块引用(链接到其他块) |
+| `[[` | 文档引用 |
+| `Ctrl+E` | 行内代码 |
+| `Ctrl+P` | 全局搜索 |
+| `Ctrl+Shift+F` | 替换 |
+| `Ctrl+/` | 呼出块菜单 |
+
+> 更多快捷键:点击右上角「?」→「快捷键」查看完整列表。
+
+### 插入资源文件
+
+- 直接拖拽图片到编辑器即可上传(存储在 `data/assets/` 下)
+- 支持粘贴剪贴板中的图片
+
+### 安装插件
+
+1. 点击右上角「集市」图标(🏪)
+2. 选择「插件」标签页
+3. 浏览并安装需要的插件
+4. 部分插件需要刷新页面后生效
+
+### 使用模板
+
+1. 创建模板:新建文档 → 编辑好内容 → 移动到 `templates/` 目录
+2. 使用模板:编辑器中输入 `/` → 选择「模板」→ 选择已有模板
+
+### 闪卡间隔重复
+
+1. 在文档中选中要制作闪卡的块
+2. 右键 → 「制作闪卡」(或使用块菜单)
+3. 点击顶部工具栏「闪卡」图标开始复习
+
+### 数据导出
+
+> **注意**:Docker 版**不支持**导出 PDF/HTML/Word,仅支持导出 Markdown(`.md`)和 SiYuan 格式(`.sy.zip`)。
+
+- 单文档导出:右键文档 → 导出 → 选择格式
+- 整个笔记本导出:右键笔记本 → 导出
+
+### 官方文档
+
+- 用户指南:
+- GitHub:
+
## 日常运维
### 查看日志
diff --git a/siyuan/backup.sh b/siyuan/backup.sh
old mode 100644
new mode 100755
diff --git a/siyuan/deploy.sh b/siyuan/deploy.sh
old mode 100644
new mode 100755
diff --git a/vaultwarden/README.md b/vaultwarden/README.md
index 593291c..66f1372 100644
--- a/vaultwarden/README.md
+++ b/vaultwarden/README.md
@@ -53,8 +53,11 @@ vaultwarden/
### 第一步:上传文件到服务器
```bash
-# 在本地执行,上传 base 和 vaultwarden 目录
-scp -r base/ vaultwarden/ root@<服务器IP>:/opt/
+# 在本地执行,上传 vaultwarden 目录
+scp -r vaultwarden/ root@<服务器IP>:/opt/vaultwarden
+
+# 如果服务器上还没有部署过 base(首台服务或全新服务器),还需上传 base
+scp -r base/ root@<服务器IP>:/opt/base
```
### 第二步:登录服务器执行部署
diff --git a/vaultwarden/backup.sh b/vaultwarden/backup.sh
old mode 100644
new mode 100755
diff --git a/vaultwarden/deploy.sh b/vaultwarden/deploy.sh
old mode 100644
new mode 100755