Gogs
Gogs (Go Git Service) 是一个自托管的 Git 服务,使用 Go 编程语言编写。
安装
在安装 Gogs 软件包 (gogsAUR 或 gogs-gitAUR 开发版本) 之前,如果您计划将 Gogs 和数据库托管在同一台机器上,则需要选择一个数据库后端
- SQLite: sqlite - 关于使用 SQLite 配置 Gogs,请参阅 #SQLite。
- PostgreSQL: postgresql - 阅读 PostgreSQL#Installation 设置并启动 daemon,关于使用 PostgreSQL 配置 Gogs,请参阅 #PostgreSQL。
- MariaDB: mariadb - 阅读 MariaDB#Installation 设置并启动 daemon,关于使用 MariaDB 配置 Gogs,请参阅 #MariaDB。
每个软件包都为服务配置后端/存储提供了多个选项,请参阅 #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-reload 和 restart gogs.service
。安装完成后,您可以恢复这些更改以提高安全性。
在配置文件 /etc/gogs/app.ini
中,您可以更改更多值(例如端口号)。
配置
Gogs 配置文件位于 /etc/gogs/app.ini
。当您想要编辑配置选项时,您需要编辑此文件并重启 Gogs 服务,更改才会生效。
SSH
为了使用 SSH 与 git 仓库进行交互,并能够使用上传的公钥
- 在
/etc/gogs/app.ini
中将SSH_ROOT_PATH
设置为/var/lib/gogs/.ssh
(另请参阅 documentation),并确保DISABLE_SSH
为false
。
- 将
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 端口
如果您为 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