转自我的个人博客https:blognas。hwb0307。com。欢迎关注!前言 相信大家对Github、Gitee这类第三方商业平台不陌生。特别是Github,来自全世界的大多数优秀开发者都在Github上托管他们的代码。因为我平时工作与文档更新迭代密切相关,并且有合作者一起编写文档的应用场景,所以对Github这类基于Git的版本控制的需求十分旺盛。 既然商业版本控制平台如此强大和成熟,自建版本控制平台的必要性是什么呢?我认为,自建版本控制平台有以下优点:数据安全性强:只对目标人群(比如登陆用户)开放。在公共平台,虽然也可以设置PrivateRepo,但其性能有较大限制。此外,第三方平台对内容的控制受公司运营和政策影响,托管数据可能会被冻结;而数据托管在自己的手里则没有这种顾虑。性能可拓性强:家用设备的储存空间和带宽即有远超公共平台免费用户的性能。 我觉得类似科研工作者、软件开发者中的小型团队还是很需要自建文档版本控制的,可以在追求性价比的同时极大地提升工作效率和安全性。起初我是想折腾GitLab的,但是目前版本的Gitlabdocker版本存在不少问题,还处于测试阶段;而且Gitlab是个比较复杂和臃肿的应用,个人维护起来不太容易。感谢Derek大佬向我推荐了一个叫Gogs的版本控制平台。Gogs使用Go语言并通过Go支持Linux、macOS、Windows等平台和基于ARM的系统(甲骨文大鸡可以装!),目前在Github上有40。8k的Star,算是明星应用,质量和性能有保障。当然,类似的应用还有Codeberg等,就不一一介绍了。大家有好的推荐,欢迎评论区留言。 本文准备演示如何安装Docker版Gogs,并且基于TortoiseGit(一款WindowsGit工具)演示一下基本的使用。之后发现有什么比较实用的技巧会继续分享给大家。Gogs是一款很容易安装的Docker应用,对小白用户很友好!下面我们康康怎么玩吧!测试环境 果断用之前申请的甲骨文大盘鸡测试,x86机器估计也没问题:unameaLinuxinstance2022071207425。15。01011oracle15UbuntuSMPFriJun1012:21:49UTC2022aarch64aarch64aarch64GNULinuxdockerversionDockerversion20。10。17,build100c701dockercomposeversionDockerComposeversionv2。4。1准备工作 工作目录,按需修改:workdockergogsmkdirpworkcdwork 在防火墙开放端口号,按需修改。如果VPS后台有入站规则(腾讯云、甲骨文之类的VPS一般都有后台防火墙),记得添加1088110023的TCP规则:sudoufwallow10881commentgogssudoufwallow10023commentgogssudoufwreload 在DNS托管商后台解析好给Gogs用的域名。本教程用gogs。hwb0307。com进行演示。 另外,你还要在本地电脑安装Git。不过,我觉得既然你想安装Gogs这类应用,相信Github肯定是用过了,Git应该已经安装过了。否则,你还是先用Github熟悉一下吧,不建议新手玩自建代码托管和版本控制应用。配置yaml 新建yml文件:vimworkdockercompose。yml 添加以下内容(端口等按需修改):version:3services:app:image:gogsgogs:latestrestart:unlessstoppedports:10881:3000按需修改10023:22按需修改volumes:。app:datalinks:db:dbnetworks:defaultdb:x86的机器,请将mysql:oracle改成mysql:5。7image:mysql:oraclerestart:unlessstoppedenvironment:MYSQLROOTPASSWORD:rootpassword按需修改MYSQLDATABASE:gogsMYSQLUSER:gogsMYSQLPASSWORD:gogspassword按需修改volumes:。db:varlibmysqlnetworks:defaultnetworks:default:name:gogs 上线应用:cdworkdockercomposeupd 查看日志(个人感觉没啥必要):cdworkdockercomposelogsf Gogs的优化很好,暂未发现某些重要的bug及其相关日志。ddnsgoNPM 不了解NginxProxyManager用法的小伙伴,请看《Docker系列两大神器NPM和ddnsgo的安装》。 设置无特别。具体如下图所示(自己想想为什么要填写10881这个端口号): 设置好NPM的Proxy后,访问:https:gogs。hwb0307。com,可以看到下列页面,说明安装成功: 初始化Gogs数据库信息 如图所示。用户名和密码按自己dockercompose。yml里设置的填写即可: 从这里可以看出,Gogs支持的数据库类型还蛮多的。在本教程中,我使用的是MySQL数据库。基本设置 如下图所示,无特别设置: 下面还有一些可选设置,但我不准备在这里演示,有兴趣的童鞋可以试试看。我会在app。ini里演示类似的设置。按下保存后,就会出现注册页面,表示安装成功: 到这一步,自己先注册一个帐户。第一个帐户会默认为管理员帐户,且不建议以admin取名。我也注册一个帐户:帐户:hwb2012qq。com密码:test0test 登陆后界面大致如下: 界面很简洁,极简主义者最喜欢这种风格!添加ssh指纹 如果你用ssh,添加这个比较方便。用https应该不需要这个。 在你的本地电脑中找到。ssh文件夹,里面有个idrsa。pub文件,内容类似于:sshrsaAAAAB3NzaC1yc2EAAAADAQABAAABgQDq07m3cZPMw71hbtQzsKEBqTuldSgcn6K2cWWG7hNmWYyDKRxDnnZH7bIeUc5dfq3cJO1a0extogAZ8aThJG94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7o3UEKnqSC4f7gmOQSHls6onxOfgmhYtTfa15m6qMCS7p4IpaBzhTWfmAWMG2sz5FD2OtRYP5oVQSM13FdrX9R1wsYLP9B0zLLKToPMexampleemail。com 每个人的都不一样。你将它copy到用户设置帐户设置SSH密钥里: 这样处理后,以后这个Gogs平台就会信任你的设备,通过ssh交流文件时则不需要密码。多用户 只有管理员可以添加新用户,普通用户没有管理面板的选项。操作很简单,在管理面板用户管理里自己添加就行。 设置app。ini 主要根据官方app。ini模板进行调整。 app。ini文件主要用于进行一些细致的设置,它往往有助于构建想要的日常使用习惯。你完全可以按需进行修改;不过,如果你没有什么偏好,可以用我的设置。值得注意的是,根据官方help文档,用户不应该直接编辑confapp。ini,而应该创建创建customconfapp。ini托管自定义配置。不过,我目前暂未发现如何在Docker容器里添加customconfapp。ini;而直接编辑confapp。ini似乎并未带来什么问题。有什么建议或问题,大家也可以在评论区留言。 首先,打开confapp。ini文件:vimworkappgogsconfapp。ini app。ini本身已经带了一些默认设置,你可以按需添加或修改为以下内容:〔mailer〕;Whethertoenabletheemailservice。改为true就是允许使用SMTP服务。有与他人合作搞项目的小伙伴可以开启。ENABLEDtrue;Theprefixprependedtothesubjectline。SUBJECTPREFIX〔(BRANDNAME)s〕;TheSMTPserverwithitsport,e。g。smtp。mailgun。org:587,smtp。gmail。com:587,smtp。qq。com:465;Iftheportendsis465,SMTPSwillbeused。UsingSTARTTLSonport587isrecommendedperRFC6409。;IftheserversupportsSTARTTLSitwillalwaysbeused。;这里我是以QQ邮箱为例。大家记得改自己的密码(在QQ邮箱里,叫授权码)HOSTsmtp。qq。com:587;Theemailfromaddress(RFC5322)。Thiscanbejustanemailaddress,ortheNameemailexample。comformat。FROMhwb2012qq。com;Theloginuser。USERhwb2012qq。com;Theloginpassword。PASSWORDXXXXXXXXXXX〔auth〕;Whethertodisallowanonymoususersvisitingthesite。;设置为true则只有登陆用户才可以访问网站内容。REQUIRESIGNINVIEWtrue;Whethertodisableselfregistration。Whendisabled,accountswouldhavetobecreatedbyadmins。;关闭登陆注册。不然所有知道网址的人都可以注册。DISABLEREGISTRATIONtrue;Whethertoenablecaptchavalidationforregistration;注册时启用验证码。关闭登陆注册后,这个选项可有可无。ENABLEREGISTRATIONCAPTCHAtrue〔picture〕;国内用户可以改一个GRAVATAR镜像地址。不改也没关系,问题不大。GRAVATARSOURCEhttps:sdn。geekzu。orgavatar 重启Gogs即可生效:dockercomposerestart 注意,随着Gogs版本更迭,这些设置可能会取消或者失效。如果真的有那么一天,我再来更新吧!联用TortoiseGit 我们知道,如果用Github,可以用GithubDesktop之类的可视化Git应用。像Gogs这类应用,如果你的生产力环境是Windows,可以用TortoiseGit。Linux直接用Git就行了。下面的教程是默认你安装好TortoiseGit了,我不再具体介绍,不会的童鞋自己百度Google一下。下面的教程是以TortoiseGit为例的。其它类型的Git工具也行,看你喜欢吧,我估计这类应用的操作是差不多的。新建仓库 比如,我新建一个名为Beyond的仓库,用来存放歌词: 创建仓库的过程也是蛮简单的。如果你不太懂授权许可啥的,使用默认设置即可。毕竟这是个私人平台,这些内容不重要。 创建成功后自动跳转到这个页面,有Github那味了: 仓库本地化 这里演示的是https克隆和推送。 我们复制一下新建仓库的https链接: 现在,我们将刚刚创建的仓库clone到本地。在文件夹里右键调用Git克隆命令: 第一次操作需要输入帐户和密码,自己按实际情况填写即可: 很快就可以成功(因为这个仓库没有内容): 推送内容 这个时候,我们可以往仓库里添加一些本地内容。比如,我放了2个文件在里面: 在文件夹内按右键调出Git提交(C)master,填好信息选好文件,提交即可: 最后,右键TortoiseGit推送,文件就推送到Gogs里了: 我们刷新一下网页,看到仓库已经更新了: 更多TortoiseGit的相关操作就不介绍了,可以自己摸索一下,或者看一看文档。用过Github的人基本都知道是怎么回事了。小结 和chevereto、nextcloud之类的应用相比,Gogs的安装真得简单太多,毫无压力!Gogs是一个很轻量的版本控制平台,功能简洁,而且是开源和免费的。希望它可以越做越好喽!在本教程中,我并未测试http,也并不推荐使用。如果有小伙伴使用http有问题的话,欢迎留言。参考Docker镜像:https:hub。docker。comrgogsgogstagsGithubRepo:Gogs;app。ini知乎windows下如何搭建属于自己的git服务器?:有关于gogs和TortoiseGit的相关配置。十分重要!