---
title: "Self-hosted trial with cloud services"
description: "Set up a self-hosted TinyMCE trial with access to cloud-powered premium features using NPM."
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/self-hosted-trial/"
md_url: "https://www.tiny.cloud/docs/tinymce/latest/self-hosted-trial/index.md"
version: "latest"
last_updated: "2026-06-03T03:39:11Z"
tokens: 2102
---
# Self-hosted trial with cloud services

## Overview

A self-hosted trial provides access to TinyMCE premium plugins in a self-hosted environment. Integrators can optionally connect to Tiny Cloud services during the trial to evaluate server-side features such as Spell Checker Pro, Export to PDF, and TinyMCE AI, without requiring a separate server-side deployment or additional scripts. Connecting to cloud services is opt-in. Setting the `online_license_services_opt_in` option to `true` enables the connection. Without this option, the editor is licensed and operational but cloud-dependent premium plugins are not auto-configured.

> **Note:** Only new customers can start a self-hosted trial. For trial duration and entitlement details, see the [Tiny Cloud Account](/my-account) portal.

## Prerequisites

- A TinyMCE account with an active trial. Sign up at [Get TinyMCE](/get-tiny/).
- A trial license key, issued from the 'Self-hosted' tab of the Customer Portal.
- [Node.js (and npm)](https://nodejs.org/) installed.
- A project directory with a `package.json` file. Initialize one by running `npm init` if needed.
- A secure context: the page must be served over HTTPS or from `localhost`. Trial license keys require a secure context to complete key validation.

## Setup

### Step 1: Install TinyMCE and premium plugins

Install both the core editor and premium plugins package:

```sh
npm install tinymce@^8 tinymce-premium@^8
```

### Step 2: Configure the editor with the trial license key

Add the trial license key to the TinyMCE configuration using the `license_key` option. Setting `online_license_services_opt_in` to `true` connects the editor to Tiny Cloud services, so that cloud-dependent premium plugins are auto-configured for the duration of the trial:

```js
tinymce.init({
  selector: 'textarea',  // change this value according to the HTML
  license_key: 'your-trial-license-key',  // trial license key from the Self-hosted tab
  plugins: [
    'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview',
    'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen',
    'insertdatetime', 'media', 'table', 'help', 'wordcount',
    'tinymcespellchecker', 'exportpdf', 'exportword', 'importword',
    'linkchecker', 'mediaembed', 'editimage', 'autocorrect', 'tinymceai'
  ],
  toolbar: 'undo redo | blocks | bold italic | alignleft aligncenter alignright | bullist numlist outdent indent | help',
  online_license_services_opt_in: true,
  tinymceai_token_provider: async () => {  // 'no-api-key' is replaced with the Cloud API key once the account is created
    await fetch(`https://demo.api.tiny.cloud/1/no-api-key/auth/random`, { method: 'POST', credentials: 'include' });
    return await fetch(`https://demo.api.tiny.cloud/1/no-api-key/jwt/tinymceai`, { credentials: 'include' })
      .then(resp => resp.text())
      .then(token => ({ token }));
  }
});
```
Replace the `'your-trial-license-key'` placeholder with the trial license key issued from the **Self-hosted** tab of the Customer Portal. The token provider URL uses `no-api-key`, a Cloud API key visible on the **Cloud** tab of the Customer Portal. The placeholder is automatically replaced with the Cloud API key by visiting the Customer Portal.

Without `online_license_services_opt_in`, the trial license key still validates and the editor remains fully functional, but cloud-dependent plugins (such as Spell Checker Pro, Link Checker, and Export to PDF) are not auto-configured and report that their service URL is not set.

> **Important:** Setting `online_license_services_opt_in` to `true` enables a network connection from the editor to Tiny Cloud. Remove this option or set it to `false` to disable the cloud connection at any time.

> **Note:** Most cloud-powered plugins work automatically once `online_license_services_opt_in` is set to `true`. Some plugins require additional configuration. For example, TinyMCE AI requires a `tinymceai_token_provider` function, shown above using the trial demo identity service. The token provider URL uses `no-api-key`, which is automatically replaced with the trial API key from the **Cloud** tab of the [Customer Portal](/my-account) once the account is created. This is a separate key from the trial license key. For details, see [TinyMCE AI trial demo identity service](../tinymceai-jwt-authentication-intro/#trial-demo-identity-service). Check the documentation for each plugin in use for any additional setup it requires.

### Step 3: Ensure the license key manager is available

The `tinymce-premium` NPM package includes the license key manager. If bundling TinyMCE, ensure the license key manager is imported:

```javascript
import 'tinymce-premium/plugins/licensekeymanager';
```
For hosting setups, ensure the `licensekeymanager` folder is present in the `plugins` directory alongside all other plugins. For more details, see [Setting up the Commercial License Key Manager](../license-key/#_setting_up_the_commercial_license_key_manager).

## Cloud-powered features

The following premium features require a connection to Tiny Cloud services and will only function when `online_license_services_opt_in` is set to `true`:

| Feature | Description |
| --- | --- |
| [Spell Checker Pro](../introduction-to-tiny-spellchecker/) | Real-time spellchecking powered by cloud-based language services. |
| [Link Checker](../linkchecker/) | Validates hyperlinks within content using a cloud-based link validation service. |
| [Enhanced Media Embed](../introduction-to-mediaembed/) | Rich media previews for URLs using a cloud-based media resolution service. |
| [Export to PDF](../exportpdf/) | Converts editor content to PDF format using a cloud-based conversion service. |
| [Export to Word](../exportword/) | Converts editor content to DOCX format using a cloud-based conversion service. |
| [Import from Word](../importword/) | Imports DOCX content into the editor using a cloud-based conversion service. |
| [Image Editing](../editimage/) | Advanced image editing with cloud-based image proxy support. |
| [TinyMCE AI](../tinymceai/) | AI-powered content generation and editing. |

All other premium plugins included in the `tinymce-premium` package function during the trial without a cloud connection.

For the full list of features included in a trial, see the [Tiny Cloud Account](/my-account) portal.

## Network requirements

When `online_license_services_opt_in` is enabled, the editor connects to Tiny Cloud services at `*.api.tiny.cloud`. Ensure that this domain pattern is allowed for outbound HTTPS access if the network uses a forward proxy or firewall.

For detailed Content Security Policy (CSP) configuration, see [TinyMCE and Content Security Policy](../tinymce-and-csp/).

## Trial limitations

| Limitation | Details |
| --- | --- |
| Duration | The trial period begins at sign-up. For the current trial duration, see the [Tiny Cloud Account](/my-account) portal. |
| Eligibility | New customers only. Existing customers with an active subscription are not eligible for a self-hosted trial. |
| After expiry | The editor ceases to function when the trial license key expires. Purchase a commercial license to continue using TinyMCE. |
| Cloud services | Cloud-powered features require an active internet connection and the `online_license_services_opt_in` option set to `true`. Without this option, cloud-dependent plugins are not auto-configured. |

## After the trial

To continue using TinyMCE after the trial period:

- **Purchase a commercial license:** Visit [TinyMCE Pricing](/pricing) to select a plan. A commercial license key is provided for ongoing self-hosted use.
- **Self-hosted premium services:** For production use of features such as Spell Checker, Export to PDF, and Import from Word, self-host the required server-side services or use a Tiny Cloud plan. See [Premium server-side services](../bundle-intro-setup/) for self-hosting options.
- **Cloud deployment:** Alternatively, switch to a fully cloud-hosted deployment. See [Cloud deployment](../editor-and-features/) for setup instructions.

## FAQ

| Question | Answer |
| --- | --- |
| Does the trial require an API key? | The trial license key is all that is required for the editor and for most cloud-powered plugins. A separate Cloud API key is needed only to authenticate TinyMCE AI through the demo identity service. |
| Can the cloud connection be disabled? | Yes. Remove the `online_license_services_opt_in` option or set it to `false`. Cloud-powered features will not be auto-configured, but the editor and all self-hosted plugins will continue to operate. |
| What happens when the trial expires? | TinyMCE disables the editor and displays a notification indicating that the license key has expired. Purchase a commercial license to continue use. |
| Is a separate script tag required for cloud services? | No. Unlike a hybrid deployment, the self-hosted trial does not require an additional script tag. The `online_license_services_opt_in` option and the trial license key handle all cloud service connectivity. |
| Which plugins work without cloud services? | All premium plugins that do not depend on an external service function during the trial regardless of the `online_license_services_opt_in` option value. Only the features listed in [Cloud-powered features](#cloud-powered-features) require the cloud connection to be enabled. |
| Can the trial be extended? | Trial extensions are not available through self-service. Contact [TinyMCE Support](https://support.tiny.cloud/) for assistance. |
