gogs私服搭建

Gogs私服搭建 Gogs是一个轻量级的git服务(代码托管平台),基于Go语言开发,其设计和性能优化使得它适合于小型团队和个人开发者。它具有Web界面,可以让您方便地管理和浏览仓库、处理问题、进行代码审查和管理团队成员。 阅读详情
AI摘要

本文介绍gogs自助Git服务,它适合个人或小团队,可实现私有化代码托管、灵活权限控制等。详细阐述了在Ubuntu 24.04 LTS上的部署过程,还针对特殊需求,说明了通过绑定挂载将不同组织仓库根目录映射到不同物理盘以实现存储隔离的方法,以及部署中可能用到的操作与命令。


一.介绍:

gogs是一个用Go语言开发的自助Git服务,目标是简单、快速搭建Git服务,
支持多种平台,包括Linux、Windows等。它类似于GitHub,但更轻量,适合个人或小团队使用,
在简化git服务搭建流程的同时,平衡资料消耗和功能完整性 ,是轻量级私有代码托管的优质方案
gogs的作用
2.1.私有化代码托管:gogs提供与GitHub类似的仓库管理功能,支持本地化部署,适合存放敏感或私有项目代码。
2.2.灵活权限控制:支持仓库、组织、团队三级权限管理,可细化到读写、审查、合并请求等操作;
同时也提供分支功能,防止未经授权的代码提交。
2.3.协作开发支持:内置工单(Issue)、合并请求(Pull Request)、Wiki等功能,满足代码审查和文档协作
需求、支持通过组织管理多仓库,方便团队划分项目模块。
2.4.持续集成/部署:通过Web钩子与Jenkins、Drone等工具集成,实现自动化构建和测试。

二.部署:

本次部署版本说明

gogs版本:gogs_0.13.2_linux_amd64.tar.gz

ubuntu版本:Ubuntu 24.04 LTS 

在gogs官方有介绍,不建议直接使用root账户运行,这样风险太高了,平时我们发布应用也不建议这样

sudo adduser git

添加用户后需要修改一下/etc/sudoers 在文件以下位置加入,修改/etc/sudoers文件前需要把它改为可读写状态,不然编辑了无法保存,该文件默认是只读。

sudo chmod u+w /etc/sudoers 改为读写
root    ALL=(ALL)       ALL  # 这个是系统原有的
git     ALL=(ALL)       ALL


编辑完成后,建议把/etc/sudoers改为只读状态

sudo chmod u-w /etc/sudoers 只读

切换为git用户,

su git

修改home/git的属组

sudo chown git:git -R /home/git/**

安装基础环境,需要安装一下git

sudo apt-get install git

官网下载gogs压缩包并 解压到对应的目录,这里建议把文件解压到git用户的home里面,因为gogs里面很多的配置都是放在git用户的home里面,这样可以减少我们修改的成本。

sudo tar xvf gogs_0.13.2_linux_amd64.tar.gz -C /home/git/

解压完成后,建议创建目录及文件custom/conf/app.ini,custom属于gogs文件的子目录,官方有解释为什么要创建这样一个目录及配置文件,这个配置文件是让我们修改默认配置而建立的,因为不建议直接修改原配置文件。具体的配置模板见GitHub app.ini

touch -c custom/conf/app.ini # 使用该命令即可

配置完成后我们可以在gogs目录下执行 ./gogs web,看到以下信息就可以经行安装了,但是不建议这样启动,因为命令行一关闭,gogs服务就停止了,官方已经给出了很多的守护线程执行脚本,在scripts文件夹下。
配置使用systemctl方式启动gogs,可以很方便的在任何目录下执行启动。
使用官方的启动脚本gogs.service(gogs.service脚本文件在gogs/scripts/systemd/安装目录下),
使用以下命令,把启动脚本复制到Linux system目录下

cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system/

gogs.service文件内容:

[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysqld.service postgresql.service memcached.service redis.service

[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK=infinity
#LimitNOFILE=65535
Type=simple
User=git
Group=git
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Restart=always
Environment=USER=git HOME=/home/git

# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

然后就可以很方便的在任何目录下启动和停止Gogs服务了。

复制好启动脚本后,就执行它

sudo systemctl daemon-reload
sudo systemctl enable gogs
sudo systemctl start gogs

启动成功则无任何信息!!!
启动后通过客户端网页访问:192.168.127.130:3000  即可登录

首次配置客户端网页需要匹配IP、账户用git,数据库选择sqlite3,数据库使用绝对路径/home/git/gogs/data,其他保持默认设置即可

 

三.特殊需求及实现方法

特殊需求:

Gogs支持通过组织(organization)和团队(team)来管理项目,并且可以为每个团队分配不同的仓库权限。
然而,当前的需求是将两个团队的文件分别存储到两个不同的物理盘中,以实现更高效的资源管理和隔离。
具体需求,项目分组:

将所有项目分为两个组织(例如:组织org_server_sw和组织org_embedded_sw),每个组织下可以包含多个团队。
每个团队可以拥有自己的管理员,负责管理团队成员及权限分配。
文件存储要求:
组织A的文件存储在物理盘1(例如:/server_sw_data)中。
组织B的文件存储在物理盘2(例如:/embedded_sw_data)中。
权限与管理:
确保每个团队的管理员能够独立管理其团队成员和仓库权限。
需要支持对不同存储路径的配置,以便将文件正确地存储到指定的物理盘中。

四.绑定挂载(Bind Mount)的详细配置说明


绑定挂载(Bind Mount)是一种将同一物理存储目录挂载到多个位置的技术,通过此方法可以实现目录的透明映射,类似于软链接但更底层。
使得两个路径访问相同的数据。在Gogs的场景中,可以通过绑定挂载将不同组织的仓库根目录映射到不同的物理盘,从而实现存储隔离。

五.绑定挂载(Bind Mount)的永久挂载方法

通过 /etc/fstab 实现绑定挂载(推荐)

假设物理盘1对应设备 /dev/sdb,物理盘2对应设备 /dev/sdc;

两个物理盘永久挂载到目标路径( 挂载物理盘1到/server_sw_data和 挂载物理盘2到/embedded_sw_data)的具体操作如下;

为了避免设备名变动导致挂载失败,建议使用 UUID 

使用 blkid 查看 UUID,并记录后边用
sudo blkid /dev/sdb
sudo blkid /dev/sdc

编辑 /etc/fstab在文件末尾添加绑定挂载配置:

sudo vim /etc/fstab
UUID=78f7c472-2474-494d-ba13-c2306c6cd7ac  /server_sw_data  ext4  defaults  0  2
UUID=f33aaf2e-a43e-43a6-9c6d-8f5e8eb228c2  /embedded_sw_data  ext4  defaults  0  2

确保源目录和目标目录存在

sudo mkdir -p  /server_sw_data/org_server_sw               # 源目录(实际数据存储位置)
sudo mkdir -p  /embedded_sw_data/org_embedded_sw           # 源目录(实际数据存储位置)
sudo mkdir -p /home/git/gogs-repositories/org_server_sw    # 目标目录(绑定挂载点)
sudo mkdir -p /home/git/gogs-repositories/org_embedded_sw  # 目标目录(绑定挂载点)

Gogs的默认仓库根目录为 /home/git/gogs-repositories,需将物理盘目录绑定到该路径下的子目录:

将 /server_sw_data/org_server_sw绑定到/home/git/gogs-repositories/org_server_sw,使两者内容同步;

将 /embedded_sw_data/org_embedded_sw绑定到/home/git/gogs-repositories/org_embedded_sw,使两者内容同步。

编辑 /etc/fstab在文件末尾添加绑定挂载配置:

sudo vim /etc/fstab
/server_sw_data/org_server_sw /home/git/gogs-repositories/org_server_sw none bind,rw,exec,suid 0 0
/embedded_sw_data/org_embedded_sw /home/git/gogs-repositories/org_embedded_sw none bind,rw,exec,suid 0 0

重启验证

sudo reboot

重启后测确认

mount

输出如下内容说明挂载成功

/dev/sdb on /server_sw_data type ext4 (rw,relatime,stripe=192)
/dev/sdb on /home/git/gogs-repositories/org_server_sw type ext4 (rw,relatime,stripe=192)
/dev/sdc on /embedded_sw_data type ext4 (rw,relatime,stripe=192)
/dev/sdc on /home/git/gogs-repositories/org_embedded_sw type ext4 (rw,relatime,stripe=192)

Gogs组织与仓库配置
创建组织
登录Gogs,进入 「用户设置」→「组织管理」;创建组织 org_server_sw 和org_embedded_sw。

创建仓库
在组织 org_server_sw下创建仓库时,Gogs会自动将其存储在 /home/git/gogs-repositories/org_server_sw,实际数据位于 /server_sw_data/org_server_sw。

在组织 org_embedded_sw下创建仓库时,Gogs会自动将其存储在 /home/git/gogs-repositories/org_embedded_sw,实际数据位于 /embedded_sw_data/org_embedded_sw。

 如果还需要将gogs中的某个成员xiaozhang的个人账户下项目同样方式永久挂载,如果还需要将gogs中的某个成员xiaozhang的个人账户下的组织org_xiaozhang项目同样方式永久挂载,则操作方法一样

确保源目录和目标目录存在

sudo mkdir -p  /server_sw_data/xiaozhang                  # 源目录(实际数据存储位置)
sudo mkdir -p /home/git/gogs-repositories/xiaozhang       # 目标目录(绑定挂载点)

sudo mkdir -p  /embedded_sw_data/org_xiaozhang            # 源目录(实际数据存储位置)
sudo mkdir -p /home/git/gogs-repositories/org_xiaozhang   # 目标目录(绑定挂载点)

 将 /server_sw_data/xiaozhang绑定到/home/git/gogs-repositories/xiaozhang,使两者内容同步;

将 /embedded_sw_data/org_xiangzhang绑定到/home/git/gogs-repositories/org_xiaozhang,使两者内容同步。

编辑 /etc/fstab在文件末尾添加绑定挂载配置:

sudo vim /etc/fstab
/server_sw_data/xiaozhang /home/git/gogs-repositories/xiaozhang none bind,rw,exec,suid 0 0
/embedded_sw_data/org_xiaozhang /home/git/gogs-repositories/org_xiaozhang none bind,rw,exec,suid 0 0

编辑完保存退出后,执行如下命令

sudo systemctl daemon-reload
sudo systemctl enable gogs
sudo systemctl start gogs

 然后重启服务器。

六.实际部署过程中可能用到的操作与命令

gogs关闭注册按钮的方法
将app.ini中得以下参数的false改成 true,重启,再次登录页面,注册按钮已隐藏

DISABLE_REGISTRATION = false

添加用户错误时的相关操作:
添加错了用户,删除操作:
# 强制终止所有属于 git 的进程

sudo pkill -u git

# 删除用户及其主目录、邮件池

sudo userdel -r git

# 如果仍有残留,强制删除(慎用)

sudo userdel -f -r git

使用命令停止gogs服务

sudo systemctl stop gogs

Ubuntu绑定挂载永久生效与fstab挂载选项详解-优快云博客

linux系统中fstab 各字段详细说明-优快云博客

gogs安装与说明(docker) 前言: 作为一个开发,少不了和git打交道,像github,gitee是很流行的git线上托管平台,而我们也搭建自己的git托管平台,有条件的可以使用gitlab,它对硬件有要求,像博主这种没条件用虚拟机的,推荐使用gogs。   Gogs 的是一个由 Go 语言开发的、可以简单、快速搭建自助 Git 服务。在宿主机上的安装可以参考官网:Installation - Gogs。   不过在宿主机上直接安装会麻烦一点,需要自行安装git工具,如果使用ssh还要安装ssh服务器,如果使用源码安装,还可能. 阅读详情

相关推荐

Centos7安装Gogs完整教程

本文章讲的是如何在Centos7下安装git服务器Gogs,本文参考了网络上的文章和官方文档。根据本文来操作可以完美安装Gogs,如果有其他问题或者看法,可以在评论区留下你的问题或看法。你的支持是我更新创作的动力!!!

山不见我,我自见山 3055

Gogs:可能是比Gitlab更好的选择

译者注:看到一篇介绍能简单自建git托管服务的项目—— Gogs ——的文章,感觉这个项目很棒,翻译给大家参考一下。 这个项目的四位主要开发者都是中国人,该项目今天蝉联 GitHub Go 语言 Trending 第一。(づ ̄3 ̄)づ莫名的自豪感油然而生。希望能有更多优秀的国产项目出现~ Gitlab是一个很棒的Git托管服...

weixin_34198797的博客 1274

Git 代码库 gogs 部署私服及 https 配置手册

玩了一下 Git 的服务搭建平台 gogs,本文记录这个过程。

本博客纯属个人网络笔记,如对阁下有用,甚喜;否则,关掉即可,不喜勿喷。专心写代码,不做键盘侠! 997

Gogs安装和部署教程-centos上

Gogs 是一款极易搭建的自助 Git 服务。Gogs安装和部署教程-centos上

helloxiaozhe的博客 7701

Altera Quartus II FPGA固件烧录全攻略:从SOF到JIC的完整流程(附EPCQ128配置技巧)

本文详细介绍了使用Altera Quartus II工具链将FPGA固件从SOF文件转换为JIC文件并烧录到EPCQ128 Flash芯片的完整流程。内容涵盖环境配置、文件转换步骤、EPCQ128专用配置技巧以及常见问题解决方案,帮助工程师实现FPGA固件的flash固化,确保设计可靠运行。

weixin_30275415的博客 201

【渗透工具】内网多级代理工具Venom详细使用教程

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。Venom可将多个节点进行连接,然后以节点为跳板,构建多级代理。渗透测试人员可以使用Venom轻松地将网络流量代理到多层内网,并轻松地管理代理节点。

TT小子的博客 3756

搭建Gogs git私服

环境 debian10 gogs:0.11.91 @ 2019-08-11 阿里云ECS服务器 依赖 安装git Debian/Ubuntu $ sudo apt-get update $ sudo apt-get install git 安装mysql 本操作参考:https://www.linuxidc.com/Linux/2019-08/159844.htm 1.要将 MySQL APT 存储库添加到系统,请转到存储库下载页面并使用以下 wget 命令下载最新的发行包: wget http://re

weixin_45033342的博客 385

iPhone存储空间耗尽自救指南:从“白苹果”死锁到成功保数据刷机

本文详细介绍了iPhone存储空间耗尽导致'白苹果'死锁的解决方案,通过保留数据刷机方法成功恢复设备运行。文章分享了从失败尝试到最终成功的完整流程,包括关键操作步骤和预防措施,帮助用户在紧急情况下保住重要数据。

weixin_32578161的博客 286

搭建git私服gogs

cd /tmp/ wget https://dl.gogs.io/0.11.34/linux_amd64.tar.gz tar -xzvf linux_amd64.tar.gz gogs cd gogs 前台运行 ./gogs web 2019/11/26 16:19:02 [ WARN] Custom config '/tmp/gogs/custom/conf/app.ini' not f...

qq_38522268的博客 1467

拆开它的“身体”,看懂割草机器人的五层系统架构

这篇文章深入解析了智能割草机器人的五层系统架构。机械层采用铝合金一体式车架和独立悬挂刀盘系统;电子层配备双处理器和多种传感器;固件层实现毫秒级安全响应;算法层融合多种定位技术实现厘米级精度;云服务层提供远程管理和AI优化。这套系统通过精密协同实现了智能割草的全流程闭环,展现了从机械结构到云端智能的完整技术栈,为户外智能设备设立了新的技术标杆。

智能硬件研发,欢迎交流 196

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-DIO之高低电平输出-点亮LED灯(基于MCAL)

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-点亮LED灯(基于MCAL)

「汽车电子助手」的博客 1936

git 私服搭建 gogs windows server 2016

git 私服搭建,ini 无法编辑保存

qq_35755861的博客 585

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 998

利用 docker 搭建 gogs git私服

docker 搭建 gogs 私服 gogs 是一个代码托管系统,同类产品还有 github,gitee,gitea,gitlab 等等,但他的点是使用go语言编写,占用资源极小,适合小团队和个人搭建使用。 为什么不用 GitLab gitlab 是一个知名度极高的开源代码管理平台,功能齐全,适合公司内部部署,但其极其消耗资源的缺点让人无奈。 gogs出现后又多了一个选择,国内一些知名互联网大厂也使用 gogs 搭建 git 私服来管理,足以说明他的生产可用性。 gitlab在性能好的机器上确实没有什么缺点

qq_35425070的博客 1268

海康威视iVMS-8700综合安防管理平台 文件读取漏洞复现

HIKVISION iVMS 综合安防管理平台download接口处存在任意文件读取漏洞,攻击者通过构造token绕过身份认证,读取服务器中的目录信息与敏感文件。使系统处于极不安全的状态。

0xSec 3304

增量学习入门:概念、代码示例与应用场景

在当今快速变化的数据环境中,传统的机器学习模型往往需要重新训练以适应新的数据。然而,这种方法不仅耗时耗力,还可能导致模型性能的不稳定。增量学习(Incremental Learning)作为一种新兴的学习范式,能够在新数据到来时动态更新模型,而无需重新训练整个模型。本文将详细介绍增量学习的基本概念、代码示例、应用场景以及需要注意的事项。增量学习作为一种高效的机器学习方法,能够在新数据到来时动态更新模型,具有广泛的应用前景。通过本文的介绍,相信你对增量学习有了初步的了解。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1150

Gogs搭建git私服-windows版

Gogs搭建git私服-windows版 在代码的世界里,github应该是家喻户晓了,那么想不想在自己的电脑上搭建一套类似的服务供自己工作和学习使用呢。答案是肯定的。 Gogs就是一款开源免费的产品,而且是一个精品,话不多说,搭建开始 第一步、下载我们需要的Gogs软件 官方网站里下载windows版本,记得选mws版 ...

慕容雪_的博客 2448

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【gogs】搭建git私服

等各种参数配置好后,点击提交会自动跳转页面,页面结构与Gitee/Github基本相同,点击创建仓库新建出一个远程仓库。由于服务器内下载速度慢,我们先本机下载,然后通过scp命令将文件拷贝到服务器上。此处注意:应保证云服务器对应的端口已经开放,不然无法成功推送到远程仓库。接着新建一个gogs文件夹,然后在gogs文件夹下创建yml配置文件。填写数据库名称时应确保数据库已被创建,否则最后会出现报错。在服务器上对该文件进行重命名与移动到指定的文件夹下。进入网页端,会自动跳转界面到。之后再次尝试推送,推送成功。

qq_47450919的博客 406

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Windows系统使用gogs搭建git私服

这是gogs的官网,大家自行前往参观。 首先点击这里下载windows版本的gogs,选择带mws的下载,还有自己的系统位数号。 下载到本地之后进行解压即可,这个时候先别急着其他操作,看看自己本机有没有安装配置好git以及mysql。 使用gogs搭建自己的私服仓库需要mysql数据库和git,git去官网下载就行了,版本不用在意,选好系统位数就行了。安装完成之后把git的bin...

m0_37713821的博客 603

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

搭建git (gogs)

Gogs私服搭建-优快云博客

叶落无痕的博客 215

windows利用gogs搭建git私服

1.准备工具 1.1gogs的安装包:https://dl.gogs.io/0.11.91/ 选择win-amd64 1.2nssm安装包: 1.3git安装包,默认安装就行,https://pc.qq.com/detail/13/detail_22693.html 1.4.下载phpstudy,安装,启动内置mysql并创建配置gogs数据,设置好用户和密码 2.解压gogs的zip包,解压nssm的zip包,gogs的解压包默认放在C盘,就是一个gogs文件夹,把nssm的win6...

liangxingzhi1的博客 266

Linux系统使用Gogs搭建私服Git网站

文章目录1. 安装Docker2. 安装Gogs3. 配置Git仓库 系统:CentOS 7.4 64位 1. 安装Docker # 通过yum源安装docker yum -y install docker # 启动docker systemctl start docker # 开机自启 sudo systemctl enable docker 2. 安装Gogs 下载Gogs镜像 docker pull gogs/gogs 创建gogs存储的目录 mkdir -p /root/gogs #

^@Hu@^的博客 306

Docker-使用gogs搭建git私服

所有安装基于CenOS 8.2版本 内核版本4.0 以全篇复制粘贴,上一次成功!一秒即可完成所有步骤 官方地址:https://gogs.io/ 中文地址:https://github.com/gogs/gogs/blob/master/README_ZH.md #安装常用包 yum install vim bash-completion net-tools gcc -y #安装docker-ce yum install -y yum-utils device-mapper-persistent-

平塘大鱼儿 312

windows 安装 gogs

下载 git :https://git-scm.com/download/win 下载 gogs:https://gogs.io/docs/installation/install_from_binary 下载 mysql:https://dev.mysql.com/downloads/installer/ 下载 nssm:http://www.nssm.cc/download 安装解压他...

树欲静而风不止 2676

Docker 容器搭建Gogs私服仓库 (版本管理控制工具)

Gogs简介 Gogs是一款极易搭建的自助Git服务,使用Go语言开发,只要Go语言支持的平台它都支持,包括Linux、Mac OS X、Windows以及ARM平台。Gogs对系统硬件要求极低,你甚至可以在树莓派上搭建它 项目地址:https://github.com/gogs/gogs 1、安装 Gogs在Docker环境下的安装非常简单,只需要两个命令即可,推荐使用该方式来进行...

liuyaokai1990的博客 1067
上一篇: 当前可用的Docker镜像源地址(2025/2/8)
下一篇: linux系统中fstab 各字段详细说明
pingxiaozhao
博客等级 码龄16年 274粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值