1. 前言
最近想搭建一个属于自己的 GIT 服务,看中了 Gogs ,它基于 Git 并使用 Go 语言开发,支持跨平台,易于安装和使用,相比 Gitlab 和 Gitea 更轻量一些,深得我意;虽然功能并没有以上两个完全,但个人使用足够了;于是我打算把吃灰的 Serv00 利用起来,将 Gogs 部署在 Serv00 上
Serv00 是一家总部位于波兰的免费主机服务提供商,以提供长达 10 年且无广告的免费虚拟主机而知名;它基于 FreeBSD 系统,提供 3GB SSD 存储、不限流量、支持 PHP、Node.js、Python 以及 SSH 连接,适合搭建小网站、个人网盘或轻量级应用
2. Serv00准备工作
开放一个端口:

1 . 左侧菜单找到 Port reservation -> Add port
2 . 随便输入一个端口号(建议在 10000 - 65000 之间,比如 31000),类型选 TCP
3 . 记住这个端口号,下面会用到
创建 Mysql 数据库:

1 . 左侧菜单找到 MySQL -> Add database
2 . 创建一个数据库(比如命名为 gogs),并设置密码。
3 . 记住:数据库名、用户名、密码、以及页面上方显示的 MySQL 服务器地址
设置域名反向代理:

1 . 左侧菜单找到 WWW websites -> Add new website
2 . Domain 填你要访问 Gogs 的域名(可以是 Serv00 送你的免费二级域名,比如 git.你的用户名.serv00.net,也可以是你自己的域名)
3 . 点击 Advanced settings 展开高级设置
4 . Website type 选择 Proxy
5 . Proxy target 选择:localhost
6 . Proxy port 选择:你上一步开放的端口;最后点击 Add 添加
注意:如果选择添加的域名是你自己的域名,需要在你的域名托管处添加指向
Serv00的解析,这里以CloudFlare为例,在你的域名下按以下添加记录
- 类型 (Type):
CNAME - 主机记录 (Name/Host):填你想要的前缀,比如
git(这样你的网址就是 git.你的域名.com) - 记录值 (Value/Target):
panelx.serv00.com;比如我的面板是S13的,那么就是panel13.serv00.com
3. 部署 Gogs
需要
SSH登录Serv00服务器,Serv00的系统是FreeBSD,使用上和Linux很相似;用户名和密码就是面板的用户名和密码,登录之后即可接下来的步骤
3.1 下载并编译 Gogs 源码
由于官方不提供 FreeBSD 系统的现成文件,你只能自己编译;好在 Go 语言的交叉编译非常简单,并且 Serv00 自带了 Go 语言环境
下载源码:
wget -O gogs-src.tar.gz https://codeload.github.com/gogs/gogs/tar.gz/refs/tags/v0.14.2解压缩并重命名:
tar -zxvf gogs-src.tar.gz
mv gogs-0.14.2 gogs进入 gogs 目录:
cd gogs\开始安全编译,注意这里需要等待几分钟的时间,编译完成如下图:
go build -p 1 -tags "sqlite cert" -o gogs
删除压缩包释放宝贵的硬盘空间:
rm ~/gogs-src.tar.gz给 gogs 赋予可执行权限:
chmod +x gogs3.2 更改运行端口
自定义配置文件夹;确保当前在 gogs 根目录:
mkdir -p custom/conf写入你的 Serv00 开通的端口号:
echo "[server]" > custom/conf/app.ini
echo "HTTP_PORT = 你的端口号" >> custom/conf/app.ini3.3 启动并测试Gogs
./gogs web正常情况下,应该已经运行成功了,可以访问你的域名测试一下,不出意外你应该能看到数据库配置的页面了

- 数据库类型: 点击下拉菜单,改成
SQLite3 - 数据库文件路径:
/usr/home/username/gogs/data/gogs.db;这里的username填你的用户名
接下来是用户名和密码的填写,自定义即可,完成后将进入首页:

3.4 申请 SSL 证书
1 . 左侧菜单找到 SSL -> WWW websites

2 . 这里有两个IP,ping 一下你的面板地址,返回是哪个就选哪个,点击右侧的 Manage,进入后点击 + Add new website

3 . Type 选择:Generate Let's Encrypt certificate
4 . Domain 选择:你之前设置的域名,点击添加即可
5 . 回到你的域名界面,点击 Manage -> Details

在弹出的界面中,把 Force SSL 右边的开关,从 Off 点一下,变成 On 即可;现在将 SSH 终端上的服务取消掉,后续将在后台运行
4. 将Gogs在后台运行
现在是
前台模式运行的,一旦你关闭SSH或者取消,Gogs就会立刻断开;为了让它成为一个真正的服务器程序,我们需要让它在后台静默运行,这里推荐使用PM2来完成
安装 PM2(Serv00 默认已经预装了 Node.js 和 npm 环境):
npm install -g pm2进入 Gogs 目录,并让 PM2 把它跑起来(运行状态如图):
cd ~/gogs
pm2 start ./gogs --name "gogs" --interpreter none -- web
保存 PM2 的运行列表:
pm2 save5. 保活
由于现在
Serv00不需要3个月内登录一次了,所以只需要保活Gog应用就行,这里只需要通过定时任务保活PM2服务即可,因为pm2 save命令会记住现在跑的程序,下次你启动时,把它们全拉起来
编辑 cron 文件:
crontab -e将以下内容添加到最后(把用户名换成你自己的):
*/10 * * * * pgrep -x pm2 > /dev/null || /usr/home/用户名/.npm-global/lib/node_modules/pm2/bin/pm2 resurrect > /dev/null 2>&16. 结尾
至此,在 Serv00 上成功部署 Gogs,值得注意的是,Serv00 提供的免费 3GB 硬盘空间,确实比较小,个人用可能也有些捉襟见肘,不过对于我来说,还是够了的😊
想了解更多的 SerV00 相关的部署教程,可以尝试访问:Serv00 部署教程合集
没有serv00😂,不过看起来挺不错的啊