zoukankan      html  css  js  c++  java
  • 【git】Gogs Gitea安装搭建教程,简单快速



    一、背景介绍

    为什么要使用git服务器?最简单的原生 ssh+git 的私人远程仓库搭建方法

    如果想可视化地查看文件的变更,查看每次提交的细节,那么可以搭建一个带 Web 的git服务器

    目前的选择是 gitlib 和 gogs、gitea。个人使用选后者,公司的话一般会选gitlib

    这是几个代码托管工具的对比:https://docs.gitea.io/zh-cn/comparison/

    Gogs Gitea的相同点和区别

    • 二者都是使用go语言开发的轻量级(相比gitlib)自建 Git 服务

    • gitea出自gogs项目(2014.2- ),因内部想法不一致,16年11月gitea派生独立,参考官方B站视频

    • gogs相比gitea更轻量,配置更简单,但是功能和细节不到位

      比如gogs开启登录才能访问后,游客只能访问登录页面,连介绍页都点不了。比如gogs没有贡献日历

    • gitea的设计更用心,但是应用会复杂一些

      体现在二者docker镜像gogs 40M,gitea 60M,以及gitea提供了超多的可配置项

    二者的安装差不多,正常使用的安装配置步骤毫无差别,故博主选gitea为例



    二、安装

    因为搭建go环境,编译安装挺麻烦的,所以我选择docker安装,docker的优点:

    • 镜像相对其它镜像来说已经很小了

    • 可以通过挂载卷把容器里的目录放在宿主机上,这和在宿主机上直接跑Gitea没什么区别,git仓库都能在目录中找到

    • 安全,如果Gitea被挖出漏洞,容器也能给我们一层防护

    但是数据库的话还是得自己安装,放容器里不符合数据库设计的初衷



    2.1 数据库、docker安装

    参考:Rocky Linux 8系统介绍、安装、配置、软件安装步骤,Rocky Linux 8 可以当作 CentOS 8

    建立数据库,创建用户,授权用户:

    # 登录
    mysql -u root -p
    
    CREATE DATABASE `gitea` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    CREATE USER 'gitea'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL ON gitea.* TO 'gitea'@'%';
    



    2.2 Gogs Gitea安装

    安装gogs docker

    参考:官方GitHub

    安装gitea docker

    参考:官方文档

    官方文档说用docker-compose,其实单个容器没必要,我们参照gogs用docker run

    docker pull gitea/gitea:latest
    docker run -d -p 3000:3000 -p 3022:22 -v /var/gitea:/data --name=gitea gitea/gitea
    # 后续启动重启
    docker start|restart gitea
    

    这样一来就安装好了,本机的3000端口就是gitea web,3022端口就是gitea ssh,本机的/var/gitea就是gitea容器里的/data



    2.3 Gogs Gitea Web安装

    访问3000端口,进行配置

    二者一样,gogs参考: https://learnku.com/articles/36255

    都可以是默认,建议修改的选项有:

    • 应用url,后续会显示在你仓库的clone地址中。如果你设置了前缀如http://127.0.0.1:3000/xxxxxgitea/那么网站根目录也会带前缀,包括js等静态资源,这个设置了可以方便后续nginx代理.

      除了前缀,其余的都不会影响实际请求的url,比如ip、端口、http/https,这些都只影响仓库中克隆地址的显示

    • 建议勾选禁止用户自主注册启用登录访问限制,后者设置后游客只能访问登录页面,不设置游客可以看到用户、公开仓库

    • 在最后填写管理员账户的账户密码,如果不填写,第一个注册的用户是管理员

    此时不设置,后续只能通过配置文件设置,无法在web更改设置



    三、配置

    在宿主机上 vi /var/gitea/gitea/conf/app.ini 即可修改容器中的配置

    配置参考:gogs gitea

    修改配置后:docker restart gitea



    三、安全设置

    3.1 暴力破解

    gogs显然不是很重视安全,需求提了很久,仍未实现 issue #2384

    比如登录处无验证码,无登录失败次数限制

    日志不记录登录失败的IP

    那么防暴力破解大神给的办法是:

    • 用nginx代理,用fail2ban检查nginx access log来ban IP

    我给出的简单办法:如果你不想公开你的gogs地址让大伙知道的话,在配置中设置一个超长超复杂的前缀,配合nginx代理,那么没人能知道你的url

    一定要配合nginx代理,否则你前缀再长,访问也会自动跳转到登录页面

    使用nginx代理后,如果没输对前缀,就会404

    nginx安装参考

    # gogs配置
    [server]
    EXTERNAL_URL     = http://IP:Port/gogsxxxxxxxxxxx/
    
    # nginx 配置
            location / {
                root   html;
                index  404.html;
            }
    
            location ^~ /gogsxxxxxxxxxxx/ {
                proxy_pass http://127.0.0.1:3000/;
            }
    



    3.2 docker -v权限

    奇怪的是,gogs挂载的目录在宿主机中是git用户所有,而gitea是root用户所有



  • 相关阅读:
    selenium基础--登录简单的网站
    git stash 用法总结和注意点
    爬取网易云超过十万的歌曲
    selenium自动化爬虫测试
    解决selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in P
    抓取网易云音乐的评论
    解释Crypto模块怎么就这么"皮"?No module named "Crypto"
    Windows系统下在Eclipse中集成Python
    bash 判断两个文件相等的代码
    Cassandra学习笔记
  • 原文地址:https://www.cnblogs.com/yunmuq/p/15772646.html
Copyright © 2011-2022 走看看