# frp_controller **Repository Path**: yuan199700/frp_controller ## Basic Information - **Project Name**: frp_controller - **Description**: 内网穿透配置管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-02 - **Last Updated**: 2026-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # frp监控组件 用于对每个frp代理进行操作 ### 架构设计 采用master-slave架构 master: 1.负责监控所有slave的心跳 2.负责frp变更配置的下发 3.frp代理配置可视化页面服务 slave: 1.负责配置本地frpc.toml的写入 2.frp的操作停止/启动/重启 3.心跳接口,用于master监控 ![输入图片说明](imgimage.png) ![输入图片说明](imgimage.png) ![输入图片说明](imgimage.png) ### 技术选型 后端: python3 + flask + sqlAlchemy 前端: TODO ### 表结构设计 #### server 用于存储服务器信息 ```sql CREATE TABLE server ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', address VARCHAR(32) NOT NULL COMMENT '服务器地址(IP或域名)', name VARCHAR(100) NOT NULL COMMENT '服务器名称', description VARCHAR(255) DEFAULT NULL COMMENT '服务器说明', status TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '服务器状态:1-正常,2-离线', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务器信息表'; ``` #### proxies 用于保存每个服务器的frp代理配置 ```sql CREATE TABLE proxies ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', server_id BIGINT UNSIGNED NOT NULL COMMENT '所属服务器ID(关联 server.id)', name VARCHAR(100) NOT NULL COMMENT '代理名称(frp proxy name)', type VARCHAR(20) NOT NULL COMMENT '代理类型(tcp / udp / http / https)', local_ip VARCHAR(45) NOT NULL COMMENT '本地IP(支持IPv6)', local_port INT UNSIGNED NOT NULL COMMENT '本地端口', remote_port INT UNSIGNED DEFAULT NULL COMMENT '远程端口', status ENUM('configuring', 'active') NOT NULL DEFAULT 'configuring' COMMENT '状态:configuring=配置中,active=使用中', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', FOREIGN KEY (server_id) REFERENCES server(id) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE KEY uk_server_id_name (server_id, name) COMMENT '同一服务器下代理名称唯一', UNIQUE KEY uk_remote_port (remote_port) COMMENT '远程端口唯一' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='FRP 代理配置表'; ``` #### server_process 每个代理服务器上运行的程序的基本信息,他们的服务地址等 包含id, server_id, proxies_id, name, type, server_host, created_at ,updated_at ```sql CREATE TABLE server_process ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', server_id BIGINT UNSIGNED NOT NULL COMMENT '所属服务器ID(关联 server.id)', proxies_id BIGINT UNSIGNED NOT NULL COMMENT '所属代理ID(关联 proxies.id)', name VARCHAR(100) NOT NULL COMMENT '进程名称', type VARCHAR(32) NOT NULL COMMENT '进程类型(sys-系统程序,user-用户程序)', server_host VARCHAR(255) NOT NULL COMMENT '服务地址', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', FOREIGN KEY (server_id) REFERENCES server(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (proxies_id) REFERENCES proxies(id) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE KEY uk_proxies_id (proxies_id) COMMENT '代理ID唯一' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务器进程信息表'; ``` #### process_info 每个程序的其他信息,后期可扩展其他字段,目前只记录服务的登录用户名和密码 包含process_id, user, psd, created_at ,updated_at ```sql CREATE TABLE process_info ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', process_id BIGINT UNSIGNED NOT NULL COMMENT '所属进程ID(关联 server_process.id)', user VARCHAR(100) DEFAULT NULL COMMENT '登录用户名', psd VARCHAR(255) DEFAULT NULL COMMENT '登录密码', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', FOREIGN KEY (process_id) REFERENCES server_process(id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='进程扩展信息表'; ```