130 lines
4.1 KiB
Markdown
130 lines
4.1 KiB
Markdown
---
|
||
title: 使用 Podman 在 Linux 上部署 Gitea
|
||
date: 2025-01-03
|
||
categories: [科技, 自托管]
|
||
---
|
||
|
||
**声明:如本文之中、英文版本有任何歧义,均以英文版为准。我们会尽力保证中文版的准确性。**
|
||
|
||
Gitea 是一个轻量级的自托管 DevOps 平台,提供 Git 托管、代码审查、团队协作、软件包注册和 CI/CD 等功能。
|
||
为确保 Gitea 满足您的需求,建议在安装前阅读 Gitea 与其他竞品(如 GitLab 社区版)的[对照表](https://docs.gitea.com/installation/comparison)。
|
||
|
||
## 安装 Podman [^1]
|
||
|
||
Podman 可以通过包管理器安装(推荐)或手动从源代码构建。
|
||
|
||
```bash
|
||
# Debian & Ubuntu
|
||
sudo apt-get install podman
|
||
# Arch & Manjaro
|
||
sudo pacman -S podman
|
||
# Alpine
|
||
sudo apk add podman
|
||
```
|
||
|
||
如果您使用的是 RHEL,请参阅 Red Hat 知识库中对应的[文档](https://access.redhat.com/solutions/3650231)。
|
||
|
||
## 安装 Podman Compose [^2]
|
||
|
||
Podman 本体不支持 [Compose 规范](https://compose-spec.io)。要使用类似 Docker Compose 的功能,我们需要安装一个由社区维护的实用程序 Podman Compose。
|
||
|
||
另,Podman 原生支持 Kubernetes,您也可以使用 Kubernetes 的配置文件来运行 Gitea。
|
||
|
||
建议使用 pip(Python 的包管理器)安装 Podman Compose。
|
||
|
||
``` bash
|
||
sudo apt-get install python3-pip -y
|
||
pip3 install podman-compose
|
||
```
|
||
|
||
如果遇到 *externally-managed-environment* 的错误,可以尝试以下两种解决方案。
|
||
|
||
```bash
|
||
# 使用 pipx
|
||
sudo apt-get install pipx -y
|
||
sudo pipx ensurepath --global
|
||
pipx install podman-compose
|
||
|
||
# 创建虚拟环境
|
||
# 若使用此方法,您只能在当前文件夹中使用 podman-compose
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install podman-compose
|
||
```
|
||
|
||
## 撰写 Compose 文件 [^3]
|
||
|
||
Podman Compose 使用与 Docker Compose 相同的语法。因此您甚至可以直接复制 Gitea 官方文档中的 docker-compose.yml 文件。
|
||
|
||
以下是我的 Compose 文件,供参考。
|
||
|
||
```yaml
|
||
services:
|
||
gitea:
|
||
image: docker.io/gitea/gitea:latest
|
||
container_name: gitea
|
||
restart: unless-stopped
|
||
network_mode: host
|
||
environment:
|
||
- USER_UID=1000
|
||
- USER_GID=1000
|
||
volumes:
|
||
- /usr/local/gitea/data:/data
|
||
- /etc/timezone:/etc/timezone:ro
|
||
- /etc/localtime:/etc/localtime:ro
|
||
```
|
||
|
||
使用上述配置需要执行以下命令。
|
||
|
||
```bash
|
||
# 创建 Gitea 的目录
|
||
mkdir /usr/local/gitea /usr/local/gitea/data
|
||
# 允许容器对数据文件夹进行读写
|
||
chown 1000:1000 /usr/local/gitea/data
|
||
# 运行 podman compose
|
||
podman-compose up -d
|
||
```
|
||
|
||
注意:Gitea 默认使用 SQLite 数据库。如果需要使用外部数据库(MySQL 或 PostgreSQL),请在 Gitea 配置部分后添加相应的配置。
|
||
|
||
## 配置 Gitea
|
||
|
||
在启动容器后,您应该访问 `http://SERVER_IP:3000`,并按照安装向导进行操作。第一个注册的用户将成为站点管理员。
|
||
|
||
此后,您可以在 `CUSTOM_FOLDER/gitea/conf/app.ini` 中找到 Gitea 的配置文件,其中包含您之前在安装向导中输入的设置信息。
|
||
|
||
### 邮件通知 [^4]
|
||
|
||
Gitea 支持以下协议:smtp、smtps、smtp+starttls、smtp+unix、sendmail、dummy。最常用的是 smtps,如果不确定使用哪种协议,请选择 smtps。
|
||
|
||
FROM 属性的值应为类似`发件人名称 <电子邮件地址>`的格式,例如 `Gitea <git@example.com>`。您也可以直接输入电子邮件地址 `git@example.com`。
|
||
|
||
如果您的密码包含特殊字符,请在密码两侧加上单引号 (`'`)。
|
||
|
||
```
|
||
[mailer]
|
||
ENABLED = true
|
||
FROM =
|
||
PROTOCOL =
|
||
SMTP_ADDR =
|
||
SMTP_PORT =
|
||
USER =
|
||
PASSWD =
|
||
```
|
||
|
||
### 其他设置
|
||
|
||
请查阅[配置说明](https://docs.gitea.com/zh-cn/administration/config-cheat-sheet)以了解更多配置项的说明,例如 SSL、Git LFS 和 Oauth。
|
||
|
||
## 结语
|
||
|
||
现在,您可以使用您的 Gitea 实例了。
|
||
|
||
[^1]: Podman 官方文档
|
||
https://podman.io/docs/installation
|
||
[^2]: Podman Compose Github 仓库
|
||
https://github.com/containers/podman-compose
|
||
[^3]: Gitea 官方文档:*使用 Docker 安装*
|
||
https://docs.gitea.com/zh-cn/installation/install-with-docker
|
||
[^4]: Gitea 官方文档:*Email 设置*
|
||
https://docs.gitea.com/zh-cn/administration/email-setup |