Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/Configuration/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Stirling PDF determines the interface language using this priority order:

To force a specific default language regardless of browser settings, users must manually select it via the language globe icon.

> 💡 **Tip**: Set `SYSTEM_DEFAULTLOCALE` to your organization's primary language. Users can always override it using the language selector in the top-right corner.
> **Tip**: Set `SYSTEM_DEFAULTLOCALE` to your organization's primary language. Users can always override it using the language selector in the top-right corner.

### File Upload Limits

Expand Down
81 changes: 0 additions & 81 deletions docs/Configuration/System and Security.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,65 +136,6 @@ java -jar Stirling-PDF.jar

---

## Split Deployment Configuration

Stirling PDF supports separating frontend and backend for better scalability and deployment flexibility.

### Deployment Modes

Configure deployment mode via the `MODE` environment variable:

| Mode | Description | Use Case |
|------|-------------|----------|
| `BOTH` | Frontend + Backend (default) | Single container deployment |
| `BACKEND` | Backend only | API service, split deployment |
| `FRONTEND` | Frontend only | Static frontend serving |

### Frontend URL Configuration

When using split deployment or load balancers, configure the frontend URL for generating links:

```yaml
system:
frontendUrl: 'https://pdf.example.com'
```

**Environment Variable:**
```bash
SYSTEM_FRONTENDURL=https://pdf.example.com
```

**Use Cases:**
- Email invite links point to correct frontend
- Download links reference proper URL
- API responses include frontend URLs

### CORS Configuration

When frontend and backend are on different domains, enable CORS:

```yaml
system:
corsAllowedOrigins:
- 'https://pdf.example.com'
- 'https://pdf-staging.example.com'
```

**Environment Variable:**
```bash
SYSTEM_CORSALLOWEDORIGINS=https://pdf.example.com,https://pdf-staging.example.com
```

**Security Best Practices:**
- Only specify trusted origins
- Never use wildcard (`*`) in production
- Always use HTTPS in production
- Keep list minimal

**Learn more:** [Security - CORS Configuration](../Functionality/Security#cors-configuration)

---

## Server Certificates

Stirling PDF can auto-generate certificates for the "Sign with Stirling PDF" feature.
Expand Down Expand Up @@ -473,8 +414,6 @@ customFiles/
system:
defaultLocale: 'en-US' # Set the default language (e.g. 'de-DE', 'fr-FR', etc)
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
corsAllowedOrigins: [] # Add frontend URLs for split deployment
frontendUrl: '' # Set for split deployment
serverCertificate:
enabled: true
organizationName: Stirling-PDF
Expand Down Expand Up @@ -516,30 +455,10 @@ customFiles/
environment:
DISABLE_ADDITIONAL_FEATURES: false
SECURITY_ENABLELOGIN: true
SYSTEM_CORSALLOWEDORIGINS: https://pdf.example.com
SYSTEM_FRONTENDURL: https://pdf.example.com
SECURITY_JWT_PERSISTENCE: true
SYSTEM_SERVERCERTIFICATE_ENABLED: true
```
</TabItem>
<TabItem value="split-deployment" label="Split Deployment">
**Backend Container:**
```yaml
environment:
MODE: BACKEND
DISABLE_ADDITIONAL_FEATURES: false
SECURITY_ENABLELOGIN: true
SYSTEM_CORSALLOWEDORIGINS: https://pdf.example.com
SYSTEM_FRONTENDURL: https://pdf.example.com
```

**Frontend Container:**
```yaml
environment:
MODE: FRONTEND
VITE_API_BASE_URL: http://backend:8080
```
</TabItem>
</Tabs>

---
Expand Down
2 changes: 1 addition & 1 deletion docs/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,5 +108,5 @@ To disable authentication in the with-login version:
</TabItem>
</Tabs>

For more details, see the [System and Security Configuration](./Configuration/System%20and%20Security.md#disabling-login) documentation.
For more details, see the [System and Security Configuration](./Configuration/System%20and%20Security.md#running-without-authentication) documentation.

4 changes: 2 additions & 2 deletions docs/Functionality/Mobile-Scanner.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: Scan documents from your mobile phone and upload them directly to y

The Mobile Scanner lets you scan documents using your phone camera and upload them directly to your Stirling PDF instance. Generate a QR code on your desktop, scan it with your phone, and your photos are transferred automatically - no cables, no cloud services, no manual file handling.

Depending on your [server settings](/Configuration/Mobile-Scanner), uploaded images can be automatically converted to PDF with configurable page format, resolution, and scaling options.
Depending on your [server settings](../Configuration/Mobile-Scanner.md), uploaded images can be automatically converted to PDF with configurable page format, resolution, and scaling options.

## How It Works

Expand All @@ -28,4 +28,4 @@ Depending on your [server settings](/Configuration/Mobile-Scanner), uploaded ima

## Configuration

See [Mobile Scanner Configuration](/Configuration/Mobile-Scanner) for enable/disable and PDF conversion settings.
See [Mobile Scanner Configuration](../Configuration/Mobile-Scanner.md) for enable/disable and PDF conversion settings.
2 changes: 1 addition & 1 deletion docs/Functionality/Multi-Tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description: Visual page editor for PDF manipulation

Multi-Tool is Stirling PDF's visual page editor. Upload PDFs and manipulate pages directly - rotate, reorder, delete, split, and insert pages or files.

:::tip V2.0 Feature
:::tip
Multi-Tool uses browser file storage so you can upload files once and work with them without re-uploading.
:::

Expand Down
2 changes: 1 addition & 1 deletion docs/Functionality/Read-and-Annotate.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description: Interactive PDF viewer with annotation tools for reading and markup

Interactive PDF viewer and annotation system. Read PDFs directly in your browser while adding comments, highlights, drawings, shapes, and other markup.

:::tip V2.0 Feature
:::tip
Built with **[EmbedPDF](https://www.embedpdf.com/)**, an advanced open-source PDF viewer with full support for PDF annotation standards.
:::

Expand Down
4 changes: 2 additions & 2 deletions docs/Functionality/Security/Certificate-Signing.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,6 @@ Ensure `SYSTEM_SERVERCERTIFICATE_ENABLED=true` is set. Check logs with `docker l

## Related

- [System and Security Settings](../../Configuration/System%20and%20Security#signature-validation)
- [System and Security Settings](../../Configuration/System%20and%20Security.md#signature-validation)
- [Sign (Handwritten)](./Sign.md)
- [Settings Changes (V2)](../../Migration/Settings-Changes#pdf-signature-validation)
- [Settings Changes](../../Migration/Settings-Changes.md#pdf-signature-validation)
2 changes: 1 addition & 1 deletion docs/Migration/Breaking-Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ WARN: Unknown configuration key: premium.proFeatures.googleDrive

**Symptom:** Custom navbar/homepage not appearing.

**Solution:** Template system removed. Use in-app settings or custom CSS instead. See [Template Customization](#-template-customization-system-removed).
**Solution:** Template system removed. Use in-app settings or custom CSS instead.

---

Expand Down
67 changes: 0 additions & 67 deletions docs/Migration/New-Features.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,72 +134,6 @@ After installation:

---

## 🔀 Split Deployment Architecture

**NEW:** Deploy frontend and backend separately for better scalability.

### What's New

Three deployment modes:

#### 1. Unified Mode (Default)
Single container with frontend + backend together.

```bash
docker run -d \
-p 8080:8080 \
stirlingtools/stirling-pdf:latest
```

#### 2. Split Mode
Frontend and backend in separate containers.

**Backend:**
```bash
docker run -d \
-e MODE=BACKEND \
-p 8081:8080 \
stirlingtools/stirling-pdf:latest
```

**Frontend:**
```bash
docker run -d \
-e MODE=FRONTEND \
-e VITE_API_BASE_URL=http://backend:8080 \
-p 8080:8080 \
stirlingtools/stirling-pdf:latest
```

#### 3. Backend-Only Mode
Use as API-only service.

```bash
docker run -d \
-e MODE=BACKEND \
-p 8080:8080 \
stirlingtools/stirling-pdf:latest
```

### Benefits

- **Independent Scaling:** Scale frontend and backend separately
- **CDN Integration:** Serve static frontend from CDN
- **Development:** Work on frontend without running backend
- **Security:** Separate concerns, different security zones

### CORS Configuration

New settings for split deployment:

```yaml
system:
corsAllowedOrigins: ['https://pdf.example.com']
frontendUrl: 'https://pdf.example.com'
```

**Learn More:** [Docker Installation - Split Mode](../Installation/Docker%20Install#split-deployment-advanced-users)

---

## ⌨️ Custom Keyboard Shortcuts
Expand Down Expand Up @@ -692,7 +626,6 @@ ui:
- ✉️ **Email Invitations** - Streamlined user onboarding
- ⌨️ **Custom Keyboard Shortcuts** - Quick tool access
- 🔄 **Enhanced Session Management** - Better token management with rotation
- 🏗️ **Split Deployment** - Scale frontend and backend independently

---

Expand Down
33 changes: 0 additions & 33 deletions docs/Migration/Settings-Changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,33 +66,6 @@ system:

---

### Split Deployment Support

**New settings added:**

```yaml
system:
corsAllowedOrigins: [] # NEW in V2
frontendUrl: '' # NEW in V2
```

**What it does:**
- `corsAllowedOrigins`: Allow frontend from different origin
- `frontendUrl`: Base URL for generating invite links

**Migration:** Leave empty for unified deployment (default).

**Example split deployment:**
```yaml
system:
corsAllowedOrigins: ['https://pdf.example.com']
frontendUrl: 'https://pdf.example.com'
```

**Learn more:** [Docker Installation - Split Mode](../Installation/Docker%20Install#split-deployment-advanced-users)

---

### Enhanced JWT Configuration

**Changed settings:**
Expand Down Expand Up @@ -265,8 +238,6 @@ Use this checklist when upgrading your `settings.yml`:
- [ ] **Add `ui.logoStyle: classic`** if you want to explicitly set logo
- [ ] **Configure `security.validation`** if you need custom signature validation
- [ ] **Set `system.serverCertificate`** options if needed
- [ ] **Add `system.corsAllowedOrigins`** if using split deployment
- [ ] **Set `system.frontendUrl`** if using split deployment
- [ ] **Enable `mail.enableInvites`** if you want email invitations

---
Expand All @@ -289,10 +260,6 @@ SYSTEM_SERVERCERTIFICATE_ENABLED=true
SYSTEM_SERVERCERTIFICATE_ORGANIZATIONNAME="My Company"
SYSTEM_SERVERCERTIFICATE_VALIDITY=365

# Split deployment
SYSTEM_CORSALLOWEDORIGINS=https://pdf.example.com
SYSTEM_FRONTENDURL=https://pdf.example.com

# JWT
SECURITY_JWT_PERSISTENCE=true
SECURITY_JWT_ENABLEKEYROTATION=true
Expand Down
13 changes: 1 addition & 12 deletions docs/Server-Admin-Onboarding.md
Original file line number Diff line number Diff line change
Expand Up @@ -879,14 +879,6 @@ System Settings:
CORS Allowed Origins: https://pdf.yourcompany.com
```

**Environment variable (if using split deployment):**
```yaml
environment:
- VITE_API_BASE_URL=https://pdf.yourcompany.com
- SYSTEM_ROOTURIPATH=/
- SECURITY_CSRFDISABLED=false
```

---

## Step 6: User Management
Expand Down Expand Up @@ -1390,7 +1382,6 @@ system:
```

**Consider:**
- Split deployment (separate frontend/backend)
- Load balancer for multiple instances
- Database on separate server

Expand Down Expand Up @@ -1424,12 +1415,10 @@ system:
```

**Architecture:**
- Split deployment (separate frontend/backend)
- Multiple backend instances for processing
- Multiple instances for processing
- Load balancer with session affinity
- Dedicated database server
- Redis for session storage
- CDN for frontend assets

:::tip Server/Enterprise Recommended
For large organizations, **Server or Enterprise plans** provide:
Expand Down
Loading