Gitea-Git 本地项目/代码托管- 网络安全- 代码安全笔记

Gitea-Git 本地代码托管:网络安全与代码安全笔记

一、核心认知:代码安全与托管平台选择

代码作为网络信息核心资产,其安全管控需覆盖全流程,关键维度包括:

  • 风险防控:泄露、篡改、未授权访问防护
  • 版本管理:提交溯源、分支管控、历史回滚
  • 协同效率:多人协作权限隔离、冲突解决
  • 环境适配:本地/局域网托管(规避公网风险)、上线前代码混淆

1.1 托管平台对比(安全视角)

托管类型 代表产品 核心优势 敏感场景短板
本地部署 Gitea、GitLab Self-Managed 自主可控,无第三方依赖 需自行维护服务器安全
第三方托管 GitHub(私有仓库) 无需运维,生态完善 公网传输风险、数据归属权

二、Gitea 核心能力解析

2.1 产品定位

轻量级 DevOps 平台,覆盖软件全生命周期,适配个人开发者、中小型团队,平衡功能完整性与资源消耗。

2.2 核心功能特性(带安全/效率标注)

功能模块 关键能力 价值标注
代码托管 1. 仓库创建/权限细分(公开/私有)
2. 提交历史可视化、代码文件在线浏览
3. 支持 Git 原生特性(标签、Cherry-pick、hook)
基础安全:权限隔离
轻量高效 1. 单节点部署资源需求低(推荐 2C4G 起步)
2. 页面响应延迟<500ms
适配小型服务器环境
部署维护 1. 支持 Docker/二进制包部署(3 步完成初始化)
2. 内置自动备份功能
降低运维门槛
安全管控 1. 细粒度用户权限(管理员/开发者/访客)
2. 访问控制列表(ACL)
3. 登录认证支持 LDAP/2FA
核心安全:多层防护
代码评审 1. 支持 Pull Request/AGit 两种 workflow
2. 在线批注、代码修改实时反馈
质量安全:提前发现漏洞
CI/CD 1. 兼容 GitHub Actions(YAML 配置)
2. 插件支持多 Git 源下载
效率:自动化减少人工操作
项目管理 1. 看板跟踪需求/BUG(拖拽式操作)
2. 工单支持里程碑/依赖关系管理
协同效率:流程可视化
制品库 支持 20+ 软件包格式(Maven/npm/PyPI/Helm 等) 生态:统一管理依赖资产

2.3 基于 Docker + 外部数据库(MySQL)部署方式

2.3.1 安装 MySQL

  1. 执行安装命令:

    1
    apt install mysql-server
  2. 修改远程连接配置(允许局域网访问):
    编辑 MySQL 配置文件:

    1
    vim /etc/mysql/mysql.conf.d/mysqld.cnf

    将绑定地址修改为全网监听:

    1
    2
    bind-address            = 0.0.0.0  # 原配置可能为 127.0.0.1
    mysqlx-bind-address = 0.0.0.0

    MySQL配置文件修改界面

  3. 重启 MySQL 服务使配置生效:

    1
    systemctl restart mysql
  4. 调整 MySQL 认证方式与密码(适配 Gitea 连接):
    进入 MySQL 命令行:

    1
    mysql -u root -p

    执行以下 SQL 语句(修改密码为实际安全密码,示例为 202019):

    1
    2
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '202019';
    FLUSH PRIVILEGES; # 刷新权限

    MySQL权限修改SQL执行界面

  5. 创建 Gitea 专用数据库:

    1
    create database gitea;  # 数据库名需与后续Gitea配置一致

    Gitea数据库创建界面

2.3.2 安装 Gitea(Docker 方式)

  1. 创建 docker-compose.yml 文件(核心配置):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    version: '3'  # 修正原笔误:移除多余的 "./gitea web"

    services:
    gitea:
    image: gitea/gitea:latest # 使用最新稳定版
    restart: always # 容器异常自动重启
    environment:
    # 数据库连接配置(需与MySQL实际信息匹配)
    - DB_TYPE=mysql
    - DB_NAME=gitea
    - DB_USER=root
    - DB_PASSWD=13228283746.Lvjin # 注意:实际部署需替换为安全密码
    - DB_HOST=192.168.87.1 # MySQL服务器IP(局域网地址)
    - DB_PORT=3306
    # Gitea服务配置
    - GITEA__server__SSH_PORT=222 # SSH访问端口(避免与主机22端口冲突)
    - TZ=Asia/Shanghai # 时区配置
    networks:
    - gitea # 独立网络隔离
    volumes:
    - ./gitea:/data # 数据持久化(Gitea配置、仓库文件等)
    - /etc/timezone:/etc/timezone:ro # 只读挂载时区文件
    - /etc/localtime:/etc/localtime:ro
    ports:
    - "3000:3000" # Web访问端口(主机:容器)
    - "222:22" # SSH访问端口(主机:容器)

    networks:
    gitea:
    driver: bridge # 桥接网络模式
  2. 启动 Gitea 容器:
    docker-compose.yml 所在目录执行:

    1
    docker-compose up -d  # -d 表示后台运行
  3. 网页初始化 Gitea:
    访问 http://[服务器IP]:3000,进入数据库初始化界面,确认配置与 docker-compose.yml 一致后提交:
    Gitea数据库初始化界面

  4. 完成部署与登录:
    初始化完成后,即可注册管理员账户并登录,进入 Gitea 主界面:
    Gitea登录后主界面