Joplin Server 部署与配置完整步骤
1. 环境准备
确保你有一个运行 Linux 的服务器(如 Ubuntu),并且已经安装了 Docker、Docker Compose 和宝塔面板。
1.1. 使用宝塔面板安装 Docker
- 登录宝塔面板。
- 进入软件商店:在宝塔面板左侧菜单中,点击 软件商店。
- 搜索 Docker 管理器:找到 Docker 管理器 插件。
- 安装 Docker 管理器:点击 安装,安装完成后,Docker 将自动安装。
1.2. 安装 Docker Compose
- 进入宝塔终端:通过宝塔面板的 终端工具 或 SSH 连接到服务器。
- 手动安装 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 验证 Docker 和 Docker Compose 安装:
docker --version
docker-compose --version
2. 获取 Joplin Server 代码
克隆 Joplin 的 GitHub 仓库,并进入 packages/server
目录:
git clone https://github.com/laurent22/joplin.git
cd joplin/packages/server
3. 创建 .env
文件
创建并编辑 .env
文件来配置数据库和应用程序:
nano .env
将以下内容粘贴到 .env
文件中,并根据需要修改:
POSTGRES_PASSWORD=password
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_VERSION=13.1
APP_PORT=22300
APP_BASE_URL=https://yourdomain.com
APP_SECRET=your_random_secret
4. 创建 docker-compose.yml
在 packages/server
目录中,创建 docker-compose.yml
文件:
version: '3'
services:
db:
image: postgres:13.1
container_name: joplin_db
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DATABASE}
volumes:
- joplin-data:/var/lib/postgresql/data
ports:
- "${POSTGRES_PORT}:5432"
app:
image: joplin/server:latest
depends_on:
- db
environment:
- APP_BASE_URL=${APP_BASE_URL}
- APP_PORT=${APP_PORT}
- DB_CLIENT=pg
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DATABASE=${POSTGRES_DATABASE}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_HOST=db
- APP_SECRET=${APP_SECRET}
ports:
- "${APP_PORT}:22300"
volumes:
- joplin-files:/srv/joplin
volumes:
joplin-data:
joplin-files:
5. 启动服务
启动 Joplin Server 和 PostgreSQL:
docker-compose up -d
6. 配置 PostgreSQL 数据库
首次启动后,添加用户需要进入 PostgreSQL 容器并设置数据库。
- 进入 PostgreSQL 容器:
docker-compose exec db psql -U joplin -d joplin
- 启用
pgcrypto
扩展:
CREATE EXTENSION pgcrypto;
- 插入用户,并根据需要修改:
INSERT INTO users (id, email, password, is_admin, updated_time, created_time)
VALUES (
replace(gen_random_uuid()::varchar, '-', ''),
'email',
crypt('password', gen_salt('bf')),
1,
extract(epoch from now())::bigint,
extract(epoch from now())::bigint
);
- 退出 PostgreSQL:
\q
7. 重启 Joplin Server
确保新用户生效,重启 Joplin Server:
docker-compose restart
8. 配置宝塔面板中的 Nginx 反向代理
- 进入宝塔面板:
- 在宝塔面板左侧,点击 网站。
- 选择你配置的域名
yourdomain.com
,然后点击 设置。
- 配置反向代理:
- 点击 反向代理,启用反向代理功能。
- 在代理配置框中粘贴以下内容,并根据需要修改:
#PROXY-START/
location /
{
proxy_pass http://127.0.0.1:22300;
proxy_set_header Host yourdomain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Origin https://yourdomain.com;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
# proxy_hide_header Upgrade;
#Persistent connection related configuration
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
set $static_filelGyB65d2 0;
if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
{
set $static_filelGyB65d2 1;
expires 1m;
}
if ( $static_filelGyB65d2 = 0 )
{
add_header Cache-Control no-cache;
}
}
#PROXY-END/
- 点击 保存,并重载 Nginx 配置。
9. 配置 Joplin 客户端
- 在 Joplin 客户端中,选择同步目标为 Joplin Server。
- 填写服务器 URL:
https://yourdomain.com
。 - 使用你在 Joplin Server 中创建的用户的邮箱
email
和密码password
。 - 点击 检查同步配置 验证连接。
10. 备份和恢复数据库
定期备份 PostgreSQL 数据库以防数据丢失。备份和恢复的步骤如下:
- 备份数据库:
docker exec -t joplin_db pg_dumpall -c -U joplin > backup.sql
- 恢复数据库:
如果需要恢复数据,可以使用以下命令:
cat backup.sql | docker exec -i joplin_db psql -U joplin
总结
通过这些步骤,你可以使用宝塔面板来部署 Joplin Server、设置反向代理,并配置 Joplin 客户端进行同步。该流程还包含数据库备份和恢复的操作,以确保数据的安全性。如果在过程中遇到任何问题,可以留言咨询。