【Docker项目实战】使用Docker部署Journiv自托管日记应用程序
一、Journiv介绍
1.1 Journiv项目简介
Journiv 是一款处于积极开发中的自托管私人日记应用,注重隐私、安全与用户体验,帮助用户记录生活、追踪情绪并进行深度自我反思。
1.2 Journiv主要特点
- 隐私与安全:数据完全由用户掌控,支持本地数据库存储,无任何遥测,提供 JWT 认证及可选的 OIDC/SSO 集成。
- 内容创作:支持富文本日记、多本日记分类、灵活标签系统、多媒体上传及带时区信息的精准时间记录。
- 情绪追踪:可记录每日心情,结合可视化分析、写作连击统计和情绪模式识别,助你了解内在变化。
- 提示式日记:每日智能推送写作提示,支持按类别筛选,并能一键从提示创建日记条目。
- 搜索与发现:提供全文检索、多维过滤(日期、情绪、标签等)、“历史上的今天”等功能,轻松找回过往记录。
- 分析与洞察:整合写作习惯、情绪趋势、各日记本统计及个性化建议,打造专属反思仪表盘。
1.3 注意事项
Journiv 目前仍为测试版软件,尽管开发团队努力保持数据向后兼容,但未来更新可能引入重大变更,请务必定期备份数据以防丢失。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | Journiv | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Journiv自托管日记应用程序。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-12-02 00:51:31 CST; 1min 11s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 75393 (dockerd)
Tasks: 32
Memory: 34.1M (peak: 34.8M)
CPU: 1.248s
CGroup: /system.slice/docker.service

3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取Journiv镜像
下载Journiv镜像,镜像名称为:
registry.cn-hangzhou.aliyuncs.com/jeson/journiv-app:main。
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/journiv-app:main

五、部署Journiv服务
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/journiv/data && cd /data/journiv
- 权限设置
chmod -R 777 /data/journiv/
5.2 docker compose方式部署
使用docke-cli方式部署,DOMAIN_NAME注意改为自己服务器IP。
docker run -d \
--name journiv \
--restart unless-stopped \
-p 2300:8000 \
-e SECRET_KEY=your-secret-key-here \
-e DOMAIN_NAME=192.168.3.88 \
-v $(pwd)/data:/data \
registry.cn-hangzhou.aliyuncs.com/jeson/journiv-app:main
新建及编辑docker-compose.yaml文件,宿主机映射端口可自行设置,注意防止端口冲突。将DOMAIN_NAME更改为自己服务器IP地址,SECRET_KEY自行设置密钥。
vim docker-compose.yaml
version: '3'
services:
journiv:
image: registry.cn-hangzhou.aliyuncs.com/jeson/journiv-app:main
container_name: journiv
restart: unless-stopped
ports:
- 2300:8000
volumes:
- ./data:/data
environment:
- SECRET_KEY=xT6#kL9@vN2aqW4!zP8&mR1*yU5^aB7(cE3)gH0~jK9%nM2asD6
- DOMAIN_NAME=192.168.3.88
-
环境变量解释:
-
SECRET_KEY:用于应用加密和安全签名的密钥,必须保密且足够随机。 -
DOMAIN_NAME:指定应用对外访问的域名或 IP 地址,用于生成正确的链接或配置回调地址。
5.3 创建Journiv容器
执行以下命令,创建Journiv容器。
docker compose up -d

5.4 查看Journiv容器状态
检查Journiv容器运行状态,确保Journiv容器正常启动。
root@jeven:/data/journiv# docker compose ps
WARN[0000] /data/journiv/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
journiv registry.cn-hangzhou.aliyuncs.com/jeson/journiv-app:main "/app/scripts/docker…" journiv 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:2300->8000/tcp, [::]:2300->8000/tcp
5.5 检查Journiv容器日志
检查容器运行日志,确保Journiv服务正常运行。
docker compose logs

六、访问Journiv服务
6.1 访问Journiv首页
浏览器地址:
http://<个人的服务器IP>:2300,访问Journiv初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

6.2 注册账号
将URL改为自己服务器IP地址,例如http://192.168.3.88:2300/,自行注册账号。


6.3 编辑日记
自行新建日记本和编辑笔记内容,如下所示:

七、总结
本次实践成功通过 Docker Compose 部署了 Journiv 自托管日记应用,验证了其轻量、私有化记录日记的核心功能。通过合理配置环境变量与持久化数据卷,确保了服务的安全性与数据持久性。访问 Web 界面后可顺利完成注册、登录及日记编辑,用户体验简洁流畅。整体部署过程高效可靠,适合个人或小团队搭建私有日记平台。
- 点赞
- 收藏
- 关注作者
评论(0)