学习笔记-Gitea - 软件环境部署
创始人
2025-12-15 15:06:05
0次

前言

好吧,我承认我这篇文档是把简单问题复杂化,其实一行 Docker 运行命令就能解决问题
不过,为了学习,尽量详尽的分解步骤,搞清楚每一个步骤,是很重要的
本文设计了多个知识点
    更新 官方源 没有的 软件
    创建 用户
    为文件目录及子目录 赋予权限
    查看 软件 运行日志
    为 软件 创建 系统服务文件
    Docker Compose 脚本编写
    配置文件编写

前期准备

#    官方网站
https://about.gitea.cn/
#    官方网站 帮助文档
https://docs.gitea.cn/installation/install-from-binary
#    官方网址 Gitea 下载页面
https://dl.gitea.com/gitea/
#    下载 新版 Gitea
https://dl.gitea.com/gitea/1.21/gitea-1.21-linux-amd64

环境准备

安装Wget

#    如使用 Shell 环境直接下载 Gitea 二进制文件则需要安装 Wget,如用其他方法下载则不需要
#    安装 Wget
sudo yum install -y wget

安装新版 Git

#    之前版本的 Gitea 需要2.0以上版本的Git才能正常运行,因此在CentOS7.9.2207环境下, 需要安装更新版本的Git
#    该问题在最新版貌似改过来了,不过升级总没有坏处,所以先升级了
#    配置 IUS 源
#    此处,可以将 IUS 源换成清华大学的镜像源
sudo yum install -y https://mirrors.tuna.tsinghua.edu.cn/ius/ius-release-el7.rpm
or
sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
#    查看 IUS 源 中的 Git版本
sudo yum search git|grep -E "^git2"
#    如果反应太慢也可以直接登录网站查看
https://mirrors.tuna.tsinghua.edu.cn/ius/7/x86_64/packages/g/
or
https://repo.ius.io/7/x86_64/packages/g/
#    安装 Git 2.36 版
sudo yum install -y git236 
#    查询 当前 git 版本
git version
#    此处,Git 进作为服务器的一个功能使用,所以不需要做初始化设置

CentOS 7.9 2207 默认版本 Git

安装 IUS 源

查询 Git 版本

清华大学源

IUS官方源

完成 git 2.36 安装

创建 gitea 用户

#    目前版本的 Gitea 不允许在 root 用户下运行,因此需要单独创建一个 gitea 可以运行的用户账户
#    创建一个名为 gitea 的系统用户、并为其创建家目录、指定Shell、并添加用户备注
sudo useradd \
    -r \
    -m \
    -s /bin/bash \
    -c 'Gitea User' \
    gitea

创建 Gitea 运行及数据 目录

#    创建 Gitea 运行及数据 目录
mkdir -p /data/gitea/data
#    进入 Gitea 运行及数据 目录
cd /data/gitea
#    赋予 /data/gitea/ 及其子目录 读写进入权限
sudo chmod -R ugo+rwx /data/gitea

基本安装

使用二进制包部署

下载 Gitea 二进制安装包

#    下载 最新版本 Gitea 二进制安装包,并改名为gitea
wget -O gitea https://dl.gitea.com/gitea/1.21/gitea-1.21-linux-amd64
#    赋予 gitea 二进制文件 运行权限
sudo chmod +x gitea
#    运行 gitea (一定会报错)
./gitea web
#    验证 Gitea 运行 (查看运行日志)
nohup ./gitea web > gitea.log 2>&1 &

root 用户下运行gitea报错

非root 用户运行正常情况

创建 Gitea 系统服务运行文件

#    使用命令 直接创建 Gitea 系统服务运行文件 
sudo cat <<EOF > /etc/systemd/system/gitea.service
#!/bin/bash
[Unit]
Description=gitea
[Service]
User=gitea
ExecStart=/data/gitea/gitea web
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF


#    重新加载服务配置文件
sudo systemctl daemon-reload
#    启动 Gitea 服务
sudo systemctl start gitea.service
#    设置 Gitea 服务 为开机自启动
sudo systemctl enable gitea.service
#    检查 Gitea 服务 运行状态
sudo systemctl status gitea.service
#    查看Gitea 服务 进程运行信息
ps -ef | grep gitea

防火墙放行 Gitea 服务

#    防火墙放行 Gitea 网页 服务
sudo firewall-cmd --permanent --zone=public --add-port=3000/tcp
#    防火墙放行 Gitea SSH 服务
sudo firewall-cmd --permanent --zone=public --add-port=22/tcp
#    生效 防火墙策略
firewall-cmd --reload

使用 Docker Compose 方式部署 (SQLite版)

#    使用命令 直接创建 Gitea Docker Compose 脚本文件
sudo cat <<EOF > docker-compose.yml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - /data/gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2201:22"
EOF


#    运行 Docker Compose 脚本
sudo docker compose up -d
sudo docker-compose up -d
#    查看 容器 运行情况
sudo docker compose logs
sudo docker-compose logs
#    终止 当前 容器
sudo docker compose down
sudo docker-compose down

使用 Docker Compose 方式部署 (MySQL版)

#    创建 MySQL 运行及数据 目录
mkdir -p /data/mysql
#    使用命令 直接创建 Gitea Docker Compose 脚本文件
sudo cat <<EOF > docker-compose.yml
version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.21
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
+      - GITEA__database__DB_TYPE=mysql
+      - GITEA__database__HOST=db:3306
+      - GITEA__database__NAME=gitea
+      - GITEA__database__USER=gitea
+      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - /data/gitea:/data/
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2201:22"
    depends_on:
      - db

  db:
    image: mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      - gitea
    volumes:
       - /data/mysql:/var/lib/mysql
EOF


#    运行 Docker Compose 脚本
sudo docker compose up -d
sudo docker-compose up -d
#    查看 容器 运行情况
sudo docker compose logs
sudo docker-compose logs
#    终止 当前 容器
sudo docker compose down
sudo docker-compose down

Gitea 初始化设置

网页初始化


#    数据库类型:SQLite3
#    数据库文件路径:{默认}
#    站点名称:{根据需求修改}
#    仓库根目录:{默认}
#    LFS根目录:{默认}
#    以用户名运行:{默认}
#    服务器域名:{根据需求修改}
#    SSH服务端口:{默认}  (就算用Docker 改为别的端口,内部也是默认的22)
#    HTTP 服务端口:{默认} (可以修改,如使用Docker 改为别的端口,则需要修改Dokcer 脚本,并重新运行 Docker)
#    基础 URL: {默认}
#    日志路径:{默认}

如果之前没有对文件夹赋权则会报错

初次登录 Gitea 站点

#    Gitea 站点 URL
http://Server_IP3000

创建首个账号

#    由于初始化配置时没有配置管理员,因此第一个用户会自动变成管理员

用户登录 Gitea

修改 配置文件

#    Gitea 配置文件路径
/data/gitea/custom/conf/app.ini
#    Gitea 配置文件 官方教程
https://docs.gitea.cn/administration/config-cheat-sheet
#    修改完 配置文件后,需要重启 Gitea
#    重新启动 Gitea 服务
sudo systemctl restart gitea.service

Gitea 完整 配置文件内容

; Gitea 站点名称
APP_NAME = FourLeaf Git Server
; Gitea 运行用户
RUN_USER = gitea
; Gitea 运行目录
WORK_PATH = /data/gitea
RUN_MODE = prod

[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD = 
SCHEMA = 
SSL_MODE = disable
PATH = /data/gitea/data/gitea.db
LOG_SQL = false

[repository]
ROOT = /data/gitea/data/gitea-repositories

[server]
SSH_DOMAIN = 172.16.28.125
DOMAIN = 172.16.28.125
HTTP_PORT = 3000
ROOT_URL = http://172.16.28.125:3000/
APP_DATA_PATH = /data/gitea/data
DISABLE_SSH = false
SSH_PORT = 22
; 启用 git-lfs 支持。true 或 false,默认为 false
LFS_START_SERVER = true
LFS_JWT_SECRET = zBwh1huixV55w0FpHA7oLMlpd_Y9B-r2aaMfPkGeFrk
OFFLINE_MODE = false

[lfs]
; 存放 LFS 文件的路径,默认为 data/lfs
PATH = /data/gitea/data/lfs

[mailer]
; Gitea 使用 sendmail 作为邮件传输代理
; 开启或关闭 邮件功能 true / false
ENABLED = false
; FROM = {电子邮件地址}
; MAILER_TYPE   = sendmail
; SENDMAIL_PATH = /usr/sbin/sendmail
; 大多数 "sendmail" 程序都接受选项,使用 "--" 将防止电子邮件地址被解释为选项
; SENDMAIL_ARGS = "--"

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true

[cron.update_checker]
ENABLED = false

[session]
PROVIDER = file

[log]
MODE = console
LEVEL = info
ROOT_PATH = /data/gitea/log

[repository.pull-request]
DEFAULT_MERGE_STYLE = merge

[repository.signing]
DEFAULT_TRUST_MODEL = committer

[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3MDA2MTg5NjB9.YKxX1kUW5N_yjFOspKuNe-qWbH1x4zdAyJo2M4vc1oM
PASSWORD_HASH_ALGO = pbkdf2

[oauth2]
JWT_SECRET = VeHg4gCAvWYE7Fz7f2vWsVzwtYlC12omCWZQxBxqdig

允许上传文件限制 设置

[attachment]
; 是否允许用户上传附件
ENABLED = true
; 允许上传所有文件类型
ALLOWED_TYPES = */*
; 附件的最大限制(MB)
MAX_SIZE = 10240
; 一次最多上传的附件数量
MAX_FILES = 5

; 可选配置
; 附件存储类型,local 将存储到本地文件夹, minio 将存储到 s3 兼容的对象存储服务中
STORAGE_TYPE = local
; 附件存储路径,仅当 STORAGE_TYPE 为 local 时有效
PATH = data/attachments
; Minio URL,仅当 STORAGE_TYPE 是 minio 时有效。
MINIO_ENDPOINT = localhost:9000: 
; Minio accessKeyID,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_ACCESS_KEY_ID = {Minio accessKeyID}
; Minio secretAccessKey,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_SECRET_ACCESS_KEY = {Minio secretAccessKey}
; Minio bucket to store the attachments,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_BUCKET = gitea
;  Minio location to create bucket,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_LOCATION = us-east-1:
; Minio base path on the bucket,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_BASE_PATH = attachments/
; Minio enabled ssl,仅当 STORAGE_TYPE 是 minio 时有效
MINIO_USE_SSL = false

#    允许类型列表
ALLOWED_TYPES = .csv,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.patch,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip: 允许的文件扩展名(.zip)、mime 类型(text/plain)或通配符类型(image/*、audio/*、video/*)的逗号分隔列表。空值或 */* 允许所有类型

电子邮件 设置

[mailer]
ENABLED        = true
FROM           = {电子邮件地址}
MAILER_TYPE    = smtp
SMTP_ADDR      = {SMTP服务器地址}
SMTP_PORT      = 587
IS_TLS_ENABLED = true
USER           = {电子邮件用户名}
PASSWD         = `{电子邮件密码}`

LFS 大文件存储 设置

#    LFS 功能 需要 Git 版本大于 2.1.2

[server]
; 启用 git-lfs 支持。true 或 false,默认为 false。
LFS_START_SERVER = true

[lfs]
; 存放 LFS 文件的路径,默认为 data/lfs。
PATH = /home/gitea/data/lfs

HTTPS 设置

[server]
PROTOCOL  = https
ROOT_URL  = https://{GiteaURL}:3000/
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE  = key.pem

仓库索引器 设置

[indexer]
; ...
; 将排除供应商文件不包含在索引中
REPO_INDEXER_ENABLED = true
REPO_INDEXER_PATH = indexers/repos.bleve
; 选项将使索引器跳过所有大于指定值的文件
MAX_FILE_SIZE = 1048576
; 以逗号分隔的列表,用来表示需要索引的文件,为空表示所有文件
REPO_INDEXER_INCLUDE =
; 以逗号分隔的列表,用来表示需要排除的文件,优先级高于“REPO_INDEXER_INCLUDE”
REPO_INDEXER_EXCLUDE = resources/bin/**

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...