ps可以做网站吗,福州市城乡建设网站张麒蛰,网站开发 简单留言板,wordpress门户插件06.搭建一个自己的私有仓库-Gitea | DLLCNX的博客 如果你是一位程序员或者IT相关领域的从业者#xff0c;那么肯定知道git#xff0c;而且也或多或少接触了不少开源仓库以及公司的私有仓库#xff0c;但是我们有没有想过自己也搭建一个私有仓库呢。
这么多开源仓库#xf… 06.搭建一个自己的私有仓库-Gitea | DLLCNX的博客 如果你是一位程序员或者IT相关领域的从业者那么肯定知道git而且也或多或少接触了不少开源仓库以及公司的私有仓库但是我们有没有想过自己也搭建一个私有仓库呢。
这么多开源仓库为什么还要搭建私有仓库呢
首先我们肯定了解因为众所周知的原因github的网络连接时好时坏还有github或多或少因为美帝的政治正确以及扫描私有仓库代码来训练模型传闻等等让人有一些不爽。
并且这些开源仓库重点是开源啊万一你不想开源或者本身就是公司的保密项目虽然支持私有设置但是这种开源仓库还是被坚决杜绝的。所以对于公司来说一般都会有自己的代码仓库。
那么除了开源仓库以及公司私库如果我们自己也有一些项目既不想开源又不能存公司仓库这时我们除了把代码放本地磁盘备份其实还就可以自己搭一个git仓库了。
一、介绍
其实开源的仓库私有服务很多比如一般公司采用的gitlab还有轻量级的gogs。而我今天要推荐的是另一款从gogs的分支来的项目gitea。那么针对这三个仓库有什么区别呢
Gitlab
GitLab有自己的官方开源仓库以及提供私有部署的开源并免费的GitLab CE版本。其官方的开源仓库不仅仅是GitHub的一个替代品它更像是一个完整的DevOps平台。GitLab几乎是软件开发机构必备的基础设施因为它提供了代码和项目管理工具问题报告、持续交付和监控。Gitlab基于Ruby on Rails构建,功能强大很多公司都是用的它。gitlab有很强大的功能以及丰富的生态对于公司仓库来说它绝对是首选但是对于个人来说它对服务器的性能要求也大得多官方推荐最低配置是4核4G并且gitlab新版本的界面我个人是一直感觉很别扭也许等习惯就好了。
功能强大CI/CD界面复杂性能要求较高
GogsGitea
Gogs是使用G语言开发的100% 开源并可无条件免费使用的项目。所有的源代码均通过 MIT 授权协议 托管在 GitHub 上.任何 Go 语言 支持的平台都可以运行 Gogs包括 Windows、Mac、Linux 以及 ARM。一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。有些用户甚至还将 Gogs 运行在 NAS 设备上。
Gitea的从Gogs Fork而来Gitea的首要目标是创建一个极易安装运行非常快速安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言这使我们只要生成一个可执行程序即可。并且他还支持跨平台支持 Linux, macOS 和 Windows 以及各种架构除了x86amd64还包括 ARM 和 PowerPC。
gitea既然来源于gogs那么它们具体有什么相同点和区别呢
相同点
1.轻量级Gitea和Gogs都是轻量级的Git服务安装、配置和使用都非常简单。
2.易于部署Gitea和Gogs可以在各种平台上部署包括Docker、Kubernetes、Linux、Windows和macOS等。
3.高效性Gitea和Gogs都性能出色能够处理大规模的代码库和大量的并发访问。
4.开源免费Gitea和Gogs都是开源的可以免费使用。
5.功能强大Gitea和Gogs支持多种协议如Git、SSH、HTTP等并具备与Github类似的功能如Pull Request、问题跟踪、维基等
不同点:
1.Gogs的优劣势
优势
1.简便易用Gogs安装、配置和使用都相当方便。
2.体积小巧Gogs没有太多复杂的功能和高端的特性体积小巧运行速度快。
3.免费开源Gogs是开源免费的Git服务。
4.界面简洁Gogs的Web界面不错非常简洁易于使用。
劣势
1.维护困难Gogs开发维护力量个人或小团队或许在长期的发展过程中会出现维护困难问题。
2.社区活力不足Gogs保持了可持续发展可能性但相对活跃度比较低。
2.Gitea的优劣势
优势
1.使用方便Gitea的安装和配置非常简单网页化界面也更加友好代码模块化设计基于数据处理引擎等新科技内存和 CPU 利用率都得到极大的提升。
2.功能齐全Gitea的功能非常齐全多人协同开发、权限管理、问题和回答、动态和评论项目、人员管理等几乎涵盖了所有的必要功能。
3.安全性好Gitea已经发现的几个漏洞在较短时间内就得到了彻底解决并且Gitea拥有一个活跃的社区能够及时修复漏洞。
劣势
1.版本较新Gitea是较新的一款Git服务尚未广泛使用。
2.移植性不足Gitea移植性不如Gogs目前只支持x86、ARM和mips CPU架构。
二、搭建Gitea
本文基于 docker-compose 来搭建Gitea如果不清楚docker-compose可以自己了解了解docker的基础知识和docker-compose的基础知识。
首先我们需要了解gitea服务除了需要gitea本身的镜像外还需要一个数据库来存储用户权限等等关系如果我们不设置可以使用默认的SQLite3 来初始化一个。我这边一步到位使用了pg数据库。 准备
首先我们需要创建一个gitea仓库数据的映射地址。比如我们创建了一个/docker/gitea目录。并且在里面提前创建好data和config以及postgres文件夹。
docker--gitea--data--config--postgres编写脚本
我们在/docker/gitea里面创建一个docker-compose.yml文件开始编写初始化脚本。
version: 2services:server:image: gitea/gitea:1.21.4-rootlessenvironment:- GITEA__database__DB_TYPEpostgres #要使用的数据库- GITEA__database__HOSTdb:5432 #数据库端口- GITEA__database__NAMEgitea #为gitea分配的仓库名称如果我们要在以前的仓库里面自己创建修改如果数据库镜像也新建就直接写好这个配置文件即可会自动创建- GITEA__database__USERgitea #数据库用户名- GITEA__database__PASSWDgitea #数据库用户密码restart: alwaysvolumes:- /docker/gitea/data:/var/lib/gitea # 将gitea数据与刚才新建的本地文件夹data进行映射- /docker/gitea/config:/etc/gitea # 将gitea配置与刚才新建的本地文件夹data进行映射- /etc/timezone:/etc/timezone:ro- /etc/localtime:/etc/localtime:roports:- 3000:3000 # web界面访问端口左边可以改为自己服务想要的端口右边不动- 2222:2222 # ssh端口左边可以改为自己服务想要的端口右边不动depends_on:- dbdb: # 如果我们为gitea新建数据库镜像需要配置数据库镜像脚本如果使用原有数据库请删除db所有配置并注意填写上面数据库配置image: postgres:14restart: alwaysenvironment:- POSTGRES_USERgitea # 用户名- POSTGRES_PASSWORDgitea # 密码- POSTGRES_DBgitea # 仓库名称volumes:- /docker/gitea/postgres:/var/lib/postgresql/data # 将数据库数据与刚才新建的本地文件夹postgres进行映射针对gitea的标签但是最新官方文档提示如下 对于稳定版本您可以使用 :latest-rootless、:1-rootless或指定特定的版本如: 1.21.4-rootless。如果您想使用最新的开发版本则可以使用 :dev-rootless 标签。如果您想运行发布分支的最新提交可以使用 :1.x-dev-rootless 标签其中 x是 Gitea 的次要版本号例如:1.16-dev-rootless。 请注意
**官方建议**应由在配置文件中指定的UID/GID的用户/组所有。默认情况下Docker中的Gitea将使用uid:1000 gid:1000。如果需要您可以使用以下命令设置这些文件夹的所有权
sudo chown 1000:1000 /docker/gitea/config/ /docker/gitea/data/如果没有对data和config文件夹设置正确的权限容器有可能无法启动。
**但是**如果发现设置了以上命令导致下一步启动服务无法正常启动例如gitea-server-1,则不要对/docker/gitea/config/ 和/docker/gitea/data/设置权限。我再macos下设置权限后导致无法启动默认创建完直接启动反而没问题。灵活应变反正就是权限一般没正确匹配导致没权限。 启动
执行以下命令在后台启动 Gitea。 docker-compose up -d我们可以使用 docker-compose ps 命令可以查看 Gitea 是否正确启动。可以使用 docker-compose logs 命令查看日志。
要关闭设置请执行 docker-compose down 命令。这将停止和终止容器但我们持久化的数据依旧会存在即dataconfig以及postgres这些在docker其实被称为卷。 安装
等我们拉取完镜像并且通过docker-compose ps确保镜像已经正常启动。就可以搭建服务的ip配置的端口来访问安装了。如果没有正常启动请查看日志看看端口是不是冲突了或者哪里配置是不是出了问题。 我们可以看到数据库的配置已经默认配好了如果我们没在脚本里面填写这边其实也可以自己填入。
上面配置里面一般我们只需要配置站点名称、服务器域名、基础URL。其它具体可以查查官方文档看看是否自己需要修改。
站点名称这个没啥说的git站名称服务器域名因为我们本机使用localhost等等没问题但是我们对内网其它设备或者用户肯定需要使用ip甚至如果暴漏外网可能使用外网ip或者域名映射进内网。那么这一块就是要填我们要让外部设备访问的ip或者域名。基础URL同理git仓库让别人使用肯定有项目克隆等等地址这个就是展示的克隆等对外展示的路径。
如果我们需要使用邮件通知用户信息验证消息发送等等需要配置可选设置-电子邮件设置填入自己的邮件服务相关配置即可。
如果要提前设置管理员配置可选设置-管理员帐号设置否则第一个注册的默认是管理员。
确认完等待加载初始化 初始化完成就可以打开网页了
三、使用
普通用户
我们登录进来后其实使用起来依旧是仓库的那些操作创建仓库版本分支代码合并创建组织就是创建一个项目组等等发布包以及镜像模式同步其它仓库githubgitlab等等定时同步。 我们创建一个仓库试试 接下来我们就可以连接这个仓库地址然后进行代码提交和管理了和github以及gitlab大同小异。
管理员 这里我们可以做整个系统的管理包括用户管理仓库管理监控等等。如果我们一些配置无法通过管理中心修改需要去更改配置文件。就是我们一开始创建的config文件夹它下面会自动创建一个app.ini文件。以下只是本次默认的一些配置我们可以查看官方文档针对自己再进行更适合自己的优化与配置。之前我们没配置或者配置错的所有配置其实都可以在这个配置文件里面更改改完记得重启容器让其生效即可。
APP_NAME hahaha
RUN_USER git
RUN_MODE prod
WORK_PATH /var/lib/gitea[repository]
ROOT /var/lib/gitea/git/repositories[repository.local]
LOCAL_COPY_PATH /tmp/gitea/local-repo[repository.upload]
TEMP_PATH /tmp/gitea/uploads[server]
APP_DATA_PATH /var/lib/gitea
SSH_DOMAIN 172.20.10.4
HTTP_PORT 3000
ROOT_URL http://172.20.10.4:3000/
DISABLE_SSH false
; In rootless gitea container only internal ssh server is supported
START_SSH_SERVER true
SSH_PORT 2222
SSH_LISTEN_PORT 2222
BUILTIN_SSH_SERVER_USER git
LFS_START_SERVER true
DOMAIN 172.20.10.4
LFS_JWT_SECRET VH943M-F7UaIIXUgIz7SzA3Cv_j3bpp2rW3-z8E1JGA
OFFLINE_MODE false[database]
PATH /var/lib/gitea/data/gitea.db
DB_TYPE postgres
HOST db:5432
NAME gitea
USER gitea
PASSWD gitea
SCHEMA
SSL_MODE disable
LOG_SQL false[session]
PROVIDER_CONFIG /var/lib/gitea/data/sessions
PROVIDER file[picture]
AVATAR_UPLOAD_PATH /var/lib/gitea/data/avatars
REPOSITORY_AVATAR_UPLOAD_PATH /var/lib/gitea/data/repo-avatars[attachment]
PATH /var/lib/gitea/data/attachments[log]
ROOT_PATH /var/lib/gitea/data/log
MODE console
LEVEL info[security]
INSTALL_LOCK true
SECRET_KEY
REVERSE_PROXY_LIMIT 1
REVERSE_PROXY_TRUSTED_PROXIES *
INTERNAL_TOKEN eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3MDU3Mzc4NTl9.OOHybqMKxX0q0564L5TPaAXctHuZDUkPNw6vXXfGL3A
PASSWORD_HASH_ALGO pbkdf2[service]
DISABLE_REGISTRATION false
REQUIRE_SIGNIN_VIEW false
REGISTER_EMAIL_CONFIRM false
ENABLE_NOTIFY_MAIL false
ALLOW_ONLY_EXTERNAL_REGISTRATION false
ENABLE_CAPTCHA false
DEFAULT_KEEP_EMAIL_PRIVATE false
DEFAULT_ALLOW_CREATE_ORGANIZATION true
DEFAULT_ENABLE_TIMETRACKING true
NO_REPLY_ADDRESS noreply.localhost[lfs]
PATH /var/lib/gitea/git/lfs[mailer]
ENABLED false[openid]
ENABLE_OPENID_SIGNIN true
ENABLE_OPENID_SIGNUP true[cron.update_checker]
ENABLED false[repository.pull-request]
DEFAULT_MERGE_STYLE merge[repository.signing]
DEFAULT_TRUST_MODEL committer[oauth2]
JWT_SECRET 61KySID-ubFsD7qa5aUNH68yOfdtO4rLzvU0xQCLvEo四、其它
以下是我自己已经使用好久的仓库页面。我没有采取原生docker-compose搭建而是采用了界面化工具Portainer进行搭建的如果对Portainer感兴趣可以看看我的文章01.容器界面化管理项目-Portainer | DLLCNX的博客它把我们docker搭建服务中需要命令化操作的操作相当于全部界面化并且将容器管理也界面化适合我们搭建很多服务后的管理。
仓库界面
Portainer界面