Using Linux means we don’t have access to Adobe suite anymore, however there are lots of tools that replace Adobe fairly well. Few of the true FOSS options do everything that Adobe does, however a combination of several applications (such as LibreOffice Draw, PDF Arranger and Scribus) easily covers all of the features Adobe has. The non-FOSS options are numerous, but we can do better than those. For a one stop shop that’s self hosted on your own hardware, Stirling PDF offers a very robust and private way to do all the PDF things you need. Deployment of Stirling PDF with Docker is crazy easy, just install this on your own computer, or on a dedicated computer acting as your own home server.

This Stirling PDF deployment can be local only on your own network, or you can securely punch it out to the internet using your own custom domain, with a reverse proxy or something easy (less private) like Cloudflare. For maximum privacy, you could opt to use Tailscale or Pangolin to access your server remotely with complete privacy and confidence.

For installation on your own computer, Stirling PDF recommends using this method (Debian package install). Otherwise, for home server deployment, use the Docker method as outlined below.

Official Documentation for Docker Installation


Download below installation instructions here:  StirlingPDF-Self-Host-Installation


Full installation on any Debian based Linux server:

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null

sudo apt update
sudo apt install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \

  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \

  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \

  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo usermod -aG docker $USER

docker run hello-world  (may need to use sudo)
mkdir -p ~/stirling-pdf

cd ~/stirling-pdf

Create your Docker Compose yml file:

sudo nano docker-compose.yml

Paste the following then hit Ctl + O and Enter to save, Ctl + X to exit:

services:

  stirling-pdf:

    image: stirlingtools/stirling-pdf:latest-fat

    container_name: stirling-pdf

    ports:

      - "8080:8080"

    volumes:

      - ./trainingData:/usr/share/tessdata    # OCR language packs

      - ./extraConfigs:/configs               # Custom configs

      - ./logs:/logs                          # Application logs

      - ./customFiles:/customFiles            # Custom static files

      - ./pipeline:/pipeline                  # Pipeline configs

    environment:

      - DOCKER_ENABLE_SECURITY=false          # Set to true if you want login/auth

      - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false # Set to true for Calibre

      - LANGS=en_GB                           # UI language

    restart: unless-stopped

Create the folders, then bring the container up:

mkdir -p trainingData extraConfigs logs customFiles pipeline

docker compose up -d

That’s it! Stirling PDF should now be running on your host, visit a browser and enter:

http://localhost:8080

To check logs and status:

docker compose ps

docker compose logs -f

If you deploy this on something other than your computer, you will replace ‘localhost’ with your server’s IP address:

http:[your-server-IP]:8080

You should initially be greeted with this login screen:

Enter the default credentials:

Username:  admin

Password:  stirling

**Then change your password and username (especially if deploying online)

Example of editing a PDF book with Stirling PDF: