From 1096f86675f0071242ec27d554954b881312fb85 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 1 Jul 2026 09:51:43 +0100 Subject: [PATCH 1/5] Add missing docs and fix stale env vars from support-chat gap review --- docs/Configuration/External Database.md | 10 +- docs/Configuration/Extra-Settings.md | 13 ++ docs/Configuration/OCR.md | 6 +- docs/Configuration/Other Customisations.md | 5 + docs/Configuration/UI Customisation.md | 22 +-- docs/FAQ.md | 42 ++++++ .../Content-Editing/Content-Editing.md | 2 +- docs/Functionality/Fill-Form.md | 4 + docs/Functionality/OCR.md | 6 + docs/Installation/Docker Install.md | 11 ++ docs/Installation/Kubernetes.md | 23 ++++ docs/Installation/Uninstall.md | 128 ++++++++++++++++++ docs/Installation/Unix.md | 24 ++++ docs/Installation/Versions.md | 2 + docs/Installation/Windows.md | 7 + docs/Modes-and-Licensing.md | 19 ++- docs/Paid-Offerings.md | 26 +++- 17 files changed, 326 insertions(+), 24 deletions(-) create mode 100644 docs/Installation/Uninstall.md diff --git a/docs/Configuration/External Database.md b/docs/Configuration/External Database.md index 2ebb3432..ba2e2030 100644 --- a/docs/Configuration/External Database.md +++ b/docs/Configuration/External Database.md @@ -26,7 +26,7 @@ You can configure the new `Datasource` property in your `settings.yml` to connec ```yaml datasource: enableCustomDatabase: false - customDatabackendUrl: jdbc:postgresql://localhost:5432/postgres + customDatabaseUrl: jdbc:postgresql://localhost:5432/postgres username: postgres password: postgres type: postgresql @@ -36,7 +36,7 @@ You can configure the new `Datasource` property in your `settings.yml` to connec ``` - `enableCustomDatabase`: Set this property to `true` to enable use of the custom database **Note: An enterprise license to use this feature** -- `customDatabackendUrl`: Enter the database connection url for the database here. **Note: If you set the `customDatabackendUrl` you do not need to set the type, hostName, port and name, they will all be automatically derived from the url.** +- `customDatabaseUrl`: Enter the database connection url for the database here. **Note: If you set the `customDatabaseUrl` you do not need to set the type, hostName, port and name, they will all be automatically derived from the url.** - `username`: The username for the database - `password`: The password for the database @@ -80,7 +80,7 @@ services: environment: DISABLE_ADDITIONAL_FEATURES: "false" "true" SYSTEM_DATASOURCE_ENABLECUSTOMDATABASE: "true" - SYSTEM_DATASOURCE_CUSTOMDATABACKENDURL: "jdbc:postgresql://db:5432/stirling_pdf" + SYSTEM_DATASOURCE_CUSTOMDATABASEURL: "jdbc:postgresql://db:5432/stirling_pdf" SYSTEM_DATASOURCE_USERNAME: "admin" SYSTEM_DATASOURCE_PASSWORD: "stirling" # further configuration @@ -89,7 +89,7 @@ services: - `depends_on`: This specifies any services that your app will need in order to run. Ensure the name matches the container name for your database - `DISABLE_ADDITIONAL_FEATURES`: Set this to `false` to enable security features - `SYSTEM_DATASOURCE_ENABLECUSTOMDATABASE`: An environment variable to connect to the database container. Set this to `true` to enable use of the external database -- `SYSTEM_DATASOURCE_CUSTOMDATABACKENDURL`: An environment variable to connect to the database container. Set the connection url for the database here. **Note: If you set this url you do not need to set the type, hostName, port and name (namely `SYSTEM_DATASOURCE_TYPE`, `SYSTEM_DATASOURCE_HOSTNAME`, `SYSTEM_DATASOURCE_PORT`, `SYSTEM_DATASOURCE_NAME`), they will all be automatically derived from the url.** +- `SYSTEM_DATASOURCE_CUSTOMDATABASEURL`: An environment variable to connect to the database container. Set the connection url for the database here. **Note: If you set this url you do not need to set the type, hostName, port and name (namely `SYSTEM_DATASOURCE_TYPE`, `SYSTEM_DATASOURCE_HOSTNAME`, `SYSTEM_DATASOURCE_PORT`, `SYSTEM_DATASOURCE_NAME`), they will all be automatically derived from the url.** - `SYSTEM_DATASOURCE_USERNAME`: An environment variable to connect to the database container. Set the username for the database. Ensure this matches the corresponding property in your database container - `SYSTEM_DATASOURCE_PASSWORD`: An environment variable to connect to the database container. Set the password for the database. Ensure this matches the corresponding property in your database container @@ -103,7 +103,7 @@ services: environment: DISABLE_ADDITIONAL_FEATURES: "false" "true" SYSTEM_DATASOURCE_ENABLECUSTOMDATABASE: "true" - SYSTEM_DATASOURCE_CUSTOMDATABACKENDURL: "jdbc:postgresql://db:5432/stirling_pdf" + SYSTEM_DATASOURCE_CUSTOMDATABASEURL: "jdbc:postgresql://db:5432/stirling_pdf" SYSTEM_DATASOURCE_USERNAME: "admin" SYSTEM_DATASOURCE_PASSWORD: "stirling" # further configuration diff --git a/docs/Configuration/Extra-Settings.md b/docs/Configuration/Extra-Settings.md index 95846b9c..5941979e 100644 --- a/docs/Configuration/Extra-Settings.md +++ b/docs/Configuration/Extra-Settings.md @@ -44,8 +44,21 @@ server: max: 200 # Maximum number of request processing threads min: 10 # Minimum number of threads always kept running connection-idle-timeout: 30000 # Connection idle timeout in milliseconds + max-http-request-header-size: 65536 # Maximum size of request headers in bytes ``` +### HTTP 431 "Request Header Fields Too Large" during SSO/OAuth login + +Some SSO/OAuth providers send very large request headers (for example, large cookies or JWTs), which can trigger an **HTTP 431 Request Header Fields Too Large** error during login. Increase Jetty's maximum request header size in `/configs/custom_settings.yml` to resolve it: + +```yaml +server: + jetty: + max-http-request-header-size: 65536 # Maximum size of request headers in bytes (default 8192) +``` + +Raise the value further (for example `131072`) if the error persists, then restart Stirling PDF. + ## SSL/TLS Configuration Configure HTTPS for secure connections: diff --git a/docs/Configuration/OCR.md b/docs/Configuration/OCR.md index e441aa45..b26b360a 100644 --- a/docs/Configuration/OCR.md +++ b/docs/Configuration/OCR.md @@ -10,7 +10,11 @@ import TabItem from '@theme/TabItem'; This document provides instructions on how to add additional language packs for the OCR tab in Stirling PDF, both inside and outside of Docker. ## How does the OCR Work -Stirling PDF uses Tesseract for its text recognition. All credit goes to them for this awesome work! +Stirling PDF uses Tesseract for its text recognition. All credit goes to them for this awesome work! Note that OCR recognizes text only - it does not perform table-structure or formula recognition. + +:::note Requires a server backend +OCR runs on a server-side backend with Tesseract installed. The desktop app cannot OCR in local-only mode - connect it to Stirling Cloud or a self-hosted server that has OCR available. To OCR non-English documents, install the matching language pack as described below. +::: ## Language Packs diff --git a/docs/Configuration/Other Customisations.md b/docs/Configuration/Other Customisations.md index 8b5d4035..01b5e5bb 100644 --- a/docs/Configuration/Other Customisations.md +++ b/docs/Configuration/Other Customisations.md @@ -200,3 +200,8 @@ system: enableAnalytics: 'true' ``` In configs/settings.yml + +## Default Tool-Picker Mode (Per-User Only) +The default tool-picker layout (sidebar, fullscreen, or compact) is a **per-user preference stored in the browser**. Each user selects their own mode in the app, and it is remembered locally. + +There is currently **no way to set this globally for all users** via an environment variable or `settings.yml`. In particular, there is no working `SYSTEM_DEFAULTTOOLSELECTORMODE` setting - it does not exist and has no effect. diff --git a/docs/Configuration/UI Customisation.md b/docs/Configuration/UI Customisation.md index d2a7127b..168360b3 100644 --- a/docs/Configuration/UI Customisation.md +++ b/docs/Configuration/UI Customisation.md @@ -10,11 +10,11 @@ import TabItem from '@theme/TabItem'; Stirling PDF allows straightforward customization of the application name and appearance to make Stirling PDF your own. ## Application Name Settings -These settings control the visible application name: -- `appName` - The visible application name for your instance -- `homeDescription` - The description displayed on the homepage that first greets the user +This setting controls the application name: - `appNameNavbar` - Used as the browser tab title and as the issuer name shown in authenticator apps for two-factor (TOTP) login. Despite its name it is not shown in the navigation bar (which displays the logo), so do not leave it blank if you use TOTP. Empty falls back to "Stirling PDF". +> **Note:** The former `appName` (`UI_APPNAME`) and `homeDescription` (`UI_HOMEDESCRIPTION`) properties have been removed and no longer have any effect. Only `appNameNavbar` (`UI_APPNAMENAVBAR`) remains. + ## Show update notifications These settings (in Settings.yml) control system behavior and customization capabilities: - `showUpdate` - Controls whether update notifications are displayed @@ -151,8 +151,6 @@ This approach requires maintaining your fork and manually merging updates. ```yaml ui: - appName: exampleAppName # Application's visible name - homeDescription: I am a description # Short description or tagline shown on homepage appNameNavbar: navbarName # Browser tab title and TOTP issuer label (not the navbar) system: @@ -166,25 +164,21 @@ This approach requires maintaining your fork and manually merging updates. **Option 1: Using Java Properties** ```bash java -jar Stirling-PDF.jar \ - -DAPP_HOME_NAME="New Application Name" \ + -DUI_APPNAMENAVBAR="Stirling PDF" \ -DSHOW_UPDATE=false \ -DSHOW_UPDATE_ONLY_ADMIN=false ``` **Option 2: Using Environment Variables** ```bash - export UI_APPNAME="Stirling PDF" - export UI_HOMEDESCRIPTION="Your locally hosted one-stop-shop for all your PDF needs." - export UI_APPNAVBARNAME="Stirling PDF" + export UI_APPNAMENAVBAR="Stirling PDF" export SYSTEM_SHOWUPDATE=false export SYSTEM_SHOWUPDATEONLYADMIN=false ``` ```bash - -e UI_APPNAME=Stirling PDF \ - -e UI_HOMEDESCRIPTION=Your locally hosted one-stop-shop for all your PDF needs. \ - -e UI_APPNAVBARNAME=Stirling PDF \ + -e UI_APPNAMENAVBAR=Stirling PDF \ -e SYSTEM_SHOWUPDATE=false \ -e SYSTEM_SHOWUPDATEONLYADMIN=false ``` @@ -192,9 +186,7 @@ This approach requires maintaining your fork and manually merging updates. ```yaml environment: - UI_APPNAME: Stirling PDF - UI_HOMEDESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs. - UI_APPNAVBARNAME: Stirling PDF + UI_APPNAMENAVBAR: Stirling PDF SYSTEM_SHOWUPDATE: "false" SYSTEM_SHOWUPDATEONLYADMIN: "false" ``` diff --git a/docs/FAQ.md b/docs/FAQ.md index 18392038..fa65cd01 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -112,3 +112,45 @@ To disable authentication in the with-login version: For more details, see the [System and Security Configuration](./Configuration/System%20and%20Security.md#running-without-authentication) documentation. +### Q12: Where do my files go on the desktop app, and what does "uploading to server" mean? + +The desktop app runs a small Stirling PDF backend **inside the app on your own computer** (localhost). The Connection mode you pick (Settings -> Connection) decides where each tool runs: + +- **Local-only** (default; not signed in, no server connected): every tool runs on the local backend and your files never leave your device. If you use a tool the local backend can't perform (OCR, Office conversions, and similar), the file is **not** sent anywhere - the app stops and asks you to sign in to Stirling Cloud or connect to a self-hosted server. +- **Signed in to Stirling Cloud**: server-side tools are processed on Stirling's cloud (transient, not stored). +- **Connected to a self-hosted server**: server-side tools go only to your own server. + +Bottom line: in local-only mode a server-side tool is either run locally or blocked with a prompt - it is never silently uploaded anywhere. + +### Q13: Can I remove an existing watermark from a PDF? + +There is no dedicated watermark-removal tool. Stirling PDF can **add** watermarks (Add Watermark) but cannot automatically strip existing ones. Depending on the watermark you can sometimes cover it with **Redact** (which draws over an area) or, for text-layer content, **Auto-Redact**. Image watermarks that are baked into the page usually cannot be cleanly removed. + +### Q14: Can I create fillable form fields, or add fields to a PDF that isn't already a form? + +The [Fill Form](./Functionality/Fill-Form.md) tool fills fields that **already exist** in the PDF. Creating or adding new form fields from scratch is not currently supported (create/modify form modes are planned). + +### Q15: Can I add multi-line text or line breaks with Add Text, Stamp, or Watermark? + +Yes. Put a literal `\n` in the text field to force a line break; each line is rendered separately. + +### Q16: Why does my self-hosted instance make requests to js.stripe.com? + +Stripe's script loads only for the in-app purchase / billing UI. No PDF or document data is sent to Stripe. Fully offline/air-gapped instances are unaffected in normal use - the request only matters if you open the billing/upgrade screen. + +### Q17: Is [feature] supported? (native mobile app, Office add-in, and others) + +The following are **not** currently available: + +- A native Android/iOS app (use a mobile browser, or the Mobile Scanner) +- A Microsoft Word / Office add-in +- Converting `.p7m` signed-email files +- A measure/scale (distance measuring) tool +- Annotation deep-links (opening a link that jumps to a specific annotation from outside the app) +- PDF-to-video +- In-app translation of PDF text +- Template-based PDF generation (for example auto-generating invoices from data) +- A mixed admin-login-plus-anonymous-guests mode (the `enableLogin` setting is all-or-nothing) + +If you'd like any of these, please open a [GitHub feature request](https://github.com/Stirling-Tools/Stirling-PDF/issues) with `[Feature Request]` in the title. + diff --git a/docs/Functionality/Content-Editing/Content-Editing.md b/docs/Functionality/Content-Editing/Content-Editing.md index af62e685..4a3e54f4 100644 --- a/docs/Functionality/Content-Editing/Content-Editing.md +++ b/docs/Functionality/Content-Editing/Content-Editing.md @@ -24,7 +24,7 @@ Tools for adding, extracting, and modifying content within PDF documents. ## Stamps & Annotations -- **Add Text**: Place custom text anywhere on your PDF. Pick the spot, then type a label, caption, or note directly onto the page. +- **Add Text**: Place custom text anywhere on your PDF. Pick the spot, then type a label, caption, or note directly onto the page. Multi-line text is supported: enter a literal `\n` in the text field to add a line break. - **Add Stamp**: Stamp your pages with your own text or an image. Set the position, size, rotation, and opacity, and apply it to one page or all of them. diff --git a/docs/Functionality/Fill-Form.md b/docs/Functionality/Fill-Form.md index 9ef2e164..8c11e6bf 100644 --- a/docs/Functionality/Fill-Form.md +++ b/docs/Functionality/Fill-Form.md @@ -15,6 +15,10 @@ Fill Form lets you complete a PDF's interactive form fields directly in the view Fill Form works with fields that are already in the PDF; it does not add new fields. If a form has no fillable fields, there is nothing to type into. +:::caution Fill Form only fills existing fields +Fill Form can **only** fill in form fields that already exist in the PDF. It does **not** create or add new fillable fields, and turning a plain (non-form) PDF into a fillable form from scratch is **not currently supported**. If your PDF has no form fields, there is nothing for Fill Form to populate. +::: + --- ## How to Use diff --git a/docs/Functionality/OCR.md b/docs/Functionality/OCR.md index 6415e76b..6443450e 100644 --- a/docs/Functionality/OCR.md +++ b/docs/Functionality/OCR.md @@ -9,6 +9,10 @@ description: Make scanned PDFs searchable and editable with OCR Make scanned PDFs searchable and selectable by recognizing text in images. Uses the Tesseract OCR engine. +:::note Requires a server backend +OCR needs a server-side backend with Tesseract installed. The desktop app cannot OCR in local-only mode - connect it to Stirling Cloud or a self-hosted server that has OCR available. +::: + --- ## When You Need OCR @@ -58,9 +62,11 @@ Available languages depend on which Tesseract language packs are installed. The ## Limitations +- Tesseract recognizes text only - it does not do table-structure or formula recognition - Handwritten text has limited accuracy - Stylized/decorative fonts and very small text (< 8pt) are challenging - For best results, use 300 DPI or higher scans with good contrast +- To OCR non-English documents, install the matching Tesseract language pack (see [Language Packs](#language-packs)) --- diff --git a/docs/Installation/Docker Install.md b/docs/Installation/Docker Install.md index 35cdcdd0..93300f00 100644 --- a/docs/Installation/Docker Install.md +++ b/docs/Installation/Docker Install.md @@ -231,6 +231,17 @@ No official store entry, but the standard Docker Compose works fine in any compo - **Portainer**: Stacks → Add stack → paste the compose from the [Full Setup](#full-setup-with-all-features) section. - **CasaOS**: Use the "Install a customized app" flow with the Docker image `docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest`, port `8080`, and bind mounts for `/configs`, `/logs`, `/customFiles`, `/pipeline`, `/usr/share/tessdata`. + + + +Coolify deploys via standard Docker Compose - no special changes needed. + +1. **+ New → Resource → Docker Compose**. +2. Paste the same compose from the [Full Setup](#full-setup-with-all-features) section. +3. Deploy. + +Coolify handles the reverse proxy and TLS for you. + diff --git a/docs/Installation/Kubernetes.md b/docs/Installation/Kubernetes.md index a7e56659..004e8444 100644 --- a/docs/Installation/Kubernetes.md +++ b/docs/Installation/Kubernetes.md @@ -18,9 +18,32 @@ Create a `values.yaml` file with the values you want to override from the [docum (For examples, see the comments in the default [values.yml](https://github.com/Stirling-Tools/Stirling-PDF-chart/blob/main/charts/stirling-pdf/values.yaml) file.) Then, add `-f values.yaml` to the `helm install` command. +### Persistent storage + +Stirling PDF keeps data - user accounts, `settings.yml`, the internal database, and other runtime state - under `/configs` (and related data paths). Without persistent storage this data is lost every time the pod restarts or is rescheduled. + +Provide a `PersistentVolumeClaim` so `/configs` and other data survive pod restarts. The official Helm chart exposes persistence options in its [`values.yaml`](https://github.com/Stirling-Tools/Stirling-PDF-chart/blob/main/charts/stirling-pdf/values.yaml) - refer to the persistence-related keys there to enable a PVC and choose a storage class and size. Always enable persistence for any deployment where you care about keeping logins, settings, or data. + +### Overriding configuration + +Configuration is controlled through the same environment variables and `settings.yml` options used in other deployments, set through the chart's `values.yaml`. + +Create a `values.yaml` file and add the environment variables you want under the chart's env section, then pass it to Helm with `-f values.yaml`. See the comments in the default [`values.yaml`](https://github.com/Stirling-Tools/Stirling-PDF-chart/blob/main/charts/stirling-pdf/values.yaml) for the exact structure. + +For example, to raise the log level for debugging you can set the standard Stirling PDF logging environment variable (such as `LOGGING_LEVEL_STIRLING=DEBUG`) as an env entry in your `values.yaml`, alongside any other environment variables like locale, security, or OAuth/SAML settings. + ### Upgrade the helm chart ```bash helm repo update helm upgrade stirling-pdf stirling-pdf/stirling-pdf-chart --namespace stirling-pdf --reuse-values ``` + +### Upgrading V1 to V2 + +Upgrading a V1 deployment to V2 is largely a matter of changing the image tag, but take these steps to carry your configuration and data across: + +1. **Back up `/configs` first.** Snapshot or copy the contents of your persistent volume (users, `settings.yml`, database) before making any changes so you can roll back if needed. +2. **Update the image tag** in your `values.yaml` to the V2 image, then run the upgrade command above. +3. **Keep your existing `PersistentVolumeClaim`s** so your config and data carry over to the new pods rather than starting fresh. +4. **Re-apply your SSO/OAuth env.** The same OAuth/SAML environment variables you use elsewhere still apply in V2 - keep them set in your `values.yaml` so single sign-on continues to work after the upgrade. diff --git a/docs/Installation/Uninstall.md b/docs/Installation/Uninstall.md new file mode 100644 index 00000000..4b8fcf6f --- /dev/null +++ b/docs/Installation/Uninstall.md @@ -0,0 +1,128 @@ +--- +sidebar_position: 8 +id: Uninstall +title: Uninstall Guide +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Uninstalling Stirling PDF + +How to remove Stirling PDF from your system. Choose the tab that matches how you installed it. + + + + +### Desktop application + +1. Open **Settings → Apps → Installed apps** (or **Control Panel → Programs → Uninstall a program**). +2. Find **Stirling PDF** in the list. +3. Click **Uninstall** and follow the prompts. + +### Installed via winget + +```powershell +winget uninstall StirlingTools.StirlingPDF +``` + +### Leftover config + +The uninstaller does not remove your settings. To delete them, remove: + +``` +%APPDATA%\Stirling-PDF +``` + + + + +### Desktop application + +1. Quit Stirling PDF if it's running. +2. Open **Finder → Applications**. +3. Drag **Stirling PDF** to the Trash, then empty the Trash. + +### Installed via Homebrew + +```bash +brew uninstall --cask stirling-pdf +``` + +### Leftover config + +Your settings are not removed automatically. To delete them: + +```bash +rm -rf ~/Library/Application\ Support/Stirling-PDF +``` + + + + +Use the command that matches how you installed the app. + +**Debian / Ubuntu (.deb):** + +```bash +sudo dpkg -r stirling-pdf +# or +sudo apt remove stirling-pdf +``` + +**Fedora / RHEL (.rpm):** + +```bash +sudo dnf remove stirling-pdf +``` + +**AppImage:** + +Just delete the `.AppImage` file - there's nothing else to uninstall. + +**AUR (Arch):** + +```bash +paru -R stirling-pdf +# or +yay -R stirling-pdf +``` + + + + +### Docker Compose + +From the directory containing your `docker-compose.yml`: + +```bash +docker compose down +``` + +To also remove the image and named volumes, add flags: + +```bash +docker compose down --rmi all -v +``` + +### docker run + +```bash +docker rm -f stirling-pdf +docker rmi stirlingtools/stirling-pdf +``` + +### Removing your data + +If you used a bind mount (e.g. `./stirling-data`), delete that directory to remove your data: + +```bash +rm -rf ./stirling-data +``` + +:::warning +Removing the `/configs` volume (or its bind-mounted directory) deletes your users and settings. Back it up first if you might want it later. +::: + + + diff --git a/docs/Installation/Unix.md b/docs/Installation/Unix.md index 2197e17c..1f7261e5 100644 --- a/docs/Installation/Unix.md +++ b/docs/Installation/Unix.md @@ -90,6 +90,30 @@ The desktop app works fully offline for local PDF tools like merging, splitting, To pre-configure and lock the app across managed Linux desktops - server URL, connection lock, and update behaviour - see [Managed Desktop Deployment](./Managed%20Deployment.md). +### Desktop app troubleshooting + +**Blank or empty window on launch** - On some Linux systems the desktop app opens to a blank/empty window because of a WebKit rendering issue. Launch it from a terminal with the following variable set: + +```bash +WEBKIT_DISABLE_DMABUF_RENDERER=1 stirling-pdf +``` + +If that alone does not help, also try disabling compositing: + +```bash +WEBKIT_DISABLE_DMABUF_RENDERER=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 stirling-pdf +``` + +To make the fix permanent, wrap the binary in a small launcher script that exports the variable and point your `.desktop` entry's `Exec` line at that wrapper: + +```bash +#!/bin/sh +export WEBKIT_DISABLE_DMABUF_RENDERER=1 +exec stirling-pdf "$@" +``` + +Save it (for example as `~/.local/bin/stirling-pdf-wrapper`), make it executable with `chmod +x`, and set `Exec=` in the app's `.desktop` file to point at the wrapper. + --- ## Server Version (For Hosting and Sharing) diff --git a/docs/Installation/Versions.md b/docs/Installation/Versions.md index 1b08ce04..df0f2669 100644 --- a/docs/Installation/Versions.md +++ b/docs/Installation/Versions.md @@ -36,6 +36,8 @@ Additional features become available automatically when you install: ## Feature Comparison +For the desktop app, the **Ultra-Lite** column below lists the tools that run locally and fully offline on the bundled backend. The **Full-only** tools (OCR, Office conversions, and other tools that depend on external binaries) require a connected server - either Stirling Cloud or your own self-hosted server. + Here are the different technologies each version uses: | Technology | Ultra-Lite | Full | diff --git a/docs/Installation/Windows.md b/docs/Installation/Windows.md index 19070097..f4bc4e00 100644 --- a/docs/Installation/Windows.md +++ b/docs/Installation/Windows.md @@ -119,6 +119,12 @@ When the mode is set by an administrator through a provisioning file (see [Manag For silent or headless installs and pre-configuring the app for managed fleets - server URL, connection lock, and update mode via MSI or `winget` parameters, or a provisioning file - see [Managed Desktop Deployment](./Managed%20Deployment.md). +### Desktop app troubleshooting + +- **App shows in Task Manager but no window appears** - The desktop app renders its UI using the Microsoft Edge WebView2 Runtime. If the process is running but nothing is displayed, install the [Microsoft Edge WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) and launch the app again. +- **The MSI installer prompts to install a JDK** - This is expected for the server/JAR path. The desktop app itself does not need a separate JDK, but the bundled server components use Java, so the prompt is normal. +- **Connecting to a self-hosted server** - Use your backend server URL (for example `http://192.168.1.53:8080`). To verify the server is reachable, open `http://:/api/v1/info/status` in a browser - it should return JSON with a status of `UP`. + ## Server Version (For Hosting and Sharing) Want to host Stirling PDF on a Windows server for multiple users? Use the server version. @@ -169,6 +175,7 @@ Python and its related tools enable various features in Stirling PDF: 1. Python Installation: - Download Python from [Python's official site](https://www.python.org/downloads/) + - **Recommended version:** install **Python 3.11.x**. Python 3.12 and newer can break the unoserver/unoconv LibreOffice conversion path, so 3.11 is the safe choice. - During installation, **IMPORTANT**: Check "Add Python to PATH" - Verify installation by opening Command Prompt and running: ```bash diff --git a/docs/Modes-and-Licensing.md b/docs/Modes-and-Licensing.md index 1d81f56f..beada3a0 100644 --- a/docs/Modes-and-Licensing.md +++ b/docs/Modes-and-Licensing.md @@ -54,7 +54,22 @@ Stirling PDF running in Docker, Kubernetes, or as a bare-metal JAR, accessed via ## Stirling.com Cloud -The hosted version at [stirling.com/app](https://stirling.com/app). All processing happens in Stirling's cloud, and every operation costs credits. Free accounts include a monthly allowance; paid plans include more credits. See [Paid Offerings](./Paid-Offerings.md) for current pricing. +The hosted version at [stirling.com/app](https://stirling.com/app). All processing happens in Stirling's cloud, and every operation costs credits. Free accounts include a monthly allowance; the cloud **Processor** plan is usage-based, billed per document. See [Paid Offerings](./Paid-Offerings.md) for current pricing. + +--- + +## Plan names: Server vs Processor + +The self-hosted and cloud product lines use separate plan names, which are easy to conflate: + +- **Server** is the **self-hosted**, flat-rate plan (unlimited users) that you run on your own infrastructure. +- **Processor** is the **cloud-hosted**, usage-based plan (billed per document) on Stirling.com Cloud. + +They are distinct offerings - a "Server" plan is not a "Processor" plan. + +> **"Professional" is not a current plan name.** It is a legacy internal term that maps to the **Server** tier. If you see a "Professional tier" referenced anywhere, treat it as the Server tier. + +For the full self-hosted plan breakdown (Free, Server, Enterprise) and license terms, see [Paid Offerings](./Paid-Offerings.md). --- @@ -65,4 +80,6 @@ The free tier covers up to 5 users. Once you have more than 5, you need a paid S - Official support (tickets, SLA, priority responses) - SSO, SAML, audit logging, and other paid-tier features +SSO is gated by tier: **OAuth2 / OIDC SSO** requires the **Server** tier (or higher), and **SAML SSO** requires the **Enterprise** tier. + See [Paid Offerings](./Paid-Offerings.md) for the full feature comparison or [contact us](https://www.stirling.com/book-a-demo) if you're not sure which plan fits. diff --git a/docs/Paid-Offerings.md b/docs/Paid-Offerings.md index e8d19695..cdccaf18 100644 --- a/docs/Paid-Offerings.md +++ b/docs/Paid-Offerings.md @@ -16,6 +16,23 @@ Stirling PDF offers Server and Enterprise paid plans. These provide the same gre > This page covers **self-hosted** Server and Enterprise licensing (a flat-rate or per-seat license key, no credits). Stirling Cloud is a separate, credit-based offering - see [Modes](./Modes-and-Licensing.md) for how the deployment modes compare. +## License and Commercial Use + +Stirling PDF's source is licensed under the [GNU AGPLv3](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LICENSE). You can self-host and use it commercially, but the AGPL's terms apply - notably, if you modify Stirling PDF and offer it to others over a network, you must make your modified source available under the same license. + +If you need commercial use without the AGPL obligations, or want the added features and support of the paid tiers, see the Server and Enterprise plans below. + +## Plan Names at a Glance + +There are two separate product lines, and it's easy to conflate their plan names: + +- **Self-hosted** (this page): **Free** (small teams, up to 5 users), **Server** (flat-rate, unlimited users), and **Enterprise** (adds SAML SSO, audit logging, SLA/support). +- **Cloud** ([Stirling Cloud](./Modes-and-Licensing.md)): the hosted **Processor** plan, which is usage-based (billed per document). + +**"Server" vs "Processor"**: Server is the self-hosted, flat-rate plan you run on your own infrastructure. Processor is the cloud-hosted, per-document plan. They are not the same thing. + +> **Note on "Professional":** "Professional" is **not** a current public plan name. It is a legacy internal term that maps to the **Server** tier. If you see a "Professional tier" referenced anywhere, treat it as the Server tier. + ## Available Plans ### Free Plan @@ -42,7 +59,7 @@ Stirling PDF offers Server and Enterprise paid plans. These provide the same gre - Support tickets via support@stirlingpdf.com - [External Database](./Configuration/External%20Database.md) support for optimized deployments and load-balancing - Google Drive integration - - [OAuth2 SSO](./Configuration/OAuth%20SSO%20Configuration.md) (Google, GitHub, Keycloak, any OIDC provider) + - [OAuth2 / OIDC SSO](./Configuration/OAuth%20SSO%20Configuration.md) (Google, GitHub, Keycloak, any OIDC provider) - **Perfect for**: Organizations with many users who want predictable, flat-rate pricing ### Enterprise Plan @@ -64,6 +81,13 @@ Stirling PDF offers Server and Enterprise paid plans. These provide the same gre - Dedicated account manager - **Perfect for**: Large enterprises requiring priority support, SLA guarantees, and per-seat licensing +### SSO Tier Requirements + +Single sign-on is gated by plan tier: + +- **OAuth2 / OIDC SSO** requires the **Server** tier (or higher). +- **SAML SSO** requires the **Enterprise** tier. + ## Purchasing a License ### In-App Purchase (Recommended) From e2724e98e8a9f9b12bec3556bb654cb560ea7d18 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 1 Jul 2026 09:56:53 +0100 Subject: [PATCH 2/5] Add Docker env example for HTTP 431 header-size fix --- docs/Configuration/Extra-Settings.md | 30 ++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/Configuration/Extra-Settings.md b/docs/Configuration/Extra-Settings.md index 5941979e..c3f1287a 100644 --- a/docs/Configuration/Extra-Settings.md +++ b/docs/Configuration/Extra-Settings.md @@ -49,13 +49,31 @@ server: ### HTTP 431 "Request Header Fields Too Large" during SSO/OAuth login -Some SSO/OAuth providers send very large request headers (for example, large cookies or JWTs), which can trigger an **HTTP 431 Request Header Fields Too Large** error during login. Increase Jetty's maximum request header size in `/configs/custom_settings.yml` to resolve it: +Some SSO/OAuth providers send very large request headers (for example, large cookies or JWTs), which can trigger an **HTTP 431 Request Header Fields Too Large** error during login. Stirling PDF's default limit is `32768` (32 KB); raise it to resolve the error. -```yaml -server: - jetty: - max-http-request-header-size: 65536 # Maximum size of request headers in bytes (default 8192) -``` + + + ```yaml + server: + jetty: + max-http-request-header-size: 65536 # bytes (Stirling default: 32768) + ``` + + + ```yaml + environment: + SERVER_JETTY_MAX_HTTP_REQUEST_HEADER_SIZE: "65536" + ``` + + + ```bash + docker run -d \ + -p 8080:8080 \ + -e SERVER_JETTY_MAX_HTTP_REQUEST_HEADER_SIZE=65536 \ + stirlingtools/stirling-pdf:latest + ``` + + Raise the value further (for example `131072`) if the error persists, then restart Stirling PDF. From 4ab27e9d2853e02768ca141ada3d068e0d192980 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 1 Jul 2026 10:02:31 +0100 Subject: [PATCH 3/5] Reword docs to present-tense: drop removed-feature, roadmap, and workaround notes --- docs/Configuration/Other Customisations.md | 5 ----- docs/Configuration/UI Customisation.md | 2 -- docs/FAQ.md | 4 ++-- docs/Functionality/Fill-Form.md | 4 ---- docs/Modes-and-Licensing.md | 2 +- docs/Paid-Offerings.md | 2 +- 6 files changed, 4 insertions(+), 15 deletions(-) diff --git a/docs/Configuration/Other Customisations.md b/docs/Configuration/Other Customisations.md index 01b5e5bb..8b5d4035 100644 --- a/docs/Configuration/Other Customisations.md +++ b/docs/Configuration/Other Customisations.md @@ -200,8 +200,3 @@ system: enableAnalytics: 'true' ``` In configs/settings.yml - -## Default Tool-Picker Mode (Per-User Only) -The default tool-picker layout (sidebar, fullscreen, or compact) is a **per-user preference stored in the browser**. Each user selects their own mode in the app, and it is remembered locally. - -There is currently **no way to set this globally for all users** via an environment variable or `settings.yml`. In particular, there is no working `SYSTEM_DEFAULTTOOLSELECTORMODE` setting - it does not exist and has no effect. diff --git a/docs/Configuration/UI Customisation.md b/docs/Configuration/UI Customisation.md index 168360b3..0b07d93a 100644 --- a/docs/Configuration/UI Customisation.md +++ b/docs/Configuration/UI Customisation.md @@ -13,8 +13,6 @@ Stirling PDF allows straightforward customization of the application name and ap This setting controls the application name: - `appNameNavbar` - Used as the browser tab title and as the issuer name shown in authenticator apps for two-factor (TOTP) login. Despite its name it is not shown in the navigation bar (which displays the logo), so do not leave it blank if you use TOTP. Empty falls back to "Stirling PDF". -> **Note:** The former `appName` (`UI_APPNAME`) and `homeDescription` (`UI_HOMEDESCRIPTION`) properties have been removed and no longer have any effect. Only `appNameNavbar` (`UI_APPNAMENAVBAR`) remains. - ## Show update notifications These settings (in Settings.yml) control system behavior and customization capabilities: - `showUpdate` - Controls whether update notifications are displayed diff --git a/docs/FAQ.md b/docs/FAQ.md index fa65cd01..b94d32f4 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -124,11 +124,11 @@ Bottom line: in local-only mode a server-side tool is either run locally or bloc ### Q13: Can I remove an existing watermark from a PDF? -There is no dedicated watermark-removal tool. Stirling PDF can **add** watermarks (Add Watermark) but cannot automatically strip existing ones. Depending on the watermark you can sometimes cover it with **Redact** (which draws over an area) or, for text-layer content, **Auto-Redact**. Image watermarks that are baked into the page usually cannot be cleanly removed. +There is no dedicated watermark-removal tool. Stirling PDF can **add** watermarks (Add Watermark) but cannot automatically strip existing ones. ### Q14: Can I create fillable form fields, or add fields to a PDF that isn't already a form? -The [Fill Form](./Functionality/Fill-Form.md) tool fills fields that **already exist** in the PDF. Creating or adding new form fields from scratch is not currently supported (create/modify form modes are planned). +The [Fill Form](./Functionality/Fill-Form.md) tool fills form fields that **already exist** in the PDF. ### Q15: Can I add multi-line text or line breaks with Add Text, Stamp, or Watermark? diff --git a/docs/Functionality/Fill-Form.md b/docs/Functionality/Fill-Form.md index 8c11e6bf..9ef2e164 100644 --- a/docs/Functionality/Fill-Form.md +++ b/docs/Functionality/Fill-Form.md @@ -15,10 +15,6 @@ Fill Form lets you complete a PDF's interactive form fields directly in the view Fill Form works with fields that are already in the PDF; it does not add new fields. If a form has no fillable fields, there is nothing to type into. -:::caution Fill Form only fills existing fields -Fill Form can **only** fill in form fields that already exist in the PDF. It does **not** create or add new fillable fields, and turning a plain (non-form) PDF into a fillable form from scratch is **not currently supported**. If your PDF has no form fields, there is nothing for Fill Form to populate. -::: - --- ## How to Use diff --git a/docs/Modes-and-Licensing.md b/docs/Modes-and-Licensing.md index beada3a0..2b206fdc 100644 --- a/docs/Modes-and-Licensing.md +++ b/docs/Modes-and-Licensing.md @@ -67,7 +67,7 @@ The self-hosted and cloud product lines use separate plan names, which are easy They are distinct offerings - a "Server" plan is not a "Processor" plan. -> **"Professional" is not a current plan name.** It is a legacy internal term that maps to the **Server** tier. If you see a "Professional tier" referenced anywhere, treat it as the Server tier. +> **"Professional" and "Server" are the same tier.** If you see a "Professional tier" referenced anywhere, it means the Server tier (or higher). For the full self-hosted plan breakdown (Free, Server, Enterprise) and license terms, see [Paid Offerings](./Paid-Offerings.md). diff --git a/docs/Paid-Offerings.md b/docs/Paid-Offerings.md index cdccaf18..b4778b1e 100644 --- a/docs/Paid-Offerings.md +++ b/docs/Paid-Offerings.md @@ -31,7 +31,7 @@ There are two separate product lines, and it's easy to conflate their plan names **"Server" vs "Processor"**: Server is the self-hosted, flat-rate plan you run on your own infrastructure. Processor is the cloud-hosted, per-document plan. They are not the same thing. -> **Note on "Professional":** "Professional" is **not** a current public plan name. It is a legacy internal term that maps to the **Server** tier. If you see a "Professional tier" referenced anywhere, treat it as the Server tier. +> **Note on "Professional":** "Professional" and "Server" refer to the same tier. If you see a "Professional tier" referenced anywhere, it means the Server tier (or higher). ## Available Plans From 563352bc3a58969257051a0b8fce80992c4b2780 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 1 Jul 2026 10:04:08 +0100 Subject: [PATCH 4/5] Simplify FAQ: drop form-fields Q and soften feature-support answer to a feature-request pointer --- docs/FAQ.md | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index b94d32f4..97798b95 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -126,31 +126,15 @@ Bottom line: in local-only mode a server-side tool is either run locally or bloc There is no dedicated watermark-removal tool. Stirling PDF can **add** watermarks (Add Watermark) but cannot automatically strip existing ones. -### Q14: Can I create fillable form fields, or add fields to a PDF that isn't already a form? - -The [Fill Form](./Functionality/Fill-Form.md) tool fills form fields that **already exist** in the PDF. - -### Q15: Can I add multi-line text or line breaks with Add Text, Stamp, or Watermark? +### Q14: Can I add multi-line text or line breaks with Add Text, Stamp, or Watermark? Yes. Put a literal `\n` in the text field to force a line break; each line is rendered separately. -### Q16: Why does my self-hosted instance make requests to js.stripe.com? +### Q15: Why does my self-hosted instance make requests to js.stripe.com? Stripe's script loads only for the in-app purchase / billing UI. No PDF or document data is sent to Stripe. Fully offline/air-gapped instances are unaffected in normal use - the request only matters if you open the billing/upgrade screen. -### Q17: Is [feature] supported? (native mobile app, Office add-in, and others) - -The following are **not** currently available: - -- A native Android/iOS app (use a mobile browser, or the Mobile Scanner) -- A Microsoft Word / Office add-in -- Converting `.p7m` signed-email files -- A measure/scale (distance measuring) tool -- Annotation deep-links (opening a link that jumps to a specific annotation from outside the app) -- PDF-to-video -- In-app translation of PDF text -- Template-based PDF generation (for example auto-generating invoices from data) -- A mixed admin-login-plus-anonymous-guests mode (the `enableLogin` setting is all-or-nothing) +### Q16: Is a specific feature supported? -If you'd like any of these, please open a [GitHub feature request](https://github.com/Stirling-Tools/Stirling-PDF/issues) with `[Feature Request]` in the title. +We are continuously improving Stirling PDF, and the exact feature you're looking for might not be available yet - for example, a native Android app or in-app PDF translation. You can raise a feature request for any and all features on our [GitHub issues page](https://github.com/Stirling-Tools/Stirling-PDF/issues) with `[Feature Request]` in the title. From e0a2aa8c23eeaadfbc64b2af14fbc8a2cd6624f0 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 1 Jul 2026 10:08:11 +0100 Subject: [PATCH 5/5] Revert pricing pages and remove uninstall, Coolify, K8s V1-V2, and desktop-troubleshooter docs --- docs/Installation/Docker Install.md | 11 --- docs/Installation/Kubernetes.md | 13 +-- docs/Installation/Uninstall.md | 128 ---------------------------- docs/Installation/Unix.md | 24 ------ docs/Installation/Windows.md | 1 - docs/Modes-and-Licensing.md | 19 +---- docs/Paid-Offerings.md | 26 +----- 7 files changed, 4 insertions(+), 218 deletions(-) delete mode 100644 docs/Installation/Uninstall.md diff --git a/docs/Installation/Docker Install.md b/docs/Installation/Docker Install.md index 93300f00..35cdcdd0 100644 --- a/docs/Installation/Docker Install.md +++ b/docs/Installation/Docker Install.md @@ -231,17 +231,6 @@ No official store entry, but the standard Docker Compose works fine in any compo - **Portainer**: Stacks → Add stack → paste the compose from the [Full Setup](#full-setup-with-all-features) section. - **CasaOS**: Use the "Install a customized app" flow with the Docker image `docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest`, port `8080`, and bind mounts for `/configs`, `/logs`, `/customFiles`, `/pipeline`, `/usr/share/tessdata`. - - - -Coolify deploys via standard Docker Compose - no special changes needed. - -1. **+ New → Resource → Docker Compose**. -2. Paste the same compose from the [Full Setup](#full-setup-with-all-features) section. -3. Deploy. - -Coolify handles the reverse proxy and TLS for you. - diff --git a/docs/Installation/Kubernetes.md b/docs/Installation/Kubernetes.md index 004e8444..e73dd066 100644 --- a/docs/Installation/Kubernetes.md +++ b/docs/Installation/Kubernetes.md @@ -20,9 +20,9 @@ Then, add `-f values.yaml` to the `helm install` command. ### Persistent storage -Stirling PDF keeps data - user accounts, `settings.yml`, the internal database, and other runtime state - under `/configs` (and related data paths). Without persistent storage this data is lost every time the pod restarts or is rescheduled. +Stirling PDF keeps runtime data - user accounts, `settings.yml`, the internal database, and other state - under `/configs` (and related data paths). You can run without a persistent volume by supplying configuration through environment variables in your `values.yaml`, and the app works fine that way. -Provide a `PersistentVolumeClaim` so `/configs` and other data survive pod restarts. The official Helm chart exposes persistence options in its [`values.yaml`](https://github.com/Stirling-Tools/Stirling-PDF-chart/blob/main/charts/stirling-pdf/values.yaml) - refer to the persistence-related keys there to enable a PVC and choose a storage class and size. Always enable persistence for any deployment where you care about keeping logins, settings, or data. +A `PersistentVolumeClaim` is still recommended for reliable operation: it preserves data such as logins and settings across pod restarts and avoids errors from state being lost when a pod is rescheduled. The official Helm chart exposes persistence options in its [`values.yaml`](https://github.com/Stirling-Tools/Stirling-PDF-chart/blob/main/charts/stirling-pdf/values.yaml) - refer to the persistence-related keys there to enable a PVC and choose a storage class and size. ### Overriding configuration @@ -38,12 +38,3 @@ For example, to raise the log level for debugging you can set the standard Stirl helm repo update helm upgrade stirling-pdf stirling-pdf/stirling-pdf-chart --namespace stirling-pdf --reuse-values ``` - -### Upgrading V1 to V2 - -Upgrading a V1 deployment to V2 is largely a matter of changing the image tag, but take these steps to carry your configuration and data across: - -1. **Back up `/configs` first.** Snapshot or copy the contents of your persistent volume (users, `settings.yml`, database) before making any changes so you can roll back if needed. -2. **Update the image tag** in your `values.yaml` to the V2 image, then run the upgrade command above. -3. **Keep your existing `PersistentVolumeClaim`s** so your config and data carry over to the new pods rather than starting fresh. -4. **Re-apply your SSO/OAuth env.** The same OAuth/SAML environment variables you use elsewhere still apply in V2 - keep them set in your `values.yaml` so single sign-on continues to work after the upgrade. diff --git a/docs/Installation/Uninstall.md b/docs/Installation/Uninstall.md deleted file mode 100644 index 4b8fcf6f..00000000 --- a/docs/Installation/Uninstall.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -sidebar_position: 8 -id: Uninstall -title: Uninstall Guide ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Uninstalling Stirling PDF - -How to remove Stirling PDF from your system. Choose the tab that matches how you installed it. - - - - -### Desktop application - -1. Open **Settings → Apps → Installed apps** (or **Control Panel → Programs → Uninstall a program**). -2. Find **Stirling PDF** in the list. -3. Click **Uninstall** and follow the prompts. - -### Installed via winget - -```powershell -winget uninstall StirlingTools.StirlingPDF -``` - -### Leftover config - -The uninstaller does not remove your settings. To delete them, remove: - -``` -%APPDATA%\Stirling-PDF -``` - - - - -### Desktop application - -1. Quit Stirling PDF if it's running. -2. Open **Finder → Applications**. -3. Drag **Stirling PDF** to the Trash, then empty the Trash. - -### Installed via Homebrew - -```bash -brew uninstall --cask stirling-pdf -``` - -### Leftover config - -Your settings are not removed automatically. To delete them: - -```bash -rm -rf ~/Library/Application\ Support/Stirling-PDF -``` - - - - -Use the command that matches how you installed the app. - -**Debian / Ubuntu (.deb):** - -```bash -sudo dpkg -r stirling-pdf -# or -sudo apt remove stirling-pdf -``` - -**Fedora / RHEL (.rpm):** - -```bash -sudo dnf remove stirling-pdf -``` - -**AppImage:** - -Just delete the `.AppImage` file - there's nothing else to uninstall. - -**AUR (Arch):** - -```bash -paru -R stirling-pdf -# or -yay -R stirling-pdf -``` - - - - -### Docker Compose - -From the directory containing your `docker-compose.yml`: - -```bash -docker compose down -``` - -To also remove the image and named volumes, add flags: - -```bash -docker compose down --rmi all -v -``` - -### docker run - -```bash -docker rm -f stirling-pdf -docker rmi stirlingtools/stirling-pdf -``` - -### Removing your data - -If you used a bind mount (e.g. `./stirling-data`), delete that directory to remove your data: - -```bash -rm -rf ./stirling-data -``` - -:::warning -Removing the `/configs` volume (or its bind-mounted directory) deletes your users and settings. Back it up first if you might want it later. -::: - - - diff --git a/docs/Installation/Unix.md b/docs/Installation/Unix.md index 1f7261e5..2197e17c 100644 --- a/docs/Installation/Unix.md +++ b/docs/Installation/Unix.md @@ -90,30 +90,6 @@ The desktop app works fully offline for local PDF tools like merging, splitting, To pre-configure and lock the app across managed Linux desktops - server URL, connection lock, and update behaviour - see [Managed Desktop Deployment](./Managed%20Deployment.md). -### Desktop app troubleshooting - -**Blank or empty window on launch** - On some Linux systems the desktop app opens to a blank/empty window because of a WebKit rendering issue. Launch it from a terminal with the following variable set: - -```bash -WEBKIT_DISABLE_DMABUF_RENDERER=1 stirling-pdf -``` - -If that alone does not help, also try disabling compositing: - -```bash -WEBKIT_DISABLE_DMABUF_RENDERER=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 stirling-pdf -``` - -To make the fix permanent, wrap the binary in a small launcher script that exports the variable and point your `.desktop` entry's `Exec` line at that wrapper: - -```bash -#!/bin/sh -export WEBKIT_DISABLE_DMABUF_RENDERER=1 -exec stirling-pdf "$@" -``` - -Save it (for example as `~/.local/bin/stirling-pdf-wrapper`), make it executable with `chmod +x`, and set `Exec=` in the app's `.desktop` file to point at the wrapper. - --- ## Server Version (For Hosting and Sharing) diff --git a/docs/Installation/Windows.md b/docs/Installation/Windows.md index f4bc4e00..ebd09d26 100644 --- a/docs/Installation/Windows.md +++ b/docs/Installation/Windows.md @@ -122,7 +122,6 @@ For silent or headless installs and pre-configuring the app for managed fleets - ### Desktop app troubleshooting - **App shows in Task Manager but no window appears** - The desktop app renders its UI using the Microsoft Edge WebView2 Runtime. If the process is running but nothing is displayed, install the [Microsoft Edge WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/) and launch the app again. -- **The MSI installer prompts to install a JDK** - This is expected for the server/JAR path. The desktop app itself does not need a separate JDK, but the bundled server components use Java, so the prompt is normal. - **Connecting to a self-hosted server** - Use your backend server URL (for example `http://192.168.1.53:8080`). To verify the server is reachable, open `http://:/api/v1/info/status` in a browser - it should return JSON with a status of `UP`. ## Server Version (For Hosting and Sharing) diff --git a/docs/Modes-and-Licensing.md b/docs/Modes-and-Licensing.md index 2b206fdc..1d81f56f 100644 --- a/docs/Modes-and-Licensing.md +++ b/docs/Modes-and-Licensing.md @@ -54,22 +54,7 @@ Stirling PDF running in Docker, Kubernetes, or as a bare-metal JAR, accessed via ## Stirling.com Cloud -The hosted version at [stirling.com/app](https://stirling.com/app). All processing happens in Stirling's cloud, and every operation costs credits. Free accounts include a monthly allowance; the cloud **Processor** plan is usage-based, billed per document. See [Paid Offerings](./Paid-Offerings.md) for current pricing. - ---- - -## Plan names: Server vs Processor - -The self-hosted and cloud product lines use separate plan names, which are easy to conflate: - -- **Server** is the **self-hosted**, flat-rate plan (unlimited users) that you run on your own infrastructure. -- **Processor** is the **cloud-hosted**, usage-based plan (billed per document) on Stirling.com Cloud. - -They are distinct offerings - a "Server" plan is not a "Processor" plan. - -> **"Professional" and "Server" are the same tier.** If you see a "Professional tier" referenced anywhere, it means the Server tier (or higher). - -For the full self-hosted plan breakdown (Free, Server, Enterprise) and license terms, see [Paid Offerings](./Paid-Offerings.md). +The hosted version at [stirling.com/app](https://stirling.com/app). All processing happens in Stirling's cloud, and every operation costs credits. Free accounts include a monthly allowance; paid plans include more credits. See [Paid Offerings](./Paid-Offerings.md) for current pricing. --- @@ -80,6 +65,4 @@ The free tier covers up to 5 users. Once you have more than 5, you need a paid S - Official support (tickets, SLA, priority responses) - SSO, SAML, audit logging, and other paid-tier features -SSO is gated by tier: **OAuth2 / OIDC SSO** requires the **Server** tier (or higher), and **SAML SSO** requires the **Enterprise** tier. - See [Paid Offerings](./Paid-Offerings.md) for the full feature comparison or [contact us](https://www.stirling.com/book-a-demo) if you're not sure which plan fits. diff --git a/docs/Paid-Offerings.md b/docs/Paid-Offerings.md index b4778b1e..e8d19695 100644 --- a/docs/Paid-Offerings.md +++ b/docs/Paid-Offerings.md @@ -16,23 +16,6 @@ Stirling PDF offers Server and Enterprise paid plans. These provide the same gre > This page covers **self-hosted** Server and Enterprise licensing (a flat-rate or per-seat license key, no credits). Stirling Cloud is a separate, credit-based offering - see [Modes](./Modes-and-Licensing.md) for how the deployment modes compare. -## License and Commercial Use - -Stirling PDF's source is licensed under the [GNU AGPLv3](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LICENSE). You can self-host and use it commercially, but the AGPL's terms apply - notably, if you modify Stirling PDF and offer it to others over a network, you must make your modified source available under the same license. - -If you need commercial use without the AGPL obligations, or want the added features and support of the paid tiers, see the Server and Enterprise plans below. - -## Plan Names at a Glance - -There are two separate product lines, and it's easy to conflate their plan names: - -- **Self-hosted** (this page): **Free** (small teams, up to 5 users), **Server** (flat-rate, unlimited users), and **Enterprise** (adds SAML SSO, audit logging, SLA/support). -- **Cloud** ([Stirling Cloud](./Modes-and-Licensing.md)): the hosted **Processor** plan, which is usage-based (billed per document). - -**"Server" vs "Processor"**: Server is the self-hosted, flat-rate plan you run on your own infrastructure. Processor is the cloud-hosted, per-document plan. They are not the same thing. - -> **Note on "Professional":** "Professional" and "Server" refer to the same tier. If you see a "Professional tier" referenced anywhere, it means the Server tier (or higher). - ## Available Plans ### Free Plan @@ -59,7 +42,7 @@ There are two separate product lines, and it's easy to conflate their plan names - Support tickets via support@stirlingpdf.com - [External Database](./Configuration/External%20Database.md) support for optimized deployments and load-balancing - Google Drive integration - - [OAuth2 / OIDC SSO](./Configuration/OAuth%20SSO%20Configuration.md) (Google, GitHub, Keycloak, any OIDC provider) + - [OAuth2 SSO](./Configuration/OAuth%20SSO%20Configuration.md) (Google, GitHub, Keycloak, any OIDC provider) - **Perfect for**: Organizations with many users who want predictable, flat-rate pricing ### Enterprise Plan @@ -81,13 +64,6 @@ There are two separate product lines, and it's easy to conflate their plan names - Dedicated account manager - **Perfect for**: Large enterprises requiring priority support, SLA guarantees, and per-seat licensing -### SSO Tier Requirements - -Single sign-on is gated by plan tier: - -- **OAuth2 / OIDC SSO** requires the **Server** tier (or higher). -- **SAML SSO** requires the **Enterprise** tier. - ## Purchasing a License ### In-App Purchase (Recommended)