Ubuntu使用docker安装gitea:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| 第265行: | 第265行: | ||
整个过程只需要等待镜像拉取和容器启动,数据和配置完整保留。 | 整个过程只需要等待镜像拉取和容器启动,数据和配置完整保留。 | ||
== 八、更改域名 == | |||
除了更dns和ngnix配置外,需修改gitea配置 /data/gitea/conf/app.ini并重启: | |||
<source lang="xml"> | |||
[server] | |||
DOMAIN = git.your-new-domain.com | |||
SSH_DOMAIN = git.your-new-domain.com | |||
ROOT_URL = https://git.your-new-domain.com/ | |||
</source> | |||
2026年6月23日 (二) 05:54的版本
安装docker
推荐使用官方apt仓库安装
这是官方推荐的标准方法,步骤稍多但最可靠。
1. 安装依赖
首先,更新软件包索引并安装必要的软件包,以便apt能通过HTTPS使用仓库。
bash
sudo apt update
sudo apt install ca-certificates curl gnupg2. 添加Docker官方GPG密钥
这一步是为了验证下载软件包的真实性,防止恶意篡改。
bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg3. 设置Docker稳定版仓库
将Docker的官方软件源添加到系统中,系统会自动识别你的Ubuntu版本。
bash
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null4. 安装Docker Engine
更新软件包索引并安装Docker及其核心组件。推荐安装包含最新插件(如docker-compose插件)的完整版。
bash
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin二、docker配置与验证
1. 启动并设置开机自启
bash
sudo systemctl enable --now docker此命令会立即启动Docker服务,并设置其在系统启动时自动运行。
2. 验证安装是否成功
运行一个简单的测试容器,如果看到成功消息,说明Docker已正确安装。
bash
sudo docker run hello-world3. (可选)允许普通用户运行Docker命令
默认情况下,docker命令需要使用sudo。为避免每次输入密码,可以将当前用户添加到docker用户组。
bash
sudo usermod -aG docker $USER
# 刷新组权限(或者注销重新登录)
newgrp docker执行此命令后,需要注销并重新登录,或运行newgrp docker命令,组权限才会生效。
4. (可选)配置国内镜像加速器
如果拉取Docker镜像速度缓慢,可以配置国内的镜像加速器。创建或编辑Docker配置文件:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.1ms.run", "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker安装gitea
一、准备工作
1. 确保Docker和Docker Compose已安装
检查Docker是否已安装
docker --version
docker compose version如果未安装,可以参考之前的教程先安装Docker。
2. 创建Gitea工作目录
创建一个干净的目录,所有Gitea相关文件都会放在这里
mkdir -p ~/gitea/{data,config}
cd ~/gitea这个 ~/gitea 目录就是未来迁移时需要整体打包的目录。
二、创建docker-compose.yml
使用以下命令创建配置文件:
bash
nano docker-compose.yml粘贴以下内容:
services:
server:
# 使用官方稳定镜像
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
# 容器内运行用户的UID/GID,默认1000即可,无需手动创建系统用户
- USER_UID=1000
- USER_GID=1000
volumes:
# 数据持久化:所有仓库、配置、数据库都挂载到本地目录
- ./data:/data
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" # Web访问端口
- "2222:22" # SSH访问端口(映射到2222,避免与主机SSH冲突)关于用户设置的说明:
这里的 USER_UID=1000 和 USER_GID=1000 是指定容器内部运行Gitea进程的用户ID 不需要在宿主机上手动创建 git 系统用户 1000 通常是Ubuntu第一个普通用户的UID,如果你当前的普通用户UID不是1000,可以用 id -u 查看后替换
三、启动Gitea
bash
# 启动服务(后台运行)
docker compose up -d
# 重启gitea
docker restart gitea
docker-compose restart gitea #docker-compose部署
# 查看运行状态
docker compose ps
# 重新读取配置文件,并让 Docker 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看日志(如有问题)
docker compose logs四、Web界面初始化
打开浏览器访问:http://你的服务器IP:3000
首次访问会进入安装页面:
数据库设置:保持默认的 SQLite3(最简单,无需额外数据库容器)
站点标题:填写你的站点名称
基础URL:填写 http://你的服务器IP:3000(如有域名则填域名)
创建管理员账户:
滚动到页面下方,展开「可选设置」→「管理员账户设置」
填写用户名、邮箱、密码
点击「安装Gitea」完成
五、配置SSH访问(推荐)
如果你希望通过SSH协议推送代码(而不是HTTPS),需要进行额外配置。
方法一:使用容器SSH端口(推荐)
在Gitea的Web界面中:
登录管理员账户
进入「站点管理」→「配置」
找到 SSH 配置:
SSH 服务器域名:填写你的服务器IP或域名
SSH 端口:填写 2222(因为我们在docker-compose.yml中映射的是2222)
用户在克隆仓库时会看到:ssh://git@服务器IP:2222/用户名/仓库名.git
🎯注意:一旦通过 SSH_PORT 指定了一个非 22 的端口,Gitea 就无法再“借用”外部默认的 SSH 服务了,START_SSH_SERVER = true 就成了启动内置服务的“强制要求”。
官方 Helm Charts 对此有一段权威的解释:
"For rootful Gitea images, the built-in OpenSSH server is reused, and Gitea itself does not listen on any SSH port. Therefore, the SSH_LISTEN_PORT setting has no effect. Explicitly setting START_SSH_SERVER helps avoid confusion and makes the behavior clearer."
简单翻译:对于在 root 用户下运行的 Gitea 容器(最常见的情况),它会默认复用宿主机的 SSH 服务 (openssh-server)。此时,Gitea 程序本身不监听任何端口,SSH_LISTEN_PORT 设置也完全无效。所以,即使你不写 START_SSH_SERVER = true,它也不启动内置服务。
这就是为什么,通常在默认端口 22 下,即使不显式设置,SSH 也能“用”(实际上是复用宿主机的服务)。很多配置文章里提到“必须设置为 true”,其实恰恰就是因为它们都在修改默认的 SSH 端口。
方法二:使用宿主机SSH(高级,暂不推荐)
此方式需要配置宿主机的SSH服务转发到Docker容器,过程较复杂,建议先用方法一。
六、目录结构说明
~/gitea/ ├── docker-compose.yml # 配置文件(迁移时复制) ├── data/ # 核心数据:仓库、附件、头像等(迁移时复制) └── config/ # Gitea配置文件 app.ini(迁移时复制)
七、未来迁移步骤(尚未验证)
迁移时只需要打包整个 ~/gitea 目录,在新服务器上解压后执行 docker compose up -d 即可。
当你需要更换服务器时:
bash
# 1. 在旧服务器上打包
tar -czf gitea-backup.tar.gz ~/gitea/
# 2. 传到新服务器
scp gitea-backup.tar.gz 用户名@新服务器IP:~
# 3. 在新服务器上(已安装Docker)
tar -xzf gitea-backup.tar.gz
cd ~/gitea
docker compose up -d整个过程只需要等待镜像拉取和容器启动,数据和配置完整保留。
八、更改域名
除了更dns和ngnix配置外,需修改gitea配置 /data/gitea/conf/app.ini并重启:
[server]
DOMAIN = git.your-new-domain.com
SSH_DOMAIN = git.your-new-domain.com
ROOT_URL = https://git.your-new-domain.com/