前言:

作为一个开发,少不了和git打交道,像github,gitee是很流行的git线上托管平台,而我们也搭建自己的git托管平台,有条件的可以使用gitlab,它对硬件有要求,像博主这种没条件用虚拟机的,推荐使用gogs。

Gogs 的是一个由 Go 语言开发的、可以简单、快速搭建自助 Git 服务。在宿主机上的安装可以参考官网:Gogs

不过在宿主机上直接安装会麻烦一点,需要自行安装git工具,如果使用ssh还要安装ssh服务器,如果使用源码安装,还可能需要go语言的编译环境,所以,如果是自己或者是小团队使用,推荐使用docker来安装


安装

首先,我们要安装docker,接着使用docker获取gogs的镜像:

# pull gogs镜像
sudo docker pull gogs/gogs

当然你也可以去Docker Hub上面下载需要的版本

Docker Hub

镜像中已经包换了git,ssh服务器等工具,无需我们安装,我们只需使用镜像创建容器即可:

# 在宿主机上创建挂在卷
$ mkdir  /home/gogs
# 创建并运行一个容器,
# 将宿主机的10022端口映射到容器的22端口,
# 将宿主机的13000端口映射到容器的3000端口,10022端口和13000端口可以根据自己的情况修改sudo docker run -d -p 10022:22 -p 13000:3000 -v /home/gogs:/data gogs/gogs

这里需要注意的是两点:

1、22端口是gogs的ssh服务端口,如果不开启ssh服务,可不做这个端口映射,3000是gogs应用服务端口,这两个端口可以修改,但是需要结合后续配置一同修改,这点在后面配置时来说明。2、这里做了一个卷映射,/data是容器内部gogs的数据目录,gogs后续的配置、git仓库等等都在这个目录中,我们将它映射到宿主中,方便数据保存以及配置的改动,比如我这里的/home/gogs,需要提前将目录创建好:sudo mkdir /home/gogs。

容器成功运行后,我们可以在浏览器通过宿主机的ip+13000端口打开gogs的首次运行安装程序 ,比如我这里是 http://192.168.209.128:13000


数据库设置

gogs目前支持3种数据库:MySQL、PostgreSQL、SQLite3

如果没有可用的数据库,可以选择SQLite3:


基本应用设置:

应用名称:可以换成自定义名称仓库根目录:使用默认就行了,默认/data/git/gogs-repositories,如果采用了数据卷映射,比如我这里因为/home/gogs映射/data,所以这个目录在宿主机中的地址是/home/gogs/git/gogs-repositories运行系统用户:不要修改,默认就是git用户,修改可能会有问题域名:使用ssh时使用的域名或者IP(看后文使用说明)SSH 端口号:gogs启用ssh时使用的端口号,默认22端口,如果修改了这个端口号,那么在上面创建容器时要对应的将10022端口映射到修改的端口号,如果不启用ssh,则置空HTTP 端口号:gogs应用启动的http端口,默认3000,如果修改了这个端口号,那么在上面创建容器时要对应的将13000端口映射到修改的端口号应用 URL:即打开应用的url地址,因为这里采用了docker,所以我们要修改成宿主机的地址转发去访问,比如这里我的宿主机地址:192.168.209.128,它的13000端口会转发到容器的3000端口,所以这里填:http://192.168.209.128:13000/日志路径:gogs的日志保存路径,默认就行了

注:更多配置在/data/gogs/conf/app.ini中,如果采用了数据卷映射,比如我这里因为/home/gogs映射/data,所以这个文件在宿主机中的/home/gogs/gogs/conf/app.ini,更多说明见后文


使用说明

安装完成之后,就可以使用了,默认情况下,我们需要自己注册一个账号,然后登陆:

注册登录之后,我们可以在右上角的+号创建一个仓库:

例如:

 创建完成之后大概是这样子的:

默认情况下是可以使用http进行git clone的,当然我们也可以使用https,不过需要做更多的配置,这时需要修改/data/gogs/conf/app.ini文件中的配置了,因为没有cert证书,所以就不演示了。

另外,因为我们启用了ssh,我们也可以使用ssh来操作:

其中,我们上面安装=》应用基础设置中的【域名】配置就是上图中红色方框中的 git@域名:XXXX/XXX 中的域名部分

注意,如果你直接使用这个ssh地址去clone,会让你输入git的密码:git@192.168.209.128's password:

这里可能你输入任何密码都是错的,哪怕输入对了密码,可能也提示目录不存在,什么原因?

首先,说明一下,ssh的连接地址是 user@host:path 格式,对于上面的demo仓库中,git是用户名,host是宿主机地址(192.168.209.128),test/demo.git是仓库路径。

那端口呢?熟悉ssh命令的话就会知道,ssh命令如果要指定端口,需要使用-p选项来指定,否则使用的是默认端口22.

再来看看,上面说过,因为我们的gogs是部署在docker上,对于ssh,我们使用宿主机的10022端口转发到容器的22端口,那使用ssh进行clone时,我们的宿主机地址是192.168.209.128,因为没有指定端口,所以连接的端口是宿主机的22端口,但是我们的宿主机的22端口没有办法到容器的22端口呀!!!所以他会认为git用户是宿主机的,如果宿主机没有创建git用户,那么输入任何密码都是错的,哪怕密码对了,也可能因为未在宿主机安装gogs或者路径不存在而访问失败。

那是不是说我们在docker上部署的gogs不能使用ssh?其实是可以的,你可以将宿主的22端口转发到容器的22端口。另外,还有一个做法,这里只是因为 git@域名:XXXX/XXX 这种格式进行clone不能指定端口而不能使用,我们可以使用另外一种类似http请求Url的ssh格式:ssh://user@host:port/path,

例如这里demo仓库:git clone ssh://git@192.168.209.128:10022/test/demo.git

不过这里我们clone还是失败了,大致的意思是,我们没有配置ssh秘钥。

ssh秘钥

ssh秘钥生成及使用参考:SSH公/私秘钥的生成及使用

创建完成后,我们打开.ssh目录下id_rsa.pub文件(公钥文件),复制里面的全部内容,然后打开gogs控制面板=》右上角用户配置=》SSH秘钥=》新增秘钥:

 保存后,我们就可以使用ssh://协议去clone了,

如果想在另一台新电脑使用ssh,直接复制.ssh目录下公钥文件和私钥文件,到新电脑的.ssh目录下就可以使用ssh协议访问项目了


去掉gogs的注册按钮

为了安全考虑,对外的情况下,建议去掉gogs的注册按钮 。

修改配置文件

/home/git/gogs/custom/conf 目录下的 app.ini文件
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = false   ###  把此处的false改成 true,重启,搞定
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false

解决gogs网页打开慢

在install的安装界面,禁用Gravatar服务;或者在配置文件中禁用gravatar服务,使用本地头像;

vim gogs/conf/app.ini
[picture]
DISABLE_GRAVATAR        = true
ENABLE_FEDERATED_AVATAR = true

gogs安装与说明(docker)相关推荐

  1. docker gogs安装

    前言 使用docker+gogs方式搭建自己的私有代码服务器 Gogs官网文档地址 创建docker mysql 拉取mysql镜像 docker pull mysql 创建物理目录,用于存储mysq ...

  2. 超轻量级自动化部署神器Drone配合Gogs安装详细教程(图文教程)

    前言 现在我们在日常开发或者生产环境中,往往会经常弄一套自动化部署方案来节约时间成本.现在比较流行的一种就是Gitlab+Jenkins实现方案,但是这种方案占用内存还是比较大,需要的服务器内存也得8 ...

  3. gogs创建项目_docker gogs安装

    前言 使用docker+gogs方式搭建自己的私有代码服务器 Gogs官网文档地址 创建docker mysql 拉取mysql镜像 docker pull mysql 创建物理目录,用于存储mysq ...

  4. docker centos7 安装mysql_centos7通过docker安装mysql

    1. 启动docker systemctl start docker: 2.查看mysql 版本 docker search mysql: 3. 安装最新mysql docker pull mysql ...

  5. linux系统下docker安装,Linux下Docker的安装与使用

    yum安装Docker最新版和docker-compose(超级简单的安装方法) Install Docker 首先安装依赖 yum install -y yum-utils device-mappe ...

  6. Linux环境安装、卸载Docker

    Linux环境安装.卸载Docker 安装: 1.Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包 ...

  7. Docker的安装和使用说明——Docker for Windows

    一.Docker安装 1.1官方方法 官方下载页面:http://www.docker.com/products/docker#/windows 官方下载地址:https://download.doc ...

  8. 安装MySQL示例   docker pull mysql

    安装MySQL示例   docker pull mysql 错误的启动   docker run --name mysql01 -d mysql 正确的启动 docker run --name mys ...

  9. linux安装教程 ce,docker CE安装教程

    docker CE安装教程 2018-11-09 10:28 | coding云 | 31451次阅读 | 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安 ...

最新文章

  1. 又双叒有兄弟因为 YYYY-MM-dd 被叫去加班了...
  2. Heap Allocation Profiles (heap=sites)
  3. 要继续使用 App Engine 标准应用,您必须在 2021 年 1 月 31 日之前添加付款信息。
  4. 人脸识别(通过照片库区别人物)
  5. SAP Fiori开发工具——Eclipse环境搭建
  6. 【LeetCode-面试算法经典-Java实现】【054-Spiral Matrix(螺旋矩阵)】
  7. linux安装卷管理,Linux安装管理ISCSI卷(initiator端)
  8. 山西台达plc可编程控制器_可编程控制器2(PLC)控制原理
  9. IOS - plist使用
  10. CF 71C. Round Table Knights
  11. 每天几分钟,教你免费下载苹果的app,赚Amazon Gift Card 亲测可用【非广告】
  12. 计算机网络 层次路由,计算机网络-网络层(5)层次路由
  13. 8位数:数字、小写字母字典思考
  14. # 天下武功无坚不破,唯快不破!
  15. LeetCode:20 vaild parentless
  16. 1688API详情接口调用展示
  17. Qt 调用ftd2x API上位机踩坑指南
  18. 功能:CO11和CO11N的差异
  19. 大搜车面试总结 (应届生实习生)
  20. 限流常见方案,值得一看

热门文章

  1. SequoiaDB 巨杉数据库SDK驱动开发
  2. 2017 一季度全球最畅销手机前5名
  3. Mybatis-plus条件查询构造器
  4. PS如何把多张图片拼接到一张?
  5. 论文分享|【词向量专题】中文词嵌入最新进展
  6. XDTIC2019招新笔试题 + 官方解答
  7. 辅警对学历有什么要求吗?
  8. 在C++中,函数名前的const和函数名后的const的区别
  9. A star算法的一些研究
  10. WIN10 DOS命令设置WIFI 连接