컴퓨터

[n8n] selfhosting Puppeteer 설정

Hikasiru 2024. 12. 15. 17:34

Self-hosting 시 Puppeteer 를 실행하면 에러 발생

 

설치 환경

Digital Ocean 위에 공식 설치 가이드 문서를 따라 설치

 

youtube-transcript 나 웹 스크래핑을 위해 puppeteer 를 설치

 

막상 실행하면 아래와 같은 에러 발생 

 

기존 컨테이너 제거

sudo docker compose down

# docker-compose.yml 수정
vi docker-compose.yml

 

version: "3.7"

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

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - 5678:5678
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ## 이부분 추가
    volumes:
      - n8n_data:/home/node/.n8n
      - ${DATA_FOLDER}/local_files:/files

volumes:
  caddy_data:
    external: true
  n8n_data:
    external: true

 

수정된 파일로 컨테이너 생성

sudo docker compose up -d

# 잘 생성되었나 확인
sudo docker ps

# docker.n8n.io/n8nio/n8n의 CONTAINER ID확인
# root로 컨테이너에 접속
sudo docker exec -it --user root [CONTAINER ID] sh

# package 설치
apk update
apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont nodejs yarn 
yarn add puppeteer@13.5.0

addgroup -S pptruser && adduser -S -G pptruser pptruser
mkdir -p /home/pptruser/Downloads /app
chown -R pptruser:pptruser /home/pptruser /app

 

 

이제 youtube Transcript는 잘 작동함

 

Puppeteer는 추가 설정 필요

 

Options에 Launch Arguments로 아래 5개 추가

--ignore-certificate-errors
--no-sandbox
--disable-setuid-sandbox
--disable-accelerated-2d-canvas
--disable-gpu #위 캡쳐는 오타 (Dash 하나 빠짐)

 

 

 

내용 추가

기존 컨테이너 제거

chromium 관련 Memory leak 이 있어보임. 프로세스가 완전하게 종료되지 않는 상황이 있어 확인이 필요함.