NAS搭建自己的Git私服

去年公司采购了一台NAS设备,本来是给文化业务部门做素材库用的,结果我发现磁盘利用率很低,看着那么贵的希捷酷狼闲置真心痛啊!突然想到目前公司软件研发的源码管理分两块,一个是gitee,一个是阿里云ECS服务器搭建的Gitblit,这两个资源已经被挤占的很严重,还要另外开销一笔费用,不如集中起来管理到一个设备上。

名称 版本 备注
群晖NAS DS1821+
群晖NAS操作系统 DSM 7.2.1-69057 Update 5
群晖NAS套件Git Server 2.39.1-1079
终端机SSH客户端 Xshell 7.0.0040
终端机Git客户端 2.45.1

NAS创建用户及用户组

  1. 使用管理员登录NAS控制台。
  2. 进入控制面板 > 文件共享 > 共享文件夹 > 新增 - 名称 GitRepo。
  3. 进入控制面板 > 文件共享 > 用户与群组 > 用户账号 > 新增 - 创建用户 - 名称 gituser。(PS:几个开发人员就创建几个)
  4. 进入控制面板 > 文件共享 > 用户与群组 > 用户群组 > 新增 - 群组名称 gitdev。(PS:为了方便后续文件目录按群组授权)
  5. 进入控制面板 > 文件共享 > 共享文件夹 > 选择 GitRepo - 编辑 - 权限 - gituser 勾选 可读写。

安装Git套件并授权

  1. 进入套件中心 > 所有套件 > 搜索 - Git Server - 安装。
  2. 打开套件Git Server > 允许访问 - 勾选 gituser。

配置SSH访问

  1. 进入控制面板 > 文件共享 > 用户与群组 > 高级设置 > 家目录 - 启用家目录服务。[1](#1)
  2. 进入控制面板 > 连接性 > 终端机和 SNMP > 终端 - 启用 SSH 服务。[1](#1)

终端机通过SSH连接NAS服务器的Git Server并用linux命令创建和授权git目录

  1. 用Xshell连接NAS,类似连接liunx系统。(PS:NAS网络访问配置我是采用了DDNS并在路由器进行了 22 端口转发。)
  2. 我习惯Git仓库的目录按照项目来分组,所以在GitRepo目录下按照项目名称再创建一层ProjectName目录,ProjectName下再创建各个源码工程的Git仓库目录。(PS:当然也可以通过分支的方式来一个仓库管理多个项目,一切看个人习惯!)

我的仓库目录结构基本如下所示:

GitRepo------|

-----------ProjectName------|

-------------------------CodeProject1.git

-------------------------CodeProject2.git

-------------------------CodeProject3.git

命令如下

bash 复制代码
cd /volume1/GitRepo/
mkdir ProjectName
cd ProjectName/
mkdir CodeProject.git
  1. 初始化git仓库,加属性--bare代表创建远程仓库。
bash 复制代码
cd CodeProject.git/
git init --bare
  1. 授权git用户可以读写源代码仓库目录。(PS: 这里我直接把整个GitRepo递归授权给了整个gitdev用户组,建议还是单独对用户授权!)
bash 复制代码
sudo chown -R :gitdev GitRepo

针对某个用户gituser授权某个Git源码仓库目录,具体详查liunx命令。

bash 复制代码
sudo chown -R gituser CodeProject.git 

注意,执行该授权命令时所在的目录。

迁移本地源码工程的Git远程仓库地址

  1. 打开本地git bash窗口,执行
bash 复制代码
git clone ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git
  1. 如果你本地已经有源码工程,可以直接去修改一下远程仓库地址即可。(PS:记得要把本地仓库镜像方式push一下,这样所有之前的分支和历史信息都会保留。)
    例如: IDEA中Git > manage Remotes > URL - 更新为NAS的地址,即ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git。

  1. 官方文档:Synology知识中心与文档库 ↩︎ ↩︎
相关推荐
闲云一鹤5 小时前
Git LFS 扫盲教程 - 你不会还在用 Git 管理大文件吧?
前端·git·前端工程化
vibecoding日记3 天前
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 🤬🎙️
git·编程工具
程序员小崔日记3 天前
如何将代码轻松上传到 Gitee?Git 使用全攻略!
git·gitee·上传
Bigger4 天前
为什么你的 Git 提交需要签名?—— Git Commit Signing 完全指南
git·开源·github
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
BugShare5 天前
继《小爱音响》详细说下怎么部署,尤其是关于Docker部分
docker·nas·xiaomusic
红豆子不相思5 天前
Tomcat 环境搭建与集群实战
服务器·git·tomcat
杰哥技术分享5 天前
Git 仓库迁移技术文档:从 CODING.net 迁移至腾讯云 CNB
git
梅孔立5 天前
Ansible 100 台服务器一键管控实战 进阶版
服务器·git·ansible