使用Docker在家用NAS上创建个人Git服务器(Gitea)
个人有部分代码编写希望存储在自己的服务器上,大部分人推荐gitlab,但是考虑到我的个人nas是一个比较轻量级的服务器,gitlab在后台会有比较大的占用,所有最后选择了gitea,是源于gitlab但是却发展得更好的一个轻量级的服务器。
想要使用gitea,有一个前提,你必须配置好你的个人数据库,一般可以使用mysql,但是我个人使用了postgresql,可以查看上一篇文章《使用Docker在NAS上创建Postgresql数据库》。
按照以下几个步骤,就可以在自己的服务器上创建个人的Git服务器
取得Docker映像
在群晖的Container Manger的镜像仓库中查找gitea,选择图中的镜像点击下载

准备存储文件夹
在FileStation中的docker共享文件夹下创建名字为gitea的文件夹,然后在其下创建root文件夹,为之后做好准备

创建容器前的信息汇总
创建容器前,先汇总一下即将配置的参数信息,稍后都会用到,以我这边的gitea为例,稍后要做以下配置
文件夹映射:容器的
/data/gitea对应宿主机的/docker/gitea/root文件夹映射:容器的
/data/git/repositories对应宿主机的/docker/gitea端口映射:容器的22对应宿主机的7001
端口映射:容器的3000对应宿主机的7002
链接容器:链接容器
posetgresql,取名为pgsql上述信息要提前准备好,稍后创建容器是需要逐个配置
创建容器
打开ContainerManager,在映像中找到刚才下载的gitea/gitea映像,选择后点击左上角的运行按钮。

进入容器的设置页面,输入容器的名称,点击下一步

端口映射/文件夹映射
将容器的内部端口22映射到外部的7001端口上,将容器的内部端口3000映射到外部的7002端口上,
同时增加存储空间的映射,将容器的/data/gitea映射到宿主机的/docker/gitea/root ,将容器的/data/git/repositories映射到宿主机的/docker/gitea

关联容器
在最下面的链接中点击新增,增加链接容器posetgresql,取名为pgsql ,将以上设置好以后,点击下一步。

运行容器
确认所有输入的参数和配置没有问题以后,就可以点击完成,让容器开始运行。

Gitea初始化设置
等待容器正常运行之后,可以通过NAS的IP地址加端口号7002对gitea进行访问,首次进入,会自动开始初始化设置。
由于这里我们链接了postgresql的数据库,首先进行数据库设置:
数据库类型处选择PostGreSql,填写数据库主机的IP地址带端口号,然后填写数据库用户名/密码以及对应的数据库名称。
完成数据库设置后,进行一般设置:
站点名称--改成你想要命名的名字就可以
服务器域名--如果你有公网IP并且已经绑定域名,就可以填写对应的域名。如果没有公网的话,使用默认即可。
基础URL--如果设置了服务器域名,则这里需要填写对应域名,建议https://***/ 确保数据隐私。其他情况使用默认设置即可。
最后的可选设置中,建议填写管理员设置。自己设置好管理员名称和密码即可。

完成以上设置后,即可点击最下方的立即安装,等待一会就会自动跳转到新的页面。此时Gitea就已经安装完成。

登陆自己刚才设置的管理员账户后,就可以跟github一样进行使用了。
配置项目的Git地址
既然已经完成了自己的Gitea服务器,就可以开始配置自己的项目放到Gitea上了。因为之前已经配置了gitee的远程库,但是同时想增加自己的Gitea服务器,那么就可以同时设置两个远程库,就是在原来的设置上增加一个远程库。
首先,在自己的Gitea服务器上创建一个空项目后记录下git地址备用。
方法一(两个库需要分别Push和Pull)
在本地项目git中添加Gitea的远程地址,此处origin_name可以根据自己的需要更改名字,*******处填上自己Gitea服务器项目的git地址。
git remote add origin_name *******在配置好以后,需要先拉取一次Gitea地址上的数据
git pull origin_name master --allow-unrelated-histories (--allow-unrelated-histories是为了解决冲突)最后将本地git项目中的数据同步到Gitea数据库中
git push origin_name master此时,基本实现了可以把一个项目提交到两个git地址,但是每次提交需要进行两次提交,才能实现一个项目同时提交到两个git地址。
方法二(两个库只需要一次Push)
将方法一中的添加远程地址中的origin_name 固定为origin ,即两个库使用同一个名称。
git remote set-url --add origin *******。//给origin添加一个远程push地址,这样一次push就能同时push到两个地址上面可以通过以下代码查看是否多了一条Push地址
git remote -v这样,我们就可以直接一个push,同时推送到两个地址
git push origin master -f最后,增加删除添加的路径的方法
git remote set-url --delete origin ********