Build a Git Using Gogs On RaspberryPi with Docker Employ Frp with Caddy Proxy and CDN in Cloudflare¶
Goals¶
- 在树莓派上运行Gogs,并且使用Docker部署
- 由于树莓派在内网,需要使用Frp进行内网穿透
- 使用Caddy+CDN代理,加速对Gogs的访问速度
Requirements¶
- Raspberry 3B+
- Domain
- Cloudflare Account
- VPS with Public IPv4 Address
1. Install Docker on RaspberryPi 3B+¶
(1). 使用docker官方的一键安装脚本:¶
(2). 将当前用户加入docker
组:¶
(3). 为docker设置镜像加速:sudo vim /etc/docker/daemon.json
¶
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
2. Install Gogs with Docker¶
(1). 下载镜像文件¶
docker pull gogs/gogs-rpi
(2). 运行镜像¶
docker run \
--name=gogs-rpi -d \
--restart=always \
-p 10022:22 -p 13000:3000 \
-v /data/gogs:/data gogs/gogs-rpi
3. Install Gogs with docker-compose Orchestration using MySQL(可选)¶
(1). Install docker-compose¶
(2). 编排docker-compose.yaml 内容¶
version: "3"
services:
db:
image: mysql:5.7
container_name: MySQL5.7
restart: always
ports:
- "13306:3306"
volumes:
- ${pwd_DB}/gogs_DB:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: AdminMySQL
MYSQL_DATABASE: gogs
MYSQL_USER: gogs
MYSQL_PASSWORD: passwordgogs
TZ: Asia/Shanghai
docker-gogs:
depends_on:
- db
image: gogs/gogs
container_name: docker-gogs
restart: always
ports:
- "10022:22"
- "13000:3000"
volumes:
- ${pwd_gogs}/data:/data
(3). 运行docker容器¶
进入docker-compose.yaml
所在路径,运行:
当使用MySQL作为数据存储时,在gogs的设置页面,需要将数据库地址设置为
db:3306
¶提供2中的docker脚本,和3中的docker-compose.yaml文件¶
4. Configuration of Domain¶
(1). 先将域名的nameservers改到cloudflare,参考Change nameservers to cloudflare¶
(2). 在Cloudflare中将域名解析到VPS的IP地址,并且将PrivateDNS关闭,橙色云->灰色¶
(3). 在gogs配置完成后,将PrivateDNS打开¶
5. Configuration of FRP¶
Server Config¶
[common]
bind_port = [your port1]
token = [your token]
vhost_http_port = [your port2]
bing_udp_port = [your port3]
vhost_https_port = [your port4]
Client Config¶
[common]
server_addr = [your ip]
server_port = [your port]
token = [your token]
[Gogs]
type = tcp
local_ip = 127.0.0.1
local_port = 13000
remote_port = 8888
- 此处需要注意
13000
端口为gogs容器在树莓派上映射的端口,要与之前docker上运行的端口对应
6. Configuration of Caddy On VPS¶
(1). 安装Caddy,参考用RaspberryPi搭建Aria2+Caddy2下载站¶
(2). 配置Caddyfile:sudo vim /etc/caddy/Caddyfile
¶
- proxy / 127.0.0.1:8888 表示将访问gogs.yourdomain:443的流量转发到本机的8888端口
- address@mail.com表示用户邮箱
(3). 重启Caddy:sudo systemctl restart caddy
¶
7. Configuration of Gogs¶
(1). 在浏览器中访问树莓派的 IPv4:13000
进行设置¶
(2). 在Domain中输入 yourdomain
¶
(3). EXTERNAL_URL
设置为https://gogs.yourdomain:443/
¶
(4). 完成安装后跳回第3.3,将Cloudflare的PrivateDNS打开。¶
局限性¶
- 通过该方式安装的gogs只能够通过https或者http协议进行git操作
- 通过将SSH端口进行FRP穿透可以实现SSH方式的操作,但是PrivateDNS无法支持SSH,所以需要关闭PrivateDNS。
REF¶
[1]. Docker安装Gogs
[2]. Caddy配置
[3]. Local Service Tunneling with FRP and Caddy
[4]. fatedier/frp