termux에서 n8n과 cloudflare tunnel을 pm2로 저장하고 활용하기

 

Termux 환경에서 PM2를 사용하여 n8n과 **Cloudflare Tunnel (cloudflared)**을 동시에 구동 및 관리하고, 기기 재부팅 시에도 termux-boot를 통해 두 서비스가 자동으로 복구되도록 세팅하는 방법에 대해서 설명합니다.

Termux는 일반적인 리눅스 배포판과 달리 systemd를 지원하지 않기 때문에, pm2 startup 명령어가 작동하지 않습니다. 따라서 Termux의 공식 자동 실행 애드온인 termux-boot를 PM2의 resurrect 기능과 결합하는 것이 핵심입니다.


1. 사전 준비 및 필수 패키지 설치

Termux 및 백그라운드 구동에 필요한 기본 도구를 먼저 설치하고 세팅합니다.

1-1. 백그라운드 최적화 (가장 중요)

기기가 슬립 상태에 빠지거나 안드로이드 OS가 프로세스를 죽이는 것을 방지합니다.

# Termux CPU 사용 유지
termux-wake-lock

# (참고) 이전 답변에서 언급한 ADB를 통한 Phantom Process Killer 비활성화가 선행되어 있어야 합니다.

1-2. 필수 패키지 설치

PM2, n8n, 그리고 Cloudflare Tunnel을 사용할 수 있는 cloudflared를 설치합니다.

# PM2 및 n8n 전역 설치 (Node.js 환경)
npm install -g pm2 n8n

# cloudflared 설치
pkg install cloudflared

2. PM2로 n8n 및 Cloudflare Tunnel 실행 및 저장

두 개의 프로세스를 각각 PM2에 등록하여 관리합니다.

2-1. n8n 실행

먼저 n8n을 PM2로 실행합니다.

pm2 start n8n --name "n8n_server"

2-2. Cloudflare Tunnel 실행

Cloudflared를 통해 n8n의 기본 포트(5678)를 외부로 노출시키는 터널을 생성합니다.

# n8n 포트(5678)로 터널링하는 명령어를 PM2로 실행
pm2 start "cloudflared tunnel --url http://localhost:5678" --name "cloudflare_tunnel"

(참고: 만약 Cloudflare Zero Trust 대시보드에서 고정 도메인으로 터널(Token)을 생성해 두셨다면, pm2 start "cloudflared tunnel run <당신의_토큰>" --name "cloudflare_tunnel" 형식으로 실행하시면 됩니다.)

2-3. 상태 확인 및 저장

두 프로세스가 정상적으로 구동 중인지 확인한 뒤, 이 상태를 PM2에 영구 저장합니다.

# 상태 확인 (n8n_server와 cloudflare_tunnel 두 개가 'online'인지 확인)
pm2 status

# 로그 확인 (선택 사항 - 터널 주소를 확인하려면 아래 명령어 사용)
pm2 logs cloudflare_tunnel --lines 20

# 현재 PM2에 띄워진 프로세스 목록을 저장 (재부팅 시 복구용)
pm2 save

3. termux-boot를 활용한 재부팅 시 자동 실행 설정

스마트폰이 재부팅되더라도 Termux가 백그라운드에서 켜지고, PM2가 앞서 저장한 프로세스들을 다시 살려내도록(resurrect) 설정합니다.

3-1. Termux:Boot 앱 설치

  • F-Droid 또는 Google Play에서 Termux:Boot 앱을 설치합니다.
  • 설치 후 Termux:Boot 앱을 한 번 실행하여 백그라운드 실행 권한을 부여해 주어야 합니다.
  • 스마트폰의 배터리 설정에서 Termux와 Termux:Boot 앱 모두 '배터리 최적화 예외(제한 없음)' 처리 대상인지 확인합니다.

3-2. 부트 스크립트 작성

Termux 터미널로 돌아와서 부팅 시 실행될 쉘 스크립트를 작성합니다.

# termux-boot 디렉토리 생성
mkdir -p ~/.termux/boot/

# 자동 실행 스크립트 파일 생성 및 편집 (nano 에디터 사용)
nano ~/.termux/boot/start_pm2.sh

에디터 창이 열리면 아래의 내용을 그대로 복사하여 붙여넣습니다.

#!/data/data/com.termux/files/usr/bin/bash

# 1. Termux가 백그라운드에서 슬립되지 않도록 Wake Lock 활성화
termux-wake-lock

# 2. PM2 환경 변수 및 명령어 경로 명시 후 resurrect(복구) 실행
# (Cron이나 Boot 환경에서는 환경변수가 유실될 수 있으므로 절대 경로를 권장합니다)
/data/data/com.termux/files/usr/bin/node /data/data/com.termux/files/usr/bin/pm2 resurrect

(작성 후 Ctrl + OEnter로 저장하고 Ctrl + X로 빠져나옵니다.)

3-3. 스크립트 실행 권한 부여

작성한 스크립트가 실행될 수 있도록 권한을 줍니다.

chmod +x ~/.termux/boot/start_pm2.sh

운영 요약 및 검증 가이드

위 설정은 다음과 같이 동작합니다.

  1. 재부팅 시나리오: 스마트폰이 재부팅되면 안드로이드가 Termux:Boot를 호출합니다.
  2. 스크립트 실행: start_pm2.sh가 백그라운드에서 실행되면서 termux-wake-lock이 켜지고, PM2가 resurrect 명령을 받습니다.
  3. 프로세스 복구: PM2가 pm2 save로 저장해 두었던 n8n_server와 cloudflare_tunnel을 자동으로 다시 실행합니다.

사용 방법:
설정을 마친 후 스마트폰을 재부팅해 보세요. 재부팅 완료 후 약 1~2분 뒤에 PC 브라우저에서 Cloudflare 터널 주소(또는 로컬 IP 주소의 5678 포트)로 접속했을 때 n8n 화면이 정상적으로 뜬다면 완벽하게 구축된 것입니다. 향후 프로세스 관리는 Termux를 열고 pm2 status와 pm2 logs 명령어만으로 손쉽게 하실 수 있습니다.



출처

pm2 and termux-boot · Issue #621 - GitHub
 https://github.com/termux/termux-app/issues/621
How to auto-resurrect pm2 after system restart
https://stackoverflow.com/questions/57969584/how-to-auto-resurrect-pm2-after-system-restart
Rodando o n8n no Celular ANDROID com Termux (noroot) https://www.youtube.com/watch?v=iwj2EDlCqfs
使用pm2管理n8n的cloudfire链接原创 - CSDN博客 https://blog.csdn.net/ZHY0091/article/details/155171652
How to Set Up a Cloudflare Tunnel for Local n8n (2025) https://www.youtube.com/watch?v=cZQPDLgPtNg
n8n_on_termux.sh #n8n #termux - GitHub Gist https://gist.github.com/ScottJWalter/7a44d6d081ec065f1df7ea5aea72edf4
Startup Script - PM2 https://pm2.keymetrics.io/docs/usage/startup/
How to install cloudflared in Termux - Reddit https://www.reddit.com/r/termux/comments/spqig5/how_to_install_cloudflared_in_termux/
스마트폰으로 자동화 구축! Termux에 n8n 설치 가이드 - 티스토리 



댓글