34 Commits
Author SHA1 Message Date
lxh2875931338 a069c30906 2.4-LTS紧急更新:alpine官方源疑似失效,增加国内源匹配能力 2026-07-31 22:24:26 +08:00
lxh2875931338 1473083548 小修补后的deploy.sh部署逻辑,当前为LTS可用版本 2026-07-30 20:25:29 +08:00
lxh2875931338 0147f482e2 更新日志 2026-07-30 13:11:12 +08:00
lxh2875931338 94558dfa25 更新日志 2026-07-30 13:08:59 +08:00
lxh2875931338 26f184399f 更新日志调整 2026-07-30 13:08:20 +08:00
lxh2875931338 bd40eea81c 更新日志 2026-07-30 13:06:28 +08:00
lxh2875931338 461831414b Merge branch 'test' 2026-07-30 13:03:00 +08:00
lxh2875931338 2ad151e44b 合并test分支代码 2026-07-30 12:48:46 +08:00
lxh2875931338 5a28775f84 Merge branch 'test' 2026-07-30 12:48:29 +08:00
lxh2875931338 93d11d00a2 在test分支完成测试之前,自动部署脚本会恢复到原有版本 2026-07-29 23:51:16 +08:00
lxh2875931338 5c89232004 部分部署逻辑调整 2026-07-29 23:28:39 +08:00
lxh2875931338 cd178a1a9d 部署逻辑存在调整,与test端同步 2026-07-29 23:23:25 +08:00
lxh2875931338 a87e9aa0b8 给main端添加最新的自动化脚本进行测试 2026-07-29 23:17:19 +08:00
lxh2875931338 205525c243 调整更新文档 2026-07-29 19:53:28 +08:00
lxh2875931338 16204200de 增加独立的更新日志页面 2026-07-29 19:51:27 +08:00
lxh2875931338 e1cf6f4f47 推送新的日志 2026-07-28 23:14:39 +08:00
lxh2875931338 a5c33580e2 调整部分部署逻辑 2026-07-28 22:56:45 +08:00
lxh2875931338 f2af48f8d0 调整部分部署逻辑 2026-07-28 22:50:17 +08:00
lxh2875931338 2663e71b4f 调整部分部署逻辑 2026-07-28 22:35:48 +08:00
lxh2875931338 bf24d3cb00 调整部分部署逻辑 2026-07-28 22:29:42 +08:00
lxh2875931338 00f2b9fd14 重新设计新的部署逻辑,去掉本机自己的go build,合并到docker多阶段构建部分进行 2026-07-28 22:23:39 +08:00
lxh2875931338 76ac9503c6 调整部分部署逻辑 2026-07-28 21:58:12 +08:00
lxh2875931338 04851d244f 调整部分部署逻辑 2026-07-28 21:55:33 +08:00
lxh2875931338 a2f4326882 确认部分逻辑 2026-07-28 21:50:04 +08:00
lxh2875931338 4cd438ed3e Merge branch 'test' 2026-07-28 21:24:54 +08:00
lxh2875931338 1bfa2383c1 docker脚本部分逻辑更新 2026-07-28 20:21:01 +08:00
lxh2875931338 b13f2d5047 指南更新 2026-07-28 20:13:14 +08:00
lxh2875931338 7a2737bc83 指南更新 2026-07-28 20:11:53 +08:00
lxh2875931338 1fd845a981 readme更新 2026-07-28 20:09:34 +08:00
lxh2875931338 f9a97a0af5 版本更新说明 2026-07-28 20:06:14 +08:00
lxh2875931338 ab73a38f06 直接更新 2026-07-28 20:03:20 +08:00
lxh2875931338 21c9c9556b 2.2逻辑设计已完成 2026-07-28 20:01:43 +08:00
lxh2875931338 509de72d10 2.2的部分代码新增实现 2026-07-28 18:46:08 +08:00
lxh2875931338 74a054d90c 更新 readme.md
readme更新2.0-LTS发布信息
2026-07-28 00:28:23 +08:00
6 changed files with 89 additions and 60 deletions
+2 -1
View File
@@ -17,7 +17,8 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
-o frpc-console .
FROM alpine:latest
# 先切换到国内镜像源,再安装包
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk --no-cache add ca-certificates tzdata sqlite
WORKDIR /app
+30
View File
@@ -0,0 +1,30 @@
# 多阶段构建
FROM golang:alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN sed -i 's/go 1.2[6-9].*/go 1.21/' go.mod && go mod tidy
RUN go env -w GOPROXY=https://goproxy.cn,direct
RUN go mod download
COPY . .
# 编译时不注入任何版本信息(纯净二进制)
RUN CGO_ENABLED=0 GOOS=linux go build \
-ldflags="-s -w" \
-o frpc-console .
FROM alpine:latest
RUN apk --no-cache add ca-certificates tzdata sqlite
WORKDIR /app
COPY --from=builder /app/frpc-console /app/frpc-console
COPY static/ /app/static/
EXPOSE 9300
ENTRYPOINT ["/app/frpc-console"]
+12 -13
View File
@@ -151,12 +151,12 @@ generate_target_version() {
}
get_current_version() {
local version_file="${DEPLOY_DIR}/version.ini"
local version_file="${DEPLOY_DIR}/data/version.ini"
if [ -f "$version_file" ]; then
grep -v "^[;#]" "$version_file" | head -1 | tr -d '\n'
else
if [ "$CONTAINER_EXISTS" = true ]; then
docker exec frpc-console cat /app/version.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo ""
docker exec frpc-console cat /app/data/version.ini 2>/dev/null | grep -v "^[;#]" | head -1 | tr -d '\n' || echo ""
else
echo ""
fi
@@ -325,7 +325,6 @@ do_deploy() {
# ----- 事务前钩子:备份数据库(仅降级时) -----
BACKUP_DIR=""
if [ -n "$CURRENT_VERSION" ] && [ -n "$TARGET_VERSION" ]; then
# 提取语义版本比较
CUR_SEMVER=$(echo "$CURRENT_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*$/\1/')
TGT_SEMVER=$(echo "$TARGET_VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*$/\1/')
if [ "$TGT_SEMVER" \< "$CUR_SEMVER" ] 2>/dev/null; then
@@ -410,11 +409,9 @@ OLD_PID="${DEPLOY_DIR}/frpc.pid"
OLD_VERSION="${DEPLOY_DIR}/version.ini"
NEW_DB="${DATA_DIR}/frpc-console.db"
# 如果根目录有旧数据库文件,但 data/ 目录没有,执行迁移
if [ -f "$OLD_DB" ] && [ ! -f "$NEW_DB" ]; then
print_warn "检测到旧版本数据库文件在根目录,将迁移到 data/ 子目录"
# 备份旧文件
BACKUP_OLD_DIR="${DEPLOY_DIR}/.old_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_OLD_DIR"
@@ -425,7 +422,6 @@ if [ -f "$OLD_DB" ] && [ ! -f "$NEW_DB" ]; then
fi
done
# 复制文件到 data/ 目录
for file in frpc-console.db frpc.toml frpc.log frpc.pid version.ini; do
if [ -f "${DEPLOY_DIR}/${file}" ]; then
cp "${DEPLOY_DIR}/${file}" "${DATA_DIR}/" 2>/dev/null || true
@@ -471,7 +467,6 @@ docker build --no-cache \
# ----- 启动新容器 -----
print_step "启动 frpc-console 容器..."
# 启动容器(只挂载数据目录)
docker run -d \
--name frpc-console \
--restart=always \
@@ -509,20 +504,24 @@ docker build --no-cache \
print_warn "frpc 进程未运行(PID 文件不存在,请导入 TOML 后重试)"
fi
# ----- 验证数据库 -----
# ----- 事务后钩子:检测数据库 -----
print_step "验证数据库状态..."
if docker exec frpc-console sqlite3 /app/frpc-console.db "SELECT COUNT(*) FROM users;" 2>/dev/null | grep -q "^[0-9]"; then
if docker exec frpc-console sqlite3 /app/data/frpc-console.db "SELECT COUNT(*) FROM users;" 2>/dev/null | grep -q "^[0-9]"; then
print_success "数据库可用"
else
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
fi
# ----- 验证版本 -----
CONTAINER_VERSION=$(docker exec frpc-console cat /app/version.ini 2>/dev/null | tr -d '\n' || echo "")
print_step "验证版本..."
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")
echo -e " 容器版本: ${CONTAINER_VERSION}"
echo -e " 目标版本: ${TARGET_VERSION}"
if [ "$CONTAINER_VERSION" = "$TARGET_VERSION" ]; then
print_success "容器版本验证通过: ${CONTAINER_VERSION}"
print_success "版本写入成功"
else
print_warn "容器版本: ${CONTAINER_VERSION}, 目标版本: ${TARGET_VERSION}"
print_warn "版本不匹配,请检查"
fi
# ----- 清理旧镜像 -----
@@ -576,7 +575,7 @@ docker build --no-cache \
echo -e " ${CYAN}常用命令:${NC}"
echo " docker logs frpc-console # 查看日志"
echo " docker restart frpc-console # 重启服务"
echo " cat ${DEPLOY_DIR}/version.ini # 查看当前版本"
echo " cat ${DEPLOY_DIR}/data/version.ini # 查看当前版本"
echo ""
echo -e " ${YELLOW}首次访问需要注册管理员账户${NC}"
echo ""
+5 -3
View File
@@ -1,13 +1,15 @@
## 🐳 Docker 版安装指南
> 推荐方式:一键脚本自动部署,无需手动编译,无需安装 Go 环境。
> 推荐方式:一键脚本自动部署,无需手动编译,无需安装 Go 环境。</br>
> ⚠️ **注意**:Docker 版直接从源码构建,使用的是当前 `main` 分支的最新代码,更新进度会远快于 Release 版本。⚠️</br>
> 如需使用特定版本(如 LTS),请查看 [Releases](https://git.whitetop.xyz/lxh2875931338/frpc-console/releases) 确认版本号,并通过二进制方式部署指定版本。
### 一、📥 前置条件
- 已安装 Docker(必须)
- 已安装 curl / wget(脚本会自动检查并安装)
- 操作系统:Linuxx86_64 / ARM64 均可,ARMv7 将在不久的未来得到支持
- 操作系统:Linuxx86_64 / ARM64 / ARMv7 均可
### 二、🚀 一键部署(推荐)
@@ -130,7 +132,7 @@ docker run -d \
--name frpc-console \
--restart=always \
--network host \
-v /opt/frpc-console/data:/app/data \
-v /opt/frpc-console/data:/app\
-e PORT=9300 \
-e TZ=Asia/Shanghai \
frpc-console:latest
+1 -4
View File
@@ -258,10 +258,7 @@ frpc-console 遵循 **“够用就好”** 的原则:
## 📝 更新日志
## 📝 更新日志
####相关更新日志请查看[update-logs.md](https://git.whitetop.xyz/lxh2875931338/frpc-console/raw/main/update-logs.md)
#### 相关更新日志请查看[update-logs.md](./update-logs.md)
---
+1 -1
View File
@@ -170,7 +170,7 @@ function filterProxies(list, keyword) {
(p) =>
p.name.toLowerCase().includes(kw) ||
p.localIP.includes(kw) ||
String(p.remotePort).includes(kw),
String(p.remotePort).includes(kw)
);
}