以低于 100 美元的价格运行您自己的 Git 服务器

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

大多数开源项目都是通过 GitHub 找到的,如果你想让你的项目对全世界可用,GitHub 是你存储库的好地方。私人回购和用户访问呢? GitHub、BitBucket 和其他网站使您能够在他们的网站上托管私有存储库,但需要付费。

有替代方案,例如 DropBox Google Drive 和将您的存储库隐藏在 共享托管服务器 上,但谁真的想这样做呢?前一个选项是可行的,但充其量是混乱和蹩脚的黑客攻击,并且缺乏访问控制。

解决方案:将 Raspberry Pi 或 PogoPlug( 个人最喜欢的,但有时很难找到 我当前的设置 )与一点 ArchLinux(或几乎所有 基于 Unix 的 操作系统)和一些命令行技能混合使用,以创建您自己的。
设备大概费用:18-40 美元
可选硬盘驱动器:不定

“Gitolite 允许您在中央服务器上设置 git 托管,具有非常细粒度的访问控制和许多(许多!)更强大的功能。”

滚动你自己的 Git 服务器的主要好处是你从头到尾都在控制之中。如果公司更改其定价计划,则不会产生任何影响。如果有人加入或离开您的团队,只需添加或删除他们的访问权限即可。如果您想扩展服务器,请实现它。完全控制。

让我们开始吧

  • 创建一个专用用户标识来托管存储库,例如“git”(出于安全原因,该用户 只能 从同一服务器上的单独用户帐户访问“su - git”)。
  • 登录到您的服务器并 su 到您的“git”帐户“su - git”。
  • 确保 ~/.ssh/authorized_keys 是空的,如果它不是空的
  • 从您的工作站复制您的 ssh 公钥
    • 在与服务器不同的计算机上运行 ssh-keygen
    • 将文件命名为 $HOME/YourName.pub
  • 通过运行以下命令安装 gitolite
    
     git clone git://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    
  • 以你自己为管理员,设置 Gitolite

    
     git clone git://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    
  • 之前的命令可能不起作用,因为“bin”不在您的“PATH”中,因此在这种情况下运行:

    
     git clone git://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    

    添加回购和用户

    首先要做的事——永远不要手动添加用户或 repos 到服务器。所有这些更改都由一个名为“gitolite-admin”的特殊仓库控制。管理工作流程相当简单明了。

    运行以下命令:

    
     git clone git://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    

    您现在刚刚下载了 git 服务器的控制中心。现在 cd 进入文件夹“cd gitolite-admin”,在那里你会看到两个目录“conf”和“keydir”。将用户密钥添加到“keydir”(jack.pub、jill.pub 和 john.pub)中,并通过编辑“conf/gitolite.conf”添加 repos。

    要添加 repo“tester”并提供对 jack、jill 和 john 的访问,请将以下内容添加到“conf/gitolite.conf”:

    
     git clone git://github.com/sitaramc/gitolite
    mkdir -p $HOME/bin
    gitolite/install -to $HOME/bin
    

    在前面的示例中, Jill 具有只读访问权限。 Jack 具有读/写功能,还可以快进分支的推送并创建新的分支/标签。 约翰 可以做任何他喜欢做的事;快进、倒带或删除分支/标签。

    当您进行更改时,您将要运行 git add conf 或 git and keydir 。接下来,使用 git commit -m “created tester and added users” 提交您的更改,然后使用 git push。推送完成后,您已将新用户添加到 ~/.ssh/authorized_keys 并在您的服务器上创建了新用户。

    从国外访问

    如果您在个人网络上设置 git 服务器并希望提供对外界的访问,请首先考虑安全性,但这很容易做到。首先,确保您的防火墙能够胜任这项任务,并且您对它的设置感到满意。其次,确保为所需端口设置端口转发(大多数系统的默认值为 22)。第三,如果您没有静态 IP 地址,请选择动态 DNS 服务来管理指向您服务器 IP 地址的流量。
    可选的动态 DNS 服务:每年免费至 35 美元

    在关闭

    根据您的特定需求,此解决方案可以很好地扩展到爱好者或大型组织(例如:Fedora 项目 - 超过 10,000 个存储库和 1,000 名维护人员以及 Gentoo Linux 200 个存储库和超过 1,000 名用户)。凭借 Gitolite 提供的令人难以置信的灵活性,托管和管理存储库就像在终端中运行一些命令一样简单,这使您可以控制数据并在一定程度上对数据进行未来验证。

    参考资料/资源

    https://github.com/sitaramc/gitolite - 开源项目的官方 GitHub 页面

    https://groups.google.com/forum/#!forum/gitolite - 官方和活跃的支持论坛

    http://archlinuxarm.org/platforms/armv5/pogoplug-series-4 - 在 PogoPlug 系列 4 设备上安装 ArchLinux 的参考

    http://archlinuxarm.org/platforms/armv5/pogoplug-v2-pinkgray - 在 PogoPlug 版本 2 设备上安装 ArchLinux 的参考

    相关参考资料:

    相关文章