You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DOC-3226: Update licensing information and examples for TinyMCE 8, including T8LK: prefix requirements for self-hosted deployments across various integrations and documentation.
{productname} 8 introduces an enhanced license key system that provides improved subscription access control and streamlined renewal processes. This system includes both date-based and version-locked keys, supporting various deployment scenarios including cloud, self-hosted, and hybrid configurations.
9
+
6
10
[IMPORTANT]
7
11
====
8
-
{productname} 7is licensed under the GNU General Public License Version 2 or later. A new configuration option called 'license_key' requires developers to make a conscious decision to use {productname} with the GPLv2+ license or with a commercial license.
12
+
If you are using {productname} 7, it is licensed under the GNU General Public License Version 2 or later. A configuration option called 'license_key' requires developers to make a conscious decision to use {productname} with the GPLv2+ license or with a commercial license.
9
13
10
14
If you are using {productname} in a self-hosted environment, a console log warning message will display if the license key config option is missing or invalid. This message aims to ensure compliance with licensing requirements and provide transparency during the evaluation period.
11
15
12
16
This message will not be shown when loading {productname} from {cloudname}, as it is already under a commercial license.
17
+
18
+
For {productname} 8, license keys use the `+"T8LK:"+` prefix and provide enhanced validation and management features. These keys support both online and offline validation modes.
13
19
====
14
20
15
21
include::partial$misc/setting-the-license.adoc[]
16
22
23
+
== License Types and Deployment Options
24
+
25
+
=== Date-based Keys (Standard)
26
+
27
+
The standard license key type in {productname} 8 is date-based, meaning:
28
+
29
+
* The key has a soft expiration date that matches your subscription end date.
30
+
* After the soft expiration, the editor enters a grace period in `read-only` mode.
31
+
* After the grace period expires, the editor becomes completely disabled.
32
+
* Premium plugins are disabled at the soft expiration date.
33
+
* In-editor messaging will notify users about approaching expiration.
34
+
35
+
=== Version-locked Keys (Alternative)
36
+
37
+
For customers who cannot use date-based keys, version-locked keys are available:
38
+
39
+
* The key is locked to specific {productname} versions.
40
+
* No expiration date - the key continues working for allowed versions.
41
+
* Cannot be used with versions released after your subscription ends.
42
+
* Must contact account manager to get access to newer versions.
43
+
* Suitable for air-gapped environments or strict deployment policies.
44
+
45
+
=== Deployment Patterns
46
+
47
+
==== Cloud-only
48
+
49
+
* Use API key.
50
+
* Premium features via subscription.
51
+
* CDN-hosted resources.
52
+
* Automatic updates.
53
+
54
+
==== Self-hosted
55
+
56
+
* Use license key with `T8LK` prefix.
57
+
* Local premium plugins.
58
+
* Manual updates.
59
+
* Full control over assets.
60
+
61
+
==== Hybrid
62
+
63
+
* Both API key and license key.
64
+
* Mix of cloud and local features.
65
+
* Flexible deployment options.
66
+
* Fallback capabilities.
67
+
68
+
=== Offline Mode
69
+
70
+
For air-gapped environments or offline usage:
71
+
72
+
* Supports environments without internet connectivity
73
+
* Compatible with strict network security policies
74
+
* Maintains license compliance through client-side JWT validation
75
+
* Enforces version and domain restrictions without server connection
76
+
* Works with standard security controls and firewalls
77
+
* Requires version-locked keys for maximum compatibility
78
+
79
+
[NOTE]
80
+
====
81
+
For air-gapped environments:
82
+
* Use version-locked keys instead of date-based keys
83
+
* Premium plugins must be downloaded and bundled locally
84
+
* Updates require manual deployment of new versions
* Content delivery URLs should point to local resources
193
+
* Premium plugins must be downloaded and included in your bundle
194
+
====
195
+
196
+
== License States
197
+
198
+
=== Active
199
+
200
+
* Full editor and premium plugin functionality.
201
+
* Regular version upgrades available (date-based keys).
202
+
* No restrictions on features.
203
+
204
+
=== Grace Period (Date-based keys only)
205
+
206
+
// TBA: Validate this date is correct
207
+
* Occurs 30 days before subscription end.
208
+
* All features remain functional.
209
+
* In-editor notifications about approaching expiration.
210
+
* Time to contact Tiny for renewal.
211
+
212
+
=== Expired
213
+
214
+
* Date-based keys: Editor disabled after grace period.
215
+
* Version-locked keys: Cannot use new versions.
216
+
* Must obtain new license key after renewal.
217
+
17
218
== FAQ
18
219
19
220
=== What does the GPL license mean?
@@ -24,21 +225,46 @@ The GPLv2+ license was chosen to provide the best compatibility with existing GP
24
225
25
226
=== What is the difference between a license key and the API key?
26
227
27
-
The **API key** is used when loading {productname} from the {cloudname}. The **license key** is used to declare the license terms when self-hosting {productname}.
228
+
The **API key** is used when loading {productname} from the {cloudname} and undergoes server-side validation. The **license key** (starting with T8LK: in version 8) is used to declare the license terms when self-hosting {productname} and uses client-side JWT validation in the browser.
28
229
29
230
=== Who needs to get a license key?
30
231
31
-
Anyone who intends to self-host {productname} will need to provide a valid commercial license key or declare their intention to use {productname} under the GPLv2+ license.
232
+
Anyone who intends to self-host {productname} will need to:
233
+
* For version 7: Provide a valid commercial license key or declare their intention to use {productname} under the GPLv2+ license
234
+
* For version 8: Obtain a T8LK-prefixed commercial license key or use GPL mode
32
235
33
236
=== How will I know if this change affects me?
34
237
35
-
If {productname} detects that the `license_key` configuration is missing or invalid, it will display a console log warning. If you have actively suppressed or hidden this message, please remove those overrides. If no notification appears, you are not affected.
238
+
If {productname} detects that the `license_key` configuration is missing or invalid, it will display a console log warning message. These warnings are designed to ensure compliance and provide transparency during evaluation periods. If you have actively suppressed or hidden these messages, please remove those overrides to maintain proper license validation. If no notification appears, you are not affected.
36
239
37
240
=== Should I be using both an API key and a license key?
38
241
39
-
No, an API key and a license key should not be used simultaneously. The API key should only be used if {productname} is loaded from the {cloudname}. If {productname} is being self-hosted, the license key option should be used instead.
242
+
For standard deployments, use only one of the following:
243
+
* *API key* - For cloud deployments
244
+
** Server-side validation
245
+
** Automatic updates and CDN delivery
246
+
** Premium plugin access via subscription
247
+
** No client-side validation required
248
+
249
+
* *License key* - For self-hosted deployments
250
+
** Client-side JWT validation
251
+
** T8LK prefix required for version 8
252
+
** Supports air-gapped environments
253
+
** Local premium plugin validation
40
254
41
-
=== Will {productname} “phone home” to check the license key?
255
+
*Hybrid Deployment Cases:*
256
+
* Using both keys together requires specific configuration:
257
+
** Set up cloud services with API key
258
+
** Configure local fallback with license key
259
+
** Enable high availability features
260
+
** Access both cloud and local premium plugins
261
+
262
+
[IMPORTANT]
263
+
====
264
+
Only use both keys in properly configured hybrid deployments where you need cloud features with local fallback. Using both keys without proper hybrid deployment configuration **may cause** validation conflicts and unexpected behavior.
265
+
====
266
+
267
+
=== Will {productname} "phone home" to check the license key?
42
268
43
269
No. {productname} does not contact any server to validate the license key.
44
270
@@ -52,4 +278,12 @@ The license key ensures compliance with {productname} licensing terms. It's part
52
278
53
279
=== How can I get further assistance?
54
280
55
-
For any licensing or technical support questions, see our available options on the https://www.tiny.cloud/docs/tinymce/latest/support/[support page.]
281
+
For any licensing or technical support questions, see our available options on the https://www.tiny.cloud/docs/tinymce/latest/support/[support page.]
282
+
283
+
=== Technical Support
284
+
285
+
For licensing or technical support:
286
+
* API key issues: Visit link:https://www.tiny.cloud/my-account[Tiny Cloud Account]
287
+
* License key issues: Contact your account manager
Use this when self-hosting {productname} instead of loading from {cloudname}. For more information, see: xref:license-key.adoc[License Key].
135
+
Use this when self-hosting {productname} instead of loading from {cloudname}. License keys must start with the "T8LK:" prefix and use client-side JWT validation. For more information, see: xref:license-key.adoc[License Key].
136
136
137
137
*Type:* `+String+`
138
138
139
139
*Default value:* `+undefined+`
140
140
141
-
*Possible values:* `undefined`, `'gpl'` or a valid {productname} license key
141
+
*Possible values:*
142
+
* `undefined` - Use this when loading from {cloudname} with an API key
143
+
* `'gpl'` - For open source projects using GPL license
144
+
* `'T8LK:your-license-key'` - For commercial {productname} installations
Copy file name to clipboardExpand all lines: modules/ROOT/partials/integrations/blazor-tech-ref.adoc
+20-3Lines changed: 20 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -188,18 +188,35 @@ In your component:
188
188
189
189
=== `LicenseKey`
190
190
191
-
Specifies the {productname} license key. Required for self-hosted deployments of {productname}. This property is not required for deployments using the {cloudname}. For more information on licensing, see: xref:license-key.adoc[License key].
191
+
Specifies the {productname} license key. Required for self-hosted deployments of {productname}. This property is not required for deployments using the {cloudname}.
192
+
193
+
License keys must start with the "T8LK:" prefix and use client-side JWT validation. For more information, see: xref:license-key.adoc[License Key].
192
194
193
195
*Type:* `+String+`
194
196
195
-
==== Example using LicenseKey
197
+
*Possible values:*
198
+
* `null` - Use this when loading from {cloudname} with an API key
199
+
* `"gpl"` - For open source projects using GPL license
200
+
* `"T8LK:your-license-key"` - For commercial {productname} installations
196
201
202
+
==== Example: Commercial license (TinyMCE 8+)
197
203
[source,cs]
198
204
----
199
205
<Editor
200
-
LicenseKey="your-license-key"
206
+
LicenseKey="T8LK:your-license-key"
201
207
/>
202
208
----
209
+
Use this example when you have a commercial license for TinyMCE 8 or newer. The T8LK prefix is required.
210
+
211
+
==== Example: Open source GPL license
212
+
[source,cs]
213
+
----
214
+
<Editor
215
+
LicenseKey="gpl"
216
+
/>
217
+
----
218
+
219
+
Use this example when you're using TinyMCE under the open source GPL license in a self-hosted environment.
0 commit comments