在 Synology NAS 中搭建 Git Server
群晖 Synology NAS 可以搭建 Git Server,作为日常远端 Git 仓库使用,配合公网访问能力,为个人或团队的代码及文件提供强大的版本管理能力。
下面就详细介绍一下如何在 Synology NAS 中进行 Git Server 的搭建。
首先我们需要在群晖的 DSM 的套件中心里安装 Git Server 应用。
安装完成后,我们进入 控制面板 ⇒ 共享文件,在其中创建一个用于存放 Git 仓库的目录,
记住自己创建的 Git 仓库存放目录所在的卷位置(如图中我创建在了 Volume2 下)。
创建完成后,我们进入 控制面板 ⇒ 用户 ⇒ 高级 中启用 “用户家服务”。
Git Server 需要通过 SSH 进行访问,进入 控制面板 ⇒ 终端及 SNMP 中勾选 “启用 SSH 服务”。
完成后我们开始创建供远端 Git 用户访问时使用的用户账户,
在 控制面板 ⇒ 用户 中创建一个名为 gitter 的用户,
gitter 用户隶属于 users 组即可,不用对其进行任何目录权限的配置,保持默认即可。
完成后我们打开安装完成的 Git Server 套件,在其中勾选 gitter 用户,以指定该用户具备通过 Git 服务访问 Git 仓库的能力。
至此,在 DMS 中的配置即告完成,接下来的配置都需要在 NAS 的控制台中进行。
由于 Synology NAS 的 DSM 中没有提供操作控制台的功能,因此我们只能通过 SSH 的方式访问 NAS 的控制台,群晖限制登录 SSH 的账户必须拥有管理员权限,因此我们需要提前准备一个管理员账号,直接使用 admin 账户或者新建一个管理员账户均可。
使用 Windows Terminal SSH 到 NAS (也可使用其他任何方式连接),
按提示输入密码通过后即可连接成功。
ssh admin@ip -p port # 若端口号为 22 则可忽略 -p 参数及端口号的填写 # ssh admin@ip
进入到之前创建的 Git 仓库存放目录下(即上文中创建共享目录步骤中新建的文件夹 git)。
cd /volume2/git
在该目录下创建一个新文件夹作为我们的 Git 仓库使用,我们创建一个名为 repo 的目录。
mkdir repo
进入该新创建的文件夹,执行 Git 仓库初始化。
cd repo
git init --bare
接下来是最重要的一步,配置目录权限!
我们为了让上文中新建的 gitter 用户能够向 Git 仓库中推送和拉取文件,需要让 gitter 用户拥有对整个 Git 仓库存放目录及其内所有子目录的读写执行权限,否则通过 gitter 进行的所有操作都将失败。
那么在上文中我们创建的存放 Git 仓库的目录为 git,创建的 Git 仓库目录为 repo,我们若需要 gitter 能够对 repo 仓库内进行推拉文件操作就需要将 git 以及 repo 和其下所有文件的读写执行访问权限赋予 gitter。
通过以下命令进行目录有所者以及目录权限的配置。
sudo chown -R gitter:users /volume2/git
sudo chmod -R 775 /volume2/git
都配置完成后,我们现在可以在本地计算机上对 NAS 上的仓库进行克隆及其他操作了!
git clone ssh://gitter@ip:port/volume2/git/repo # 若端口为 22 则可忽略 port 在所位置的内容填写 # git clone ssh://gitter@ip:/volume2/git/repo
这里想要再说明一下,我们在 NAS 上搭建 Git Server 时,对于远端用户的管理是一个我们需要考虑的问题。 有两种方式可供我们选择:
1. 为每一个需要通过远端访问 Git Server 的用户配置一个账户,个人通过各自账户进行访问;
2. 创建一个公用的用户,所有人使用同一个账户进行访问; 第一种方式在人少的情况下没什么问题,可以根据需要为不同的仓库目录分配不用的权限,但在用户数量多起来之后,维护是一个非常麻烦的事情。 第二种方式虽然在限制仓库访问权限方面缺失灵活的能力,但胜在好管理好维护,本身 Git 进行提交和推送的时候也是通过 Git username 和 email 信息进行提交人标记的,因此使用同一个账户不会影响仓库内容的管理,并且通过配置 SSH 公钥访问,也可以更安全的限制远端访问的设备,作为比较小的团队采用这种方式个人感觉比较合适(本人就选择的第二种)。
通过配置 SSH 公钥方式进行访问的方法,待过些时日再更新上来,能啃英文的朋友也可以直接参考以下文章的内容。
Running a Git Server on a Synology NAS · William Spies
Synology DS213J 群晖NAS git server架设方法
实不相瞒,就这个在群晖 NAS 上搭建个 Git Server,真的是让我费了九牛二虎之力,前前后后算下来折腾了可能有好几天,实在让人心力憔悴。
归根结底还是自己相关知识储备太少,整个过程完全依赖网上查找各种资料,按照别人提供的步骤一点一点进行配置加以完成,所以在很多查找到的教程、说明都明显缺失步骤,或者内容描述不详细不准确的情况下,屡屡失败,好在经过一遍遍试错,最终得以找到准确可行的配置方法,记录下来供自己以后以及其他遇到同样问题的朋友参考。
感谢上述两文的作者,融合了你们的经验才使得我最终配置成功,愿知识的分享可以帮助更多的人。