Ghost node for article posting

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? :slight_smile:

What is the error message (if any)?

OUTPUT Table JSON Schema 1 item

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

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:

This was my docker compose setup:
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?

1 Like

Hey hey, @MutedJam. Thank you very much for your reply :grinning:
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 :sweat_smile:

1 Like

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 :sweat_smile:

Thanks so much for your help :blush:

cat ./n8n/docker-compose.yml

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

{
    # Global options block. Entirely optional, https is on by default
    # Optional email key for lets encrypt
    email [email protected]
    # 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

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:
1 Like

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