家庭服务器门户Easy-Gate

周一做的核酸一直没有结果,中途收到了一次短信

算上全员筛查,这周做了4次核酸,分别是周六上午、周一下午、周二下午、周四下午

昨晚已经接到通知,本周末继续全员核酸筛查,想睡懒觉那是不可能滴😂


什么是 Easy-Gate ?

Easy Gate 是一个使用 GoReact 构建的简单 Web 应用程序,它充当您自托管基础设施的主页。服务和注释从 JSON 文件中实时解析(无需重新启动应用程序)。可以将服务和注释分配给一个或多个组,以仅向特定用户显示项目(基于他们的 IP 地址)。

准备

Easy-Gate 需通过 easy-gate.json 文件进行配置。所以要创建 easy-gate.json 文件,可以复制粘贴,也可以另存为。

文件地址: https://raw.githubusercontent.com/r7wx/easy-gate/master/easy-gate.json

虽然官方宣称修改了 easy-gate.json 文件无需重新启动应用程序,但老苏发现似乎还是要重启的,或者重启了会刷新缓存?

groups

通过提供用户子网(subnet),用于定义哪些用户可以查看哪些项目

关于组功能,老苏没测试,有兴趣的可以自己试试

1
2
3
4
5
6
7
8
9
10
"groups": [
{
"name": "internal",
"subnet": "192.168.1.1/24"
},
{
"name": "vpn",
"subnet": "10.8.1.1/24"
}
]

上例中,用户分为两个组,分别是 internal 组和 vpn 组。

services

services 条目用于定义基础设施中可用的服务。每个服务(services)都有一个名称(name)、一个地址(url)、一个图标(icon)和可以看到它的组( 在 groups 部分中定义)。如果未提供组,则所有用户都可以看到该项目

icon 可以到下面网站查找:

  • https://fontawesome.com/search
  • https://www.thinkcmf.com/font/font_awesome/icons.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"icon": "fa-brands fa-git-square",
"name": "Git",
"url": "https://git.example.vpn",
"groups": [
"vpn"
]
},
{
"icon": "fa-brands fa-docker",
"name": "Portainer",
"url": "https://portainer.example.internal",
"groups": []
}

上例中,Git 只能 vpn 组看到,Portainerinternal 组和 vpn 组都能看到。

notes

notes 条目用于定义具有标题和内容的简单文本注释。每条笔记(notes) 都有一个名称(name)、笔记内容(text)和可以看到它的组( 在 groups 部分中定义)。如果未提供组,则所有用户都可以看到该项目:

1
2
3
4
5
6
7
8
9
10
11
12
{
"name": "Simple note",
"text": "This is a simple note for vpn users",
"groups": [
"vpn"
]
},
{
"name": "Global note",
"text": "This note will be visible to everyone",
"groups": []
}

上例中,Simple note 只能 vpn 组看到,Global noteinternal 组和 vpn 组都能看到。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 easy-gate ,选择第一个 r7wx/easy-gate,版本选择 latest

  1. docker 文件夹中,创建一个新文件夹,并将其命名为 easy-gate
  2. easy-gate.json 文件放入到 easy-gate 目录
文件夹 装载路径 说明
docker/easy-gate/easy-gate.json /etc/easy-gate/easy-gate.json 设置文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8082 8080

默认是暴露的 80

容器端口需要修改为 8080,本地端口不冲突就可以

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 新建文件夹 easy-gate 
mkdir -p /volume2/docker/easy-gate

# 进入 easy-gate 目录
cd /volume2/docker/easy-gate

# 将 easy-gate.json 放入当前目录

# 运行容器
docker run -d \
--restart unless-stopped \
--name easy-gate \
-p 8082:8080 \
-v $(pwd)/easy-gate.json:/etc/easy-gate/easy-gate.json \
r7wx/easy-gate

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose 文件

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'

services:
easy-gate:
image: r7wx/easy-gate
container_name: easy-gate
expose:
- 8080
ports:
- 8082:8080
volumes:
- /volume2/docker/easy-gate/easy-gate.json:/etc/easy-gate/easy-gate.json

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 easy-gate 
mkdir -p /volume2/docker/easy-gate

# 进入目录
cd /volume2/docker/easy-gate

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8082 就能看到主界面

老苏试验了中文,支持良好

手机上的效果

参考文档

r7wx/easy-gate: A gate to your self hosted infrastructure
地址:https://github.com/r7wx/easy-gate