准备工作
grist 的 github:Grist is the evolution of spreadsheets.
先要创建一个虚拟机,选用了 lxc 而非 vm,其实是一个不太好的选择,导致在搭建过程中磕磕绊绊。应该是因为 PVE 对 lxc 进行了比较多的限制。

正常创建就可以了,镜像选的是 ubuntu24.04。好像可以用模板?但是不知道密码,登不进去……
配置 docker 环境
从头开始配还是有点麻烦,主要原因是镜像源太不稳定。先配置 apt 的源,把 docker 下下来,再配置 docker 的镜像,多找几个试试。还弄了 clash,但是没有用上(docker 的代理还要另外配置)。
具体内容添加到了:配置docker
配置 grist
官方 git 里面有 dockers-compose-examples:

一开始用的是 grist-traefik(反向代理工具)-basic-auth 的,弄完了才知道出外网没有域名,反向代理很鸡肋……接着就改成了 grist-with-postgres-redis-minio,有了基础的存储,但是没有登录认证。
配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
services:
grist:
image: gristlabs/grist:latest
environment:
TYPEORM_DATABASE: grist
TYPEORM_USERNAME: grist
TYPEORM_HOST: grist-db
TYPEORM_LOGGING: false
TYPEORM_PASSWORD: 12345678
TYPEORM_PORT: 5432
TYPEORM_TYPE: postgres
REDIS_URL: redis://grist-redis
GRIST_DOCS_MINIO_ACCESS_KEY: grist
GRIST_DOCS_MINIO_SECRET_KEY: 12345678
GRIST_DOCS_MINIO_USE_SSL: 0
GRIST_DOCS_MINIO_BUCKET: grist-docs
GRIST_DOCS_MINIO_ENDPOINT: grist-minio
GRIST_DOCS_MINIO_PORT: 9000
volumes:
- grist-persist:/persist # 命名卷
ports:
- 8484:8484
depends_on:
- grist-db
- grist-redis
- grist-minio
- minio-setup
grist-db:
image: postgres:alpine
environment:
POSTGRES_DB: grist
POSTGRES_USER: grist
POSTGRES_PASSWORD: 12345678
volumes:
- grist-postgres:/var/lib/postgresql/data # 命名卷
grist-redis:
image: redis:alpine
volumes:
- grist-redis:/data # 命名卷
grist-minio:
image: minio/minio:latest
environment:
MINIO_ROOT_USER: grist
MINIO_ROOT_PASSWORD: 12345678
volumes:
- grist-minio:/data # 命名卷
command:
server /data --console-address=":9001"
minio-setup:
image: minio/mc
environment:
MINIO_PASSWORD: 12345678
depends_on:
grist-minio:
condition: service_started
restart: on-failure
entrypoint: >
/bin/sh -c "
/usr/bin/mc alias set myminio http://grist-minio:9000 grist '12345678';
/usr/bin/mc mb myminio/grist-docs;
/usr/bin/mc anonymous set public myminio/grist-docs;
/usr/bin/mc version enable myminio/grist-docs;
"
# 定义命名卷(Docker自动创建,存储在/var/lib/docker/volumes)
volumes:
grist-persist:
grist-postgres:
grist-redis:
grist-minio:
|
这里把路径、密码写死了,读取.env的话好像有点问题。
要注意的
在 lxc 中,对权限会有限制,所以
穿透
用了 frp,还是弄了好一会
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# frpc.toml 客户端配置
[common]
server_addr =8.137.38.223
server_port = 7000 # 服务端bind_port
token = 11111
# Grist端口映射规则
[[proxies]]
name = "grist-proxy"
type = "tcp"
local_ip = "127.0.0.1"
local_port = 8484
remote_port = 9000
|
1
2
3
4
5
|
# frps.toml 服务端配置
[common]
bind_addr = 0.0.0.0 # 指定监听 ipv4
bind_port = 7000 # TOML格式中,frp的配置项是下划线分隔(bind_port),不是驼峰(bindPort)!
token = 11111
|
分别运行nohup ./frps -c ./frps.toml > frps.log &即可。
写下来才感觉没什么,做的时候思路就很乱。各种基础配置没有一个模板,就一直到处找,很低效。
对 docker、反向代理的理解也是模棱两可,导致实际操作起来没有方向,不知道哪里出了问题、要怎么解决。
然后具体的服务配置其实已经在 yml 里写得很清楚了,但是自己改的能力还是很差。以及,vim 要学起来用了……