Alain's Blog

  1. 首页
  2. 软件工具
  3. 正文

Docker部署Joplin Server,并配置Nginx反向代理

2022年9月25日 3795点热度 1人点赞 0条评论

Joplin

转载请注明出处,本文仅用于学习交流,不对之处,恳请指正,部分图片摘取网络,如有侵权请联系

需求

由于我的NAS是纯机械硬盘,而Joplin的读写又十分频繁,所以我寻思机械盘的4K读写比较慢,而且频繁读写对机械硬盘的寿命也不是十分友好,故而将我的笔记服务Joplin从NAS的WebDAV迁移到我的Docker Host服务器中。

环境

系统环境:
OpenEuler

软件环境:

  1. Docker CE
  2. Postgres
  3. Joplin

客户端:

  1. Mac OS Monterey
  2. Android 12
  3. Windows 10

部署

系统环境

参考 OpenEuler安装最新版Docker CE

Postgres数据库

新增Postgres数据库(方法一)

docker run -d \
  --name postgres \
  --restart always \
  -e POSTGRES_USER=joplin \
  -e POSTGRES_PASSWORD=joplin \
  -e POSTGRES_DB=joplin \
  -e TZ=Asia/Shanghai \
  -v postgresql:/var/lib/postgresql \
  -v postgresql_data:/var/lib/postgresql/data \
  postgres:14.5

部分参数说明:

  1. -e POSTGRES_USER:用户名
  2. -e POSTGRES_PASSWORD:用户密码
  3. -e POSTGRES_DB:创建的数据库名
  4. -v postgresql:挂载/var/lib/postgresql的虚拟磁盘
  5. -v postgresql_data:挂载/var/lib/postgresql/data的虚拟磁盘

使用现有的 Postgres 新增数据库(方法二)

  1. 列出全部容器

    docker container ls -a
  2. 进入容器

    其中${container_name}为你的容器的name

    docker exec -it ${container_name} bash

    或者

    其中${container_id}为你的容器的id

    docker exec -it ${container_id} bash
  3. 切换系统用户

    su - postgres
  4. 登陆数据库

    如果你的系统用户跟你的数据库用户相同的话

    psql

    如果你的系统用户不是你的数据库用户的话

    psql -U joplin -W

    参数说明

    1. -U:数据库用户名
    2. -W:使用密码登陆,回车后输入密码
  5. 新增用户

    CREATE USER joplin WITH PASSWORD 'joplin';
  6. 新增数据库

    CREATE DATABASE joplin OWNER joplin;
  7. 赋予权限

    GRANT ALL PRIVILEGES ON DATABASE joplin to joplin;
  8. 退出数据库

    \q
  9. 退出系统数据库用户

    ctrl+d

  10. 退出容器

    ctrl+d

Docker部署Joplin Server

docker run -d \
  --name joplin \
  --restart always \
  -p 22300:22300 \
  --link postgres:postgres \
  -e APP_BASE_URL='https://www.alainlam.cn' \
  -e APP_PORT=22300 \
  -e DB_CLIENT=pg \
  -e POSTGRES_DATABASE=joplin \
  -e POSTGRES_PASSWORD=joplin \
  -e POSTGRES_USER=joplin \
  -e POSTGRES_PORT=5432 \
  -e POSTGRES_HOST=postgres\
  -e TZ=Asia/Shanghai \
  joplin/server:latest

部分参数说明

-p:端口映射
-link:链接到数据库容器
-e APP_BASE_URL:访问Joplin的链接
-e APP_PORT:Joplin容器中运行的端口
-e DB_CLIENT=pg:使用PostgresSQL数据库
-e POSTGRES_DATABASE:数据库名
-e POSTGRES_PASSWORD:数据库密码
-e POSTGRES_USER:数据库用户名
-e POSTGRES_PORT:数据库端口
-e POSTGRES_HOST:数据库链接
-e TZ=Asia/Shanghai:容器内时区

Joplin反向代理

我使用的是nginx作为反向代理服务器

location ^~ / {
    # 如果你的Joplin不是在同一个服务器内,需要localhost为对应的IP地址
    proxy_pass http://localhost:22300;

    # 传递Host
    proxy_set_header Host $host:$server_port;

    # 真实IP地址
    proxy_set_header X-Real-IP $remote_addr;

    # 多层代理服务器IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # 初始域名
    proxy_set_header X-Forwarded-Host $http_host:$server_port;

    # 端口
    proxy_set_header X-Forwarded-Port $server_port;

    # Http协议
    proxy_set_header X-Forwarded-Proto https;

    # Websocket
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    # 缓存
    add_header X-Cache $upstream_cache_status;
    set $static_fileAbcDeFGh 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) {
        set $static_fileAbcDeFGh 1;
        expires 12h;
    }
    if ( $static_fileAbcDeFGh = 0 ) {
        add_header Cache-Control no-cache;
    }
}

登陆

  1. 在浏览器中输入与APP_BASE_URL配置相同的地址

    默认账号:admin@localhost

    默认密码:admin

    登陆Joplin

  2. 登陆后回要求修改默认密码

    Joplin修改密码

    可以修改用户名,登陆邮箱地址,密码

  3. 修改完成后,由于我们还没有配置消息邮箱,我们可以直接通过管理后台进行邮箱验证

    Joplin验证账户

配置Joplin客户端

Joplin配置客户端

  1. 选择Joplin Server

  2. 输入Joplin Server的链接,与APP_BASE_URL的配置相同的地址

  3. 输入在Joplin Server网页端所配置的邮箱

  4. 输入在Joplin Server网页端所配置的密码

  5. 选择更新频率,默认为5分钟

  6. 点击检查配置,如果配置正确则配置完成

注意事项

Joplin Server仍然是Beta版本,故而可能存在不稳定的情况,所以在投入使用前,最好先进行一定时间的测试,避免数据的丢失!我目前仍处于测试阶段,并非将原有的WebDAV方式完整移除。

标签: Docker Joplin Nginx
最后更新:2022年10月7日

Alain

看了我的文,就是我的人,点个赞再走成不成

点赞
< 上一篇
下一篇 >

文章评论

取消回复

文章目录
  • 需求
  • 环境
  • 部署
    • 系统环境
    • Postgres数据库
    • Docker部署Joplin Server
    • Joplin反向代理
    • 配置Joplin客户端
  • 注意事项

COPYRIGHT © 2022 Alain's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang