一个现代化的 Redis 可视化管理工具,支持多用户、多连接管理,提供直观的 Web 界面来管理 Redis 数据。
- 端到端加密 (E2E):所有敏感连接数据使用 AES-256-GCM 加密存储
- 加密密钥由用户密码 + 随机盐值通过 PBKDF2 派生,服务端无法解密用户数据
- 支持双重认证 (2FA/TOTP)
- JWT Token 认证
- 支持 Standalone、Cluster、Sentinel 三种连接模式
- 支持 SSH 隧道连接(密码/私钥认证)
- 支持 TLS/SSL 加密连接
- 连接分组管理,支持拖拽排序
- 支持所有 Redis 数据类型:String、List、Hash、Set、ZSet
- Key 浏览支持多种搜索模式:KEYS、SCAN、正则表达式
- 内置代码编辑器,支持 JSON/XML/YAML 语法高亮和格式化
- 内置 Redis 命令终端,支持命令自动补全
- 管理员/普通用户角色区分
- 用户数据隔离,每个用户独立管理自己的连接
- 支持用户注册(可配置开关)
- 登录验证码、双重认证 (2FA/TOTP) 支持
- 多 Tab 页签管理,支持分屏显示
- Tab 拖拽排序和分屏操作
- 数据库别名批量管理
- 响应式布局
体验地址: https://redis.lhstack.xyz
自己注册即可
docker run -d \
--name web-redis-manager \
-p 8080:8080 \
-v redis-manager-data:/app/data \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=admin123 \
lhstack/web-redis-manager:latest或使用 docker-compose:
services:
web-redis-manager:
image: lhstack/web-redis-manager:1.0.0
container_name: web-redis-manager
environment:
- SERVER_PORT=8080
- GIN_MODE=release
- DB_DRIVER=sqlite
- DB_PATH=/app/data/data.db
- JWT_SECRET=JJN0v2qX0Nne9SPC
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=7a7gx7fdUtrLxWSX
volumes:
- ./data:/app/data
restart: unless-stopped
logging:
options:
max-file: '1'
max-size: '64k'
deploy:
resources:
limits:
cpus: '2'
memory: 512Mcurl -O https://raw.githubusercontent.com/lhstack/web-redis-manager/master/docker-compose.yml
docker-compose up -dcurl -O https://raw.githubusercontent.com/lhstack/web-redis-manager/master/docker-compose.mysql.yml
docker-compose -f docker-compose.mysql.yml up -dcurl -O https://raw.githubusercontent.com/lhstack/web-redis-manager/master/docker-compose.postgres.yml
docker-compose -f docker-compose.postgres.yml up -d- Go 1.21+
- Node.js 18+
- pnpm
# 前端
cd frontend
pnpm install
pnpm build
# 后端
cd ../backend
cp config.toml.example config.toml
go mod tidy
go build -o web-redis-manager .
# 运行
./web-redis-manager| 环境变量 | 说明 | 默认值 |
|---|---|---|
| SERVER_PORT | 服务端口 | 8080 |
| SERVER_HOST | 监听地址 | 0.0.0.0 |
| DB_DRIVER | 数据库驱动 (sqlite / mysql / postgresql / postgres) | sqlite |
| DB_PATH | SQLite 数据库文件路径 (仅 sqlite) | ./data/redis_manager.db |
| DB_HOST | 数据库主机 (仅 mysql/postgresql) | localhost |
| DB_PORT | 数据库端口 (仅 mysql/postgresql,mysql 默认 3306,postgresql 默认 5432) | 3306 |
| DB_USER | 数据库用户 (仅 mysql/postgresql) | root |
| DB_PASSWORD | 数据库密码 (仅 mysql/postgresql) | - |
| DB_NAME | 数据库名 (仅 mysql/postgresql) | redis_manager |
| DB_SSLMODE | SSL 模式 (仅 postgresql,可选: disable/require/verify-ca/verify-full) | disable |
| JWT_SECRET | JWT 密钥 | 随机生成 |
| JWT_EXPIRE_HOURS | Token 过期时间(小时) | 24 |
| ADMIN_USERNAME | 管理员用户名 | admin |
| ADMIN_PASSWORD | 管理员密码 | 随机生成 |
| ALLOW_REGISTRATION | 允许用户注册 | false |
| REQUIRE_CAPTCHA | 登录需要验证码 | true |
| REQUIRE_2FA | 强制双重认证 | false |
配置文件位于 backend/config.toml,环境变量优先级高于配置文件:
[server]
port = "8080"
host = "0.0.0.0"
[database]
# 数据库驱动,支持: sqlite, mysql, postgresql (或 postgres)
driver = "sqlite"
# SQLite 配置 (仅 driver = "sqlite" 时有效)
path = "./data/redis_manager.db"
# MySQL / PostgreSQL 配置 (仅 driver = "mysql" 或 "postgresql" 时有效)
host = "127.0.0.1"
port = 3306 # MySQL: 3306, PostgreSQL: 5432
user = "root"
password = ""
dbname = "redis_manager"
sslmode = "disable" # 仅 PostgreSQL,可选: disable/require/verify-ca/verify-full
[auth]
admin_username = "admin"
admin_password = "" # 留空则自动生成
jwt_secret = "" # 留空则自动生成
jwt_expire_hours = 24
allow_registration = false
require_captcha = true
require_2fa = false- Go 1.21+ / Gin
- GORM (SQLite/MySQL/PostgreSQL)
- go-redis
- JWT 认证
- Vue 3 + TypeScript
- Element Plus
- Pinia
- CodeMirror
- Vite
.
├── backend/
│ ├── config/ # 配置管理
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件
│ ├── model/ # 数据模型
│ ├── router/ # 路由配置
│ ├── service/ # 业务逻辑
│ ├── static/ # 前端构建输出
│ └── main.go
├── frontend/
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── components/ # Vue 组件
│ │ ├── stores/ # Pinia 状态
│ │ └── types/ # TypeScript 类型
│ └── vite.config.ts
├── Dockerfile
├── docker-compose.yml # SQLite 配置
├── docker-compose.mysql.yml # MySQL 配置
├── docker-compose.postgres.yml # PostgreSQL 配置
└── README.md
用户密码 + 随机盐值 → PBKDF2 (100,000 次迭代) → AES-256 密钥
↓
连接数据 (host, port, password, SSH, TLS...) → AES-256-GCM 加密 → 数据库存储
加密范围包括:Redis 连接凭据、SSH 隧道配置、TLS 证书配置、Sentinel/Cluster 节点信息。
即使数据库被泄露,攻击者也无法解密连接数据。
本项目采用 Apache2 License 开源协议。
Copyright (c) 2025 lhstack









