基于华为openEuler部署tududi个人任务管理工具

基于华为openEuler部署tududi个人任务管理工具

  • 前言
  • 一、相关服务介绍
    • [1.1 openEuler系统介绍](#1.1 openEuler系统介绍)
    • [1.2 tududi介绍](#1.2 tududi介绍)
  • 二、本次实践介绍
    • [2.1 本次实践介绍](#2.1 本次实践介绍)
    • [2.2 本次环境规划](#2.2 本次环境规划)
  • 三、本地环境检查
    • [3.1 检查系统版本](#3.1 检查系统版本)
    • [3.2 检查内核版本](#3.2 检查内核版本)
    • [3.3 检查本地IP](#3.3 检查本地IP)
    • [3.4 检查Docker环境](#3.4 检查Docker环境)
  • 四、部署tududi项目
    • [4.1 下载Docker镜像](#4.1 下载Docker镜像)
    • [4.2 创建部署目录](#4.2 创建部署目录)
    • [4.3 docker-cli方式部署(可选)](#4.3 docker-cli方式部署(可选))
    • [4.4 编辑部署文件](#4.4 编辑部署文件)
    • [4.5 部署tududi](#4.5 部署tududi)
    • [4.6 检查容器状态](#4.6 检查容器状态)
    • [4.7 检查容器日志](#4.7 检查容器日志)
  • 五、访问tududi服务
    • [5.1 安全设置](#5.1 安全设置)
    • [5.2 访问首页](#5.2 访问首页)
  • 六、tududi基本使用
    • [6.1 基本使用体验](#6.1 基本使用体验)
    • [6.2 查看容器使用资源](#6.2 查看容器使用资源)
  • 七、总结

前言


随着数字化转型的深入,高效的任务管理工具成为提升个人与团队生产力的关键。华为openEuler作为一款面向数字基础设施的开源Linux操作系统,以其高性能、高安全和全场景支持能力,为各类应用提供了坚实的运行底座。tududi作为一款轻量级个人任务管理工具,结合Docker容器化部署,能够快速在openEuler系统上落地运行。本次实践基于华为根技术生态,探索在openEuler上部署与使用tududi的完整流程,验证其稳定性与资源效率。


一、相关服务介绍

1.1 openEuler系统介绍

  • 简介

openEuler是华为发起并主导的一个开源操作系统项目,它基于Linux内核开发,致力于为企业级应用提供安全、稳定、可靠的操作环境。自2019年正式开源以来,openEuler迅速吸引了全球众多开发者和技术爱好者的关注,并逐渐形成了一个活跃的开源社区。该系统不仅支持多种处理器架构(如x86、ARM等),而且通过持续的技术创新,在性能优化、安全性增强以及容器化支持等方面展现了显著的优势。

  • 主要特点
  • 开源性:openEuler遵循开源协议,允许任何个人或组织自由获取、使用、修改及分发系统代码,这极大地促进了技术创新与共享。
  • 高性能与稳定性:通过对Linux内核进行深度优化,openEuler能够提供出色的运行效率和稳定性,满足企业级应用场景的需求。
  • 安全性:提供了包括安全启动、数据加密在内的多重安全保障措施,确保用户数据的安全性。
  • 容器化支持:兼容Docker和Kubernetes等容器技术,便于开发者构建、部署和管理容器化应用。
  • 丰富的生态系统:拥有庞大的开发者社区和丰富的软件库,为用户提供广泛的软件支持和服务。

1.2 tududi介绍

Tududi 简介

Tududi 是一款专为注重隐私、掌控力与效率的个人及团队打造的自托管任务管理工具,融合了个人待办事项的简洁性与专业项目管理的强大功能,帮助用户在本地环境中高效组织任务、项目与笔记。

Tududi主要功能

  • 任务管理:支持创建、编辑、删除任务,并可通过今天、即将、某天等视图过滤,按名称、优先级或日期排序。
  • 子任务:将复杂任务拆解为多个子任务,便于分步完成并实时追踪整体进度。
  • 重复任务:提供强大的周期性任务功能,支持多种重复模式与智能实例管理。
  • 多种重复模式:可设置每日、每周、每月、特定工作日或每月最后一天等重复规则。
  • 基于完成的重复:任务重复时间可基于实际完成日期而非原定截止日,更符合实际使用场景。
  • 智能父子链接:生成的重复任务实例与原始模板保持关联,确保设置变更同步更新。
  • 直接编辑父任务:从任意一个重复任务实例中可直接修改其父模板的重复设置,操作更便捷。
  • 灵活时间安排:支持自定义重复间隔,如每2周、每3个月等,满足个性化周期需求。
  • 结束日期控制:可为重复任务系列设置终止日期,避免无限循环。
  • 快速笔记:支持创建和管理文本笔记,并可将其关联到具体项目中,便于信息归集。
  • 标签管理:为任务和笔记添加标签,实现多维度分类与快速筛选。
  • 项目跟踪:将相关任务和笔记组织到项目中,实现结构化工作管理。
  • 区域分类:将项目划分到不同"区域"(如工作、生活、学习),提升专注力与组织清晰度。
  • 到期日期追踪:为任务设置截止日期,并通过到期时间分类(如今日、本周)集中查看。
  • 响应式设计:界面适配桌面、平板和手机等多种设备,确保跨平台一致体验。
  • 多语言支持:支持24种语言的完整本地化,满足全球用户的语言偏好。
  • Telegram 集成:通过 Telegram 消息直接创建任务,实现快速记录。
  • 每日任务总结:接收每日待办事项汇总通知,帮助掌握当日重点。
  • 随时捕捉想法:利用 Telegram 随时发送想法或待办,无缝同步至 Tududi。

二、本次实践介绍

2.1 本次实践介绍

1.本次实践环境为个人测试环境,生产环境请谨慎;

2.本次实践主要是在openEuler系统下部署tududi个人任务管理工具。

2.2 本次环境规划

本次环境规划如下所示:

服务器 HostName IP地址 操作系统 内核版本 部署项目 Docker版本
VM虚拟机 openEuler-server 192.168.3.83 openEuler 24.03 (LTS) 6.6.0-28.0.0.34.oe2403.x86_64 tududi 26.1.3

三、本地环境检查

3.1 检查系统版本

检查当前系统版本,当前系统版本为openEuler 24.03 (LTS)

bash 复制代码
[root@openEuler-server ~]# cat /etc/os-release
NAME="openEuler"
VERSION="24.03 (LTS)"
ID="openEuler"
VERSION_ID="24.03"
PRETTY_NAME="openEuler 24.03 (LTS)"
ANSI_COLOR="0;31"

3.2 检查内核版本

检查当前内核版本,如下所示:

bash 复制代码
[root@openEuler-server ~]#  uname -r
6.6.0-28.0.0.34.oe2403.x86_64

3.3 检查本地IP

查看本地IP地址,本次实践本地IP设置为192.168.3.83/24

bash 复制代码
[root@openEuler-server ~]# ifconfig ens18
ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.83  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::be24:11ff:feaa:bfa5  prefixlen 64  scopeid 0x20<link>
        ether bc:24:11:aa:bf:a5  txqueuelen 1000  (Ethernet)
        RX packets 1267  bytes 134016 (130.8 KiB)
        RX errors 0  dropped 64  overruns 0  frame 0
        TX packets 321  bytes 36697 (35.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3.4 检查Docker环境

  • 检查Docker版本
bash 复制代码
[root@openEuler-server ~]# docker -v
Docker version 26.1.3, build b72abbb

四、部署tududi项目

4.1 下载Docker镜像

执行以下命令,拉取tududi的容器镜像。

bash 复制代码
docker pull chrisvel/tududi:0.80

4.2 创建部署目录

执行以下命令,创建部署目录。

bash 复制代码
 mkdir -p /data/tududi/{db,uploads} && cd /data/tududi

4.3 docker-cli方式部署(可选)

  • 如果想要使用docker-cli方式部署,可参考以下命令:
bash 复制代码
docker run \
  -e TUDUDI_USER_EMAIL=myemail@example.com \
  -e TUDUDI_USER_PASSWORD=mysecurepassword \
  -e TUDUDI_SESSION_SECRET=$(openssl rand -hex 64) \
  -e TUDUDI_ALLOWED_ORIGINS=https://tududi,http://tududi:3002 \
  -e PUID=1001 \
  -e GUID=1001 \
  -v ~/tududi_db:/app/backend/db \
  -v ~/tududi_uploads:/app/backend/uploads \
  -p 3002:3002 \
  -d  chrisvel/tududi:0.80

4.4 编辑部署文件

本次实践我们使用docker compose方式部署,新建及编辑以下docker-compose.yaml文件。

bash 复制代码
 vim docker-compose.yaml
yaml 复制代码
version: '3.8'

services:
  tududi:
    image: chrisvel/tududi:0.80
    container_name: tududi
    environment:
      # 登录邮箱
      TUDUDI_USER_EMAIL: myemail@example.com

      # 登录密码(请替换为更安全的密码)
      TUDUDI_USER_PASSWORD: admin

      # 会话密钥:使用随机生成的64字节十六进制字符串
      # 可在启动前通过命令生成:openssl rand -hex 64
      TUDUDI_SESSION_SECRET: bef42eb710036b4d38771e695353c5f397736d5a43aa31d319ed011ee0cb0d4603b03a2f4825581fa24dae5d72a985578e1650ad73af70c548b16b6c641e8ca0

      # 允许的跨域来源(CORS)
      # 必须包含宿主机IP:端口,否则前端无法通信
      TUDUDI_ALLOWED_ORIGINS: http://192.168.3.83:3002,http://localhost:3002

      # 使用 root 用户权限运行(UID=0, GID=0)
      PUID: 0
      PGID: 0

    ports:
      - "3002:3002"  # 映射宿主机3002端口

    volumes:
      - /data/tududi/db:/app/backend/db           # 数据库持久化
      - /data/tududi/uploads:/app/backend/uploads # 文件上传目录

    restart: unless-stopped

    # 健康检查(可选)
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3002"]
      interval: 30s
      timeout: 10s
      retries: 3

4.5 部署tududi

执行以下docker compose up -d命令,部署tududi应用。

bash 复制代码
docker compose up -d

4.6 检查容器状态

检查tududi容器状态,确保tududi容器正常启动。

bash 复制代码
[root@openEuler-server tududi]# docker compose ps
WARN[0000] /data/tududi/docker-compose.yaml: `version` is obsolete
NAME      IMAGE                  COMMAND                  SERVICE   CREATED              STATUS                        PORTS
tududi    chrisvel/tududi:0.80   "/app/scripts/docker..."   tududi    About a minute ago   Up About a minute (healthy)   0.0.0.0:3002->3002/tcp, :::3002->3002/tcp

4.7 检查容器日志

检查容器运行日志,确保tududi服务正常运行。

bash 复制代码
 docker compose logs

五、访问tududi服务

5.1 安全设置

  • 关闭selinux
bash 复制代码
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  • 停止本地防火墙
bash 复制代码
systemctl stop firewalld
systemctl disable firewalld

5.2 访问首页

访问地址:http://《服务器IP地址》:3002,将IP替换为自己服务器IP地址,进入到tududi登录页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

使用我们在部署文件中定义的邮箱账号登录,如下所示:

六、tududi基本使用

6.1 基本使用体验

  • 创建项目和任务:选择项目模块,确定项目名称后,可逐一添加任务事项。
  • 笔记功能:可在笔记模块,新增及编辑笔记内容,如下所示:

6.2 查看容器使用资源

通过 docker stats tududi 可以清晰地看到该容器仅占用极少量的 CPU 和内存资源(如 42.31MiB / 7.163GiB),表明其运行轻量高效。 这种低资源占用充分体现了容器化技术的优势,能够在保证服务运行的同时极大提升宿主机的资源利用率。

bash 复制代码
docker stats tududi

七、总结

本次实践成功在华为openEuler系统上完成了tududi个人任务管理工具的部署与运行,验证了其良好的兼容性与稳定性。通过Docker容器化方式,实现了应用的快速部署与资源隔离,显著提升了环境搭建效率。实际运行数据显示,tududi容器资源占用极低,运行流畅,满足轻量高效的任务管理需求。该实践不仅展示了openEuler系统在应用承载方面的优势,也为基于华为根技术构建个人数字化工作环境提供了可行方案。


相关推荐
南村群童欺我老无力.3 小时前
Flutter 框架跨平台鸿蒙开发 - 从零打造一款精美天气App
flutter·华为·harmonyos
zhujian826373 小时前
二十六、【鸿蒙 NEXT】LazyForeach没有刷新
华为·harmonyos·下拉刷新·lazyforeach未刷新
翰德恩咨询3 小时前
DSTE咨询洞见:华为战略之道(二):力出一孔,拒绝战略力量分散
华为·dste
不爱吃糖的程序媛3 小时前
KuiklyUI 运行到鸿蒙平台的实践
华为·harmonyos
Simon席玉4 小时前
纯血鸿蒙中的HashMap不支持首选项存储,但是Record就支持
华为·harmonyos
南村群童欺我老无力.4 小时前
Flutter 框架跨平台鸿蒙开发-鸿蒙计算器开发教程
vscode·flutter·华为·typescript·harmonyos
南村群童欺我老无力.4 小时前
Flutter 框架跨平台鸿蒙开发 - 从零开发经典推箱子游戏
flutter·游戏·华为·typescript·harmonyos
柒儿吖4 小时前
Flutter跨平台三方库image_picker在鸿蒙中的使用指南
flutter·华为·harmonyos
世人万千丶4 小时前
鸿蒙跨端框架Flutter学习day 2、常用UI组件-折行布局 Wrap & Chip
学习·flutter·ui·华为·harmonyos·鸿蒙