基于NAS搭建Git服务器实现Obsidian文档版本管理

NAS11小时前发布 温州青年
3 0 0
基于NAS搭建Git服务器实现Obsidian文档版本管理

一、写在前面

最近发现,之前创建的几篇笔记不小心被误删了,花了很长时间才恢复回来。要是有个系统能记录变更,并方便回退就好了!家里正好有个NAS服务器,搭建个Git Server刚好就能完美解决这个问题了。

本文记录下整个搭建过程,方便后续查阅。

二、基础环境配置

  1. 安装 Git Server进入 套件中心,搜索并安装 “Git Server”。安装后无需额外配置,保持默认启动即可。
基于NAS搭建Git服务器实现Obsidian文档版本管理

选择允许访问:

基于NAS搭建Git服务器实现Obsidian文档版本管理

  1. 创建共享文件夹进入 控制面板 > 共享文件夹,新建一个专门存放仓库的目录(如 git_repos)。建议取消”只允许管理员访问”,并赋予后续创建的 Git 用户读写权限。
  2. 创建专用用户(推荐)为了安全,建议在 控制面板 > 用户 中新建一个用户(如 git_user)。在”用户群组”中,确保该用户对 git_repos 文件夹有”读写”权限。
  3. 设置可读写:
基于NAS搭建Git服务器实现Obsidian文档版本管理

由于NAS只允许Administrators组的用户使用SSH服务,所以要赋予管理员权限

基于NAS搭建Git服务器实现Obsidian文档版本管理

  1. 开启服务
  • SSH:进入 控制面板 > 终端机和 SNMP,勾选”启动 SSH 服务”,端口默认 22(可修改)。
  • 家目录:进入 控制面板 > 用户 > 高级设置,启用”家目录服务”。这一步能解决后续 SSH 连接时的路径报错问题。

三、创建裸仓库 (Bare Repository)

Git服务器需要的是裸仓库(不含工作区),这一步必须通过 SSH 命令行操作。

  1. SSH连接NAS在电脑上打开终端(Windows 可用 Git Bash 或 PowerShell),使用管理员账号连接:
ssh admin@你的NAS内网IP -p 你的SSH端口
  1. 初始化仓库连接成功后,执行以下命令创建裸仓库:
# 切换到共享文件夹
cd /volume1/git_repos
    
# 创建项目文件夹(通常以.git结尾)
sudo mkdir obsidian.git
cd obsidian.git
    
# 初始化裸仓库(关键步骤)
sudo git init --bare
  1. 修正权限(关键)为了让 git_user 能正常推送代码,需要将仓库目录的属主改为该用户:
# 回到共享文件夹上级目录
cd /volume1
# 递归修改属主(假设你的用户组是 users)
sudo chown -R git_user:users git_repos

四、本地客户端连接

现在你可以在本地电脑(已安装Git)上克隆和推送代码了。

  1. 克隆仓库
git clone ssh://git_user@你的NAS内网IP:SSH端口/volume1/git_repos/obsidian.git

首次连接会提示确认主机密钥,输入 git_user 的密码即可拉取代码。

  1. 配置免密登录(SSH 密钥)为了避免每次操作都输入密码,可以将本机的公钥添加到 NAS 上。 (1)生成本地密钥(如果已有 ~/.ssh/id_rsa.pub 可跳过):
ssh-keygen -t rsa

(2)上传公钥:将 id_rsa.pub 的内容复制到 NAS 上 git_user 的home目录中:

# 在 NAS 上操作(通过 SSH 登录后)
mkdir -p /var/services/homes/git_user/.ssh
echo "你的公钥内容" >> /var/services/homes/git_user/.ssh/authorized_keys
chmod 700 /var/services/homes/git_user/.ssh
chmod 600 /var/services/homes/git_user/.ssh/authorized_keys

完成后,本地再次 git push 将不再需要密码。

五、文档入库

# 1. 添加文件
git add .

# 2. 检查暂存的文件
git status

# 3. 提交
git commit -m "初次提交:添加 Obsidian 笔记"

# 4. 推送到远程
git push -u origin master
# 或
git push -u origin main

六、写在最后

到此为止,就成功在NAS上搭建了Git服务器,并将Obsidian的所有内容都纳入到Git管理,这样Obsidian中的所有变更都可以通过Git的历史记录查询和回退了。

后面可以考虑通过Obsidian+opencode+git做个自动入库的技能,这样就不用每次手动提交了!

© 版权声明

相关文章