基于Docker与cpolar的Leantime部署方案实现低成本跨地域团队协作

文章目录

    • 前言
    • 1.关于Leantime
    • 2.本地部署Leantime
    • 3.Leantime简单实用
    • 4.安装内网穿透
    • 5.配置Leantime公网地址
    • 6. 配置固定公网地址

前言

各位小伙伴们,让我们暂时把目光从云端的分布式系统转向本地环境。在您的Linux主机上,我们将搭建一个高性价比的协作平台——Leantime。该方案通过Docker容器化部署结合内网穿透工具Cpolar,有效规避了传统云服务的订阅费用和定制化系统的配置负担。只需基础配置的Linux服务器,即可实现跨区域团队的实时协作,其操作体验堪比未来办公平台的操作流畅度。

当您通过Cpolar实现公网访问时,整个部署过程如同精密的数字化工程:既完整保留了核心功能组件,又达成了零成本的云端部署目标。这种创新性的技术整合方案,成功平衡了预算控制与系统性能的双重需求,为中小型团队提供了理想的协作解决方案。

image-20250106144540339
【视频教程】

简洁且强大的开源项目管理系统Leantime本地搭建与远程使用指南

1.关于Leantime

Leantime是一款专为小型团队和初创公司设计的开源项目管理系统。它使用PHP和JavaScript编写,并采用MySQL作为数据库。Leantime提供了从项目计划、任务分配到进度跟踪的全方位解决方案,帮助团队更好地管理项目。其界面简洁直观,用户可以快速上手,无需复杂的培训。

Leantime的主要功能包括:

  • 多种任务管理视图:看板、甘特图、表格、列表和日历等。
  • 强大的项目规划功能:帮助用户制定清晰的目标并详细计划。
  • 目标与指标追踪:设定项目目标和关键指标,实时追踪进展。
  • 时间记录:分析时间开销,优化工作流程。
  • 信息管理:支持创建项目文档,方便团队成员查阅和学习。
  • 团队协作:提供沟通交流平台,提高协作效率。

2.本地部署Leantime

本例使用Docker Compose部署,如果没有安装Docker,可以查看这篇教程进行安装:《Docker安装教程——Linux、Windows、MacOS》

在开始安装之前,请确保您的系统上已经安装了以下软件:

Docker: 用于容器化应用程序。
Docker Compose: 用于定义和运行多容器 Docker 应用程序。

首先,从 GitHub 克隆 Leantime 的 Docker 项目仓库:

git clone https://github.com/Leantime/docker-leantime.git

image-20250106134947431

进入克隆下来的项目目录:

cd docker-leantime

image-20250106135009936
复制示例环境变量文件并进行必要的配置:

cp sample.env .env

编辑 .env 文件,根据您的需求配置数据库连接信息和其他环境变量。

image-20250106135028308
使用 Docker Compose 启动 Leantime 容器:

sudo docker compose up -d

image-20250106135311837

容器启动后,打开浏览器并访问localhost:8081,您将看到 Leantime 的登录界面

image-20250106135347929

3.Leantime简单实用

按照提示完成初始化配置,首先创建管理员账户,创建以后直接登录。

image-20250106145257301

在这里可以邀请你的工作同事们,输入他们的邮箱账号,我这里选择跳过。

image-20250106145541674

完成后,你就可以开始使用Leantime进行项目管理了!image-20250106145657375

可以看到界面特别美观,这是因为Leantime在设计时考虑到了多动症(ADHD)、阅读障碍(Dyslexia)和自闭症(Autism Spectrum Disorder, ASD)等特殊用户的使用体验。具体表现在以下几个方面:

  • 简洁的界面:减少视觉干扰,提高用户集中度。
  • 清晰的导航:逻辑性强,易于理解和操作。
  • 高对比度模式:提供高对比度主题,帮助阅读障碍和视力受限的用户更好地识别内容。
  • 可定制性:允许用户根据自己的需求调整界面布局和颜色方案。

To-Dos(待办事项)

媲美Coding的待办事项列表。支持设定事项类型,优先级,状态,工作量,工作时间等等一系列操作,支持拖拽变更事项状态。支持表格,列表,时间线等多种看板视图。

image-20250106150431469

Goals(目标)

Leantime的Goals板块为目标设定提供了同样引人入胜的体验,简介而高效的操作面板使用户轻松设定目标、追踪任务进度,并清晰了解目标的潜在风险。这一板块设计直观,使用户能够一览无余地了解整个目标的情况。

image-20250106150747860

Ideas(灵感)

你可以在Leantime中及时记录每一次灵感的闪现。想法是推动进步的引擎,但很容易被遗忘。在这里,你可以轻松地追踪和存档你的灵感,将它们与当前待办事项和进行中的工作相联系。

image-20250106150857913

4.安装内网穿透

不过我们目前只能在本地局域网内使用电脑等设备访问刚刚使用docker部署的使用Leantime。使用Leantime+ Cpolar的组合可以完美解决这个问题,安装一个cpolar内网穿透工具就能轻松实现远程访问内网主机中部署的服务了,接下来介绍一下如何安装cpolar内网穿透。

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

使用一键脚本安装命令

sudo curl https://get.cpolar.sh | sh

img

安装完成后,执行下方命令查看cpolar服务状态:(如图所示running即为正常启动)

sudo systemctl status cpolar

img

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

image-20240801133735424

5.配置Leantime公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:Leantime,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8081
  • 域名类型:随机域名
  • 地区:选择China Top

image-20250106151214525

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址在浏览器中访问即可。

image-20250106151253417

如下图所示,成功实现使用公网地址异地远程访问本地部署的Leantime.

image-20250106152451625

小结

为了方便演示,我们在上边的操作过程中使用cpolar生成的HTTP公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期使用Leantime,或者异地访问与使用其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想让公网地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来配置公网地址。

6. 配置固定公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择China TOP,然后设置一个二级子域名名称,填写备注信息,点击保留。

image-20250106152653787

保留成功后复制保留的二级子域名地址:Leantime

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道Leantime,点击右侧的编辑

image-20250106152728102

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China TOP

点击更新

image-20250106152816685

现在一个永久不会变化的网址就设置好了。

image-20250106152955189

我们复制下来打开浏览器粘贴,现在我们使用固定的公网地址访问Leantime可以看到访问成功。

image-20250106153207842

更多项目详情可以访问作者Github项目主页:https://github.com/Leantime/leantime?tab=readme-ov-file

此刻,您已掌握通往未来协作的密钥——通过Leantime平台的云端接入点,我们正在打破传统网络限制。采用自动隧道技术,无需公网IP地址和域名备案,仅通过专属协作链接的分发,即可构建跨地域的虚拟开发网络。这种分布式架构使得深圳的程序员与柏林的设计师能够如同在同一个虚拟空间中实时协作。

当您在技术分享平台记录此次实践时,请点亮开源项目的星标——正是无数开发者的智慧结晶,铸就了这场协作变革的基石。我们不仅为受困于复杂审批流程的初创企业提供了轻量级协作方案,更通过重构人机交互的协作模式,在数字化浪潮中诠释着技术人的价值主张:这正是极客精神最真实的实践写照。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912088.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云Redhat系Linux修改ssh默认端口

阿里云Redhat系Linux修改ssh默认端口 在阿里云买了个服务器,想着ssh的默认端口是22,这不安全。 我就将修改ssh默认端口的过程记录下来了,方便日后回看。 本命令适用于 Redhat系Linux,例如 Redhat、Centos、Alibaba Cloud Linux、…

lib61850 代码结构与系统架构深度分析

一、整体代码结构概述 lib61850 采用模块化设计,核心代码位于src目录下,主要包含以下子目录: src/ ├── hal/ # 硬件抽象层 ├── mms/ # MMS协议实现 ├── goose/ # GOOSE协议实现 ├──…

linux程序保活

需要解决的一个情况,在一些比较老的linux系统里,没有systemctl来进行程序的启动和重启。现在需要设计一个让程序高可用的方案。尽量提高程序可用性。 方案分成几步,属于补充和递进的关系。最简单的是用systemctl 托管,或者service…

文件加密、隐藏软件 GiliSoft File Lock Pro v15.0 打造自己的私密空间

“在这个连聊天记录都可能被截图的时代,你的电脑硬盘里藏着多少不敢示人的秘密?”上周同事借我电脑改PPT时,我突然想起D盘里存着的年度述职报告草稿——那里面密密麻麻标注着部门每个人的绩效短板,要是被误看到简直社死现场。好在…

深入浅出Java NIO:原理、实战与性能优化

深入浅出Java NIO:原理、实战与性能优化 一、技术背景与应用场景 随着高并发、低延迟场景愈发常见,传统的基于阻塞 I/O(BIO)模型难以满足海量连接的需求。Java NIO(Non-blocking I/O)通过 Selector、Chan…

道可云人工智能每日资讯|中国航空工业集团召开人工智能大会

道可云人工智能&元宇宙每日简报(2025年6月25日)讯,今日人工智能&元宇宙新鲜事有: 第22届中国—东盟商务与投资峰会聚焦人工智能热点 第22届中国—东盟商务与投资峰会(以下简称峰会)联络官会议24日在广西南宁召开。中国贸…

Python实例题:文件内容搜索工具

目录 Python实例题 题目 要求: 解题思路: 代码实现: Python实例题 题目 文件内容搜索工具 要求: 实现一个命令行工具,用于在指定目录下搜索包含特定文本的文件。支持以下功能: 递归搜索子目录区分…

【Pandas】pandas DataFrame resample

Pandas2.2 DataFrame Time Series-related 方法描述DataFrame.asfreq(freq[, method, how, …])用于**将时间序列数据转换为指定频率(resample to frequency)**的方法DataFrame.asof(where[, subset])用于查找时间序列中最接近指定时间点的非 NaN 值的…

自动驾驶nuPlan数据集-入门使用和可视化操作

文章目录 前言一、nuPlan 数据集下载及环境安装根据个人安装的路径将以下内容写入./bashrc 中二、跑通场景可视化总结 前言 自动驾驶行业知识点太多,不进则退,上班就得学习,天上掉金砖砸我脚好了 参考文档 参考1 一、nuPlan 数据…

ApplovinMax接入Unity(包括我自己踩的一些坑)

前言 ApplovinMax是一个广告聚合平台,他会自带自己的Applovin平台广告,在这个插件上面你可以下载其他的聚合渠道,与谷歌的Admob比较相似。都是广告聚合平台。 一. ApplovinMax SDK插件的导入 1.下载插件集成 | SDK 集成指南 | MAX | Suppo…

linux系统执行过程中的5种特殊情况

正在执行的用户态X切换用户态进程Y的过程为系统中常用的情况,但并非不能完全准确地反应系统的全部执行场景,还有一些场景比较特殊,主要包括以下5种情况 一.内核线程之间通过中断处理过程中的调度时机发生进程切换,与一般的情况非常…

9. 元素拖拽

元素拖拽 API 介绍 1. 拖放过程 整个拖放过程中,存在两个关键元素:拖拽元素、放置元素 拖拽元素:被拖拽的元素 drag:元素被拖拽时触发,从开始拖拽到拖拽结束前整个过程会一直持续的触发dragstart:元素被…

用来提升同花顺软件进程优先级的C#程序

为了提高炒股软件同花顺的运行速度,消除卡顿,编写一个C#程序,来设置同花顺进程的优先级。 using System; using System.Diagnostics; using System.Security.Principal;namespace ProcessPrioritySetter {class Program{static void Main(st…

linux初阶---一些指令

一.快速认识6-8个简单指令 1.pwd pwd指令是用来查看用户当前所处在的目录(目录的概念在理解上可以等效为文件夹)。 (1)在windows系统中我们通过文件路径表示唯一的文件,在linux中也是一样的,所以pwd是一个很…

全国产传感器外壳的综合分析:材料选择、考量因素与尺寸精度影响

全国产传感器作为现代工业、科研、生活等领域的 “感知触角”,其外壳的性能与质量直接关乎设备的稳定性、可靠性与使用寿命。从材料选型、关键考量因素到尺寸精度的影响,每个环节都需精细把控。 一、全国产传感器外壳材料的多元选择 全国产传感器外壳材…

本地缓存Caffeine详解(含与Spring Cache集成)

目录 一、介绍 二、Caffeine核心原理与架构设计 2.1 存储引擎与数据结构 2.2 缓存淘汰策略 2.3 并发控制机制 三、入门案例 3.1 引入依赖 3.2 测试接口 3.3 小结 四、Caffeine常用方法详解 4.1 getIfPresent 4.2 get 4.3 put 4.4 putAll 4.5 invalidate 4.6 inv…

论特定领域软件架构

20250413-作 题目 特定领域软件架构DSSA(Domain Specific Software Architecture)就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。对DSSA 研究的角度、关心的问题不同导致了对DSSA 的不同定义。DSSA 的必备特征如下。 一…

iOS 远程调试与离线排查实战:构建非现场问题复现机制

iOS开发者都知道,调试最怕两个字:“偶发”。用户说App闪退了,你点了十遍也没问题;测试说功能卡顿了,你抓日志时它又顺滑如新。最麻烦的是,这种“现场问题”往往在你连接不到用户设备时发生。 面对这种情况…

SpringBoot -- 整合 Swagger3

8.SpringBoot3 整合 Swagger3 由于目前主流的开发模式是前后端分离开发。所以前后端的交互需要通过一个 API&#xff08;开发接口&#xff09; 来规范。而这个接口的开发是由后端程序员编写的。“网站式 API 文档” 1.导入依赖 <!-- 引入swagger3(springdoc)的依赖--> …

A Machine Learning Approach for Non-blind Image Deconvolution论文阅读

A Machine Learning Approach for Non-blind Image Deconvolution 1. 研究目标与实际意义2. 创新方法与模型设计2.1 核心思路2.2 正则化反演:理论与公式2.2.1 退化模型2.2.2 正则化目标函数2.2.3 傅里叶域闭式解2.3 MLP去伪影:架构与训练2.3.1 MLP架构设计2.3.2 训练流程2.3.…