====== Grist ======
[[https://github.com/gristlabs/grist-core|Grist]] Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database.
==== Installation ====
Create the usual dedicated user. Also, all data needs to be located in a dedicated folder that will be **/data/grist**:
useradd -d /data/daemons/grist -m grist
mkdir /data/grist
chown grist:grist /data/grist
Now, as //grist// user, create the following docker compose file:
services:
grist:
ports:
- 8484:8484
volumes:
- /data/grist:/persist
environment:
- GRIST_SESSION_SECRET=here_write_a_secret_passcode
- GRIST_DEFAULT_EMAIL=me@mydomain.com
- GRIST_FORWARD_AUTH_HEADER=Remote-Email
- GRIST_PROXY_AUTH_HEADER=Remote-Email
- APP_HOME_URL=https://grist.mydomain.com
- APP_DOC_URL=https://grist.mydomain.com
- GRIST_IGNORE_SESSION=true
stdin_open: true
tty: true
image: gristlabs/grist-oss
networks:
- grist-net
networks:
grist-net: {}
Remember to set an available port (8484)! I have not been able to make grist run as user //grist// inside the container, it will run as user 1001. This is not an issue, just a cosmetic annoyance.
Now pull it:
podman compose pull
==== Single Sign On ====
Grist will happily inherit your SSO authentication from the reverse proxy, the key point are the following settings in your docker compose:
- GRIST_FORWARD_AUTH_HEADER=Remote-Email
- GRIST_PROXY_AUTH_HEADER=Remote-Email
- GRIST_IGNORE_SESSION=true
If you need //multiple// users, each one with it's own Grist user you will need to remove the GRIST_IGNORE_SESSION setting.
==== Reverse Proxy ====
You can run Grist only on a sub-domain.
I assume it will be reachable as **https://grist.mydomain.com**.
Following [[https://docs.searxng.org/admin/installation-nginx.html#installation-nginx|this page]] create a NGINX config file called **/etc/nginx/com.mydomain/grist/grist.conf** like this:
server {
server_name grist.mydomain.com;
listen 443 ssl;
listen 8443 ssl;
access_log /var/log/nginx/grist.mydomain.com_access_log main;
error_log /var/log/nginx/grist.mydomain.com_error_log info;
include "com.mydomain/authelia_location.conf";
location / {
include "com.mydomain/authelia_proxy.conf";
include "com.mydomain/authelia_authrequest.conf";
proxy_pass http://127.0.0.1:8484;
proxy_set_header Host $host;
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 Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
This will enable Authelia SSO (see [[selfhost:sso|here]] for your Grist installation as well.
===== Autostart =====
To start it, and set it up on boot, as usual follow my indications [[gentoo:containers|Using Containers on Gentoo]], so link the **user-containers** init script:
ln -s /etc/init.d/user-containers /etc/init.d/user-containers.grist
and create the following config file:
USER=grist
DESCRIPTION="Online spreadsheet"
Add the service to the default runlevel and start it now:
rc-update add user-containers.grist default
rc-service user-containers.grist start