如何在 Ubuntu 20.04 上安装 Gitea

2023-11-13

Gitea 是一个用 Go 编写的快速且易于使用的自托管 git 服务器。它包括存储库文件编辑器、项目问题跟踪、用户管理、通知、内置 wiki 等等。

Gitea是一个轻量级应用程序,可以安装在低功耗系统上。如果您正在寻找内存占用小得多的 Gitlab 替代品,并且您不需要所有附加功能Gitlab提供,那么你应该尝试一下 Gitea。

本文介绍如何在 Ubuntu 20.04 上安装和配置 Gitea。

先决条件#

Gitea 支持 SQLite,PostgreSQL , and MySQL /MariaDB作为数据库后端。

仅建议小型安装使用 SQLite。较大的安装应使用 MySQL 或 PostgreSQL。

我们将使用 SQLite 作为 Gitea 的数据库。如果您的 Ubuntu 系统上未安装 SQLite,请输入以下命令来安装它:须藤用户 :

sudo apt updatesudo apt install sqlite3

安装Gitea#

Gitea 提供 Docker 镜像,可以从源代码、二进制文件或软件包的形式安装。我们将从二进制安装 Gitea。

安装Git#

第一步是安装Git在您的服务器上:

sudo apt updatesudo apt install git

通过显示 Git 版本来验证安装:

git --version
git version 2.25.1

创建 Git 用户#

创建新的系统用户这将通过键入以下内容来运行 Gitea 应用程序:

sudo adduser \   --system \   --shell /bin/bash \   --gecos 'Git Version Control' \   --group \   --disabled-password \   --home /home/git \   git

上面的命令创建一个名为的新用户和组git,并将主目录设置为/home/git。输出如下所示:

Adding system user `git' (UID 112) ...
Adding new group `git' (GID 118) ...
Adding new user `git' (UID 112) with group `git' ...
Creating home directory `/home/git' ...

下载 Gitea 二进制文件#

前往吉泰亚下载页面并下载适合您的架构的最新二进制文件。在撰写本文时,最新版本是 1.10.2。如果有新版本可用,请更改VERSION下面的命令中的变量。

Use wget下载 Gitea 二进制文件/tmp目录:

VERSION=1.14.1sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64

您可以运行gitea来自任何位置的二进制文件。我们将遵循约定并将二进制文件移动到/usr/local/bin目录:

sudo mv /tmp/gitea /usr/local/bin

使二进制可执行文件:

sudo chmod +x /usr/local/bin/gitea

运行以下命令创建目录并设置所需的权限所有权 :

sudo mkdir -p /var/lib/gitea/{custom,data,log}sudo chown -R git:git /var/lib/gitea/sudo chmod -R 750 /var/lib/gitea/sudo mkdir /etc/giteasudo chown root:git /etc/giteasudo chmod 770 /etc/gitea

上面的目录结构是Gitea官方文档推荐的。

的权限/etc/gitea目录设置为770以便安装向导可以创建配置文件。安装完成后,我们将设置更严格的权限。

创建 Systemd 单元文件#

我们将把 Gitea 作为 systemd 服务运行。

将示例 systemd 单元文件下载到/etc/systemd/system目录,输入:

sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/

您不需要编辑该文件,它已配置为与我们的设置相匹配。

启用并启动Gitea服务:

sudo systemctl daemon-reloadsudo systemctl enable --now gitea

验证 Gitea 是否正在运行:

sudo systemctl status gitea
● gitea.service - Gitea (Git with a cup of tea)
     Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-05-06 05:32:04 UTC; 7s ago
   Main PID: 77781 (gitea)
      Tasks: 6 (limit: 470)
     Memory: 130.6M
     CGroup: /system.slice/gitea.service
             └─77781 /usr/local/bin/gitea web --config /etc/gitea/app.ini
...

配置Gitea#

现在 Gitea 已下载并运行,我们可以通过 Web 界面完成安装。

默认情况下,Gitea 监听端口上的连接3000在所有网络接口上。

如果你有一个UFW防火墙在您的服务器上运行时,您需要打开 Gitea 端口。允许端口上的流量3000,输入以下命令:

sudo ufw allow 3000/tcp

打开浏览器,输入http://YOUR_DOMAIN_IR_IP:3000,并且将出现类似以下的屏幕:

数据库设置:

  • 数据库类型:SQLite3
  • 路径:使用绝对路径,/var/lib/gitea/data/gitea.db

应用程序常规设置:

  • 站点标题:输入您的组织名称。
  • 存储库根路径:保留默认值var/lib/gitea/data/gitea-repositories.
  • Git LFS 根路径:保留默认值/var/lib/gitea/data/lfs.
  • 运行用户名:git
  • SSH 服务器域:输入您的域或服务器 IP 地址。
  • SSH端口:22,如果是SSH则更改它监听其他端口
  • Gitea HTTP 监听端口:3000
  • Gitea 基本 URL:使用 http 和您的域或服务器 IP 地址。
  • 日志路径:保留默认值/var/lib/gitea/log
您可以随时通过编辑 Gitea 配置文件来更改设置。

要开始安装,请点击“安装 Gitea”按钮。

安装是即时的。完成后,您将被重定向到登录页面。

单击“需要帐户?现在注册。”关联。第一个注册用户会自动添加到管理员组。

改变权限使用以下命令将 Gitea 配置文件设置为只读:

sudo chmod 750 /etc/giteasudo chmod 640 /etc/gitea/app.ini

就是这样。 Gitea 已安装在您的 Ubuntu 计算机上。

将 Nginx 配置为 SSL 终止代理#

此步骤是可选的,但强烈建议这样做。 SSL 终止意味着 Nginx 将充当 Gitea 应用程序和 Web 客户端之间的中间点,以便您可以通过 HTTPS 访问 Gitea。

To use Nginx 作为反向代理,您需要有一个指向您服务器的公共IP的域或子域。在这个例子中,我们将使用git.example.com.

首先,安装 Nginx 并使用以下指南生成免费的 Let’s Encrypt SSL 证书:

  • 如何在 Ubuntu 20.04 上安装 Nginx
  • 在 Ubuntu 20.04 上使用 Let’s Encrypt 保护 Nginx

完成后,打开文本编辑器并编辑域服务器块 file:

sudo nano /etc/nginx/sites-enabled/git.example.com
/etc/nginx/sites-enabled/git.example.com
server {
    listen 80;
    server_name git.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://git.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    client_max_body_size 50m;

    # Proxy headers
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/git.example.com/chain.pem;
    include snippets/letsencrypt.conf;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/git.example.com.access.log;
    error_log /var/log/nginx/git.example.com.error.log;

    # Handle / requests
    location / {
       proxy_redirect off;
       proxy_pass http://127.0.0.1:3000;
    }
}

不要忘记将 git.example.com 替换为您的 Gitea 域,并设置 SSL 证书文件的正确路径。这HTTP 流量重定向到 HTTPS

重启Nginx服务使更改生效:

sudo systemctl restart nginx

接下来,更改 Gitea 域和根 url。为此,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini
[server]
DOMAIN           = git.example.com
ROOT_URL         = https://git.example.com/

输入以下命令重新启动 Gitea 服务:

sudo systemctl restart gitea

至此,Gitea代理就配置完成了,您可以通过以下地址访问它:https://git.example.com

配置电子邮件通知#

如果您希望 Gitea 实例发送通知电子邮件,您可以安装 Postfix 或使用某些事务性邮件服务,例如 SendGrid、MailChimp、MailGun 或 SES。

要启用电子邮件通知,请打开配置文件并编辑以下行:

sudo nano /etc/gitea/app.ini
/etc/gitea/app.ini
[mailer]
ENABLED = true
HOST    = SMTP_SERVER:SMTP_PORT
FROM    = SENDER_EMAIL
USER    = SMTP_USER
PASSWD  = YOUR_SMTP_PASSWORD

确保输入正确的 SMTP 服务器信息。

重新启动 Gitea 服务以使更改生效:

sudo systemctl restart gitea

要验证设置并发送测试电子邮件,请登录 Gitea,然后转至:站点管理 > 配置 > SMTP 邮件程序配置。

Gitea 还允许您通过创建一个连接到 Slack网络钩子并向您发送通知松弛通道 .

升级Gitea#

要升级到最新的 Gitea 版本,只需下载并替换二进制文件即可。

  1. 停止 Gitea 服务:

    sudo systemctl stop gitea
  2. 下载最新的 Gitea 版本并将其移至/usr/local/bin目录:

    VERSION=<THE_LATEST_GITEA_VERSION>wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64sudo mv /tmp/gitea /usr/local/bin
  3. 使二进制可执行文件:

    sudo chmod +x /usr/local/bin/gitea
  4. 重启Gitea服务:

    sudo systemctl restart gitea

就是这样。

结论#

本教程引导您完成在 Ubuntu 20.04 上安装 Gitea。有关如何配置 Gitea 实例和创建第一个项目的更多信息,请访问Gitea 文档页面 .

如果您有疑问,请随时在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 20.04 上安装 Gitea 的相关文章

  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • Rabbitmq 忽略 Ubuntu 12 上的配置

    I have rabbitmq server从系统包安装乌班图12 无论我做什么 它似乎都会忽略任何配置文件 网络上的所有内容都表明服务器正在寻找 etc rabbitmq rabbitmq conf 但即使我创建该文件 服务器也报告没有配
  • 如何关闭分支而不将其从 git 的历史记录中删除?

    我想提交并关闭其分支 而不将其从历史中删除 有了水银我会commit close branch then update转到上一个 然后继续工作 有了 git 我很困惑 没有与 Git 中关闭分支完全相同的方法 因为 Git 分支比 Merc
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • Shift 键在我的 emacs 中不起作用

    I run emacs in gnome terminal with nw option it works well except for some key shortcuts that include the shift key For
  • 如何在 ubuntu 上将 phantomjs 1.9.8 更新到 phantomjs 2.1.1?

    我无法在 ubuntu 16 04 上重新安装 phantomjs 1 9 8 至 2 1 1 版本 请帮忙 1 9 8 当我编写旋转函数时出现错误 在文档中看到这个问题我可以通过重新安装来解决 我刚刚在 ubuntu 16 04 中安装了
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • 从网络中的另一台计算机访问本地GAE SDK服务器

    我有开发服务器 来自 google appengine sdk 在我的 Ubuntu 计算机上运行 我可以通过导航到 localhost 8080 来访问我的网站 我想从网络中的另一台计算机 装有 Vista 操作系统 访问该站点 ifco
  • 如何在源代码管理中存储 Visual Studio 的调试配置

    Visual Studio 的调试配置存储在 user文件是用户特定的并且传统上被源代码管理忽略 我对工作目录参数感兴趣 我需要它在程序员的机器上保持一致 并且它具有以下价值 outDir而不是默认的 ProjectDir 我怎样才能解决这
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31

随机推荐

  • 如何在 CentOS/RHEL 8 上安装 PHP 8

    PHP 8 0 是 PHP 团队于 2020 年 11 月 26 日发布的重大更新 较之前版本包含大量新功能和优化 要了解更多信息 请阅读PHP 8 变更日志 REMI 和 EPEL 是最流行的存储库 包含用于安装的最新 RPM 软件包 它
  • 什么是开放系统互连 (OSI) 模型?

    The 开放系统互连 OSI 模型是网络中的一个重要概念 您必须理解它才能掌握数据在网络中传输的方式 如果您是网络世界的新手 这份综合指南将为您提供 OSI 模型的扎实介绍 什么是 OSI 模型 OSI 模型是一个概念框架 用于标准化通信或
  • 如何将 Ubuntu 升级到 22.04 LTS (Jammy Jellyfish)

    Ubuntu 22 04 LTS Jammy Jellyfish 已于 2022 年 4 月 21 日发布 该版本将支持到 2027 年 升级谁 Ubuntu 桌面和开发用户可以立即升级到 Ubuntu 22 04 LTS 但Ubuntu服
  • 使用 Curl 传递自定义标头:实用指南

    Curl 是一个强大的命令行工具 世界各地的开发人员都使用它来通过 URL 传输数据 Curl 是一种多功能工具 支持各种协议 例如 HTTP HTTPS FTP 等 Curl 的宝贵功能之一是它能够在发出请求时传递自定义标头 本文旨在深入
  • Linux 中的 ls 命令(列出文件和目录)

    ls是任何 Linux 用户都应该知道的基本命令之一 The ls命令列出文件系统中的文件和目录 并显示有关它们的详细信息 它是安装在所有 Linux 发行版上的 GNU 核心实用程序包的一部分 本文将通过实际示例和最常见 ls 选项的详细
  • 如何在 CentOS 7 上安装 WildFly (JBoss)

    WildFly 以前称为 JBoss 是一个用 Java 编写的跨平台开源应用程序运行时 可帮助您构建令人惊叹的应用程序 WildFly 灵活 轻量 并且基于可根据需要添加或删除的可插拔子系统 本教程介绍如何在 CentOS 7 上安装 W
  • 如何在 CentOS 上启用 EPEL 存储库

    EPEL Extra Packages for Enterprise Linux 存储库提供了标准 Red Hat 和 CentOS 存储库中未包含的附加软件包 创建 EPEL 存储库是因为 Fedora 贡献者希望使用他们在 Red Ha
  • Linux 中的 who 命令

    在这篇文章中 我们解释了who捆绑在 GNU coreutils 包中的命令 who是一个命令行实用程序 用于打印当前登录用户的列表 它还可以显示当前的运行级别 上次系统启动的时间等 如何使用who命令 的基本语法为who命令如下 who
  • 如何在 Linux 中截断(空)文件

    在某些情况下 您可能希望将现有文件截断 清空 至零长度 简单来说 截断文件就是删除文件内容而不删除文件 截断文件比截断文件更快更容易删除文件 重新创造它 并设置正确的权限和所有权 此外 如果该文件由进程打开 则删除该文件可能会导致使用该文件
  • 如何在 CentOS 8 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 允许您构建容错环境或复杂的应用程序 在本指南中 我们将讨论如何在 CentOS 8 上安装 PostgreSQL 数据库服务器 在选择安装哪
  • 如何在 Ubuntu 18.04 上安装 Pip

    Pip 是一个包管理系统 可简化用 Python 编写的软件包 例如 Python 包索引 PyPI 中的软件包 的安装和管理 Ubuntu 18 04 上默认不安装 Pip 但安装非常简单 在本教程中 我们将向您展示如何使用 Ubuntu
  • 如何在 Debian 9 上安装 Go

    Go 是 Google 创建的一种现代开源编程语言 用于构建可靠 简单 快速 高效的软件 许多流行的应用程序 包括 Kubernetes Docker Teraform 和 Grafana 都是用 Go 编写的 在本教程中 我们将引导您完成
  • 如何在 Ubuntu 20.04 上安装 Sublime Text 3

    崇高的文字是用于网络和软件开发的流行文本和源代码编辑器 它速度非常快 并且具有许多开箱即用的强大功能 可以通过安装新插件和创建自定义设置来增强和自定义该应用程序 本文介绍如何在 Ubuntu 20 04 上安装 Sublime Text 3
  • 如何在 Ubuntu 20.04 上安装 Chromium Web 浏览器

    Chromium是一款专为现代网络打造的快速 稳定且安全的浏览器 它是许多浏览器的基础 包括世界上最流行的网络浏览器谷歌浏览器 Chromium 和 Chrome 之间的主要区别在于 Chromium 是开源的 Chromium 不包含专有
  • 如何在 Debian 10 Linux 上安装 Git

    Git 是世界上最流行的分布式版本控制系统 被许多开源和商业项目使用 使用 Git 您可以与其他开发人员协作处理项目 跟踪代码更改 恢复到之前的阶段 创建分支等等 它最初是由莱纳斯 托瓦尔兹Linux内核的创建者 本教程介绍如何在 Debi
  • 如何在 CentOS 7 上安装和配置 Nagios

    Nagios 是最流行的开源监控系统之一 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本教程介绍如何在 CentOS
  • 如何在 Ubuntu 18.04 上安装 Odoo 13

    Odoo 是一款流行的开源商业应用程序套件 它提供一系列应用程序 包括 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以通过多种方式安装 安装 Odoo 最简
  • 如何在 Ubuntu 18.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 Squid 主要用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程将引导您完成在 Ubuntu 18
  • 如何在 Ubuntu 20.04 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 它通常用于构建后端应用程序 但它也作为全栈和前端解决方案而流行 npm 是
  • 如何在 Ubuntu 20.04 上安装 Gitea

    Gitea 是一个用 Go 编写的快速且易于使用的自托管 git 服务器 它包括存储库文件编辑器 项目问题跟踪 用户管理 通知 内置 wiki 等等 Gitea是一个轻量级应用程序 可以安装在低功耗系统上 如果您正在寻找内存占用小得多的 G