支持Docker部署

This commit is contained in:
2022-07-10 01:20:14 +08:00
parent 25649e6280
commit 4c4ddca82b
5 changed files with 127 additions and 24 deletions

View File

@@ -3,23 +3,72 @@
## 部署
### 使用docker
+ 安装docker-compose
+ 执行
```shell
mkdir hole
cd hole
# 下载docker-compose.yml
wget https://git.thu.monster/newthuhole/hole-backend-rust/raw/branch/master/docker-compose.yml
# 下载add_pg_trgm.sh
mkdir psql-docker-init
wget https://git.thu.monster/newthuhole/hole-backend-rust/raw/branch/master/psql-docker-init/add_pg_trgm.sh -O psql-docker-init/add_pg_trgm.sh
#下载镜像
docker-compose pull
# 初始化postgres
docker-compose up -d postgres
#建表
docker-compose run --rm hole-thu hole-thu --init-database
# 全部跑起来
docker-compose up -d
```
现在树洞后端应该已经运行在8000端口了
停止运行:
```shell
docker-compose stop
```
可能需要修改`docker-compose.yml`的情况:
+ 如果希望使用其他端口而非8000编辑services.hole-thu.ports
+ 你可能需要映射postgres的5432端口用于在宿主机上连接以创建管理员账号但也可以在`add_pg_trgm.sh`中添加创建管理员账号的sql语句或新增加一个`create_admin.sh`
+ 如果需要使用闭社登陆请在services.hole-thu.environment中添加需要用到的更多环境变量(参考`.env.sample`)
### 使用源码编译
*以下内容假设你使用 Ubuntu 20.04*
目前只支持postgresql对支持sqlite的追踪见 issue #1
安装rust与cargo环境 (略)
clone 代码 (略)
安装postgresql (略)
安装redis (略)
### 准备数据库
#### 准备数据库
进入:
```
```shell
sudo -u postgres psql
```
执行 (替换`'hole_pass'`为实际希望使用的密码):
执行 (替换`hole_pass`为实际希望使用的密码):
```postgresql
postgres=# CREATE USER hole WITH PASSWORD 'hole_pass';
@@ -32,39 +81,36 @@ hole_v2=# CREATE EXTENSION pg_trgm;
CREATE EXTENSION
hole_v2=# \q
```
### 运行
#### 编译&运行
创建 .env 文件,写入必要的环境变量。可参考 .env.sample。
#### 基于二进制文件
从[release](https://git.thu.monster/newthuhole/hole-backend-rust/releases)直接下载二进制文件
```
./hole-thu --init-database
./hole-thu
```
#### 基于源码
安装rust与cargo环境 (略)
clone 代码 (略)
```
```shell
cargo run --release -- --init-database
cargo run --release
```
或安装`diesel_cli`
```
```shell
diesel migration run
cargo run --release
```
### 关于账号系统
### 基于二进制文件
+ 如果你希望使用自己的登录系统,将 `/_login/` 路径交由另外的后端处理只需最终将用户名和token写入users表并跳转到 `/?token=<token>`
安装与准备数据库同
从[release](https://git.thu.monster/newthuhole/hole-backend-rust/releases)直接下载二进制文件
```shell
./hole-thu --init-database
./hole-thu
```
## 关于账号系统
+ 如果你希望使用自己的登录系统在Nginx或Apache中将 `/_login/` 路径交由另外的后端处理只需最终将用户名和token写入users表并跳转到 `/###token=<token>`
+ 如果你希望也使用闭社提供的授权来维护账号系统,使用 `https://thu.closed.social/api/v1/apps` 接口创建应用,并在.env或环境变量中填入client与secret。此操作不需要闭社账号。详情见[文档](https://docs.joinmastodon.org/client/token/#app)。编译运行时,增加`--features mastlogin`: `cargo run --release --features mastlogin`