# Ghost node for article posting

**URL:** <https://community.n8n.io/t/ghost-node-for-article-posting/25221>\
**Category:** Questions\
**Tags:** data-transformation, ghost\
**Created:** [April 15, 2023, 7:43pm UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221 "2023-04-15T19:43:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![organicnz](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/organicnz/32/23977_2.png) [@organicnz](https://community.n8n.io/u/organicnz)\
**Post date:** [April 15, 2023, 7:43pm UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221/1 "2023-04-15T19:43:11Z")

</div>

## Describe the problem/error/question

Hi folks,

I’ve already set up the Ghost node to post articles, but I’m getting an error. Has anyone encountered this kind of behaviour? 🙂

## What is the error message (if any)?

```auto
OUTPUT Table JSON Schema 1 item

```

 ![image](https://europe1.discourse-cdn.com/n8n/original/3X/d/8/d8a68bb4141e6aa26bf507fc183e2d1df4711fd5.jpeg)

## Please share your workflow

## Share the output returned by the last node

## Information on your n8n setup

- **n8n version:** Docker image: n8nio/n8n:latest
- **Database (default: SQLite):** not using via docker-compose
- **n8n EXECUTIONS\_PROCESS setting (default: own, main):** main
- **Running n8n via (Docker, npm, n8n cloud, desktop app):** Docker
- **Operating system:** Ubuntu 22.04

---

<div class="post-metadata">

**Author:** ![MutedJam](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/mutedjam/32/70851_2.png) [@MutedJam](https://community.n8n.io/u/MutedJam)\
**Post date:** [April 19, 2023, 9:53am UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221/2 "2023-04-19T09:53:38Z")

</div>

Hi @organicnz, I can’t see an error on your screenshot, although the empty response does look very much unexpected to me.

Are you simply not seeing a response? Or is the post also missing in Ghost? If so, are you seeing the same behaviour when using hard-coded text values in the node instead of expression referencing incoming data?

Edit: From testing this locally, I am seeing the expected response in n8n:

 ![image](https://europe1.discourse-cdn.com/n8n/original/3X/1/b/1bc019951ac098d607310ca60e2e2454c8b7779d.png)

> **This was my docker compose setup:**
>
> ```yaml
> services:
> postgres:
> image: postgres:11
> restart: unless-stopped
> environment:
> - POSTGRES_USER=n8n
> - POSTGRES_PASSWORD=n8n
> - POSTGRES_DB=n8n
> volumes:
> - ./db_data:/var/lib/postgresql/data
> ports:
> - 5432:5432
> healthcheck:
> test: ['CMD-SHELL', 'pg_isready -h localhost -U n8n -d n8n']
> interval: 5s
> timeout: 5s
> retries: 10
> n8n:
> image: n8nio/n8n:0.224.1
> restart: unless-stopped
> environment:
> - DB_TYPE=postgresdb
> - DB_POSTGRESDB_DATABASE=n8n
> - DB_POSTGRESDB_USER=n8n
> - DB_POSTGRESDB_PASSWORD=n8n
> - DB_POSTGRESDB_HOST=postgres
> volumes:
> - ./data:/home/node/.n8n
> ports:
> - 5678:5678
> depends_on:
> postgres:
> condition: service_healthy
> ghost:
> image: ghost:latest
> environment:
> NODE_ENV: development
> database __connection__ filename: '/var/lib/ghost/content/data/ghost.db'
> ports:
> - 2368:2368
> volumes:
> - ./ghost:/var/lib/ghost/content
> restart: unless-stopped
> 
> ```

Workflow:

Perhaps you can also share the JSON dataset your IF node is passing on to your Ghost node?

---

<div class="post-metadata">

**Author:** ![organicnz](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/organicnz/32/23977_2.png) [@organicnz](https://community.n8n.io/u/organicnz)\
**Post date:** [April 19, 2023, 1:47pm UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221/3 "2023-04-19T13:47:08Z")

</div>

Hey hey, @MutedJam. Thank you very much for your reply 😀  
Apologies, I didn’t describe so many details. Yeah, I saw the missed messages and I also tried hard-coded text but encountered the same result, unfortunately. So, I’m currently trying to switch from CloudFlare Zero Trust to Caddy for Ghost as well as I’ve already done the same thing with n8n. I’ll keep you posted. Hope this helps, hehe 😅

---

<div class="post-metadata">

**Author:** ![organicnz](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/organicnz/32/23977_2.png) [@organicnz](https://community.n8n.io/u/organicnz)\
**Post date:** [April 19, 2023, 10:14pm UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221/4 "2023-04-19T22:14:40Z")

</div>

Hey @MutedJam. My suspicions were justified, it was a Cloudflare Zero Trust tunnel. So I’ve just switched to the same Caddy container I’ve been using for n8n and proxied from my external droplet IP to CloudFlare without setting up the tunnel. It’s working pretty well so far. The n8n doesn’t really seem to like CF Zero Trust lol. Maybe someone can figure it out or has already successfully configured it with ZT. It would be nice to know how to do it 😅

Thanks so much for your help 😊

`cat ./n8n/docker-compose.yml`

```auto
version: "3.7"

services:
  caddy:
    image: caddy:latest
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ${DATA_FOLDER}/caddy_data:/data
      - ${DATA_FOLDER}/caddy_config:/config
      - ${DATA_FOLDER}/caddy_config/Caddyfile:/etc/caddy/Caddyfile
    networks:
     - no-zero-trust-cloudflared
     - web

  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER
      - N8N_BASIC_AUTH_PASSWORD
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_EMAIL_MODE=${N8N_EMAIL_MODE}
      - N8N_SMTP_HOST=${N8N_SMTP_HOST}
      - N8N_SMTP_PORT=${N8N_SMTP_PORT}
      - N8N_SMTP_USER=${N8N_SMTP_USER}
      - N8N_SMTP_PASS=${N8N_SMTP_PASS}
      - N8N_SMTP_SENDER=${N8N_SMTP_SENDER}
      - N8N_SMTP_SSL=${N8N_SMTP_SSL}
        #- PUID='1001'
        #- PGID='1001'
        #user: "${UID:-1000}:${GID:-1000}"
      - NODE_FUNCTION_ALLOW_EXTERNAL=uuid
    volumes:
      - ${DATA_FOLDER}/local_files:/files
      - ${DATA_FOLDER}/.n8n:/home/node/.n8n
    mem_limit: "1g"
    mem_reservation: "1g"
    cpus: 1
    cpuset: "0"
    networks:
     - no-zero-trust-cloudflared

networks:
  web:
    external: true
    name: web
  no-zero-trust-cloudflared:
    external: false
    driver: bridge
    name: no-zero-trust-cloudflared

volumes:
  caddy_data:
    external: true
  caddy_config:

```

`cat ./n8n/caddy_config/Caddyfile`

```auto
{
    # Global options block. Entirely optional, https is on by default
    # Optional email key for lets encrypt
    email tamerlanium@gmail.com
    # Optional staging lets encrypt for testing. Comment out for production.
    # acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}

n8n.foodshare.club {
    encode zstd gzip
    reverse_proxy n8n-docker-caddy-n8n-1:5678 {
      flush_interval -1
    }
    header {
        # enable HSTS
        Strict-Transport-Security max-age=31536000;
        # disable clients from sniffing the media type
        X-Content-Type-Options nosniff
        # clickjacking protection
        X-Frame-Options DENY
        # keep referrer data off of HTTP connections
        Referrer-Policy no-referrer-when-downgrade
        # Content-Security-Policy: default-src 'self'
    }
}

www.n8n.foodshare.club {
    redir https://n8n.foodshare.club{uri}
}

blog.foodshare.club {
    encode zstd gzip
    reverse_proxy ghost:2368
    header {
        # enable HSTS
        Strict-Transport-Security max-age=31536000;
        # disable clients from sniffing the media type
        X-Content-Type-Options nosniff
        # clickjacking protection
        X-Frame-Options DENY
        # keep referrer data off of HTTP connections
        Referrer-Policy no-referrer-when-downgrade
        # Content-Security-Policy: default-src 'self'
    }
}

www.blog.foodshare.club {
    redir https://blog.foodshare.club{uri}
}

```

`cat ./ghost/docker-compose.yml`

```auto
version: '3.7'

services:
  ghost:
    image: ghost:latest
    container_name: ghost # change as necessary
    ports:
      - '2368:2368'
    volumes:
      - ./ghost-data:/var/lib/ghost/content
      - /etc/localtime:/etc/localtime:ro
    networks:
      - no-zero-trust-cloudflared
        # - docker-network
    restart: unless-stopped
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database __connection__ host: db
      database __connection__ user: user
      database __connection__ password: password
      database __connection__ database: password
      url: https://blog.foodshare.club
      NODE_ENV: production
      mail__transport: "${MAIL_TRANSPORT}"
      mail __options__ host: "${MAIL_HOST}"
      mail __options__ port: "${MAIL_PORT}"
      mail __options__ secureConnection: "${MAIL_SECURE_CONNECTION}"
      mail __options__ auth__user: "${MAIL_USER}"
      mail __options__ auth__pass: "${MAIL_PASSWORD}"
    links:
      - database

  database:
    image: mysql:latest
    restart: unless-stopped
    volumes:
      - ./ghost-db:/var/lib/mysql
    ports:
      - "13928:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    cap_add:
      - SYS_NICE
    networks:
      # - docker-network
      - no-zero-trust-cloudflared

networks:
  web:
    external: true
    name: web
  no-zero-trust-cloudflared:
    external: false
    driver: bridge
    name: no-zero-trust-cloudflared

volumes:
  ghost-data:
  ghost-db:

```

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/system/32/195824_2.png) [@system](https://community.n8n.io/u/system)\
**Post date:** [April 26, 2023, 10:15pm UTC](https://community.n8n.io/t/ghost-node-for-article-posting/25221/5 "2023-04-26T22:15:22Z")

</div>

Closed on April 26, 2023, 10:15pm UTC

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
