业余时间自己在做一些小项目,由于此类项目大多要求一定的保密性,此时使用类似Github这种必须开源的gitServer就不太适合了,而且家里有多台电脑,所以最好有一个代码管理工具协助管理,正好家里有一台群辉NAS,用群辉配置一个Git Server来满足这个要求。

1. 创建GitRepo目录

首先,我们需要创建一个Git Server的数据存储的主共享目录,进入 控制面板 > 共享文件夹 > 新增(GitRepo)

创建GitRepo目录

2. 创建gitcode用户

接着,我们可以创建一个单独的git用户账户,用于代码提交,进入 控制面板 > 用户与群组 > 新增

创建git用户

其中,用户群组可以使用默认的 users ,也可以像我这样单独创建一个群组git

用户群组创建

分配共享文件夹权限时,将前面创建的GitRepo目录赋予读写权限

GitRepo目录赋予读写权限

应用程序权限可以全部允许,或者像我这样只勾选必要的权限:

应用程序权限全部允许

3. 安装GitServer

前往 套件中心 > 搜索与安装Git Server

套件中心 Git Server

完成安装后,打开Git Server,勾选相应的用户权限

勾选gitcode的用户权限

4. 开启SSH

进入 控制面板 > 终端机和SNMP > 勾选启动SSH功能 > 端口默认为22(为了安全考虑建议修改默认端口)

控制面板 > 终端机和SNMP > 启动SSH功能 > 端口默认为22

5. 配置权限

开启SSH权限后,通过管理员账户新增的账户便可以在终端中通过ssh命令登录群晖NAS了。

  • 更改帐户目录权限
  • 配置免密登录(可选),我喜欢输密码,这样提交前我有思考的时间😄

5.1. 更改当前帐户目录权限

  • 使用管理员帐号和密码登录:

    1
    # ssh <管理员账户>@<nas_ip_address> -p <端口>
  • 通过sudo -i切换到root:

  • 写一个简单的shell脚本增加目录权限:

    1
    2
    3
    4
    # Folder need to chown and chmod.
    # chown -R <用户名>:<群组名> .
    chown -R phoenine:git .
    chmod -R 755 .

5.2. 配置免密登录(可选)

  • 进入刚才新建的git帐户目录:

    1
    cd /volume1/homes/phoenine
  • 创建.ssh文件夹以及authorized_keys文件:

    1
    2
    3
    mkdir .ssh
    cd /volume1/homes/phoenine/.ssh
    vim authorized_keys
  • 将终端的id_rsa.pub内容拷贝authorized_keys中:

  • 设置.ssh目录权限组并赋予权限,并设置authorized_keys文件权限。

    1
    2
    3
    4
    5
    cd /volume1/homes/phoenine
    chown -R phoenine:git .ssh
    chmod -R 755 .ssh
    cd /volume1/homes/phoenine/.ssh
    chmod 600 authorized_keys

6. 创建代码仓库

  • 使用管理员帐号和密码登录:

    1
    ssh <管理员账户>@<nas_ip> -p <端口>
  • 创建代码仓库:

    1
    2
    3
    /volume2/GitRepo/Code
    git --bare init <repo_name>.git
    chown -R phoenine:git <repo_name>.git
  • 本地客户端通过git clone下载:

    1
    git clone ssh://phoenine@<nas_ip>:<端口>/volume2/GitRepo/Code/<repo_name>.git

7. 其他办法

群晖上也有其他的办法实现同步:

  • 通过app - Synology Drive Client进行文件夹的同步

    image-20231102203813450

  • Docker安装gitlab,这个才是最终的解决方案(加跟内存的事)。