跳转到内容

Gogs安装

一个私有的 git 仓库

  • 安装 mysql(非必须。可以使用 sqllite)
    参考 mysql 教程

  • 安装 git(必须的)
    参考 git 教程

  • 裸机安装 gogs

Terminal window
sudo -s
mkdir /opt/software
cd /opt/software
useradd -s /bin/bash -m git #创建用户
echo 'git ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers #添加免密登陆
su git
wget https://dl.gogs.io/0.13.0/gogs_0.13.0_linux_amd64.tar.gz
tar zxvf gogs_0.13.0_linux_amd64.tar.gz
cd gogs
/opt/software/gogs/custom/conf/app.ini
BRAND_NAME = Gogs
RUN_USER = git
RUN_MODE = prod
[database]
TYPE = mysql
HOST = 127.0.0.1:3307
NAME = gogs
SCHEMA = public
USER = root
PASSWORD = example
SSL_MODE = disable
PATH = /opt/software/gogs/data/gogs.db
[repository]
ROOT = /opt/software/gogs/gogs-repositories
DEFAULT_BRANCH = master
[server]
PROTOCOL = https #开启https
DOMAIN = gogs.wsl.sxyxy.top
HTTP_PORT = 3000
EXTERNAL_URL = https://gogs.wsl.sxyxy.top:3000/
DISABLE_SSH = false
SSH_PORT = 22
SSH_ROOT_PATH = /home/git/.ssh #ssh地址
REWRITE_AUTHORIZED_KEYS_AT_START = true
START_SSH_SERVER = false #不建议开启,使用系统的服务即可
OFFLINE_MODE = false
USE_CERTIFICATE = true
CERT_FILE = custom/https/cert.crt
KEY_FILE = custom/https/key.key
[email]
ENABLED = true
HOST = smtp.163.com:456
FROM = example@163.com
USER = example@163.com
PASSWD = ***
[auth]
REQUIRE_EMAIL_CONFIRMATION = true
DISABLE_REGISTRATION = false
ENABLE_REGISTRATION_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = true
[user]
ENABLE_EMAIL_NOTIFICATION = true
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = false
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /opt/software/gogs/log
[security]
INSTALL_LOCK = true
SECRET_KEY = L9S3NQi7yhtdy9C
LOCAL_NETWORK_ALLOWLIST = "jenkins.example.com" #允许网络,woobhook推送到本地是可能需要

注意 github 上的配置文件分支

/etc/systemd/system/gogs.service
[Unit]
Description=Gogs
After=syslog.target
After=network.target
After=mariadb.service mysql.service mysqld.service postgresql.service memcached.service redis.service
[Service]
# Modify these two values and uncomment them if you have
# repos with lots of files and get an HTTP error 500 because
# of that
###
#LimitMEMLOCK = infinity
#LimitNOFILE = 65535
Type=simple
User=git
Group=git
WorkingDirectory=/opt/software/gogs
ExecStart=/opt/software/gogs/gogs web
Restart=always
Environment=USER=git HOME=/opt/software/gogs
# Some distributions may not support these hardening directives. If you cannot start the service due
# to an unknown option, comment out the ones not supported by your version of systemd.
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
Terminal window
systemctl daemon-reload #重启 systemd 服务
systemctl restart gogs
systemctl status gogs
systemctl stop gogs
  • 安装
Terminal window
sudo -s
apt install openssh-server
  • 配置
/etc/ssh/sshd_config
Port = 23
  • 服务
Terminal window
systemctl start ssh
systemctl status ssh
systemctl stop ssh
  • 切换 ssh 默认用户
# 创建用户
useradd -s /bin/bash -m gogs
#修改源文件权限
chown -R gogs:gogs /opt/gogs
# service文件
User=git
Group=git
Environment=USER=git HOME=/opt/software/gogs
# 配置文件
#/opt/software/gogs/custom/conf/app.ini
RUN_USER = git
[server]
SSH_ROOT_PATH = /home/git/.ssh #ssh地址
# 重启服务
systemctl restart gogs
# 测试服务
git -T gogs
ssh -T gogs@exampel.com
  • 配置 webhook
Terminal window
https://jenkins.exampl.com/gogs-webhook/?job=test

job 对应的 query 参数需要 jenkins 的 job 配置保持一致,如果存在目录则 dir/test

参考指定配置文件版本进行配置,不同的配置文件配置参数可能不一致

  • 注意 PROTOCOL 参数使用设置为 https

清除 cookie 之后重试