Administrator
发布于 2026-03-11 / 18 阅读
0
0

Ubuntu 搭建企业级轻量代码托管平台

Ubuntu 虚拟机上搭建属于自己的代码托管平台 Gitea

为什么要搭代码托管平台?

  1. 代码的保险箱+时光机:写代码怕删错、改崩?它能记住每一次修改,删错了一键恢复到之前的正常版本,不用找备份

  2. 团队协作不打架:几个人一起写代码,不会出现你改的内容被我覆盖的情况,每个人在自己的小空间写,最后轻松合并

  3. 自动化的开关:后续学自动化部署,比如代码写完自动测试、自动上线,它是第一步,相当于发令枪

简单说:像代码管家

前期准备

  • 已安装 Ubuntu 虚拟机,确保能正常上网

  • 宿主机能和 Ubuntu 连通

步骤一:Ubuntu 环境准备

1.1 更新系统+安装基础工具

  • 系统更新,避免后续安装出错:

sudo apt update && sudo apt upgrade -y
  • 安装 Git:代码管理的基础工具

sudo apt install git -y

1.2 安装 Docker

# 安装 Docker 依赖
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

# 添加 Docker 官方密钥(放心,安全的)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker 核心程序(Docker Compose 依赖 Docker)
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y

# 启动 Docker 并设置开机自启(下次开机不用手动启动)
sudo systemctl start docker
sudo systemctl enable docker

# 给当前用户授权(避免每次输 docker 都要加 sudo)
sudo usermod -aG docker $USER

提示:最后一步执行完,一定要关闭当前终端,重新打开一个,不然后续输 docker 命令容易报错

1.3 验证是否安装成功

  • 重新打开终端后,输下面两个命令,能看到版本号就说明成功了:

# 验证 Git 版本
git --version

# 验证 Docker 版本
docker --version

# 验证 Docker Compose v2 是否自带
docker compose version
  • 结果图

步骤二:Docker Compose 部署 Gitea

2.1 创建文件夹+配置文件

创建一个专门的文件夹,用来保存 Gitea 的配置和代码,避免后续数据丢失:

mkdir -p ~/gitea/{yoko,faye}

#添加权限
chmod -R 755 ~/gitea

# 进入 gitea 文件夹(后续所有操作都在这个文件夹里)
cd ~/gitea

# 创建 Docker Compose 配置文件
cat > ~/gitea/compose.yml << 'EOF'
version: '3'
services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"  # Web 访问端口(后续浏览器要用)
      - "222:22"     # SSH 端口(后续免密码推送要用)
    volumes:
      - ./yoko:/var/lib/gitea  # 数据挂载(yoko文件夹存代码、用户信息)
      - ./faya:/etc/gitea      # 配置挂载(faya文件夹存Gitea设置)
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro" > docker-compose.yml
EOF

# 解决 Docker 启动时权限问题(出现:permission denied)
sudo chmod 666 /var/run/docker.sock
  • 解释

  1. 命令里的 /{yoko,faya} 是快捷写法,不用分开输两次命令

  2. 作用:在gitea 文件夹里,一次性创建两个子文件夹,分别叫 yoko 和 faya,相当于省了一步操作

  3. yoko: 用来存你的代码、用户信息

  4. faya: 用来存 Gitea 的配置(比如端口、账号),都是为了防止后续数据丢失

  • 结果图

  • 如果出现镜像拉不下来/超时的情况

sudo tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": [
    "https://mirrors.tuna.tsinghua.edu.cn/docker-registry/"
  ]
}
EOF

# 重启Docker服务,使镜像源配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker

2.2 启动 Gitea

确保当前终端在 ~/gitea 文件夹下

# 启动 Gitea 后台运行:-d 
docker compose up -d
  • 结果图

2.3 验证 Gitea 是否启动成功

输下面的命令,能看到 gitea 相关的内容,且状态是Up,就说明启动成功了:

docker compose ps
  • 结果图

步骤三:Gitea 网页初始化

宿主机上操作,不用在 Ubuntu 里弄

3.1 找到 Ubuntu 的 IP 地址

# Ubuntu 终端,输下面的命令
ip a
  • 结果图

3.2 访问 Gitea 网页

打开宿主机的浏览器,在地址栏输入:http://你的UbuntuIP:3000

  • 如图:

3.3 关键配置

页面上有很多配置项,不用管大部分,只改下面这几个,其余保持默认:

配置分类

配置项

填入

数据库设置

数据库类型

选 SQLite3

应用基本设置

站点标题

应用名称

应用基本设置

SSH 服务器域名

填你的 Ubuntu IP 地址

应用基本设置

SSH 端口号

填 222 和配置文件里的一致

应用基本设置

应用 URL

填 http://你的UbuntuIP:3000(浏览器一致)

管理员账号设置

用户名/密码/邮箱

admin,密码 123456(后续登录要用)

步骤四:创建第一个代码仓库

  • 登录 Gitea 后:

  1. 点击页面右上角的「+」号,新建仓库

  1. 仓库名称:自己取

  2. 仓库类型:自己选择

  3. 其他选项都不用改,点击最下方的创建仓库

  • 结果图

  • 创建完成后,页面会显示一个仓库地址,先复制http开头的那个地址,存到记事本里,后面要用

  • 如图

步骤五:本地代码推送

这一步在宿主机上操作,不管是 Windows、macOS 还是 Linux,步骤都一样,全程用终端/命令提示符,和部署方式无关

5.1 新建文件夹+测试文件

  1. 在你的电脑上,新建一个文件夹

  2. 打开这个文件夹,新建一个文本文档,命名为 README.md(后缀是 .md,不是 .txt)

  3. 在文档里随便写点内容,保存关闭

  • 如图

5.2 方式1:用 Visual Studio Code 推送

你的电脑已安装 VS Code 没安装的话,去官网下载安装,免费且简单

  1. 打开 VS Code → 点击新建的 gitea 文件夹,打开后,把 README.md 文件拖进VS Code

  1. 首次使用 VS Code 操作 Git,会提示“安装 Git 插件”,点击 安装

  1. 点击 VS Code 左侧的 源代码管理图标,快捷键 Ctrl+Shift+G

  1. 点击 初始化仓库 ,对应终端的 git init 命令,此时会提示“已初始化 Git 仓库”,左侧会显示 README.md 文件,标有 U,代表未跟踪

  1. 点击 README.md 文件右侧的 + 号是暂存更改,对应终端的 git add . 命令,此时文件标有 A,代表已暂存

  1. 在上侧输入框中,输入提交备注 如:My first test file,输入完成后点击上方的,提交更改,对应终端的 git commit 命令

  1. 提交完成后,点击左侧 …→远程→添加远程仓库

  1. 在弹出的输入框中,输入远程仓库名称,默认填 origin 即可,不用改,按回车

  2. 再弹出输入框,粘贴你之前复制的 Gitea 仓库 http://你的UbuntuIP:3000/admin/demo.git,按回车,完成远程仓库关联

  3. 最后,点击左侧 …→ 推送,对应终端的 git push 命令,弹出窗口输入 Gitea 的用户名admin和密码你设置的管理员密码,点击确定,等待推送完成即可,默认推送至 main 分支,无需额外操作

方式2:用终端/命令提示符推送

  1. 打开文件夹,按住 Shift 键,右键点击空白处,选择「在此处打开终端」Windows 或 新建终端(macOS/Linux)

  2. 在终端里,进入你所创建的文件夹,输入以下命令,注意:第4条命令要替换成你刚才复制的仓库地址

# 1. 初始化本地仓库(告诉电脑,这个文件夹要用来存代码)
git init

# 2. 将测试文件添加到仓库(相当于“打包”文件)
git add .

# 3. 提交代码(备注一下这次提交的内容,括号里的内容可以改)
git commit -m "Initial commit: My first test file"

# 4. 关联 Gitea 仓库(替换成你复制的 HTTP 地址)
git remote add origin http://你的UbuntuIP:3000/你的用户名/the-first-repo.git

# 5. 推送代码到 Gitea(首次推送加 -u,后续不用)
git push -u origin main

5.3 关键提示

执行第5条命令后,会弹出一个窗口,让你输入 Gitea 的「用户名」和「密码」(就是你之前设置的管理员账号密码),输入后点击确定,等待推送完成

如果看到类似下面的内容,就说明推送成功了:

进阶操作:配置 SSH 密钥(免密码推送,可选)

如果觉得每次推送都要输账号密码麻烦,可以配置 SSH 密钥,配置后推送不用输密码

1. 宿主机生成 SSH 密钥

打开宿主机的终端

ssh-keygen -t ed25519 -C "你的Gitea注册邮箱"

# 查看密钥内容 (保存后续有用)
cat ~/.ssh/id_ed25519.pub

密钥生成路径(找到这个文件):

  • Windows:C:\Users\你的用户名\.ssh\id_ed25519.pub

  • macOS/Linux:~/.ssh/id_ed25519.pub

2. 复制公钥到 Gitea

  1. 用记事本打开上面的 .pub 文件,全选里面的内容,复制;

  2. 登录 Gitea → 点击右上角头像 → 选择设置 → 左侧找到 SSH/GPG 密钥 → 点击SSH 增加密钥

  3. 标题随便填(比如“宿主机密钥”),将复制的内容粘贴到密钥内容框,点击增加密钥

3. 测试免密码推送

回到宿主机的终端,输入下面的命令(替换成你的 SSH 地址,在 Gitea 仓库页面复制SSH开头的地址):

# 先移除之前的 HTTP 地址
git remote remove origin

# 添加 SSH 地址(替换成你的地址,格式:ssh://git@UbuntuIP:222/用户名/demo.git)
git remote add origin ssh://git@172.16.197.133:222/admin/demo.git

# 测试推送(不用输密码)
git push origin main

出现以下内容代表 SSH 密钥配置好了


评论