简介
Gogs是一个私有化部署的轻量级git服务端,刚好在小内存的服务器上可以良好的运行,本文就来介绍下如何安装
一键安装脚本
我用AI搓了一个一键安装Gogs的脚本,复制下面的代码,保存为sh文件,以root权限运行。
#!/usr/bin/env bash
set -euo pipefail
GOGS_VERSION="${GOGS_VERSION:-0.14.3}"
GOGS_USER="${GOGS_USER:-git}"
GOGS_HOME="${GOGS_HOME:-/home/git}"
GOGS_DIR="${GOGS_DIR:-/opt/gogs}"
GOGS_PORT="${GOGS_PORT:-3005}"
if [ "$(id -u)" -ne 0 ]; then
echo "请用 root 运行:sudo bash install-gogs.sh"
exit 1
fi
echo "==> 安装依赖"
apt update
apt install -y git curl tar ca-certificates
echo "==> 检测 nologin 路径"
NOLOGIN="/usr/sbin/nologin"
if [ ! -x "$NOLOGIN" ]; then
NOLOGIN="/sbin/nologin"
fi
echo "==> 检测系统架构"
ARCH="$(uname -m)"
case "$ARCH" in
x86_64|amd64)
GOGS_ARCH="amd64"
;;
aarch64|arm64)
GOGS_ARCH="arm64"
;;
i386|i686)
GOGS_ARCH="386"
;;
armv7l)
GOGS_ARCH="armv7"
;;
*)
echo "不支持的架构:$ARCH"
exit 1
;;
esac
PKG="gogs_v${GOGS_VERSION}_linux_${GOGS_ARCH}.tar.gz"
URL="https://github.com/gogs/gogs/releases/download/v${GOGS_VERSION}/${PKG}"
echo "==> 创建或加固用户:${GOGS_USER}"
if ! id "${GOGS_USER}" >/dev/null 2>&1; then
adduser --system \
--disabled-password \
--group \
--home "${GOGS_HOME}" \
--shell "${NOLOGIN}" \
"${GOGS_USER}"
else
usermod -d "${GOGS_HOME}" -s "${NOLOGIN}" "${GOGS_USER}"
fi
passwd -l "${GOGS_USER}" >/dev/null 2>&1 || true
echo "==> 下载 Gogs ${GOGS_VERSION}"
cd /tmp
rm -f "${PKG}"
curl -fL -o "${PKG}" "${URL}"
echo "==> 安装到 ${GOGS_DIR}"
if [ -d "${GOGS_DIR}" ]; then
BACKUP="${GOGS_DIR}.bak.$(date +%Y%m%d%H%M%S)"
echo "检测到已有 ${GOGS_DIR},备份到 ${BACKUP}"
mv "${GOGS_DIR}" "${BACKUP}"
fi
tar -xzf "${PKG}" -C /opt
echo "==> 预设 Gogs 端口:${GOGS_PORT}"
mkdir -p "${GOGS_DIR}/custom/conf"
cat >"${GOGS_DIR}/custom/conf/app.ini" <<EOF
[server]
HTTP_PORT = ${GOGS_PORT}
ROOT_URL = http://localhost:${GOGS_PORT}/
EOF
chown -R "${GOGS_USER}:${GOGS_USER}" "${GOGS_DIR}" "${GOGS_HOME}"
echo "==> 创建 systemd 服务"
cat >/etc/systemd/system/gogs.service <<EOF
[Unit]
Description=Gogs
After=network.target
[Service]
Type=simple
User=${GOGS_USER}
Group=${GOGS_USER}
WorkingDirectory=${GOGS_DIR}
ExecStart=${GOGS_DIR}/gogs web
Restart=always
RestartSec=3
Environment=USER=${GOGS_USER}
Environment=HOME=${GOGS_HOME}
[Install]
WantedBy=multi-user.target
EOF
echo "==> 启动 Gogs"
systemctl daemon-reload
systemctl enable --now gogs
echo
echo "安装完成。"
echo "git 用户已加固:"
echo " Shell: ${NOLOGIN}"
echo " Password: locked"
echo
echo "访问地址:"
echo " http://服务器IP:${GOGS_PORT}"
echo
echo "查看状态:"
echo " systemctl status gogs"
echo
echo "查看日志:"
echo " journalctl -u gogs -f"
echo
echo "首次打开网页后,数据库可选择 SQLite3。"

安装脚本会自动化的创建git账号 以及配置好系统启动服务,并且会将gogs的端口设置为3005端口
配置数据
运行完成后 访问3005端口,可以看到首次运行安装程序,填入数据库的地址(可用sqllite)。配置完成后点击确认。

完成安装
安装完成后,首次注册的账号默认即为管理员账号(所以请尽量完成首次注册与登录)