调整部分硬编码信息
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@ WORKDIR /app
|
|||||||
# 复制依赖文件(兼容 go.sum 可能不存在的情况)
|
# 复制依赖文件(兼容 go.sum 可能不存在的情况)
|
||||||
COPY go.mod go.sum* ./
|
COPY go.mod go.sum* ./
|
||||||
|
|
||||||
# 修复 go.mod 版本过高问题(frpc 用 1.26.5,容器内 go 版本可能较低)
|
# 修复 go.mod 版本过高问题(frps 用 1.26.5,容器内 go 版本可能较低)
|
||||||
# 将 go 1.2x 降级为 go 1.21,确保兼容性
|
# 将 go 1.2x 降级为 go 1.21,确保兼容性
|
||||||
RUN sed -i 's/go 1.2[6-9].*/go 1.21/' go.mod && go mod tidy 2>/dev/null || true
|
RUN sed -i 's/go 1.2[6-9].*/go 1.21/' go.mod && go mod tidy 2>/dev/null || true
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ func SetupRouter() *gin.Engine {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== 认证 Handler(与 frpc 相同) ==========
|
// ========== 认证 Handler(与 frps 相同) ==========
|
||||||
|
|
||||||
func checkUsersHandler(c *gin.Context) {
|
func checkUsersHandler(c *gin.Context) {
|
||||||
count, err := CountUsers()
|
count, err := CountUsers()
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ func createTables() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== 迁移引擎(复用 frpc 的 db-history.go) ==========
|
// ========== 迁移引擎(复用 frps 的 db-history.go) ==========
|
||||||
|
|
||||||
func getCurrentSchemaVersion() string {
|
func getCurrentSchemaVersion() string {
|
||||||
var version string
|
var version string
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# frpc-console 一键部署脚本 (Docker 优先)
|
# frps-console 一键部署脚本 (Docker 优先)
|
||||||
# 用法:
|
# 用法:
|
||||||
# run-deploy.sh 引导后自动执行
|
# run-deploy.sh 引导后自动执行
|
||||||
# ============================================================
|
# ============================================================
|
||||||
@@ -251,13 +251,13 @@ generate_plan() {
|
|||||||
[ "$NEED_INSTALL_WGET" = true ] && pkgs="${pkgs} wget"
|
[ "$NEED_INSTALL_WGET" = true ] && pkgs="${pkgs} wget"
|
||||||
PLAN="${PLAN} • 安装必要工具:${pkgs}\n"
|
PLAN="${PLAN} • 安装必要工具:${pkgs}\n"
|
||||||
fi
|
fi
|
||||||
PLAN="${PLAN} • 拉取 frpc-console 源码 (${BRANCH} 分支)\n"
|
PLAN="${PLAN} • 拉取 frps-console 源码 (${BRANCH} 分支)\n"
|
||||||
PLAN="${PLAN} • 构建 Docker 镜像: ${IMAGE_NAME}:${IMAGE_TAG}\n"
|
PLAN="${PLAN} • 构建 Docker 镜像: ${IMAGE_NAME}:${IMAGE_TAG}\n"
|
||||||
PLAN="${PLAN} • 目标版本: ${TARGET_VERSION}\n"
|
PLAN="${PLAN} • 目标版本: ${TARGET_VERSION}\n"
|
||||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||||
PLAN="${PLAN} • 停止并删除旧容器\n"
|
PLAN="${PLAN} • 停止并删除旧容器\n"
|
||||||
fi
|
fi
|
||||||
PLAN="${PLAN} • 启动 frpc-console 容器 (端口 ${PORT})"
|
PLAN="${PLAN} • 启动 frps-console 容器 (端口 ${PORT})"
|
||||||
}
|
}
|
||||||
|
|
||||||
print_deployment_plan() {
|
print_deployment_plan() {
|
||||||
@@ -277,7 +277,7 @@ print_deployment_plan() {
|
|||||||
echo -e " ────────────────────────────────────"
|
echo -e " ────────────────────────────────────"
|
||||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${YELLOW}⚠ 检测到已存在的 frpc-console 容器${NC}"
|
echo -e " ${YELLOW}⚠ 检测到已存在的 frps-console 容器${NC}"
|
||||||
echo -e " 当前版本: ${CURRENT_VERSION}"
|
echo -e " 当前版本: ${CURRENT_VERSION}"
|
||||||
echo -e " 目标版本: ${TARGET_VERSION}"
|
echo -e " 目标版本: ${TARGET_VERSION}"
|
||||||
fi
|
fi
|
||||||
@@ -332,7 +332,7 @@ do_deploy() {
|
|||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}⚠ 降级可能导致数据不兼容${NC}"
|
echo -e "${YELLOW}⚠ 降级可能导致数据不兼容${NC}"
|
||||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||||
BACKUP_DIR="/opt/frpc-console-backups/${TIMESTAMP}_${CHANNEL}"
|
BACKUP_DIR="/opt/frps-console-backups/${TIMESTAMP}_${CHANNEL}"
|
||||||
echo -e "${CYAN}备份目录: ${BACKUP_DIR}${NC}"
|
echo -e "${CYAN}备份目录: ${BACKUP_DIR}${NC}"
|
||||||
read -p "确认执行降级? [y/N]: " CONFIRM_DOWNGRADE </dev/tty
|
read -p "确认执行降级? [y/N]: " CONFIRM_DOWNGRADE </dev/tty
|
||||||
if [[ ! "$CONFIRM_DOWNGRADE" =~ ^[Yy]$ ]]; then
|
if [[ ! "$CONFIRM_DOWNGRADE" =~ ^[Yy]$ ]]; then
|
||||||
@@ -342,7 +342,7 @@ do_deploy() {
|
|||||||
print_step "执行降级前备份..."
|
print_step "执行降级前备份..."
|
||||||
mkdir -p "$BACKUP_DIR"
|
mkdir -p "$BACKUP_DIR"
|
||||||
if [ -d "$DEPLOY_DIR" ]; then
|
if [ -d "$DEPLOY_DIR" ]; then
|
||||||
cp -r "$DEPLOY_DIR" "$BACKUP_DIR/frpc-console"
|
cp -r "$DEPLOY_DIR" "$BACKUP_DIR/frps-console"
|
||||||
print_success "备份完成: $BACKUP_DIR"
|
print_success "备份完成: $BACKUP_DIR"
|
||||||
else
|
else
|
||||||
print_warn "部署目录不存在,跳过备份"
|
print_warn "部署目录不存在,跳过备份"
|
||||||
@@ -388,9 +388,9 @@ do_deploy() {
|
|||||||
if [ "$CONTAINER_EXISTS" = true ]; then
|
if [ "$CONTAINER_EXISTS" = true ]; then
|
||||||
print_step "停止旧容器..."
|
print_step "停止旧容器..."
|
||||||
if [ "$CONTAINER_RUNNING" = true ]; then
|
if [ "$CONTAINER_RUNNING" = true ]; then
|
||||||
docker stop frpc-console 2>/dev/null || true
|
docker stop frps-console 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
docker rm frpc-console 2>/dev/null || true
|
docker rm frps-console 2>/dev/null || true
|
||||||
print_success "旧容器已清理"
|
print_success "旧容器已清理"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -402,12 +402,12 @@ do_deploy() {
|
|||||||
# ----- 检测并迁移旧版本文件(从根目录迁移到 data/)-----
|
# ----- 检测并迁移旧版本文件(从根目录迁移到 data/)-----
|
||||||
print_step "检测旧版本文件..."
|
print_step "检测旧版本文件..."
|
||||||
|
|
||||||
OLD_DB="${DEPLOY_DIR}/frpc-console.db"
|
OLD_DB="${DEPLOY_DIR}/frps-console.db"
|
||||||
OLD_TOML="${DEPLOY_DIR}/frpc.toml"
|
OLD_TOML="${DEPLOY_DIR}/frps.toml"
|
||||||
OLD_LOG="${DEPLOY_DIR}/frpc.log"
|
OLD_LOG="${DEPLOY_DIR}/frps.log"
|
||||||
OLD_PID="${DEPLOY_DIR}/frpc.pid"
|
OLD_PID="${DEPLOY_DIR}/frps.pid"
|
||||||
OLD_VERSION="${DEPLOY_DIR}/version.ini"
|
OLD_VERSION="${DEPLOY_DIR}/version.ini"
|
||||||
NEW_DB="${DATA_DIR}/frpc-console.db"
|
NEW_DB="${DATA_DIR}/frps-console.db"
|
||||||
|
|
||||||
if [ -f "$OLD_DB" ] && [ ! -f "$NEW_DB" ]; then
|
if [ -f "$OLD_DB" ] && [ ! -f "$NEW_DB" ]; then
|
||||||
print_warn "检测到旧版本数据库文件在根目录,将迁移到 data/ 子目录"
|
print_warn "检测到旧版本数据库文件在根目录,将迁移到 data/ 子目录"
|
||||||
@@ -415,14 +415,14 @@ do_deploy() {
|
|||||||
BACKUP_OLD_DIR="${DEPLOY_DIR}/.old_backup_$(date +%Y%m%d_%H%M%S)"
|
BACKUP_OLD_DIR="${DEPLOY_DIR}/.old_backup_$(date +%Y%m%d_%H%M%S)"
|
||||||
mkdir -p "$BACKUP_OLD_DIR"
|
mkdir -p "$BACKUP_OLD_DIR"
|
||||||
|
|
||||||
for file in frpc-console.db frpc.toml frpc.log frpc.pid version.ini; do
|
for file in frps-console.db frps.toml frps.log frps.pid version.ini; do
|
||||||
if [ -f "${DEPLOY_DIR}/${file}" ]; then
|
if [ -f "${DEPLOY_DIR}/${file}" ]; then
|
||||||
cp "${DEPLOY_DIR}/${file}" "${BACKUP_OLD_DIR}/" 2>/dev/null || true
|
cp "${DEPLOY_DIR}/${file}" "${BACKUP_OLD_DIR}/" 2>/dev/null || true
|
||||||
print_info " 已备份: ${file}"
|
print_info " 已备份: ${file}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
for file in frpc-console.db frpc.toml frpc.log frpc.pid version.ini; do
|
for file in frps-console.db frps.toml frps.log frps.pid version.ini; do
|
||||||
if [ -f "${DEPLOY_DIR}/${file}" ]; then
|
if [ -f "${DEPLOY_DIR}/${file}" ]; then
|
||||||
cp "${DEPLOY_DIR}/${file}" "${DATA_DIR}/" 2>/dev/null || true
|
cp "${DEPLOY_DIR}/${file}" "${DATA_DIR}/" 2>/dev/null || true
|
||||||
print_info " 已迁移: ${file} → data/"
|
print_info " 已迁移: ${file} → data/"
|
||||||
@@ -449,10 +449,10 @@ do_deploy() {
|
|||||||
|
|
||||||
# 验证镜像内容
|
# 验证镜像内容
|
||||||
print_step "验证镜像内容..."
|
print_step "验证镜像内容..."
|
||||||
if docker run --rm --entrypoint ls "${IMAGE_NAME}:${IMAGE_TAG}" -l /app/frpc-console 2>/dev/null; then
|
if docker run --rm --entrypoint ls "${IMAGE_NAME}:${IMAGE_TAG}" -l /app/frps-console 2>/dev/null; then
|
||||||
print_success "二进制文件存在于镜像中"
|
print_success "二进制文件存在于镜像中"
|
||||||
else
|
else
|
||||||
print_error "镜像中缺少 /app/frpc-console"
|
print_error "镜像中缺少 /app/frps-console"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -466,9 +466,9 @@ do_deploy() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ----- 启动新容器 -----
|
# ----- 启动新容器 -----
|
||||||
print_step "启动 frpc-console 容器..."
|
print_step "启动 frps-console 容器..."
|
||||||
docker run -d \
|
docker run -d \
|
||||||
--name frpc-console \
|
--name frps-console \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
--network host \
|
--network host \
|
||||||
-v ${DEPLOY_DIR}/data:/app/data \
|
-v ${DEPLOY_DIR}/data:/app/data \
|
||||||
@@ -476,10 +476,10 @@ do_deploy() {
|
|||||||
-e TZ=Asia/Shanghai \
|
-e TZ=Asia/Shanghai \
|
||||||
${IMAGE_NAME}:${IMAGE_TAG}
|
${IMAGE_NAME}:${IMAGE_TAG}
|
||||||
|
|
||||||
if docker ps | grep -q frpc-console; then
|
if docker ps | grep -q frps-console; then
|
||||||
print_success "容器启动成功!"
|
print_success "容器启动成功!"
|
||||||
else
|
else
|
||||||
print_error "容器启动失败,请检查日志: docker logs frpc-console"
|
print_error "容器启动失败,请检查日志: docker logs frps-console"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -488,25 +488,25 @@ do_deploy() {
|
|||||||
echo "$TARGET_VERSION" > "${DEPLOY_DIR}/data/version.ini"
|
echo "$TARGET_VERSION" > "${DEPLOY_DIR}/data/version.ini"
|
||||||
print_success "版本写入: ${TARGET_VERSION}"
|
print_success "版本写入: ${TARGET_VERSION}"
|
||||||
|
|
||||||
# ----- 检查 frpc 子进程(基于 PID 文件)-----
|
# ----- 检查 frps 子进程(基于 PID 文件)-----
|
||||||
print_step "检查 frpc 状态..."
|
print_step "检查 frps 状态..."
|
||||||
sleep 3
|
sleep 3
|
||||||
|
|
||||||
PID_FILE="${DEPLOY_DIR}/data/frpc.pid"
|
PID_FILE="${DEPLOY_DIR}/data/frps.pid"
|
||||||
if [ -f "$PID_FILE" ]; then
|
if [ -f "$PID_FILE" ]; then
|
||||||
PID=$(cat "$PID_FILE" 2>/dev/null | tr -d ' \n')
|
PID=$(cat "$PID_FILE" 2>/dev/null | tr -d ' \n')
|
||||||
if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
|
if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
|
||||||
print_success "frpc 进程运行正常 (PID: $PID)"
|
print_success "frps 进程运行正常 (PID: $PID)"
|
||||||
else
|
else
|
||||||
print_warn "frpc 进程未运行(PID 文件存在但进程已退出,可能配置为空)"
|
print_warn "frps 进程未运行(PID 文件存在但进程已退出,可能配置为空)"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
print_warn "frpc 进程未运行(PID 文件不存在,请导入 TOML 后重试)"
|
print_warn "frps 进程未运行(PID 文件不存在,请导入 TOML 后重试)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ----- 事务后钩子:检测数据库 -----
|
# ----- 事务后钩子:检测数据库 -----
|
||||||
print_step "验证数据库状态..."
|
print_step "验证数据库状态..."
|
||||||
if docker exec frpc-console sqlite3 /app/data/frpc-console.db "SELECT COUNT(*) FROM users;" 2>/dev/null | grep -q "^[0-9]"; then
|
if docker exec frps-console sqlite3 /app/data/frps-console.db "SELECT COUNT(*) FROM users;" 2>/dev/null | grep -q "^[0-9]"; then
|
||||||
print_success "数据库可用"
|
print_success "数据库可用"
|
||||||
else
|
else
|
||||||
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
|
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
|
||||||
@@ -515,7 +515,7 @@ do_deploy() {
|
|||||||
# ----- 验证版本 -----
|
# ----- 验证版本 -----
|
||||||
print_step "验证版本..."
|
print_step "验证版本..."
|
||||||
sleep 1
|
sleep 1
|
||||||
CONTAINER_VERSION=$(docker exec frpc-console cat /app/data/version.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo "unknown")
|
CONTAINER_VERSION=$(docker exec frps-console cat /app/data/version.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo "unknown")
|
||||||
echo -e " 容器版本: ${CONTAINER_VERSION}"
|
echo -e " 容器版本: ${CONTAINER_VERSION}"
|
||||||
echo -e " 目标版本: ${TARGET_VERSION}"
|
echo -e " 目标版本: ${TARGET_VERSION}"
|
||||||
if [ "$CONTAINER_VERSION" = "$TARGET_VERSION" ]; then
|
if [ "$CONTAINER_VERSION" = "$TARGET_VERSION" ]; then
|
||||||
@@ -553,7 +553,7 @@ do_deploy() {
|
|||||||
if [ -n "$BACKUP_DIR" ]; then
|
if [ -n "$BACKUP_DIR" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
print_warn "降级前数据已备份到: $BACKUP_DIR"
|
print_warn "降级前数据已备份到: $BACKUP_DIR"
|
||||||
echo " 如需回退: cp -r $BACKUP_DIR/frpc-console/* $DEPLOY_DIR/"
|
echo " 如需回退: cp -r $BACKUP_DIR/frps-console/* $DEPLOY_DIR/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ----- 清理临时文件 -----
|
# ----- 清理临时文件 -----
|
||||||
@@ -563,18 +563,18 @@ do_deploy() {
|
|||||||
|
|
||||||
# ----- 输出 -----
|
# ----- 输出 -----
|
||||||
print_title
|
print_title
|
||||||
print_success "frpc-console 部署完成!"
|
print_success "frps-console 部署完成!"
|
||||||
print_title
|
print_title
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${CYAN}📍 访问地址:${NC} http://$(hostname -I | awk '{print $1}'):${PORT}"
|
echo -e " ${CYAN}📍 访问地址:${NC} http://$(hostname -I | awk '{print $1}'):${PORT}"
|
||||||
echo -e " ${CYAN}📂 数据目录:${NC} ${DEPLOY_DIR}"
|
echo -e " ${CYAN}📂 数据目录:${NC} ${DEPLOY_DIR}"
|
||||||
echo -e " ${CYAN}🐳 容器名称:${NC} frpc-console"
|
echo -e " ${CYAN}🐳 容器名称:${NC} frps-console"
|
||||||
echo -e " ${CYAN}🏷️ 版本:${NC} ${TARGET_VERSION}"
|
echo -e " ${CYAN}🏷️ 版本:${NC} ${TARGET_VERSION}"
|
||||||
echo -e " ${CYAN}🌿 分支:${NC} ${BRANCH}"
|
echo -e " ${CYAN}🌿 分支:${NC} ${BRANCH}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${CYAN}常用命令:${NC}"
|
echo -e " ${CYAN}常用命令:${NC}"
|
||||||
echo " docker logs frpc-console # 查看日志"
|
echo " docker logs frps-console # 查看日志"
|
||||||
echo " docker restart frpc-console # 重启服务"
|
echo " docker restart frps-console # 重启服务"
|
||||||
echo " cat ${DEPLOY_DIR}/data/version.ini # 查看当前版本"
|
echo " cat ${DEPLOY_DIR}/data/version.ini # 查看当前版本"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e " ${YELLOW}首次访问需要注册管理员账户${NC}"
|
echo -e " ${YELLOW}首次访问需要注册管理员账户${NC}"
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
// setSysProcAttr 为 Unix 系统设置 Setsid,让 frpc 进程脱离父进程独立运行
|
// setSysProcAttr 为 Unix 系统设置 Setsid,让 frps 进程脱离父进程独立运行
|
||||||
func setSysProcAttr(cmd *exec.Cmd) {
|
func setSysProcAttr(cmd *exec.Cmd) {
|
||||||
if cmd.SysProcAttr == nil {
|
if cmd.SysProcAttr == nil {
|
||||||
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
cmd.SysProcAttr = &syscall.SysProcAttr{}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ bindPort = {{.BindPort}}
|
|||||||
|
|
||||||
auth.token = "{{.Token}}"
|
auth.token = "{{.Token}}"
|
||||||
|
|
||||||
log.to = "./frpc.log"
|
log.to = "./frps.log"
|
||||||
log.level = "{{.LogLevel}}"
|
log.level = "{{.LogLevel}}"
|
||||||
log.maxDays = {{.LogMaxDays}}
|
log.maxDays = {{.LogMaxDays}}
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,9 @@
|
|||||||
## 📖 简介
|
## 📖 简介
|
||||||
|
|
||||||
**frps-console** 是专为 [frp](https://github.com/fatedier/frp) 服务端(frps)设计的轻量级 Web 管理工具。
|
**frps-console** 是专为 [frp](https://github.com/fatedier/frp) 服务端(frps)设计的轻量级 Web 管理工具。
|
||||||
与 [frpc-console](https://git.whitetop.xyz/lxh2875931338/frpc-console) 形成姊妹篇,一个管理客户端,一个管理服务端。
|
与 [frps-console](https://git.whitetop.xyz/lxh2875931338/frps-console) 形成姊妹篇,一个管理客户端,一个管理服务端。
|
||||||
|
|
||||||
本项目作为 frp-console 系列套件的项目之一,延续 frpc-console 的设计哲学:**以无限接近原生占用的情况下,实现完全图形化的控制工具**。实测内存占用约 **92MB**(面板 60MB + frps 32MB),512MB 云服务器轻松跑。
|
本项目作为 frp-console 系列套件的项目之一,延续 frps-console 的设计哲学:**以无限接近原生占用的情况下,实现完全图形化的控制工具**。实测内存占用约 **92MB**(面板 60MB + frps 32MB),512MB 云服务器轻松跑。
|
||||||
|
|
||||||
### ✨ 核心特性
|
### ✨ 核心特性
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
- 🔄 **配置热加载** —— 修改配置后一键热加载,无需重启 frps 服务
|
- 🔄 **配置热加载** —— 修改配置后一键热加载,无需重启 frps 服务
|
||||||
- 🖥️ **多平台支持** —— Linux AMD64 / ARM64 / ARMv7 全平台兼容
|
- 🖥️ **多平台支持** —— Linux AMD64 / ARM64 / ARMv7 全平台兼容
|
||||||
- 🐳 **容器化就绪** —— 提供 Docker 镜像与一键部署脚本,开箱即用
|
- 🐳 **容器化就绪** —— 提供 Docker 镜像与一键部署脚本,开箱即用
|
||||||
- 🎨 **深色磨砂玻璃 UI** —— 与 frpc-console 保持统一的视觉风格
|
- 🎨 **深色磨砂玻璃 UI** —— 与 frps-console 保持统一的视觉风格
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ go build -ldflags="-s -w" -o frps-console .
|
|||||||
|
|
||||||
首次启动的话,console会创建一个全新的、符合官方规范的toml配置文件。</br>
|
首次启动的话,console会创建一个全新的、符合官方规范的toml配置文件。</br>
|
||||||
如果使用中出现启动失败问题,可以在console内重新配置一次服务端参数,或者导入已有的toml即可恢复</br>
|
如果使用中出现启动失败问题,可以在console内重新配置一次服务端参数,或者导入已有的toml即可恢复</br>
|
||||||
如果依旧无效,请查看 ./frpc.log 日志文件。
|
如果依旧无效,请查看 ./frps.log 日志文件。
|
||||||
|
|
||||||
#### Q: 支持哪些 frp 版本?
|
#### Q: 支持哪些 frp 版本?
|
||||||
|
|
||||||
@@ -156,11 +156,11 @@ go build -ldflags="-s -w" -o frps-console .
|
|||||||
| Linux | ARM64/Aarch64 | 0.70.0 |
|
| Linux | ARM64/Aarch64 | 0.70.0 |
|
||||||
| Linux | ARM_hf/ARMv7l | 0.70.0 |
|
| Linux | ARM_hf/ARMv7l | 0.70.0 |
|
||||||
|
|
||||||
#### Q: frps-console 和 frpc-console 有什么区别?
|
#### Q: frps-console 和 frps-console 有什么区别?
|
||||||
|
|
||||||
| 对比项 | frpc-console | frps-console |
|
| 对比项 | frps-console | frps-console |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 管理对象 | frpc(客户端) | frps(服务端) |
|
| 管理对象 | frps(客户端) | frps(服务端) |
|
||||||
| 适用场景 | 软路由、小主机、本地服务穿透 | VPS、云主机、流量中转 |
|
| 适用场景 | 软路由、小主机、本地服务穿透 | VPS、云主机、流量中转 |
|
||||||
| 默认端口 | 9300 | 9365 |
|
| 默认端口 | 9300 | 9365 |
|
||||||
| 核心功能 | 隧道增删改查 + 导入导出 TOML | 服务端配置 + 客户端状态概览 |
|
| 核心功能 | 隧道增删改查 + 导入导出 TOML | 服务端配置 + 客户端状态概览 |
|
||||||
@@ -219,9 +219,9 @@ frps-console 遵循 **“够用就好”** 的原则:
|
|||||||
|
|
||||||
## 📝 更新日志
|
## 📝 更新日志
|
||||||
|
|
||||||
### 2.0-Release(LTS,首次公开发布,与 frpc-console 2.0-LTS 同步)
|
### 2.0-Release(LTS,首次公开发布,与 frps-console 2.0-LTS 同步)
|
||||||
|
|
||||||
> 这是 frps-console 的首次正式发布。frps-console 没有 1.x 系列——在 v1.x 阶段,它尚处于内部测试形态,从未公开发布。首次公开发布直接定为 **2.0-LTS**,与 frpc-console 的 LTS 版本对齐,后续版本号将与 frpc-console 保持同步。
|
> 这是 frps-console 的首次正式发布。frps-console 没有 1.x 系列——在 v1.x 阶段,它尚处于内部测试形态,从未公开发布。首次公开发布直接定为 **2.0-LTS**,与 frps-console 的 LTS 版本对齐,后续版本号将与 frps-console 保持同步。
|
||||||
|
|
||||||
· 🚀 **服务端配置管理** —— 通过 WebUI 管理 frps 核心参数,告别手动编辑 TOML</br>
|
· 🚀 **服务端配置管理** —— 通过 WebUI 管理 frps 核心参数,告别手动编辑 TOML</br>
|
||||||
· 📊 **客户端状态概览** —— 实时查看连接到 frps 的所有客户端列表</br>
|
· 📊 **客户端状态概览** —— 实时查看连接到 frps 的所有客户端列表</br>
|
||||||
@@ -230,9 +230,9 @@ frps-console 遵循 **“够用就好”** 的原则:
|
|||||||
· 🔐 **首次启动 Web 注册** —— 无需命令行交互即可完成管理员账户创建</br>
|
· 🔐 **首次启动 Web 注册** —— 无需命令行交互即可完成管理员账户创建</br>
|
||||||
· 🖥️ **多平台支持** —— Linux AMD64 / ARM64 / ARMv7 全平台兼容</br>
|
· 🖥️ **多平台支持** —— Linux AMD64 / ARM64 / ARMv7 全平台兼容</br>
|
||||||
· 🐳 **容器化就绪** —— Docker 镜像 + 一键部署脚本,开箱即用</br>
|
· 🐳 **容器化就绪** —— Docker 镜像 + 一键部署脚本,开箱即用</br>
|
||||||
· 🎨 **深色磨砂玻璃 UI** —— 与 frpc-console 保持统一的视觉风格</br>
|
· 🎨 **深色磨砂玻璃 UI** —— 与 frps-console 保持统一的视觉风格</br>
|
||||||
· 🔒 **数据库自动迁移** —— 升级时自动备份 + 迁移,数据零丢失</br>
|
· 🔒 **数据库自动迁移** —— 升级时自动备份 + 迁移,数据零丢失</br>
|
||||||
· 🧩 **frp v2 协议就绪** —— frps 已升级至 0.70.0 LTS,原生支持 v2 协议(v2 开关在 frpc 侧开启)
|
· 🧩 **frp v2 协议就绪** —— frps 已升级至 0.70.0 LTS,原生支持 v2 协议(v2 开关在 frps 侧开启)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -246,9 +246,9 @@ MIT License © 2026 lxh2875931338(XHLiang0)
|
|||||||
|
|
||||||
### FRP 生态互补工具
|
### FRP 生态互补工具
|
||||||
|
|
||||||
· [MoonProxy](https://github.com/MoonProxyHQ/moonproxy-desktop) —— 基于 Tauri v2 + Vue 3 + Rust 构建的跨平台 FRP 桌面客户端(frpc GUI),面向 macOS 与 Windows,MIT 协议开源。
|
· [MoonProxy](https://github.com/MoonProxyHQ/moonproxy-desktop) —— 基于 Tauri v2 + Vue 3 + Rust 构建的跨平台 FRP 桌面客户端(frps GUI),面向 macOS 与 Windows,MIT 协议开源。
|
||||||
|
|
||||||
· [frpc-console](https://git.whitetop.xyz/lxh2875931338/frpc-console) —— 姊妹篇,管理 frpc 客户端,已发布 2.0-LTS,同步 LTS 维护。
|
· [frps-console](https://git.whitetop.xyz/lxh2875931338/frps-console) —— 姊妹篇,管理 frps 客户端,已发布 2.0-LTS,同步 LTS 维护。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# frpc-console 部署入口(前置引导脚本)
|
# frps-console 部署入口(前置引导脚本)
|
||||||
# 此脚本固定在 main 分支,永不变化。
|
# 此脚本固定在 main 分支,永不变化。
|
||||||
# 职责:引导用户选择通道,拉取对应分支的 deploy.sh 并执行
|
# 职责:引导用户选择通道,拉取对应分支的 deploy.sh 并执行
|
||||||
#
|
#
|
||||||
@@ -22,8 +22,8 @@ fi
|
|||||||
print_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
print_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||||
print_error() { echo -e "${RED}[✗]${NC} $1"; }
|
print_error() { echo -e "${RED}[✗]${NC} $1"; }
|
||||||
|
|
||||||
REPO_URL="https://git.whitetop.xyz/lxh2875931338/frpc-console.git"
|
REPO_URL="https://git.whitetop.xyz/lxh2875931338/frps-console.git"
|
||||||
WORK_DIR="/tmp/frpc-console-deploy"
|
WORK_DIR="/tmp/frps-console-deploy"
|
||||||
CHANNEL=""
|
CHANNEL=""
|
||||||
BRANCH=""
|
BRANCH=""
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ select_channel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fetch_and_run() {
|
fetch_and_run() {
|
||||||
local deploy_url="https://git.whitetop.xyz/lxh2875931338/frpc-console/raw/${BRANCH}/deploy.sh"
|
local deploy_url="https://git.whitetop.xyz/lxh2875931338/frps-console/raw/${BRANCH}/deploy.sh"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${CYAN}▶ 从 ${BRANCH} 分支拉取 deploy.sh...${NC}"
|
echo -e "${CYAN}▶ 从 ${BRANCH} 分支拉取 deploy.sh...${NC}"
|
||||||
rm -rf "$WORK_DIR"
|
rm -rf "$WORK_DIR"
|
||||||
@@ -104,7 +104,7 @@ fetch_and_run() {
|
|||||||
main() {
|
main() {
|
||||||
clear 2>/dev/null || true
|
clear 2>/dev/null || true
|
||||||
echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}"
|
echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}"
|
||||||
echo -e "${MAGENTA} frpc-console 部署入口${NC}"
|
echo -e "${MAGENTA} frps-console 部署入口${NC}"
|
||||||
echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}"
|
echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
parse_args "$@"
|
parse_args "$@"
|
||||||
|
|||||||
+2
-2
@@ -239,10 +239,10 @@
|
|||||||
<div class="v2-switch-wrapper">
|
<div class="v2-switch-wrapper">
|
||||||
<span class="status-dot active"></span>
|
<span class="status-dot active"></span>
|
||||||
<span class="status-text active">已就绪</span>
|
<span class="status-text active">已就绪</span>
|
||||||
<span class="v2-badge v2-enabled">frps 已支持 v2 协议,请在 frpc 侧开启</span>
|
<span class="v2-badge v2-enabled">frps 已支持 v2 协议,请在 frps 侧开启</span>
|
||||||
</div>
|
</div>
|
||||||
<span class="hint-text v2-hint">
|
<span class="hint-text v2-hint">
|
||||||
frps 已内置 v2 协议支持,无需额外配置。如需启用,请在 frpc 配置中设置 transport.wireProtocol = "v2"
|
frps 已内置 v2 协议支持,无需额外配置。如需启用,请在 frps 配置中设置 transport.wireProtocol = "v2"
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
; frps-console 版本声明文件
|
||||||
|
; 格式: {语义版本号} [{LTS发布日期}]
|
||||||
|
; 示例:
|
||||||
|
; 2.4 # Preview 版本,无日期
|
||||||
|
; 2.5 20260729 # LTS 版本,带发布日期
|
||||||
|
2.4
|
||||||
Reference in New Issue
Block a user