Grist Full Edition broken since 1.7.16+ — Possible fix (GRIST_SERVER_EDITION)
-
Hi everyone.
It's my first message here so i hope it will arrive in the good topic to the right person.
Grist Full Edition is broken since 1.7.16+ and i may have a Possible fix.Following up on the "Switch to Full Grist" issue reported earlier here (https://forum.cloudron.io/topic/14941/grist-is-now-available). After some debugging, I believe the root cause is that the Grist packaging is missing the GRIST_SERVER_EDITION=full environment variable.
This variable was introduced in Grist 1.7.16+ (PR #2450) and is required to activate Full Edition at runtime. Without it, Grist defaults to Community Edition (deploymentType=core) even when a valid GRIST_ACTIVATION key is provided.
The GRIST_ACTIVATION JWT only validates features (seats, read-only flag, expiration) — it does not switch the edition by itself.
Proposed fix
Adding this to the packaging should resolve the issue:
export GRIST_SERVER_EDITION=fullReferences
PR #2450: https://github.com/gristlabs/grist-core/issues/2450
Grist README (environment variables): https://github.com/gristlabs/grist-core#environment-variables
Hope this helps.Best
Chris
-
Hi @james
Thanks for the detailed report. I ran into the same issue and after digging through the source code, I found a way to get Full Edition working. Three things are needed together:
GRIST_SERVER_EDITION=full in the container env (this is the missing piece, introduced in Grist 1.7.16 via PR #2450 — different from GRIST_EDITION). Flips deploymentType to enterprise.
GRIST_ACTIVATION with the JWT from getgrist.com.
The installationId in SQLite (/persist/home.db, table kvs, key installationId) has to match the one embedded in the JWT. If the DB was recreated or the JWT issued for a different install, they won't match and activation silently fails — instance stays read-only with no error message. Once I injected the matching ID, everything unlocked.
Validated on gristlabs/grist official image, SQLite backend. Full Edition active, admin panel visible, documents editable.For the Cloudron packaging, I'd guess just adding GRIST_SERVER_EDITION=full to the start script fixes step 1 natively.
References:
PR #2450: https://github.com/gristlabs/grist-core/issues/2450
Happy to test a patched package if one comes together.Chris
-
Hi @james
Thanks for the detailed report. I ran into the same issue and after digging through the source code, I found a way to get Full Edition working. Three things are needed together:
GRIST_SERVER_EDITION=full in the container env (this is the missing piece, introduced in Grist 1.7.16 via PR #2450 — different from GRIST_EDITION). Flips deploymentType to enterprise.
GRIST_ACTIVATION with the JWT from getgrist.com.
The installationId in SQLite (/persist/home.db, table kvs, key installationId) has to match the one embedded in the JWT. If the DB was recreated or the JWT issued for a different install, they won't match and activation silently fails — instance stays read-only with no error message. Once I injected the matching ID, everything unlocked.
Validated on gristlabs/grist official image, SQLite backend. Full Edition active, admin panel visible, documents editable.For the Cloudron packaging, I'd guess just adding GRIST_SERVER_EDITION=full to the start script fixes step 1 natively.
References:
PR #2450: https://github.com/gristlabs/grist-core/issues/2450
Happy to test a patched package if one comes together.Chris
Hello @chrisca
The installationId in SQLite (/persist/home.db, table kvs, key installationId) has to match the one embedded in the JWT. If the DB was recreated or the JWT issued for a different install, they won't match and activation silently fails
But is this not the core issue?
Since every grist installation on Cloudron starts as free changing the edition from free to full would always entail 'injected the matching ID' however this should be done.For the Cloudron packaging, I'd guess just adding GRIST_SERVER_EDITION=full to the start script fixes step 1 natively.
This would cause every Grist installation to be the full edition by default and thus requiring a paid licence after the 30-day trial period, right?
Just deciding for everyone that the edition is always full should not be our call to make, it is the users decision to switch between free and full.Also, there already is the
/app/data/env.shwhere you could add:export GRIST_SERVER_EDITION=full@chrisca can you explain the 'injected the matching ID' part?
-
Hi @james,
You're right on both points.
On the installationId — that was specific to my migration case, not relevant to the core bug. Scratch that.
On forcing Full Edition by default — agreed, that's the user's call.
One thing I want to add: I tested the same approaches as you did in post #15 (GRIST_EDITION=full, yarn run set-full-edition, the admin UI toggle) — none of them worked. The variable introduced in PR #2450 is actually GRIST_SERVER_EDITION=full, which is a different variable from GRIST_EDITION. It controls deploymentType at runtime via a separate code path. GRIST_EDITION=full had no effect on my side either.
For anyone hitting this on Cloudron today, the workaround to test would be:
Request a free activation key at getgrist.com (free for orgs under $1M revenue)
In the Cloudron app config, add these env vars:
GRIST_SERVER_EDITION=full
GRIST_ACTIVATION=<your-key>
Restart the app
I haven't been able to test this on the Cloudron package itself — I had already migrated to the official gristlabs/grist image when I found GRIST_SERVER_EDITION, so my validation is on that image, not on Cloudron. If someone still on the Cloudron package could test adding GRIST_SERVER_EDITION=full to env.sh, that would confirm whether it's the fix.The Switch to Full Grist button in the admin UI likely sets GRIST_EDITION instead of GRIST_SERVER_EDITION, which would explain why it doesn't work.
Chris
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login