范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Docker系列自建代码托管和版本控制平台Gogs

  转自我的个人博客https://blognas.hwb0307.com。欢迎关注!前言
  相信大家对Github、Gitee这类第三方商业平台不陌生。特别是Github,来自全世界的大多数优秀开发者都在Github上托管他们的代码。因为我平时工作与文档更新迭代密切相关,并且有合作者一起编写文档的应用场景,所以对Github这类基于Git的版本控制的需求十分旺盛。
  既然商业版本控制平台如此强大和成熟,自建版本控制平台的必要性是什么呢?我认为,自建版本控制平台有以下优点:数据安全性强:只对目标人群(比如登陆用户)开放。在公共平台,虽然也可以设置Private Repo,但其性能有较大限制。此外,第三方平台对内容的控制受公司运营和政策影响,托管数据可能会被冻结;而数据托管在自己的手里则没有这种顾虑。性能可拓性强:家用设备的储存空间和带宽即有远超公共平台免费用户的性能。
  我觉得类似科研工作者、软件开发者中的小型团队还是很需要自建文档版本控制的,可以在追求性价比的同时极大地提升工作效率和安全性。起初我是想折腾GitLab的,但是目前版本的Gitlab docker版本存在不少问题,还处于测试阶段;而且Gitlab是个比较复杂和臃肿的应用,个人维护起来不太容易。感谢Derek大佬向我推荐了一个叫Gogs的版本控制平台。Gogs使用 Go语言并通过 Go 支持Linux、macOS、Windows等平台和基于 ARM 的系统(甲骨文大鸡可以装!),目前在Github上有40.8k的Star,算是明星应用,质量和性能有保障。当然,类似的应用还有Codeberg等,就不一一介绍了。大家有好的推荐,欢迎评论区留言。
  本文准备演示如何安装Docker版Gogs,并且基于TortoiseGit(一款Windows Git工具)演示一下基本的使用。之后发现有什么比较实用的技巧会继续分享给大家。Gogs是一款很容易安装的Docker应用,对小白用户很友好!下面我们康康怎么玩吧!测试环境
  果断用之前申请的甲骨文大盘鸡测试,x86机器估计也没问题:uname -a  # Linux instance-20220712-0742 5.15.0-1011-oracle #15-Ubuntu SMP Fri Jun 10 12:21:49 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux  docker --version # Docker version 20.10.17, build 100c701  docker-compose --version # Docker Compose version v2.4.1准备工作
  工作目录,按需修改:work=~/docker/gogs && mkdir -p $work && cd $work
  在防火墙开放端口号,按需修改。如果VPS后台有入站规则(腾讯云、甲骨文之类的VPS一般都有后台防火墙),记得添加10881/10023的TCP规则:sudo ufw allow 10881 comment "gogs" && sudo ufw allow 10023 comment "gogs" && sudo ufw reload
  在DNS托管商后台解析好给Gogs用的域名。本教程用gogs.hwb0307.com进行演示。
  另外,你还要在本地电脑安装Git。不过,我觉得既然你想安装Gogs这类应用,相信Github肯定是用过了,Git应该已经安装过了。否则,你还是先用Github熟悉一下吧,不建议新手玩自建代码托管和版本控制应用。配置yaml
  新建yml文件:vim $work/docker-compose.yml
  添加以下内容(端口等按需修改):version: "3" services:   app:     image: "gogs/gogs:latest"     restart: unless-stopped     ports:       - "10881:3000" # 按需修改       - "10023:22" # 按需修改     volumes:       - ./app:/data     links:       - db:db     networks:       - default    db:     # x86的机器, 请将mysql:oracle改成mysql:5.7     image: mysql:oracle     restart: unless-stopped     environment:       MYSQL_ROOT_PASSWORD: root_password # 按需修改       MYSQL_DATABASE: gogs       MYSQL_USER: gogs       MYSQL_PASSWORD: gogs_password # 按需修改     volumes:       - "./db:/var/lib/mysql"     networks:       - default        networks:   default:     name: gogs
  上线应用:cd $work && docker-compose up -d
  查看日志(个人感觉没啥必要):cd $work && docker-compose logs -f
  Gogs的优化很好,暂未发现某些重要的bug及其相关日志。ddns-go & NPM
  不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。
  设置无特别。具体如下图所示(自己想想为什么要填写10881这个端口号):
  设置好NPM的Proxy后,访问:https://gogs.hwb0307.com,可以看到下列页面,说明安装成功:
  初始化Gogs数据库信息
  如图所示。用户名和密码按自己docker-compose.yml里设置的填写即可:
  从这里可以看出,Gogs支持的数据库类型还蛮多的。在本教程中,我使用的是MySQL数据库。基本设置
  如下图所示,无特别设置:
  下面还有一些可选设置,但我不准备在这里演示,有兴趣的童鞋可以试试看。我会在app.ini里演示类似的设置。按下保存后,就会出现注册页面,表示安装成功:
  到这一步,自己先注册一个帐户。第一个帐户会默认为管理员帐户,且不建议以admin取名。我也注册一个帐户:帐户:hwb2012@qq.com 密码:test0test
  登陆后界面大致如下:
  界面很简洁,极简主义者最喜欢这种风格!添加ssh指纹
  如果你用ssh,添加这个比较方便。用https应该不需要这个。
  在你的本地电脑中找到.ssh文件夹,里面有个id_rsa.pub文件,内容类似于:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDq07m3cZPMw71hbtQzsKEBqTuldSgcn6K2cWWG7hN/mWYyDKRxDnnZH+7bIeUc5dfq3cJ/O1a0extogAZ8aThJG94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7o3UEKnqSC4f7gmOQSHls6o+nxOfgmhYtTfa15m6qMCS7p4IpaBzhTWfmAWMG2sz5+FD2OtRYP5oVQSM13Fdr+X9R1wsYLP9B/0zLLKToPM= example@email.com
  每个人的都不一样。你将它copy到用户设置——帐户设置——SSH密钥里:
  这样处理后,以后这个Gogs平台就会信任你的设备,通过ssh交流文件时则不需要密码。多用户
  只有管理员可以添加新用户,普通用户没有管理面板的选项。操作很简单,在管理面板——用户管理里自己添加就行。
  设置app.ini
  主要根据官方app.ini模板进行调整。
  app.ini文件主要用于进行一些细致的设置,它往往有助于构建想要的日常使用习惯。你完全可以按需进行修改;不过,如果你没有什么偏好,可以用我的设置。值得注意的是,根据官方help文档,用户不应该直接编辑conf/app.ini,而应该创建创建 custom/conf/app.ini 托管自定义配置。不过,我目前暂未发现如何在Docker容器里添加custom/conf/app.ini;而直接编辑conf/app.ini似乎并未带来什么问题。有什么建议或问题,大家也可以在评论区留言。
  首先,打开conf/app.ini文件:vim $work/app/gogs/conf/app.ini
  app.ini本身已经带了一些默认设置,你可以按需添加或修改为以下内容:[mailer] ; Whether to enable the email service. 改为true就是允许使用SMTP服务。有与他人合作搞项目的小伙伴可以开启。 ENABLED = true ; The prefix prepended to the subject line. SUBJECT_PREFIX = `[%(BRAND_NAME)s] ` ; The SMTP server with its port, e.g. smtp.mailgun.org:587, smtp.gmail.com:587, smtp.qq.com:465 ; If the port ends is "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. ; If the server supports STARTTLS it will always be used. ; 这里我是以QQ邮箱为例。大家记得改自己的密码(在QQ邮箱里,叫授权码) HOST = smtp.qq.com:587 ; The email from address (RFC 5322). This can be just an email address, or the `"Name" ` format. FROM = hwb2012@qq.com ; The login user. USER = hwb2012@qq.com ; The login password. PASSWORD = XXXXXXXXXXX  [auth] ; Whether to disallow anonymous users visiting the site.  ; 设置为true则只有登陆用户才可以访问网站内容。 REQUIRE_SIGNIN_VIEW = true ; Whether to disable self-registration. When disabled, accounts would have to be created by admins.  ; 关闭登陆注册。不然所有知道网址的人都可以注册。 DISABLE_REGISTRATION = true ; Whether to enable captcha validation for registration  ; 注册时启用验证码。关闭登陆注册后,这个选项可有可无。 ENABLE_REGISTRATION_CAPTCHA = true  [picture] ; 国内用户可以改一个GRAVATAR镜像地址。不改也没关系,问题不大。 GRAVATAR_SOURCE = https://sdn.geekzu.org/avatar/
  重启Gogs即可生效:docker-compose restart
  注意,随着Gogs版本更迭,这些设置可能会取消或者失效。如果真的有那么一天,我再来更新吧!联用TortoiseGit
  我们知道,如果用Github,可以用Github Desktop之类的可视化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.com/r/gogs/gogs/tagsGithub Repo: Gogs; app.ini知乎——windows下如何搭建属于自己的git服务器?:有关于gogs和TortoiseGit的相关配置。十分重要!

全职家庭主妇的一天从今天起记录我的2023时隔半年,我又辞职了,休息一天,将无缝衔接到新单位。我属于行动派,决定了的事情马上就会行动。孩子7年级了,错过了小学阶段陪伴,不能再错过他人生最重要时段,和尤文图斯助教回应穆里尼奥我们确实在场上拿到了59分意大利媒体romapress报道,尤文图斯助教兰杜奇回应了此前穆里尼奥关于球队的说法,兰杜奇表示,自己不能评价穆里尼奥的言论,但尤文图斯在场上确实拿到了59分,如果算上对阵萨勒尼塔华为nova11系列及全场景新品发布会定档4月17日IT之家4月10日消息,华为终端官方微博今日发文宣布,将于4月17日1430召开华为nova11系列及全场景新品发布会。根据IT之家此前消息。此次发布会除了华为nova11系列以外华为官宣,4月17日发布nova11系列新机4月10日消息,华为在今日官宣,宣布将在4月17日召开华为nova11系列及全场景新品发布会。根据目前了解到的信息,华为在4月17日1430分召开的华为nova11系列及全场景新品打造智慧生活方式华为全屋智能体验店落位重庆近日,全国首家千平华为全屋智能授权体验店落位重庆市渝北区聚信美商场。据了解,该店是目前国内最大的华为全屋智能授权体验店,总占地面积1300平,打造极致化的门店场景体验。现场以未来智晚间公告丨4月10日这些公告有看头品大事东方材料收上交所监管工作函要求具体说明本次进行跨行业收购的目的和主要考虑东方材料收到上交所监管工作函要求结合公司现有业务情况未来发展战略及经营计划,具体说明本次进行跨行业收购7岁女孩因致命颈椎关节脱位不完全瘫痪,一度被当作脑瘫治疗今年7岁女童莉莉(化名),因自幼手脚活动不灵活被错当成脑瘫治疗后,一度进展到了手脚完全无法自主活动的不完全瘫痪状态。在辗转来到广州治疗后,经过神经外科专家查明,小家伙罹患的并非脑瘫奔驰最高降价20万!湖北车市价格战持续,传统汽车大省发生了什么?本文来源时代周报作者杨玲玲刘婷位于武汉市汉阳区的龙阳大道,是当地4S店最密集的地方之一。东风日产东风雪铁龙一汽大众广汽本田等传统车企各占山头,奥迪奔驰等高端品牌在此安营扎寨,小鹏汽iPhone15ProMax外形曝光,价格或超20000元?近日,有来自苹果配件供应商的消息曝光了iPhone15ProMax的外形信息。从此次提供的CAD图来看,新一代iPhone最大的变化仍然出现在摄像头部分。据了解,iPhone15P鸡蛋价格不蛋定?还会涨吗?农业农村部最新数据显示,3月份全国鸡蛋批发价为每公斤10。47元,无论环比还是同比都有所上涨,具体的情况如何?在北京新发地农产品批发市场,鸡蛋商户李爱英正在将河北运来的鸡蛋打包,然23年电视价格大幅降价情况下,如何选择适合自己的电视呢?(上)近年来,中国面临着芯片和屏幕等关键零部件的短缺,导致这些与芯片和屏幕相关的产品价格一直很高,尤其是电视。因为电视不仅需要大屏幕,还需要高质量的芯片和屏幕。因此,中国国产电视一直受到
看笑话了!国足逼平日本队,韩媒用两个字疯狂贬低,顺便幸灾乐祸嗨,大家好,我是小易,这一次咱们来聊一聊国足。就在不久前,东亚杯第二轮的比赛打响,中国男足对阵日本男足。比赛前,几乎所有人都认为中国男足输球的板上钉钉的事情了,毕竟双方的实力相差太陈若琳将奔赴新岗位!跳水女皇去向已定,全红婵将面临新的挑战中国跳水队在今年的跳水世锦赛上表现非常出色,我们参加了13个项目,最终拿到了全部的金牌。对于中国跳水队来说,能够取得这样的成绩是非常了不起的。毕竟中国跳水队的实力非常突出,但我们也CBA四消息!山东队遭到重罚,易建联与郭昊文一起训练7月26日,为了大家能够了解更多CBA联赛和中国篮球的消息,笔者汇总了一些最新消息,来与广大的球迷一起分享一下。其一,易建联开始特训在今天上午,易建联更新了自己最新动态,那就是他已心寒!布朗回应了!别再提忠诚了事情大概是这样,美国时间昨天深夜,两大名记Woj和Shams接连爆料,凯尔特人有意得到杜兰特,而且凯尔特人还愿意付出以杰伦布朗为主的筹码。据悉,凯尔特人将塔图姆视为非卖品,然后为篮暂时的蛰伏只为更好地复出,郑智牵手广州队仍是最佳选择本赛季离开广州队的功勋队长郑智近日入围金足奖候选名单,引起热议,而最近一次出现在公众视野则是低调出席韦世豪的婚礼,久未露脸的郑智身形保持得非常不错,自进入广州体育学院任教的郑智,虽CBA三消息山东恐签两位老将,北控引援新思路,深圳满意李京龙大家好呀,我是北柠,各位小伙伴们要养成先赞后看的习惯哦!山东队这个休赛期的发展让球迷们非常满意,他们已经签下了一名重要的本土后卫球员高诗岩,他加盟球队之后,山东队的实力有了很大的提被问林志颖手术恢复后还会不会从事赛车?妻子陈若仪的回复很实在众所周知,从7月22日林志颖发生车祸至今,已经是第4天了,林志颖车祸现场的照片仍然历历在目,而在7月25日下午,林志颖方再次举行记者会,针对林志颖的最新恢复情况进行了说明。在开始之一夜5大交易动态!湖人连签2将,国王试训16年骑士冠军后卫NBA球员交易市场开启之后,大牌球员传闻不断,既有湖人队用威少换篮网队欧文,又有威少换步行者队的希尔德特纳,每天的交易传闻总是不断地变换。NBA交易市场又过去一夜,我们来看一下有哪明晚开播!又一悬疑剧来袭,4位老戏骨助力,能否再出王炸剧?2022年以来,悬疑剧可以说是一部又一部相继定档开播,比如,未经大肆宣传的猎罪图鉴开播之后,则是各种好评,作为单元剧,每两集一个故事既聚焦了社会热点实事,而且幕后大佬就在剧中,不到林志颖手术情况曝光!妻子陈若仪不眠不休照顾,林心如等人表关心文酱子编辑酱子近日,林志颖与其儿子Jenson发生车祸引发热烈关注,两人伤势也让人揪心。不久前,林志颖的妻子陈若仪发文公开丈夫的伤情,表示林志颖现在的状态相对稳定,在医护人员悉心的大衣哥要和儿子小伟断绝关系?出了这事,真不敢让陈萌看见大衣哥要和儿子断绝父子关系?最近因为朱小伟在健身房出轨,大衣哥被气的住院了,那么究竟是什么原因呢?相信大家都知道朱小伟现在都已经订婚了,但是丝毫没有感觉到小伟对自己的未婚妻非常的兴