当前位置: 首页 > news >正文

Docker部署Gogs - EM

参考:

  • https://blog.csdn.net/bbj12345678/article/details/122713883
  • https://blog.csdn.net/yanzili/article/details/130615472

Gogs仓库:https://github.com/gogs/gogs

现在越来越多团队开始尝试搭建自己的 Git 服务,用于私有代码托管、版本控制以及团队协作;如果你觉得 GitLab 太重、Gitea 功能太多,那么 Gogs 这个轻量级的 Git 服务可能刚好适合你;

Gogs 的全名是「Go Git Service」,它由 Go 语言开发,体积小、部署快、占用资源极低,非常适合搭建在树莓派、低配机器或开发环境中自用;

这篇博客我就来分享下 如何用 Docker 部署 Gogs,整个流程简单高效,适合初学者和懒人党(比如我)参考;

部署Gogs

拉取 Gogs Docker 镜像

docker pull gogs/gogs

Gogs 提供官方维护的镜像,持续更新,推荐使用;拉取速度可能因网络而异,可考虑配置镜像加速;

创建挂载目录

为了数据持久化,我们提前创建挂载目录;这里以 /home/time/docker_mount/gogs_github 为例:

mkdir -p /home/time/docker_mount/gogs_github

这个目录将映射到容器的 /data 目录,Gogs 会把所有的配置、仓库文件、SSH 密钥等放在这里,重启、迁移都不影响;

启动 Gogs 容器

docker run -d \--name my_github \--restart=always \-p 10022:22 \-p 13000:3000 \-v /home/time/docker_mount/gogs_github:/data \gogs/gogs

解释一下:

  • -p 13000:3000:Web 界面访问端口;
  • -p 10022:22:Git SSH 克隆使用的端口;
  • -v:挂载持久化数据目录;
  • --name:容器名称为 my_github;

初始配置 Gogs

在浏览器中访问 http://运行服务的ip:13000,开始初始化设置;

配置项说明:

  • 数据库类型:选择 SQLite3(默认即可);
  • 应用名称:如 EMTime's Private Repo,仅用于界面展示;
  • SSH 端口:建议勾选“使用内置 SSH 服务器”;
  • 应用 URL:填写 http😕/运行服务的ip:13000,注意不能加斜杠 /;
  • 管理员账号:填写好用户名、密码和邮箱;
  • 点击“立即安装” 即可完成;

安装完成后请及时记下管理员账号密码,后续登录需要用到;

修改配置(如关闭注册功能)

默认情况下,任何人都可以注册新账号;如果你希望私有使用,可以通过配置文件禁用注册功能:

nano /home/time/docker_mount/gogs_github/gogs/conf/app.ini

找到:

[service]
DISABLE_REGISTRATION = false

修改为:

[service]
DISABLE_REGISTRATION = true

保存后重启容器:

docker restart my_github

这样就只保留管理员创建用户的方式,更安全;

使用自定义域名(可选)

比如你使用了反代(如 Caddy、Nginx、frp 等)并绑定了你的域名,就可以修改 Gogs 的显示地址:

docker stop my_github
vim /home/time/docker_mount/gogs_github/gogs/conf/app.ini

找到:

APP_URL = http://localhost:13000

修改为:

APP_URL = https://git.140105.xyz

这里用我自己的域名为例,注意不要加斜杠 /;

保存后重启容器:

docker restart my_github

克隆仓库报 SSL 错误的解决办法(可选)

如果你的 HTTPS 使用的是自签名证书,Git 拉取可能提示 SSL 验证失败,可以关闭 SSL 验证(注意,仅建议在局域网或受信网络使用):

git config --global http.sslVerify false

如果使用 Let's Encrypt 的证书则无需担心,Git 会自动验证;

为 Gogs 配置 SSH

在部署好 Gogs 之后,如果每次拉取和推送都输入账号密码,不仅麻烦还不安全;这时候我们可以通过 SSH 公钥认证 来实现更安全、无密码的 Git 操作;

这篇文章将一步步带你完成 Gogs 的 SSH 配置过程,适用于 Linux 和 Windows(使用 MobaXterm 等终端工具)环境;

生成 SSH 密钥对

在终端中输入以下命令,按提示操作:

ssh-keygen -t rsa -C "git@git.140105.xyz"

这里:

  • -t rsa 表示使用 RSA 加密算法;
  • -C 根据你自己之前部署的情况进行修改,这里以我自己的域名为例;
  • 默认会将密钥保存在 ~/.ssh/id_rsa,你也可以选择自定义,例如 id_rsa_gogs;

Gogs 同样支持 ed25519 等更现代的算法,参考其界面提示或 GitHub 教程进行生成即可;

设置权限(非常重要)

确保私钥不可被其他用户读取,防止泄露:

chmod 600 ~/.ssh/id_rsa_gogs
chmod 644 ~/.ssh/id_rsa_gogs.pub

配置 SSH 连接

编辑 SSH 配置文件:

nano ~/.ssh/config

添加以下内容:

Host 随便取个名字HostName git.140105.xyzUser gitPort 10022IdentityFile ~/.ssh/id_rsa_gogsPreferredAuthentications publickey

解释一下这些配置:

  • Host 是你之后在 git clone 命令中使用的别名;
  • HostName 是实际的服务器地址;
  • User 为固定的 git,Gogs 默认就是用这个账户名;
  • Port 是你容器映射出来的 SSH 端口(上文我们用的是 10022);
  • IdentityFile 指向你刚刚生成的私钥;
  • PreferredAuthentications 指定只使用公钥认证;

如果你是在 Windows 使用 MobaXterm 或类似终端,~/.ssh/config 位置在 C:\Users<用户名>.ssh\config,内容相同;

添加 SSH 公钥到 Gogs

登录 Gogs 网站 → 点击右上角头像 → 用户设置 → SSH 公钥 → 添加密钥;

  • 名称随意,例如 My laptop SSH key;
  • 内容粘贴 id_rsa_gogs.pub 中的全部内容;

这样 Gogs 就认识你的电脑了;

测试 SSH 连接

执行以下命令:

ssh -T git@git.emtime.top -p 10022

如果成功,会提示类似:

Hi EMTime! You've successfully authenticated, but Gogs does not provide shell access.

表示你已经通过公钥成功认证了!

克隆仓库的方式说明

使用 SSH 克隆仓库有两种方式:

# 推荐方式(更清晰直观)
git clone ssh://git@git.emtime.top:10022/EMTime/test.git# 简写方式(Gogs 默认提供),这种写法虽然更短,但有些 Git 客户端或未配置 SSH 时可能会失败
git@git.emtime.top:EMTime/test.git

总结

部署一个轻量级的 Git 仓库服务其实非常简单,Gogs + Docker 就是最实用、门槛最低的选择之一:

  • 简单易用,不依赖外部数据库;
  • 支持 SSH、Web、组织管理;
  • Docker 容器化部署,迁移方便;
  • 可与 Caddy、Frp 等无缝结合,快速公网访问;

非常适合用于自用项目托管、内网代码管理、小型团队开发协作等场景;

阅读原文:Docker部署Gogs

http://www.jsqmd.com/news/752070/

相关文章:

  • 河南 SCMP 证书报考及含金量解读 - 众智商学院课程中心
  • 2026年4月评价好的数控车床回收企业推荐,折弯机回收/钻床回收/滚齿机回收/机械设备回收,数控车床回收厂家哪家权威 - 品牌推荐师
  • 【限时解锁】.NET 9 AI配置性能天花板突破:实测提升47.3%吞吐量的6项非文档化配置组合(含dotnet-runtime-config.json高级用法)
  • 淮安飛凡装饰:淮安内墙乳胶漆 艺术漆哪家好 - LYL仔仔
  • 长沙泷凰搬家:长沙专业做家具拆装的公司 - LYL仔仔
  • SwiftUI Grid性能优化:缓存策略与布局计算深度解析
  • IMU963RA数据老飘?手把手教你三种零漂处理与传感器融合调参
  • 亨得利全国统一服务热线 400-901-0695 官方发布:六大城市七大直营门店维修保养地址大全(附2025最新收费标准) - 时光修表匠
  • 重庆众申机电设备:璧山发电机保养公司哪家好 - LYL仔仔
  • 东莞市宏聚机械设备:深圳市新旧空压机回收推荐几家 - LYL仔仔
  • HEC-RAS非恒定流模拟从入门到放弃?这份Preissmann四点隐式差分法避坑指南请收好
  • 如何快速上手adblock-rust:10分钟搭建高效广告拦截系统
  • 告别BMP!用SDL_image库在Windows上轻松加载PNG和JPG图片(附完整代码)
  • 长沙泷凰搬家:长沙靠谱的家具拆装公司推荐 - LYL仔仔
  • FlicFlac:5分钟掌握Windows音频格式转换的终极指南
  • 通过 Python 快速将现有代码接入 Taotoken 平台
  • 2026福州市防水补漏公司权威推荐:卫生间、阳台、屋顶、地下室、飘窗、外墙漏水,专业防水公司TOP5口碑榜+全维度测评(2026年5月最新深度行业资讯) - 防水百科
  • 天津创鑫钢盛不锈钢制品销售:西青区口碑好的激光切割加工工厂 - LYL仔仔
  • 济南改特车灯十年老年,2026最新济南改灯首选标杆门店全解析 - Reaihenh
  • 别再只写model.eval()了!PyTorch评估模式下的Dropout和BatchNorm避坑指南
  • PHP集成Ollama本地大模型实战:从环境部署到Laravel应用开发
  • 5月4日成都地区H型钢(包钢、安泰、晋南,马钢、莱钢、日照、津西‌‌)一级代理 - 四川盛世钢联营销中心
  • 终极指南:MASA模组全家桶中文汉化包快速上手教程
  • 终极指南:如何为Novel.sh编辑器添加数学公式和Twitter嵌入功能
  • 3个简单步骤让Mac电池寿命延长2倍:Battery Toolkit终极指南
  • 别再死记硬背了!用FPGA的ROM搞定外设初始化配置(以WM8731音频芯片为例)
  • 构建AI记忆桥梁:打通数据孤岛,打造个人知识大脑
  • 新手教程使用 Python 在 Taotoken 上调用 OpenAI 兼容 API 完成第一个请求
  • 上海迈湑钢结构工程:嘉定区钢材批发哪家好 - LYL仔仔
  • Storybook组件驱动开发终极指南:从零到精通的完整学习路径