Docker一键部署worklenz项目管理系统
一、项目简介
项目简介
作为一款新一代的开源项目管理平台,Worklenz聚焦于“消灭工具臃肿”的核心理念,为组织提供从任务下发、进度跟踪到工时统计的端到端管理能力。系统巧妙地平衡了功能的丰富度与操作的极简性,内置灵活的任务依赖、自定义工作流及多维度报表分析。通过私有化部署,企业不仅能让敏捷开发与日常协作无缝融合,更能将核心业务数据与团队产出资产牢牢掌握在自己手中。
技术生态优势
现代化全栈架构:前端基于现代响应式框架(Angular/React + TypeScript)构建,确保极致的流畅交互体验;后端及业务逻辑同样深度拥抱TypeScript生态,底层数据由成熟稳健的 PostgreSQL关系型数据库驱动,技术栈不仅性能优异,且对现代全栈开发者极其友好。
精细化容量与工时规划:区别于传统只做看板的任务工具,Worklenz 从底层数据模型上即内置了“工时追踪(Time Tracking)”与“团队容量(Capacity Planning)”的关联逻辑。支持通过可视化调度器直接调配人力资源,让项目进度与组织效能实现真正的数字化闭环。
生产级安全加固设计:系统在架构设计上将安全性放在首位。官方支持前后端网络隔离(后端仅限内部通信)、API与登录端点高频限流保护(Rate Limiting),并内置 HSTS、CSP、X-Frame-Options 等完备的安全响应头,为企业私有数据筑起坚实屏障。
原生容器化与无缝运维:官方提供完善的Docker部署生态,支持通过Docker Compose实现一键微服务编排。值得一提的是,其容器采用非Root(Non-root)安全模式运行,并提供自动生成 secure secrets的配置脚本,极大地降低了私有化部署、安全平滑升级与自动化运维的门槛。
二、环境准备
- VPS一台 最低配置2核2G 带宽1M即可
- 服务器系统:本文演示的系统是Ubuntu-24.04.1(LTS),部署的是测试环境。
- 是否备案:如果服务器在国外,站点无须备案;如果服务器在国内,网站必须备案。
- 提前解析好的域名一个
- 图床一个(又拍云、阿里云oss、腾讯云cos、七牛云等)
- 为了便于后期的升级维护以及卸载,利用docker+Nginx Proxy Manager部署
- 安装好Docker、Docker-compose、Nginx Proxy Manager(安装教程)
- SSH工具:FinalShell官网
- 项目地址:Github官网
- 官方软硬件配置要求请参考以下链接:Worklenz官网文档说明
三、部署过程
系统初始化,更新索引
#更新索引库
sudo apt-get update
创建部署目录
# 创建docker项目目录
mkdir -p /root/data/docker_workspace
# 进入目录
cd /root/data/docker_workspace
# 克隆仓库
git clone https://github.com/Worklenz/worklenz.git
# 进入worklenz仓库目录
cd /root/data/docker_workspace/worklenz
# 复制配置模板为实际环境变量文件
cp .env.example .env
请按需调整测试/生产环境的配置。部分密码值请运行 openssl rand -hex 32 生成并替换。
# ============================================================================
# Worklenz 自托管配置
# ============================================================================
# 将此文件复制为 .env,并根据你的需求进行配置
# 必填项已使用 (REQUIRED) 标记
# ============================================================================
# ============================================================================
# 部署模式
# ============================================================================
# 选择部署模式:
# - express:所有服务内置(包含 PostgreSQL、Redis、MinIO)- 推荐大多数用户使用
# - advanced:使用外部服务(AWS S3、Azure Blob、外部 PostgreSQL)
DEPLOYMENT_MODE=express
# ============================================================================
# 域名与 URL 配置
# ============================================================================
# 你的域名(例如:worklenz.example.com)
# 本地测试:localhost
# 生产环境:your-domain.com
DOMAIN=47.201.62.23
# API 基础地址(前端通过此地址连接后端)
# HTTPS 生产环境:https://your-domain.com
# 本地 HTTP:http://localhost
VITE_API_URL=https://47.201.62.23
# WebSocket 地址(用于实时功能)
# HTTPS 生产环境:wss://your-domain.com
# 本地环境:ws://localhost
VITE_SOCKET_URL=wss://47.201.62.23
# 前端访问地址(后端用于 CORS 与重定向)
# 应与域名地址保持一致
FRONTEND_URL=https://47.201.62.23
# CORS 配置
# 开发环境:*(允许所有来源)
# 生产环境:your-domain.com 或 https://your-domain.com
SERVER_CORS=https://47.201.62.23
SOCKET_IO_CORS=https://47.201.62.23
# ============================================================================
# 端口配置
# ============================================================================
# 暴露到宿主机的端口
HTTP_PORT=80
HTTPS_PORT=443
# ============================================================================
# 数据库配置(PostgreSQL)
# ============================================================================
DB_NAME=worklenz_db
DB_USER=postgres
# 数据库密码(必填)- 请务必修改
DB_PASSWORD=my_secure_postgres_pwd_2026
DB_MAX_CLIENTS=50
USE_PG_NATIVE=false
# 高级配置:外部 PostgreSQL(仅在不使用内置 PostgreSQL 时配置)
# DB_HOST=your-postgres-host.com
# DB_PORT=5432
# ============================================================================
# 安全密钥配置
# ============================================================================
# 可通过以下命令生成安全随机字符串:
# openssl rand -hex 32
# Session 密钥(必填)
SESSION_SECRET=14841fe711df16abd10ea65da9021c21c66b11304231cdad5a40927bed5474cf
# Cookie 密钥(必填)
COOKIE_SECRET=247e1835f6bd5cc55b5df25e182eeb185732ddfe664f83840b2e66b87a3875c5
# JWT 密钥(必填)
JWT_SECRET=6543fb2b9ef1a3d6a8cdfe9d469f450aa8e320dbe97a105e206f58db11fb732b
# Session Cookie 名称
SESSION_NAME=worklenz.sid
# ============================================================================
# Redis 配置
# ============================================================================
# Redis 密码(Express 模式必填)
REDIS_PASSWORD=my_secure_redis_pwd_2026
REDIS_DB=0
# ============================================================================
# 存储配置
# ============================================================================
# 存储提供商:
# s3(适用于 MinIO/AWS S3)
# azure(适用于 Azure Blob Storage)
STORAGE_PROVIDER=s3
# ----------------------------------------------------------------------------
# MinIO 配置(Express 模式默认配置,兼容 S3)
# ----------------------------------------------------------------------------
AWS_REGION=us-east-1
AWS_BUCKET=worklenz-bucket
AWS_ACCESS_KEY_ID=minioadmin
# MinIO Secret Access Key(必填)- 请务必修改
AWS_SECRET_ACCESS_KEY=my_secure_minio_pwd_2026
S3_URL=http://minio:9000
MINIO_BROWSER=on
# ----------------------------------------------------------------------------
# AWS S3 配置(高级模式 - 外部 S3)
# ----------------------------------------------------------------------------
# 如果使用真实 AWS S3(STORAGE_PROVIDER=s3),取消注释并配置以下内容
# AWS_REGION=us-east-1
# AWS_BUCKET=your-worklenz-bucket
# AWS_ACCESS_KEY_ID=your_aws_access_key_id
# AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key
# S3_URL= # AWS S3 留空(不要填写 MinIO 地址)
# ----------------------------------------------------------------------------
# Azure Blob Storage 配置(高级模式)
# ----------------------------------------------------------------------------
# 如果使用 Azure Blob(STORAGE_PROVIDER=azure),取消注释并配置以下内容
# AZURE_STORAGE_ACCOUNT_NAME=your_storage_account
# AZURE_STORAGE_CONTAINER=worklenz-uploads
# AZURE_STORAGE_ACCOUNT_KEY=your_storage_account_key
# AZURE_STORAGE_URL=https://your_account.blob.core.windows.net
# ============================================================================
# Google OAuth(可选)
# ============================================================================
# 如果需要启用 Google 登录,请进行配置
# 获取凭据地址:
# https://console.cloud.google.com/apis/credentials
# GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
# GOOGLE_CLIENT_SECRET=your-client-secret
# GOOGLE_CALLBACK_URL=http://localhost/api/auth/google/callback
# VITE_ENABLE_GOOGLE_LOGIN=true
# ============================================================================
# 邮件配置(可选)
# ============================================================================
# 如果需要启用邮件通知,请进行配置
# 注意:Worklenz 使用 AWS SES 发送邮件,请配置 SES 凭据
ENABLE_EMAIL_CRONJOBS=true
# CONTACT_US_EMAIL=contact@your-domain.com
# AWS SES 可直接使用上面配置的 AWS 凭据
# AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 同样会被 SES 使用
# AWS_REGION 应设置为 SES 所在区域
# ============================================================================
# Google reCAPTCHA(可选)
# ============================================================================
# 如果需要启用机器人验证,请进行配置
# 获取凭据地址:
# https://www.google.com/recaptcha/admin
# GOOGLE_CAPTCHA_SECRET_KEY=your-secret-key
# GOOGLE_CAPTCHA_PASS_SCORE=0.8
# VITE_ENABLE_RECAPTCHA=true
# VITE_RECAPTCHA_SITE_KEY=your-site-key
# ============================================================================
# 应用配置
# ============================================================================
# 应用标题(浏览器标签页显示)
VITE_APP_TITLE=Worklenz
# 是否启用调查反馈弹窗
VITE_ENABLE_SURVEY_MODAL=false
# 时区设置
TZ=Asia/Shanghai
# ============================================================================
# 备份配置
# ============================================================================
# 备份保留天数(超过此天数的备份将自动删除)
BACKUP_RETENTION_DAYS=30
# ============================================================================
# SSL/TLS 配置
# ============================================================================
# 是否启用 Let's Encrypt SSL(true/false)
ENABLE_SSL=false
# Let's Encrypt 通知邮箱(当 ENABLE_SSL=true 时必填)
# LETSENCRYPT_EMAIL=admin@your-domain.com
# ============================================================================
# Docker 配置
# ============================================================================
# Docker Hub 用户名(用于构建和推送自定义镜像)
# 官方预构建镜像:
# chamikajaycey/worklenz-backend
# chamikajaycey/worklenz-frontend
DOCKER_USERNAME=chamikajaycey
# ============================================================================
# 高级配置(通常无需修改)
# ============================================================================
# 容器内部后端端口
PORT=3000
# Node 运行环境
NODE_ENV=production
# ============================================================================
# 配置指南
# ============================================================================
#
# 快速开始(Express 模式 - 推荐)
# ==========================================
#
# 1. 复制配置文件:
# cp .env.example .env
#
# 2. 修改以下必填密码:
# - DB_PASSWORD
# - SESSION_SECRET(使用 openssl rand -hex 32 生成)
# - COOKIE_SECRET(使用 openssl rand -hex 32 生成)
# - JWT_SECRET(使用 openssl rand -hex 32 生成)
# - AWS_SECRET_ACCESS_KEY(MinIO 密码)
# - REDIS_PASSWORD
#
# 3. 本地环境:
# 保持 DOMAIN=localhost
# URL 使用 http://localhost
#
# 4. 生产环境:
# 设置 DOMAIN
# 将所有 URL 修改为 https://your-domain.com
#
# 5. 启动服务:
# docker compose --profile express up -d
#
#
# 生产环境自定义域名部署
# ==========================================
#
# 1. 设置:
# DOMAIN=your-domain.com
#
# 2. 更新以下 URL:
# VITE_API_URL=https://your-domain.com
# VITE_SOCKET_URL=wss://your-domain.com
# FRONTEND_URL=https://your-domain.com
# SERVER_CORS=https://your-domain.com
# SOCKET_IO_CORS=https://your-domain.com
#
# 3. 开启 SSL:
# ENABLE_SSL=true
# LETSENCRYPT_EMAIL=your-email@domain.com
#
# 4. 将域名 DNS 的 A 记录解析到服务器 IP
#
# 5. 启动:
# docker compose --profile express --profile ssl up -d
#
#
# 高级模式(使用外部服务)
# ==========================================
#
# 1. 设置:
# DEPLOYMENT_MODE=advanced
#
# 2. 使用 AWS S3:
# - STORAGE_PROVIDER=s3
# - 配置 AWS_* 相关变量
# - S3_URL=""(真实 AWS S3 保持为空)
#
# 3. 使用 Azure Blob:
# - STORAGE_PROVIDER=azure
# - 配置 AZURE_* 变量
#
# 4. 使用外部 PostgreSQL:
# - 取消注释 DB_HOST、DB_PORT
# - 配置对应连接信息
#
# 5. 带有 express profile 的服务(Redis、MinIO)不会启动
#
#
# Google 登录配置
# ==========================================
#
# 1. 打开:
# https://console.cloud.google.com/apis/credentials
#
# 2. 创建 OAuth 2.0 凭据
#
# 3. 添加授权回调地址:
# https://your-domain.com/api/auth/google/callback
#
# 4. 配置:
# GOOGLE_CLIENT_ID
# GOOGLE_CLIENT_SECRET
# GOOGLE_CALLBACK_URL
#
# 5. 启用:
# VITE_ENABLE_GOOGLE_LOGIN=true
#
# ============================================================================
启动容器
# 启动worklenz容器
docker compose --profile express up -d

使用服务器ip登录

点击底部的注册按钮,使用任意邮箱作为管理员注册










该存储库包含一个可用于生产环境的 Docker 配置, 具有企业级功能,包括 nginx 反向代理、SSL/TLS 支持、Redis 缓存、自动备份和全面的管理脚本。







