使用Gitea搭建自己的git远程仓库

Gitea

为什么需要自建仓库

原因只有一个:折腾。其实国内的码云加上github已经足够用了。

官方原话

Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。

并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了 x86,amd64,还包括 ARM 和 PowerPC

为什么不选gitlab

之前就是用的gitlab做私有仓库,但gitlab实在太臃肿了,启动并运行大概需要4G的内存,即使你精简一些服务的话,至少也得2G内存。后来发现了Gitea,测试了下很轻量,我一个使用作为自己的代码仓库很方便,资源需求也不高。

官方地址

https://github.com/go-gitea/gitea

https://docs.gitea.com/zh-cn/

运行容器

我这里使用docker来安装,方便安装也方便迁移。

docker镜像

官方的镜像名称是gitea/gitea,我一般会去dockerhub看一下它支持的架构和最新的版本,因为我是在arm机器上跑的。下载镜像:

docker pull gitea/gitea:1.21-nightly

运行

创建一个存放数据的目录

mkdir ~/gitea-data

启动:

docker run --name gitea \-e USER_UID=$(id -u) \-e USER_GID=$(id -g) \-v ~/gitea-data:/data \-p 3000:3000 \-p 22:22 \-d gitea/gitea:1.21-nightly 
  • --name: 指定容器名称,如果不指定默认会随机一个。
  • -e: 指定容器内使用的环境变量,我将容器内的uid和主机的uid指定成一样的,这样避免一些权限问题(id -u显示当前用户的uid)。
  • -v: 指定主机目录和容器目录的映射,:前面是主机的目录,后面是容器内的目录。
  • -p: 指定端口映射,前面表示主机的端口,后面是容器的
  • -d: 表示后台运行
查看运行状态和日志

docker ps 查看当前运行的容器,如果没有显示刚才创建的,应该是停止运行了。可以使用docker ps -a查看所有容器。

在用docker logs gitea查看容器的运行日志(截图中的容器名称是gitea-test)

安装

打开浏览器并访问ip和端口(记得放通防火墙),端口是上面-p 8081:3000 \指定的8081。

这些基本不用改,数据库就用SQLite最方便。不然还得安装MySQL或Postgresql

主要修改的是这三个,注意HTTP服务端口不能改,要和-p 8081:3000 \后面容器内的端口一样,如果改了会进不去Web。

SSH服务端口是指git推送ssh时的端口,推送http的端口和web端口一样。就是到时候复制仓库地址的时候显示的两个端口

如果你之后用NGINX做了反向代理,想修改显示的这两个端口,就需要进入到容器shell,修改/data/gitea/conf/app.ini配置文件里的字段了

可选设置也可以看一下。比如先添加管理员账号,不然第一个注册的账号就是管理员账号

如果你不想让他们人注册的话,可以勾选禁止注册。另外最好使用本地模式,因为可能有些头像加载不出来导致一直在转圈

点击立即安装等待个10s就进到登录页面了,再用刚才添加的管理员账号登录即可

实用功能-仓库迁移

可以从github迁移项目,并且勾选镜像仓库,就会每8小时自动同步一次(时间可以设置),这样就能避免删库跑路了

体验地址

http://www.pygrower.cn:21180/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】——期末复习题题库(5)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

JMeter与Allure的完美结合:打造高效、易读的性能测试报告

随着互联网的快速发展,软件性能测试已经成为软件开发过程中不可或缺的一环。为了提高测试效率和报告质量,许多测试团队开始寻求自动化测试工具和报告生成工具的结合。在这篇文章中,我们将介绍如何将JMeter与Allure结合使用,以实现…

com.gexin.platform 依赖下载问题

打包时报错显示&#xff1a; com.gexin.platform:gexin-rp-sdk-http:pom:4.1.1.4 failed to transfer from http://0.0.0.0/ 解决办法&#xff1a; 1、在idea中找到maven中的设置的settings.xml 2、根据路径找到settings.xml文件&#xff0c;添加以下内容 <mirror><…

遇到无序多变请求怎么办,可以试试责任链模式

责任链模式&#xff08;Chain Of Responsibility Design Pattern&#xff09;&#xff0c;也叫做职责链&#xff0c;是将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求。当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到有对象处理它…

知识点积累

2024.01.02 1. 正向代理/反向代理 遇见场景&#xff1a;在客户端获取接口&#xff0c;拿着接口去后端代码查询不到该接口&#xff0c;实际结果在前端代码查询到了该接口&#xff0c;然后开始接触正向代理、反向代理。 &#xff08;1&#xff09;正向代理&#xff1a;指代理服…

UDP通信(服务器-客户端)

一、 UDP服务器-客户端通信 UDP&#xff08;User Datagram Protocol&#xff09;是一种面向无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。与TCP&#xff08;Transmission Control Protocol&#xff09;不同&#xff0c;UDP不建立连接&#xff0c;…

基于Kettle开发的web版数据集成开源工具(data-integration)-部署篇

目录 &#x1f4da;第一章 前言&#x1f4d7;背景&#x1f4d7;目的&#x1f4d7;总体方向 &#x1f4da;第二章 下载编译&#x1f4d7;下载&#x1f4d7;编译 &#x1f4da;第三章 部署&#x1f4d7;准备工作&#x1f4d5; 安装数据库&redis&consul&#x1f4d5; 修改…

鼠标驱动框架:模拟键盘按键

/* 参考: drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> #include <linux/input.h> #include <linux/hid.h>st…

计算机毕业设计-------基于JSP+Servlet的毕业生离校管理系统

需求分析 使用JSPServletMysql技术设计一个毕业生离校管理系统, 整个系统采用BS架构, 为高校方便进行毕业生离校流程进行统一的离校流程, 极大的减少了大量学生同时离校的过程中杂乱的情况, 整个系统分为学生, 教务处, 辅导员, 图书馆, 宿管, 财务处, 系办公室, 管理员登等角色…

Vue.observable你有了解过吗?

一、Observable 是什么 Observable 翻译过来我们可以理解成可观察的 我们先来看一下其在Vue中的定义 Vue.observable&#xff0c;让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象 返回的对象可以直接用于渲染函数和计算属性内&#xff0c;并且会在发生变…

【华为机试】2023年真题B卷(python)-考古问题

一、题目 题目描述&#xff1a; 考古问题&#xff0c;假设以前的石碑被打碎成了很多块&#xff0c;每块上面都有一个或若干个字符&#xff0c;请你写个程序来把之前石碑上文字可能的组合全部写出来&#xff0c;按升序进行排列。 二、输入输出 三、示例 示例1: 输入输出示例仅供…

了解Apache 配置与应用

本章内容 理解 Apache 连接保持 掌握 Apache 的访问控制 掌握 Apache 日志管理的方法 Apache HTTP Server 之所以受到众多企业的青睐&#xff0c;得益于其代码开源、跨平台、功能 模块化、可灵活定制等诸多优点&#xff0c;不仅性能稳定&#xff0c;在安全性方面的表现也十分…

【设计模式-2】原型模式的原理、代码实现及类图展示

我们一定对类的实例化比较熟悉&#xff0c;前面我们说的单例、还有3种工厂模式都是通过new关键字来创建对象&#xff0c;下面我们来了解一种新的对象创建的方式。 1. 定义 原型模式也是一种创建型的设计模式&#xff0c;实现和原理总体比较简单&#xff0c;一句话总结呢&#…

Weblogic安全漫谈(二)

前言 继本系列上篇从CVE-2015-4852入手了解T3协议的构造后&#xff0c;本篇继续分析开启T3反序列化魔盒后的修复与绕过。 Weblogic对于10.3.6推出了p20780171和p22248372用于修复CVE-2015-4852&#xff0c;在补丁详情中又提示了p21984589是它的超集&#xff0c;所以可以直接装…

kubeadm

kubeadm快速搭建一个k8s小集群 二进制搭建适合搭建大集群&#xff08;50台以上主机&#xff09; kubeadm更适合中小企业的业务集群 master 120.168.233.70 dockerkubelet kubeadm kubectl flannel node01 120.168.233.80 dockerkubelet kubeadm kubectl flannel node02 …

通过软盘拷贝文件 - 华为OD统一考试

OD统一考试(B卷) 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究但此电脑除了有一个3.5寸软盘驱动器以外&#xff0c;没有任何手段可以将文件持贝出来&#xff0c;而且只有一张软盘可以…

MySQL将多条数据合并成一条的完整示例

数据库中存的是多条数据&#xff0c;展示的时候需要合并成一条 数据表存储形式如下图 以type分组&#xff0c;type相同的算一条&#xff0c;且保留image和link的所有数据&#xff0c;用groupBy只保留一条数据 解决方案&#xff1a;用GROUP_CONCAT 完整语法如下 group_concat…

Python是怎么调用接口的

在Python中调用接口可以使用多种方式&#xff0c;以下是其中几种常用的方法&#xff1a; 使用标准库中的urllib模块或第三方库requests发送HTTP请求。首先需要导入对应的库&#xff0c;然后使用相应的函数发送请求&#xff0c;并获得返回的结果。 例如&#xff0c;在使用requ…

从有向带权图判断最短路径里各目标顶点顺序

对如下有向带权图&#xff0c;若采用迪杰斯特拉(Dijkstra)算法求从源点a到其他各顶点的最短路径&#xff0c;则得到的第一路径的目标顶点是b&#xff0c;第二条最短路径的目标顶点是c&#xff0c;后续得到的其余各最短路径的目标顶点依次是() A.d,e,f B.e,d,f C.f,d,e D.f,…

linux-6.0 内核存储栈全景图

linux 存储栈原图地址&#xff1a;https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram