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知识中心与文档库 ↩︎ ↩︎
相关推荐
Arva .8 小时前
开发准备之日志 git
spring boot·git·后端
奇某人9 小时前
【嵌入式】【GIT】终端中文乱码修复
git
可爱的蜗牛牛9 小时前
上传本地git所有历史记录到已有远程仓库
git
idaibin11 小时前
"Git 多仓库用户身份自动切换与隐私保护指南
git·github
小何好运暴富开心幸福12 小时前
C++之日期类的实现
开发语言·c++·git·bash
im_AMBER14 小时前
Web 开发 24
前端·笔记·git·学习
银安14 小时前
Git篇(4):分支(Branch)与引用(Reference)
git
~央千澈~15 小时前
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
git
无言以对,沉默不语,随你随你。16 小时前
【解决办法】GitBash不能在任意文件夹打开
经验分享·笔记·git
stark张宇17 小时前
告别Git恐惧症!一套课程搞定Win/Mac/Linux三端配置与核心原理
git·架构·github