Gitea 是一个免费的开源软件包,用于自托管 Git 服务器。 它还提供协作功能,如错误跟踪、维基和代码审查。 Gitea 是一个社区驱动的轻量级代码解决方案,用 Go 编写。
开发人员在工作时需要定期将他们的代码更改合并到一个中央存储库中。 您可能需要为您的团队拥有一个私人中央存储库,您将自己托管和管理该存储库。 为此,您可以使用 Gitea。 它类似于 GitHub、Bitbucket 等。
在本教程中,我们将学习如何 使用 docker 安装 Gitea 在 Ubuntu 20.04.
先决条件
- 一个安装了 Ubuntu 20.04 的节点
- 一个用户 sudo 特权
第 1 步:在 Ubuntu 上安装 Docker
Gitea 从 Docker 中心提供其 Docker 镜像的最新稳定版本。 它可以从源代码、二进制文件以及作为包安装。 这里我们部署为 Docker 镜像。
要安装 docker,您需要安装一些先决条件:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
现在让我们添加 docker 存储库的 GP 密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
现在将 Docker 添加到 APT 源。 它会自动更新缓存。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
现在使用以下命令安装 docker:
$ sudo apt install docker-ce
将用户添加到 docker 组,以便可以使用 docker 命令而无需 sudo 特权:
$ sudo usermod -aG docker username
第 2 步:运行 Nginx docker
要启用 HTTPS,您可以使用 TLS 终止代理,例如 Nginx、Apache2 或 Caddy。 在我们的例子中,我们将运行一个独立的容器作为我们的 Nginx 反向代理。
$ docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/nginx/htpasswd:/etc/nginx/htpasswd -v /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro -v /etc/nginx/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro etopian/nginx-proxy
当您集成证书时,它将帮助我们将所有默认 HTTP 流量重定向到 HTTPS。 您应该注意到映射卷以集成您的证书 /etc/nginx/certs
现在在防火墙上打开端口 80 和 443:
$ sudo ufw allow 80,443/tcp
另外,请确保在启用 UFW 之前打开 ssh(如果尚未启用)
$ sudo ufw allow 'OpenSSH'
如果还没有,现在启用 UFW
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
第 3 步:运行 MySQL docker
Gitea 需要一个数据库来保存它的数据。 Gitea 支持 MySQL/MariaDB、PostgreSQL、SQLite 和 MSSQL。 在这里,我们将运行一个 MySQL 容器来保存所有数据。
$ docker run -d --name mysql-gitea -e [email protected] -v /opt/docker-volume/mysql-gitea:/var/lib/mysql mysql:5.7
我们可以检查我们的容器是否正在运行
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql-gitea ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 24 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
默认情况下,Gitea 侦听端口 3000 上的连接以及 HTTP 和 HTTPS 端口上的反向代理。 如果您有防火墙,请确保打开端口以访问 Gitea Web 界面。
让我们看看我们的 MySQL 容器的一些细节,比如 IP 地址,因为我们稍后会需要它
$ docker inspect mysql-gitea
[ { "Id": "6d41fec8b0e4b6ca465444d5cfea11913decddfd7586f4796702463cf08897fe", "Created": "2021-10-21T23:48:20.709365573Z", ... ... "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "3f0b32613606db9e0761af15b7fa5d7f7c3b86f4d3b4668d574c579b9468915f", "EndpointID": "f029fc1797c70d090da19d30cb31ca34c1b6baf4537a807397e931f87262f867", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03", "DriverOpts": null } ... ...
现在让我们连接到 MySQL 容器
$ docker container exec -it mysql-gitea bash
然后访问MySQL命令行
# mysql -u root [email protected]
现在为 Gitea 创建数据库和用户
mysql> CREATE USER 'gitea-user'@'%' IDENTIFIED BY '[email protected][email protected]';
mysql> CREATE DATABASE giteadb;
mysql> GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea-user'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit;
现在也退出容器
# exit;
步骤 4:配置 SSL 证书
为了通过安全域名访问您的 Gitea,您需要将 SSL 证书复制到 Nginx 文件夹中。 您可以使用免费的 Let’s Encrypt 证书或来自证书颁发机构的证书。
复制证书
$ cp gitea.websitefortesting.com.crt /etc/nginx/certs/
复制密钥
$ cp gitea.websitefortesting.com.key /etc/nginx/certs/
第五步:运行Gitea docker
运行Gitea,我们需要指明之前已经启动的MySQL容器的一些信息,例如:
- 数据库类型 mysql
- mysql容器的地址ip
- 数据库名称
- 数据库用户名
- 数据库用户密码
- gitea 使用的端口
$ docker run -d --name gitea-selfhosted -v /opt/docker-volume/gitea-selfhosted:/data -p 3000:3000 -e VIRTUAL_HOST=gitea.websitefortesting.com -e VIRTUAL_PORT=3000 -e USER_UID=1001 -e USER_GID=1001 -e DB_TYPE=mysql -e DB_HOST=172.17.0.3:3306 -e DB_NAME=giteadb -e DB_USER=gitea-user -e [email protected][email protected] gitea/gitea:1.8
我们可以检查它是否正在运行
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 321b870a0735 gitea/gitea:1.8 "/usr/bin/entrypoint…" 11 seconds ago Up 10 seconds 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp gitea-selfhosted 6d41fec8b0e4 mysql:5.7 "docker-entrypoint.s…" 2 hours ago Up 3 minutes 3306/tcp, 33060/tcp mysql-gitea ec9d83a3944e etopian/nginx-proxy "forego start -r" 3 days ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
现在您可以尝试使用 URL https://giteadomain.com 访问 Gitea
现在转到“登录”以继续安装过程。 您可以个性化一些信息,例如站点标题。
![Gitea 网页界面数据库设置](https://adatiya.com/images/uploads/sites/7/1635171497.png)
确保在必要的地方指明域名。 还要指出管理员帐户的信息
![Gitea Web 界面域和 admin 帐号设定](https://adatiya.com/images/uploads/sites/7/1635171499.png)
安装完成后,您将登录
![吉泰仪表盘](https://adatiya.com/images/uploads/sites/7/1635171502.png)
您可以创建一个新的存储库
![创建新的存储库](https://adatiya.com/images/uploads/sites/7/1635171503.png)
你有第一个仓库
![Gitea第一个repo](https://adatiya.com/images/uploads/sites/7/1635171505.png)
结论
现在您知道在 Ubuntu 20.04 上使用 Docker 安装 Gitea 的所有步骤——您的代码的私有中央存储库。 您将能够根据您的需要管理它。