질문:

supabase 라는 무료용 데이터베이스를 사용시"Free projects are paused after 1 week of inactivity. Limit of 2 active projects. " 라는 주의글이 있는데 1주일에 한번씩 백엔드 서버에서 npm run start 명령으로도 supabase 서버를 활성화 할수 있나요? 아니면 supabase 웹사이트에 들어가서 직접 프로젝트를 클릭해야 하는가요?

 

응답:

Supabase의 무료 플랜에서는 1주일 동안 활동이 없으면 프로젝트가 일시 중지(Paused) 상태로 전환됩니다. 그리고 일시 중지된 프로젝트는 직접 Supabase 웹사이트에 접속하여 프로젝트를 다시 활성화해야 합니다.

 npm run start로 활성화할 수 없음

  • npm run start는 사용자의 백엔드 서버를 실행하는 명령이지, Supabase 프로젝트 자체를 깨우는 기능이 아닙니다.
  • Supabase 프로젝트가 Paused 상태가 되면 API 요청도 차단되므로, 백엔드에서 요청을 보내도 Supabase는 응답하지 않습니다.
  • 따라서, Supabase 웹사이트에 접속하여 프로젝트를 클릭해야 다시 활성화됩니다.

✅ Supabase 자동 활성화 방법

  1. 정기적으로 Supabase API 호출하기
    • Supabase 프로젝트가 완전히 Paused 상태가 되기 전에 API 요청을 보내면, 프로젝트가 계속 유지됩니다.
    • 예를 들어, 크론 잡(Cron Job) 을 사용해 5~6일마다 Supabase API를 호출하면 프로젝트가 중단되지 않습니다.
    • Supabase의 auth, rest, 또는 rpc API 엔드포인트 중 하나를 호출하면 됩니다.
curl -X GET "https://your-project-id.supabase.co/rest/v1/your_table" \
  -H "apikey: YOUR_SUPABASE_ANON_KEY"

 

이 스크립트를 Crontab 또는 백엔드에서 정기적으로 실행하면 프로젝트가 중단되지 않습니다.

자동화 스크립트 실행 (예: Node.js + cron)

  • Node.js로 6일마다 Supabase API를 호출하는 스크립트를 만들고, cron을 이용해 실행하면 됩니다.
const axios = require("axios");

async function keepSupabaseAlive() {
  try {
    const res = await axios.get("https://your-project-id.supabase.co/rest/v1/your_table", {
      headers: {
        apikey: "YOUR_SUPABASE_ANON_KEY",
        Authorization: "Bearer YOUR_SUPABASE_SERVICE_ROLE_KEY",
      },
    });
    console.log("Supabase 프로젝트 유지 성공:", res.status);
  } catch (error) {
    console.error("Supabase 프로젝트 유지 실패:", error.message);
  }
}

keepSupabaseAlive();

 

이 스크립트를 crontab에서 실행하도록 설정하면, Supabase 프로젝트가 Paused 상태가 되지 않습니다.

 

결론

  • npm run start로 Supabase 프로젝트를 깨울 수 없음.
  • Supabase 웹사이트에 접속하여 직접 프로젝트를 클릭해야 Paused 상태에서 복구됨.
  • 최선의 방법은 주기적으로 Supabase API를 호출하여 프로젝트가 중단되지 않도록 유지하는 것.
  • curl 또는 Node.js로 API 요청을 보내는 자동화 스크립트를 설정하면, Supabase가 계속 활성 상태를 유지함.

 

질문:

백엔드 서버를 시작할때마다 npm run build 명령어를 실행해야 하는가요?

npm run build를 실행해야 하는 경우

1. TypeScript 사용 시 (TS 프로젝트)

  • TypeScript를 사용하는 경우, npm run build를 실행해야 TS 코드가 JavaScript로 변환됩니다.
  • 예를 들어, NestJS나 Express를 TypeScript로 작성했다면, dist/ 폴더가 생성되므로 이를 배포해야 합니다.
  • 보통 package.json에서 다음과 같이 설정되어 있습니다:
"scripts": {
  "build": "tsc",
  "start": "node dist/main.js"
}

 

즉, TS 코드를 변경한 경우 npm run build를 실행해야 변경 사항이 반영됨.

2. Next.js 같은 SSR 프레임워크를 백엔드로 사용할 때

  • Next.js 같은 프레임워크는 서버에서 실행하기 전에 반드시 빌드해야 합니다.
  • 예를 들어:
npm run build && npm start

 

  • 이렇게 하면 최신 빌드가 반영된 상태로 서버가 실행됩니다.

 npm run build를 매번 실행할 필요 없는 경우

1. Node.js (JavaScript 기반)로 개발하는 경우

  • 일반적인 Express.js, Koa, Fastify 같은 Node.js 백엔드는 JavaScript 파일로 실행되므로 빌드가 필요하지 않습니다.
  • 즉, server.js나 app.js 같은 파일이 직접 실행된다면, npm run build 없이도 npm start만으로 서버를 실행할 수 있습니다.

2. TS 프로젝트지만 ts-node로 실행할 경우

  • TypeScript 프로젝트라도 ts-node를 사용하면 즉시 실행 가능하므로 빌드 없이 동작합니다.
  • 예시:
  •  
"scripts": {
  "dev": "ts-node src/main.ts"
}

 

  • 이 경우 npm run dev를 실행하면 build 없이 TypeScript 코드가 동작함.

결론

  • TypeScript 프로젝트라면 npm run build 후 실행해야 함.
  • JavaScript 프로젝트라면 npm run build 없이 바로 실행 가능.
  • 개발 환경에서는 ts-node를 사용하여 빌드 없이 실행하는 것도 가능.
  • 배포 환경에서는 npm run build 후 실행하는 것이 일반적.

질문:

"Node.js로 6일마다 Supabase API를 호출하는 스크립트를 만들고, cron을 이용해 실행하면 됩니다."라고 하였는데 이 자바스크립트 코드를 어느 파일에 넣고 어떻게 실행하는가요? cron 을 이용해 실행하면 된다고 하였는데 cron 이란 무엇인가요?

 

응답:

Supabase 프로젝트 유지를 위한 자동 실행 스크립트 설정 방법

Supabase의 무료 플랜에서는 1주일 동안 활동이 없으면 프로젝트가 Paused 상태가 되므로, 이를 방지하기 위해 6일마다 API를 호출하는 자동화 스크립트를 설정할 수 있습니다.

이를 위해 Node.js와 cron을 사용하여 자동 실행하도록 설정하는 방법을 설명해드릴게요.

 

1️⃣ Node.js 스크립트 작성

먼저, Supabase API를 호출하는 Node.js 스크립트 파일을 생성합니다.

📌 1.1 keep-alive.js 파일 생성

아래 코드를 프로젝트 루트 디렉토리에 keep-alive.js라는 이름으로 저장하세요.

const axios = require("axios");

// Supabase API 엔드포인트 및 키 설정
const SUPABASE_URL = "https://your-project-id.supabase.co";
const SUPABASE_ANON_KEY = "your_anon_key";
const SUPABASE_TABLE = "your_table"; // 유지할 테이블 (실제 테이블 이름 입력)

// Supabase API 요청 함수
async function keepSupabaseAlive() {
  try {
    const response = await axios.get(`${SUPABASE_URL}/rest/v1/${SUPABASE_TABLE}`, {
      headers: {
        apikey: SUPABASE_ANON_KEY,
        Authorization: `Bearer ${SUPABASE_ANON_KEY}`,
      },
    });

    console.log(`[${new Date().toISOString()}] Supabase 유지 요청 성공:`, response.status);
  } catch (error) {
    console.error(`[${new Date().toISOString()}] Supabase 유지 요청 실패:`, error.message);
  }
}

// 스크립트 실행
keepSupabaseAlive();

 

1.2 의존성 설치

이 스크립트는 axios 패키지를 사용하므로, 먼저 설치해야 합니다.

터미널에서 실행:

npm install axios

 

2️⃣ Node.js 스크립트 실행 방법

이제 이 스크립트를 실행하여 Supabase API를 호출할 수 있습니다.

📌 2.1 직접 실행

터미널에서 직접 실행해보려면:

node keep-alive.js

 

이렇게 하면 Supabase API가 호출됩니다.

 

3️⃣ 자동 실행을 위한 Cron 설정

이제 자동으로 이 스크립트가 실행되도록 cron을 설정하겠습니다.

📌 3.1 cron이란?

  • cron은 Linux 및 MacOS에서 특정 시간에 자동으로 명령을 실행하는 시스템 스케줄러입니다.
  • Windows에서는 Task Scheduler를 사용하면 비슷한 기능을 수행할 수 있습니다.

4️⃣ Cron을 이용한 자동 실행 설정 (Linux & MacOS)

📌 4.1 crontab 열기

터미널에서 다음 명령어를 입력하세요:

crontab -e

이제 crontab 설정 파일이 열릴 것입니다.

📌 4.2 crontab에 자동 실행 스크립트 추가

아래 내용을 추가하세요:

0 0 */6 * * /usr/bin/node /path/to/your/project/keep-alive.js >> /path/to/your/project/cron-log.txt 2>&1

🔹 설명:

  • 0 0 */6 * *  6일마다 자정(00:00)에 실행
  • /usr/bin/node → 시스템에 설치된 Node.js 실행 경로 (which node 명령어로 확인 가능)
  • /path/to/your/project/keep-alive.js  실제 스크립트 경로로 변경
  • >> /path/to/your/project/cron-log.txt 2>&1 → 실행 로그를 cron-log.txt에 저장

5️⃣ Windows에서 자동 실행 (Task Scheduler)

Windows에서는 Task Scheduler를 이용하면 cron과 같은 자동 실행이 가능합니다.

📌 5.1 Task Scheduler에서 작업 추가

  1. Windows + R을 누르고 taskschd.msc 입력 후 Enter.
  2. 새 작업 만들기 클릭.
  3. 이름: Supabase Keep Alive
  4. 트리거 (Trigger)  새로 만들기  6일마다 실행 설정.
  5. 작업 (Action)  프로그램 시작 선택.
  6. 프로그램/스크립트: C:\Program Files\nodejs\node.exe
  7. 인수 추가: "C:\path\to\your\project\keep-alive.js"

이제 Windows에서도 자동 실행됩니다.

 

최종 정리

 keep-alive.js 스크립트 생성
 npm install axios로 패키지 설치
 node keep-alive.js로 수동 실행 테스트
✅ Linux/Mac에서는 cron을 사용해 자동 실행 설정
✅ Windows에서는 Task Scheduler를 사용해 자동 실행 설정

이제 6일마다 자동으로 Supabase API가 호출되어 프로젝트가 Paused 되지 않도록 유지됩니다! 

 

질문:

keep-alive.js 파일은 백엔드 서버측에 설정하는건가요?

 

응답:

네, keep-alive.js 파일은 백엔드 서버 측에 설정하는 것이 가장 좋습니다.
하지만 백엔드 서버가 항상 실행되고 있지 않다면, 어느 환경에서든 실행 가능한 서버 또는 로컬 컴퓨터에서 스크립트를 실행할 수도 있습니다.

 

백엔드 서버에 설정하는 경우 (추천)

백엔드 서버(AWS EC2, VPS, 또는 온프레미스 서버 등)에 설정하는 것이 가장 효율적입니다.

1️⃣ 백엔드 서버에 keep-alive.js 배포

scp keep-alive.js username@your-server-ip:/home/your-user/

 

2️⃣ 백엔드 서버에서 실행 테스트

서버에 접속한 후:

node /home/your-user/keep-alive.js

 

이때 Supabase API가 정상적으로 호출되는지 확인하세요.

 

백엔드 서버에서 cron을 사용하여 자동 실행

서버에서 cron을 설정하여 자동 실행되도록 합니다.

1️⃣ crontab 편집

crontab -e

 

2️⃣ crontab에 자동 실행 추가

0 0 */6 * * /usr/bin/node /home/your-user/keep-alive.js >> /home/your-user/cron-log.txt 2>&1

 

🔹 */6  6일마다 실행
🔹 cron-log.txt에 실행 로그 저장

 

3️⃣ cron이 정상 동작하는지 확인

crontab -l

목록에 위 설정이 표시되면 정상 등록 완료!

 

최종 정리

 백엔드 서버가 있으면 거기에 설정하는 것이 가장 좋음
 cron을 사용해 6일마다 자동 실행
 백엔드 서버가 없다면 로컬에서 실행 가능, 하지만 신뢰성이 낮음
✅ AWS Lambda 같은 클라우드 함수를 활용하면 서버 없이도 실행 가능

 추천 방법: 백엔드 서버에 설정하고 cron으로 자동 실행!

 

 

질문:AWS EC2 에서는 어떻게 실행하는가요? AWS EC2 에서 실행은 유료인가요? 그리고 로컬 서버에서 실행하는 방법을 알려주세요.

 

응답:

AWS EC2에서 실행하는 방법

AWS EC2를 사용하면 서버를 항상 켜두고 자동 실행이 가능하지만, EC2는 무료가 아닙니다.
다만, **AWS 프리 티어(Free Tier)**를 이용하면 최대 12개월 동안 무료 사용 가능합니다.

1️⃣ AWS EC2 인스턴스 생성 및 접속

만약 EC2 인스턴스가 없다면, AWS EC2 인스턴스를 생성한 후 SSH로 접속하세요.

📌 EC2에 SSH 접속하기

ssh -i your-key.pem ubuntu@your-ec2-ip

 

  • "your-key.pem": EC2 생성 시 받은 SSH 키 파일
  • "your-ec2-ip": EC2 인스턴스의 퍼블릭 IP 주소

 

2️⃣ Node.js 및 npm 설치

EC2에는 기본적으로 Node.js가 없으므로 설치해야 합니다.

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

 

설치 확인:

node -v
npm -v

 

3️⃣ keep-alive.js 파일 업로드

로컬에서 EC2로 파일을 업로드합니다.

scp -i your-key.pem keep-alive.js ubuntu@your-ec2-ip:/home/ubuntu/

 

EC2 내에서 실행하려면:

cd /home/ubuntu/
node keep-alive.js

 

4️⃣ AWS EC2에서 자동 실행 (cron 설정)

EC2에서 매일 자동 실행되도록 cron을 설정합니다.

📌 crontab 설정

EC2에서 crontab -e 명령을 실행하고, 아래 내용을 추가합니다:

0 0 */6 * * /usr/bin/node /home/ubuntu/keep-alive.js >> /home/ubuntu/cron-log.txt 2>&1

 

설명

  • 0 0 */6 * *  6일마다 자정(00:00)에 실행
  • /usr/bin/node → Node.js 실행 경로 (확인: which node)
  • /home/ubuntu/keep-alive.js → EC2에 업로드한 스크립트 경로
  • >> /home/ubuntu/cron-log.txt 2>&1 → 실행 결과를 cron-log.txt에 저장

저장 후, crontab -l로 설정이 적용되었는지 확인합니다.

 

5️⃣ AWS EC2에서 자동 실행 유지 (pm2 이용)

cron 대신 pm2를 사용하면 백그라운드에서 계속 실행할 수 있습니다.

npm install -g pm2
pm2 start keep-alive.js --name supabase-keep-alive
pm2 save
pm2 startup

 

이제 EC2가 재부팅되어도 자동 실행됩니다

 

AWS EC2는 무료인가요?

  • **AWS 프리 티어(Free Tier)**를 이용하면 t2.micro 또는 t3.micro 인스턴스를 월 750시간 무료로 사용 가능(12개월).
  • 1년이 지나거나, 프리 티어를 초과하면 비용 발생.
  • 자세한 요금은 AWS 공식 요금 페이지에서 확인 가능.

 프리 티어 사용 중이라면, 매달 무료로 EC2를 유지할 수 있습니다.
 1년 후에는 비용이 발생할 수 있으니, 클라우드 함수를 고려할 수도 있습니다.

 

로컬 서버에서 실행하는 방법

로컬 컴퓨터(개발자 PC)에서도 같은 방식으로 실행할 수 있습니다.

1️⃣ Node.js가 설치되어 있는지 확인

터미널에서 실행:

 

node -v
npm -v

 

설치되지 않았다면:

# Mac
brew install node

# Ubuntu (Linux)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# Windows (PowerShell)
winget install OpenJS.NodeJS

 

2️⃣ keep-alive.js 실행

node keep-alive.js

 

3️⃣ 자동 실행 (cron 설정)

Mac/Linux에서 자동 실행하려면:

crontab -e

 

아래 라인을 추가:

0 0 */6 * * /usr/bin/node /home/your-username/keep-alive.js >> /home/your-username/cron-log.txt 2>&1

 

Windows에서는 Task Scheduler를 사용하여 같은 방식으로 자동 실행할 수 있습니다.

최종 정리

실행                                      환경설정                                                                                  방법비용

 

AWS EC2 (추천) pm2 또는 cron으로 자동 실행 1년 무료 (프리 티어) 이후 비용 발생
로컬 서버 cron 또는 Task Scheduler 사용 무료, 하지만 PC가 꺼지면 실행 안됨
클라우드 함수 AWS Lambda 또는 Google Cloud Functions 프리 티어 사용 가능, 사용량에 따라 무료

추천 방법:

  1. AWS EC2에서 pm2 또는 cron을 설정하는 것이 가장 안정적
  2. 로컬에서 실행하려면 cron 설정 가능, 하지만 PC가 꺼지면 실행되지 않음
  3. 비용을 절약하고 싶다면 클라우드 함수(AWS Lambda, Google Cloud Functions) 고려

최적의 선택은?
EC2 프리 티어를 활용하면 무료로 실행 가능하지만, 1년 후 비용이 발생할 수 있으므로 장기적으로는 클라우드 함수를 고려하는 것도 좋습니다!

 

 

 

 

+ Recent posts