目 录CONTENT

文章目录

在群晖NAS上安装Git Server

慧行说
2024-08-07 / 2 评论 / 1 点赞 / 452 阅读 / 1,530 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-08-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

DALL·E 2024-08-07 09.18.27 - A banner image for a blog post titled '在群晖NAS上安装Git Server'. The image should feature a Synology NAS device with elements representing Git, such as th

最近刚学会了简单的使用Git跟GitHub,但是GitHub存在一个问题,那就是代码库是完全公开的,我不想让我所有的代码都公开,所以我还需要一个私有化的Git服务,正好我手头有一台群晖NAS,之前也见到过群晖nas上可以安装git,正好就这么折腾下。

我的目的很简单,有一个私有化的Git服务,可以用来同步我的代码库,同时我还想用作obsidian的同步中心,实际上我本可以通过NAS的synology drive来同步的,那个也自带版本库,但是就是手痒,想通过Git来进行同步,然后把我所有别的平台的笔记都同步到obsidian中来进行使用。

Git Server安装

  • 安装Git Server很简单,在套件中心搜索Git即可进行安装。

image-20240806143027533

  • 安装完成之后先不着急打开,进入控制面板>共享文件夹,然后创建一个用于存放Git仓库的目录,并记好自己的目录创建在哪一块存储空间下,等下在进入终端时,存储空间1就是Volume1,以此类推;并且要同步把这个文件夹允许等下要使用的用户可读写权限。

image-20240806143516711

  • 创建完成后,进入控制面板>用户与群组>高级设置中启用启动家目录服务

image-20240806143911566

  • Git Server需要使用SSH服务,进入控制面板>终端机和SNMP>终端机中,启动启动SSH功能

image-20240806144058014

  • 最后一步我们打开安装完成的Git Server套件,在其中勾选需要使用Git服务的账号并应用。

image-20240806144254648

Git Server配置

  • 安装好Git Server之后,需要进入终端进行配置,通过SSH的方式进入NAS的控制台,通过ssh admin@ip -p port进入。
huixing@DESKTOP-27OKUAF MINGW64 ~/Desktop
$ ssh admin@192.168.0.15 -p 22
admin@Synology:/$ git --version
git version 2.39.1
  • 进入我们一开始创建好的Git共享文件夹volume2/GitServer
admin@Synology:/$ pwd
/volume2/GitServer
  • 然后创建一个新文件夹作为我们的Git仓库使用,我这里创建一个铭文code的目录,并进入这个仓库,使用git init --bare进行初始化。
admin@Synology:/volume2/GitServer$ mkdir code
admin@Synology:/volume2/GitServer$ ls
code  @eaDir

这一步有个细节是,不要直接使用git initgit init是本地开发用的,如果要作为远程仓库来使用时,请使用git init --bare

  • 此时,这个Git仓库就已经创建好了,我们可以通过本地对这个仓库进行一下clone试试,
huixing@DESKTOP-27OKUAF MINGW64 /d
$ git clone ssh://user@192.168.0.15:22/volume2/GitServer/code
Cloning into 'code'...
admin@192.168.0.15's password:
warning: You appear to have cloned an empty repository.
  • 此时可能存在多个问题,比如clone的user没有权限,或者服务端的文件没有读写权限等等,会有多种问题,我参考的教程中提到了一个点,就是需要设置这个仓库的读写权限,设置为775。
admin@Synology:/volume2/GitServer/code$ sudo chmod -R 755 .
Password:
admin@Synology:/volume2/GitServer/code$
  • 还有一个设置,我没设置这个,但是仍然生效了。
sudo chown -R username:usergroup /volume2/repo

image-20240806160052303

到此为止,其实仓库的配置与本地使用就完事儿了,中间还有一些细节,比如设置你的Git邮箱跟username,这些属于Git常规设置,本文就没有描述。但是如果只到这一步的话,其实还是没办法使用的,就相当于在局域网内从Git Server拉数据,并没有推数据的方法,下面就来设置如何将Git Server作为远程仓库进行推送。

Git Server远程连接

远程连接有两种方式,一种就是通过ssh直接连接,另一种方法是通过公钥来连接,目前我使用的是前一种方法,也就是ssh直接连接。基本上玩nas的多多少少都做了内网穿透了,所以内网穿透部分就直接不说了,这个感兴趣可以自行找教程,本文就直接默认已经做过内网穿透了。

  • 直接在本地clone远程仓库,远程仓库地址为:ssh://nasuser@xxx.com:port/volume2/GitServer/code,记得这里的nasuser为nas上的用户名,这里建议单独配置一个,xxx.com为内网穿透外网绑定的域名,port为内网端口映射到外网的端口,/volume2代表存储空间,你的Git仓库存放在那一块存储空间上,volume2就代表存储空间2,后面的GitServer/code代表项目的存储路径。

使用这种方式每次clonepushpull时都需要输入密码,如果使用公钥应该不用输入密码,不过目前我还没研究如何在NAS上的Git Server中配置,目前暂时也没需要,等哪天用密码用烦了再水一篇如何配置公钥。

huixing@DESKTOP-27OKUAF MINGW64 /d/obsidian (master)
$ git push origin master
nasuser@xxx.com's password:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 954 bytes | 954.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
To ssh://xxx.com/volume2/GitServer/obsidian
   427ecec..9e83f58  master -> master

像上面这样就已经彻底把NAS作为一个远程仓库给公司或者家里电脑作为中心仓库使用了,在公司电脑也好,家里也好,只需要定期的push以及pull,就可以方便的进行远程协作。

参考资料

https://www.cnblogs.com/timhant/p/15346100.html

https://www.cnblogs.com/softman11/p/3443229.html

1

评论区