一、项目介绍
1.项目简述
Teedy是一个面向个人和企业的开源轻量级文档管理系统。
2.项目功能
保持组织:一个现代的界面,以保持您的重要文件在一个地方,您的业务操作清晰。
上传&搜索:不要花费时间使用该工具,只需上传文档,然后在需要时轻松找到。
安全:加密和数据中心将确保只有合适的人员才能看到正确的文档。
3.项目特点
响应式用户界面、光学字符识别、LDAP身份验证、支持图片、PDF、ODT、DOCX、PPTX文件、视频文件支持、灵活的搜索引擎,提供建议和突出显示、在所有支持的文件中进行全文搜索、所有Dublin Core元数据、自定义用户定义的元数据、工作流程系统、存储文件的256位AES加密、文件版本控制、带嵌套的标签系统、从电子邮件导入文档(EML格式)、自动收件箱扫描和导入、用户/组权限系统、因素身份验证、每个用户的存储配额、按URL共享文档、RESTful Web API、用于触发外部服务的 Webhook、功能齐全的Android客户端、批量文件导入器(单次或扫描模式)、经过100万份文档的测试
4.项目开源地址
https://github.com/sismics/docs/tree/v1.8?tab=readme-ov-file
----------
二、项目搭建环境
1. 项目测试环境
A.项目搭建在腾讯云centos7.6,外网地址为43.138.153.157
Linux VM-8-12-centos 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
B.docker版本为26.01,docker-compose版本为v2.26.1
注意:本次实践部署环境为个人腾讯云的测试环境,若是生产环境请谨慎部署;对应开启了容器的端口,在linux下和防火墙下需开放对应端口。
2. 本次项目实施过程
使用docker下载镜像,创建好项目需要挂载的路径,通过docker-cli或者docker compose启动容器,启动容器后查看容器启动状态,查看容器的运行日志是否正常,以上全部正常执行后体验项目功能。
3.注意:docker下载镜像有可能遇到比较慢的情况,参考以下解决措施:
A.docker配置换源,进入/etc/docker的路径,如果没有就创建这个目录
cd /etc/docker/
mkdir -p /etc/docker
B.编辑配置文件
vim daemon.json ##可以清空里面的内容:%d 然后复制下面的源进去wq保存
{
"registry-mirrors":[
"https://286u3d9d.mirror.aliyuncs.com"
]
}
C.registry-mirrors:指定了一个镜像仓库的 URL https://286u3d9d.mirror.aliyuncs.com。 这个配置项用于设置 Docker镜像的镜像仓库地址,使得在拉取和推送 Docker 镜像时能够通过该镜像仓库进行加速。这边提供的是广东广州服务器的镜源,建议个人自己去阿里云建一个个人账号,根据实际所在区获取镜源。
D.重新加载源,重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
----------
三、项目搭建前巡检
1. 检查docker是否正常运行
systemctl status docker
or
service docker status
注:我个人测试环境是使用systemctl进行管理,若有使用service管理请使用第二条的命令进行查看。
[root@VM-8-12-centos ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-04-22 23:13:57 CST; 4 days ago
Docs: https://docs.docker.com
Main PID: 17092 (dockerd)
Tasks: 158
Memory: 142.3M
CGroup: /system.slice/docker.service
若显示docker的Active是active (running),即表明docker是正常运行的。
2.一般我会使用docker-compose去管理,所以预先需要创建好yaml文件,vim docker-compose.yml,格式如下例子:
version: '3.9'
services:
nginx:
image: nginx
logging:
options:
max-size: 1g
restart: always
volumes:
- '/var/run/docker.sock:/tmp/docker.sock:ro'
ports:
- '80:80'
----------
四、项目实施过程
1.根据开源项目,找到对应的镜像进行pull,若遇到很慢的情况,先检查是否网络问题以及是否已经换源。
docker pull sismics/docs
[root@VM-8-12-centos ~]# docker pull sismics/docs
Using default tag: latest
latest: Pulling from sismics/docs
c5cc0d8681c1: Pull complete
25992ae88689: Pull complete
92b293e28b63: Pull complete
5e97fb8c1b1b: Pull complete
e89d6de98e44: Pull complete
9181ab0a3cc7: Pull complete
986d85dbde77: Pull complete
ff6f9607eef5: Pull complete
e1f18d97e35f: Pull complete
5827635e4d0f: Pull complete
3a2abf46fbbe: Pull complete
e2d1dd553bca: Pull complete
d64ca9609368: Pull complete
57b31095515c: Pull complete
afd0e1b54580: Pull complete
d4dc52236c92: Pull complete
df51b630111c: Pull complete
b7f71ce56e9d: Pull complete
aabd4c468f60: Pull complete
9a77c3212377: Pull complete
Digest: sha256:e86804e995a0be52ee81231bfcbeb8b7003a15fd5dc24b300e23f498850d9aa2
Status: Downloaded newer image for sismics/docs:latest
docker.io/sismics/docs:latest
2.若已经下载完成显示新的一行,可以输入命令查看是否上一条命令执行成功
echo$?
若返回0,则成功;返回其他则根据实际情况重新下载或者查找原因。
3.docker下载完后,可以查看对应的镜像是否下载成功
docker images |grep docs
[root@VM-8-12-centos ~]# docker images |grep docs
sismics/docs latest 9bc6f6e084f7 3 years ago 1.19GB
4.创建teedy挂载目录
mkdir -p ./teedy/dat
5.下载成功后,编辑docker-compose.yml文件
version: '3.9'
services:
docs:
image: sismics/docs
container_name: Teedy
volumes:
- '/opt/teedy/data:/data'
environment:
- DOCS_ADMIN_PASSWORD_INIT="$$2a$$05$$PcMNUbJvsk7QHFSfEIDaIOjk1VI9/E7IPjTKx.jkjPxkx2EOKSoPS"
- DOCS_ADMIN_EMAIL_INIT=admin@example.com
- 'DOCS_BASE_URL=http://localhost:4498'
ports:
- '4498:8080'
restart: always
编辑后输入wq进行保存
6.为了便捷启动,也可以使用docker-cli启动
docker run -d \
--restart always \
-p 4498:8080 \
-e DOCS_BASE_URL=http://localhost:4498 \
-e DOCS_ADMIN_EMAIL_INIT=admin@example.com \
-e DOCS_ADMIN_PASSWORD_INIT="$$2a$$05$$PcMNUbJvsk7QHFSfEIDaIOjk1VI9/E7IPjTKx.jkjPxkx2EOKSoPS" \
-v /opt/teedy/data:/data \
--name Teedy \
sismics/docs:latest
7.启动docker-compose
docker compose up -d
8.启动容器后,查看容器的状态是否正常
docker ps |grep Teedy
[root@VM-8-12-centos jmalcloud]# docker ps |grep Teedy
38509c29c94f sismics/docs "bin/jetty.sh run" 7 minutes ago Up 7 minutes 0.0.0.0:4498->8080/tcp, :::4498->8080/tcp Teed
9.启动容器后,查看容器的日志是否正常
docker logs -f Teedy
[root@VM-8-12-centos jmalcloud]# docker logs -f Teedy
Running Jetty:
2024-04-30 10:34:10.483:INFO::main: Logging initialized @1109ms to org.eclipse.jetty.util.log.StdErrLog
2024-04-30 10:34:10.954:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended. See documentation at http://www.eclipse.org/jetty/documentation/current/startup.html
2024-04-30 10:34:11.027:INFO:oejs.Server:main: jetty-9.4.12.v20180830; built: 2018-08-30T13:59:14.071Z; git: 27208684755d94a92186989f695db2d7b21ebc51; jvm 11.0.8+10-post-Ubuntu-0ubuntu118.04.1
2024-04-30 10:34:11.054:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///opt/jetty/webapps/] at interval 1
2024-04-30 10:34:13.016:WARN:oeja.AnnotationParser:main: Unknown asm implementation version, assuming version 393216
2024-04-30 10:34:13.205:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=188ms
2024-04-30 10:34:13.602:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2024-04-30 10:34:13.603:INFO:oejs.session:main: No SessionScavenger set, using defaults
2024-04-30 10:34:13.608:INFO:oejs.session:main: node0 Scavenging every 600000ms
30 Apr 2024 10:34:14,119 INFO com.sismics.util.filter.RequestContextFilter.init(RequestContextFilter.java:43) Using base data directory: /data
30 Apr 2024 10:34:14,184 INFO com.sismics.util.jpa.EMF.getEntityManagerProperties(EMF.java:84) Configuring EntityManager from environment parameters
30 Apr 2024 10:34:15,221 INFO com.sismics.util.jpa.DbOpenHelper.open(DbOpenHelper.java:57) Opening database and executing incremental updates
30 Apr 2024 10:34:15,242 INFO com.sismics.util.jpa.DbOpenHelper.open(DbOpenHelper.java:83) Unable to get database version: Table T_CONFIG not found
30 Apr 2024 10:34:15,243 INFO com.sismics.util.jpa.DbOpenHelper.open(DbOpenHelper.java:98) Executing initial schema creation script
30 Apr 2024 10:34:15,253 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-000-0.sql
30 Apr 2024 10:34:15,333 INFO com.sismics.util.jpa.DbOpenHelper.open(DbOpenHelper.java:106) Found database version 0, new version is 27, executing database incremental update scripts
30 Apr 2024 10:34:15,339 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-001-0.sql
30 Apr 2024 10:34:15,383 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-002-0.sql
30 Apr 2024 10:34:15,391 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-003-0.sql
30 Apr 2024 10:34:15,396 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-004-0.sql
30 Apr 2024 10:34:15,416 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-005-0.sql
30 Apr 2024 10:34:15,418 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-006-0.sql
30 Apr 2024 10:34:15,568 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-007-0.sql
30 Apr 2024 10:34:15,597 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-008-0.sql
30 Apr 2024 10:34:15,600 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-009-0.sql
30 Apr 2024 10:34:15,615 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-010-0.sql
30 Apr 2024 10:34:15,620 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-011-0.sql
30 Apr 2024 10:34:15,631 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-012-0.sql
30 Apr 2024 10:34:15,645 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-013-0.sql
30 Apr 2024 10:34:15,648 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-014-0.sql
30 Apr 2024 10:34:15,663 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-015-0.sql
30 Apr 2024 10:34:15,674 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-016-0.sql
30 Apr 2024 10:34:15,682 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-017-0.sql
30 Apr 2024 10:34:15,684 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-018-0.sql
30 Apr 2024 10:34:15,715 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-019-0.sql
30 Apr 2024 10:34:15,720 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-020-0.sql
30 Apr 2024 10:34:15,729 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-021-0.sql
30 Apr 2024 10:34:15,739 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-022-0.sql
30 Apr 2024 10:34:15,759 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-023-0.sql
30 Apr 2024 10:34:15,769 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-024-0.sql
30 Apr 2024 10:34:15,774 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-025-0.sql
30 Apr 2024 10:34:15,776 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-026-0.sql
30 Apr 2024 10:34:15,778 INFO com.sismics.util.jpa.DbOpenHelper.executeAllScript(DbOpenHelper.java:142) Executing script: dbupdate-027-0.sql
30 Apr 2024 10:34:15,778 INFO com.sismics.util.jpa.DbOpenHelper.open(DbOpenHelper.java:108) Database upgrade complete
30 Apr 2024 10:34:15,779 INFO com.sismics.util.jpa.EMF.getEntityManagerProperties(EMF.java:84) Configuring EntityManager from environment parameters
30 Apr 2024 10:34:18,736 INFO com.sismics.util.ClasspathScanner.findClasses(ClasspathScanner.java:48) Found 1 classes for IndexingHandler
30 Apr 2024 10:34:18,824 INFO com.sismics.docs.core.util.indexing.LuceneIndexingHandler.initLucene(LuceneIndexingHandler.java:118) Using file Lucene storage: /data/lucene
30 Apr 2024 10:34:19,029 INFO com.sismics.docs.core.service.FileService.startUp(FileService.java:39) File service starting up
30 Apr 2024 10:34:19,038 INFO com.sismics.docs.core.service.InboxService.startUp(InboxService.java:55) Inbox service starting up
----------
五、项目体验
注:云服务器记得放开防火墙4498!
访问地址http://43.138.153.157:4498/#/login,欢迎点击玩一下!账号admin,密码admin。
ps:我的测试服务器是乞丐版,所以每次发了大的项目启动后,可能会把前面的项目停掉,不然会卡爆了,请大家体谅...
更多好玩有趣有用的内容,请关注微信公众号:零氪的云原生