Gogs

出自 ArchWiki

Gogs (Go Git Service) 是一个自托管的 Git 服务,使用 Go 编程语言编写。

安装

在安装 Gogs 软件包 (gogsAURgogs-gitAUR 开发版本) 之前,如果您计划将 Gogs 和数据库托管在同一台机器上,则需要选择一个数据库后端

每个软件包都为服务配置后端/存储提供了多个选项,请参阅 #Configuration

如果您计划使用 SSH 与您的仓库进行交互,请确保将 gogs 用户添加到 /etc/ssh/sshd_config 中的 AllowUsers 条目中。

首次启动

启动 gogs.service 后,您可以通过 URL http://[服务器]:3000 访问正在运行的服务。首次加载时,您将被重定向到安装页面,您可以在其中配置一些选项。

为了能够保存使用初始配置页面所做的更改,配置目录(由 root 拥有)的权限必须被修改(临时或永久),例如

# chown -R gogs:gogs /etc/gogs/

您还需要创建一个 drop-in 文件,以允许 gogs.service 更改 /etc/gogs 内容

/etc/systemd/system/gogs.service.d/writable-etc.conf
[Service]
ReadWritePaths=/etc/gogs

然后执行 daemon-reloadrestart gogs.service。安装完成后,您可以恢复这些更改以提高安全性。

在配置文件 /etc/gogs/app.ini 中,您可以更改更多值(例如端口号)。

配置

本文或本节需要扩充。

原因:SMTP、oAuth、日志记录、缓存的配置(在 Talk:Gogs 中讨论)

Gogs 配置文件位于 /etc/gogs/app.ini。当您想要编辑配置选项时,您需要编辑此文件并重启 Gogs 服务,更改才会生效。

SSH

为了使用 SSH 与 git 仓库进行交互,并能够使用上传的公钥

  • /etc/gogs/app.ini 中将 SSH_ROOT_PATH 设置为 /var/lib/gogs/.ssh (另请参阅 documentation),并确保 DISABLE_SSHfalse
  • gogs 添加到 /etc/ssh/sshd_config 中的 AllowUsers
  • 创建 /var/lib/gogs/.ssh 并将所有权移交给 gogs 用户
> mkdir -p /var/lib/gogs/.ssh
> chown -R gogs:gogs /var/lib/gogs/.ssh

公钥将由 gogs 用户添加到 /var/lib/gogs/.ssh/authorized_keys

.gitignore 和许可证文件

软件包中包含一组 gitignore 和许可证文件,分别存储在 /usr/share/gogs/conf/gitignore/usr/share/gogs/conf/license 中。

您可以在这里获取或创建您自己的 .gitignore 文件。

数据库

SQLite

安装 sqlite 并在安装页面上选择 SQLite。在 /etc/gogs/app.ini ( [database] 部分中的 PATH 变量) 中为 SQLite 数据库文件使用绝对路径。为了与其他设置保持一致,请使用 /var/lib/gogs/data/gogs.db (另请参阅 issue 4298)。

PostgreSQL

安装 postgresql 并在安装页面上选择 Postgresql。

# su - postgres -c 
# createuser -P gogs
# createdb -O gogs gogs

MariaDB

安装 mariadb 并设置用户和数据库

# CREATE DATABASE `ishouldchangethisdatabasename` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# CREATE USER 'ishouldchangethisusername'@'localhost' IDENTIFIED BY 'ishouldchangethispassword';
# GRANT ALL ON `ishouldchangethisdatabasename`.* TO 'ishouldchangethisusername'@'localhost';

在安装页面上选择 mysql 并插入您配置的用户、密码和数据库名称。

主题

当前软件包 (gogs-git* 和 gogs>=0.4.2) 支持自定义主题。Gogs 主题的位置是 /usr/share/themes/gogs/。Gogs 自带一个默认主题,但您可以轻松创建自己的主题。只需复制默认的 theme 目录并更改您想要的任何内容。public 目录中是所有 javascript、stylesheet 和 font 文件,template 目录中是 HTML 模板。当前选择的主题可以通过 app.ini 配置参数 STATIC_ROOT_PATH 更改。将其更改为新主题的绝对路径。

升级后重启

Gogs 每次升级后都需要重启,因为 javascript/css 资源的路径会更改,从而破坏网站。为了自动化此过程,可以将以下 pacman hook 插入到 /etc/pacman.d/hooks/gogs.hook

[Trigger]
Type = Path
Operation = Upgrade
Target = usr/share/gogs/gogs
[Action]
Description = Restart gogs...
When = PostTransaction
Exec = /usr/bin/systemctl try-restart gogs.service

SSH 端口

本文或本节的事实准确性存在争议。

原因:cap 更改将在更新后被覆盖。为什么不通过 drop-in 文件使用 AmbientCapabilities 和 CapabilitiesBoundingSet?(在 Talk:Gogs 中讨论)

如果您为 SSH 服务器使用非默认端口,您将获得不太友好的克隆 URL。您可以让 gogs 启动自己的 SSH 服务器,监听端口 22。

允许 gogs 二进制文件绑定特权端口

# setcap CAP_NET_BIND_SERVICE=+eip /usr/share/gogs/gogs

/etc/gogs/app.ini 中配置 gogs SSH 服务器

START_SSH_SERVER       = true
SSH_PORT               = 22
SSH_LISTEN_PORT        = 22

参见