---
title: VPS · 用 docker 安装语言学习工具 LWT
created: 2022-08-18
summary: Installing LWT with docker and docker composer
tag:
  - VPS
  - Self-host
  - Docker
image: /2022-08-18-lwt/wizard.png
---

[LWT](https://learning-with-texts.sourceforge.io/) 是一个阅读分词软件，上传阅读材料后可以标记其中的生词并制卡复习，全称叫 Learning with Texts，不过我还没有怎么用过，详细的介绍可以看下面这几篇文章：

- [英语学习软件推荐——Learning with text (LWT) | 软通达](https://cyddgh.github.io/post/20220311154810/)
- [Learning With Text 使用全解（也许） - 知乎](https://zhuanlan.zhihu.com/p/463832139)
- [LWT(learning With Text) 本地化安装 - 知乎](https://zhuanlan.zhihu.com/p/473056398)
- Demo： [Learning With Texts (LWT)](https://learning-with-texts.sourceforge.io/testdb/index.php)

LWT 可以在本地安装也可以在 VPS 上安装，鉴于买了就要用的原则，我决定在 VPS 上安装看看。

我安装的 docker image 来源于：[GitHub - jsz4n/lwt-docker: Learning With Texts with Docker](https://github.com/jsz4n/lwt-docker)，还有试过一些其他的 docker image ，都不太顺利，这安装介绍也写得不太清楚，几番周折之后，我修改了`docker-compose.yml` 中的部分内容后部署成功了，下面是我的搭建过程。

## 0. 准备

前提：安装好 docker 和 docker composer、nginx

如果还没安装的话，可以这样安装（Ubuntu）：

```bash
sudo apt update
sudo apt install docker docker-compose
sudo apt install nginx
```

准备一个解析好了的域名，如在 Cloudflare 里面配置域名`n.example.org` ：添加一个 A 记录，名称为`n` ，内容为 VPS 的 IP 地址，如`123.123.123.14`

我之前安装了比较新的 docker composer 版本(1.27.4)，如果没有装新版的话，下面操作的`docker compose`请全部替换为`docker-compose`

## 1. 下载仓库源码

我决定在`/opt/`文件夹下面安装，首先进入 opt 文件夹

```bash
cd /opt
```

复制 git 仓库并进入文件夹

```bash
sudo git clone https://github.com/jsz4n/lwt-docker.git
cd lwt-docker
```

原 README 有讲需要本地 build 一下 image，但是感觉不是很必要？我直接用了 `suzanje/lwt:latest` 中的 image

## 2. 修改配置

打开`docker-compose.yml`文件：

```bash
sudo nano docker-compose.yml
```

修改密码：

```yaml title="docker-compose.yml" {7,15}
version: '3'

services:
  mariadb:
    image: mariadb:10.6
    restart: always
    environment:
      - 'MARIADB_ROOT_PASSWORD=密码' #改这里
    volumes:
      - ./media/:/var/lib/mysql
  lwt:
    image: suzanje/lwt:latest
    restart: always
    environment:
      - 'MARIADB_SERVER=mariadb'
      - 'MARIADB_ROOT_PASSWORD=密码' #和上面的一样
    ports:
      - '8080:80' #如果需要改端口的话改8080的地方
    depends_on:
      - mariadb
```

## 3. 上线容器

```bash
sudo docker compose up -d
```

然后 `sudo docker compose ps` 一下看`lwt-docker-lwt-1` 和` lwt-docker-mariadb-1` 这两项的情况。

如果有错误的话，可以`sudo docker logs lwt-docker-lwt-1`看下日志
或者试着在`/opt/lwt-docker`文件夹下创建一个 media 文件夹：

```bash
sudo mkdir media
```

然后再重新上线容器

## 4. 配置反代和 SSL

我比较懒，设置还是跟之前的[配置 Cloudflare 的免费 SSL 证书](/2022-06-12-cloudflare)里面一样配置，如果不想按照这个方法来配置反代的话可以参考：[利用 Nginx 进行反代](https://mantyke.icu/posts/2021/rsshub-miniflux/#%E5%88%A9%E7%94%A8nginx%E8%BF%9B%E8%A1%8C%E5%8F%8D%E4%BB%A3)中的配置

```bash
sudo nano /etc/nginx/conf.d/lwt.conf
```

写入

```bash title="/etc/nginx/conf.d/lwt.conf" {2,4}
server {
	listen 443 ssl;
	server_name 域名;
	location / {
		proxy_pass http://127.0.0.1:8080;
		proxy_set_header HOST $host;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}
```

接着`sudo nginx -t` 之后 `sudo systemctl reload nginx` 重启 nginx 之后就可以在配置好的域名看到 LWT 啦

## 后续

如果我有继续使用的话后面可能会更新阅读配置和使用细节等内容（不确定）
