使用Caddy代理Bitbucket服务器

在这之前,一直玩 gitlab,gitlab 有一个好的地方就是他的 ci 功能。一个服务器既有了 git 管理又有了持续集成功能。但是 gitlab 安装门槛还算是比较高的,尤其是配置很多自定义的功能呢。贵在开源,随便折腾。

Bitbucket

Bitbucket 虽然不是一个免费的版本管理工具,但是本身体验还是很好的,即使付费版本个人使用也很便宜。基于 Java 实现,执行效率当然说的过去。相比于 gitlab 这种需要内存至少 2G 的怪兽,至少是一个选择,而却他不容易宕机,但是他的最大魅力还是配置比较简单。

下载方式,官网找下载链接,直接 wget
1
https://bitbucket.org/product/download

Caddy

使用 Caddy 之前,一直使用 Nginx 作为反向代理服务器,但是 Nginx 配置比较复杂,本身又基于服务模式启动,对于玩家不太友好。Caddy 解决了这些问题,下载好,只需要要执行一个命令就可以启动服务器,全世界都能看到你了。主要是,他可以自动申请 ssl,免去自己申请。

下载方式:
1
curl https://getcaddy.com | bash -s personal

步骤

Atlassian 家的软件启动都非常简单。下载好之后,给它一个可执行的权限,然后./他就可以了。

1
2
chmod +x atlassian-bitbucket-5.16.0-x64.bin
./atlassian-bitbucket-5.16.0-x64.bin

这个步骤最好给它 Root 权限。
安装完成之后,在/opt下面你可以找到他。到bin目录下,启动它

1
2
cd /opt/atlassian/bitbucket/5.16.0/bin
./start-bitbucket.sh

然后,访问youip:7990。现在大概可以配置这台 git 服务器了。
一台电脑只有一个 80 或者 443 端口,不同的服务想使用同一个端口就需要反向代理服务器了。
Caddy 需要一个 Caddyfile 文件,可以理解为 Caddy 的描述文件,随便创建一个目录,然后新建这个文件:

1
2
3
mkdir -p ~/www
cd ~/www
vi Caddyfile

在这个文件中粘贴

1
2
3
4
5
6
7
8
9
git.lecon.io {
proxy / http://127.0.0.1:7990 {
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Server {host}
header_upstream X-Forwarded-Proto {scheme}
}
}

意思大概就是说,把客户端的环境信息原封不动的发送给被代理对象。
在当前 Caddyfile 目录中执行caddy。输入一下邮箱,现在访问你的网址,可以直接使用了。这个命令会阻塞当前 session,所以最好叫他到后台运行

1
nohup caddy &

跨域问题

Caddy 会默认把 http 流量转发到 https 上,给客户端发送一个 302,重定向到 https 网址,这样的话就会出现一个问题,我在打开 Bitbucket 网页,然后请求外部网页,就会发生跨域问题,导致 Webhook 功能不能使用。
现在需要配置一下 Bitbucket,找到bitbucket.properties

1
find /|grep bitbucket.properties

然后加入下面内容

1
2
3
4
5
server.port=7990
server.secure=true
server.scheme=https
server.proxy-port=443
server.proxy-name=git.lecon.io

重启一下 Bitbucket 服务器,Webhook 等功能可以正常使用。


 Gitalk评论