다들 블로그를 하는 이유가 다를 것이다.

나처럼 그냥 생각을 정리하듯, 그저 일기 식으로 하기도 하고,
또는 누군가는 상업적(마케팅?)으로 사용하기도 한다.

블로그 서비스도 많다.
국내는 네이버블로그, 다음(카카오? 여긴 아직도 있나?) , 티스토리
해외쪽은 워드프레스 , 구글 블로그스팟(예전에 다른 이름이었던것 같은데?) , 미디엄 등 많다.

난 개인적으로 설치형을 좋아했던것 같다.

초창기 텍스트큐브 로 시작했었던가? (이게 티스토리와 연관되었던 것 같은 기억이..)
그 후 텍스트큐브에서 티스토리로 이전한 후 그냥 정착한 것 같다.(귀찮은게 반 이상 이다.)

한때 블로그가 핫(?)했다가, 유튜브에 자리를 내준 것 같은 느낌이다.
물론 영상 과 텍스트는 느낌은 다르지만, 컨텐츠 생산의 관점에서는 비슷한 것 같다.

 

워드프레스 use Coolify

그중에 워드프레스를 coolify 를 이용해 설치해보자.
coolify 설치는 https://blog.1day1.org/717 로 대신하고 패스.

 

coolify + n8n 으로 자동화해보자 - 설치편 (feat. vultr)

최근 재미있는 것을 봐서 시도해보려고 한다.coolify 는 vercel / netlify 비슷한 서비스를 만들어주는 오픈소스라고 보면 된다. - 서비스로도 사용할 수 있지만, 셀프 호스팅으로 설치해보려 한다. -

blog.1day1.org

 

워드프레스를 얼마나 편하게(손쉽게?) 할 수 있는지 보여주려한다.

프로젝트를 이름을 정하고,

Environments 을 production 을 선택하고, Resources 를 +Add New Resource 선택해서 워드프레스 선택화면으로 넘어간다
그냥 클릭! 클릭! 으로 넘어가면 된다.

Coolify 에서는 3가지 항목이 있다.(W 라 맨 아래에 있다.) Mariadb / Mysql / No DB 중에 선택할 수 있다.

무난하게 Wordpress With Mysql 으로 해도 되고 Madiadb 로 해도 된다.(디비 있는 버전으로 )

어느 서버에 설치할 지 정한다. (localhost 가 대부분일 듯 하고, 원격서버도 등록했으면 원격서버도 가능)

서버를 설치하면 몇가지 설정을 한다.(연결할 도메인을 설정하는 정도면 끝)
연결할 도메인은 서버 설치하는 위치의 IP 주소로 미리 세팅해놓는다.

위 설정에서 암호 등은 기본값으로 자동 세팅되니, 따로 수정하지 않아도 된다.

 

모든 설정이 완료되면, Deploy 하면 설치된다.

설치 후 설정한 도메인으로 접속하면, 워드프레스 세팅화면을 볼 수 있다.(이후 세팅은 생략)

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

지난번 글에 coolify 를 로컬 뿐 아니라, 원격서버에도 세팅을 할 수 있다.  https://blog.1day1.org/724

 

coolify 로 원격 서버를 활용해보자 (multi server)

지난 coolify 관련 글은 로컬서버에 설치하는 방법이었다. https://blog.1day1.org/717 coolify + n8n 으로 자동화해보자 - 설치편 (feat. vultr)최근 재미있는 것을 봐서 시도해보려고 한다.coolify 는 vercel / netlify

blog.1day1.org

그런데, 빈(초기화된) 서버가 아니라, 이미 운영중인 서버에 세팅하려고 할 때 주의할 점을 정리한다.

테스트로 벌쳐(vultr)에서 우분투 / 센토스 등 가상서버 (초기화) 세팅 후 원격서버 적용해봤다.
빈 서버는 별 이상없이 잘 세팅 된다. OS 버전별로도 잘 적용해준다. ( apt , yum 등 다른 환경을 잘 처리해주는 듯 하다)

뜬금 광고 시간.(아래 링크로 최초 가입하시면 300$의 크레딧 -30일내사용- 을 받아서 사용해 볼 수 있습니다.)

30일동안 사용해보고 괜찮으면 연장해서 사용하면 좋을 듯 하다.

 

현재의 나의 환경은?

우분투 서버에 nginx 를 사용하여 웹서버로 운영중이다. 사용중인 포트는 80 포트와 443 포트 두개를 사용한다.
그런데, coolify 원격서버로 세팅하려고 하면, proxy 설정 부분에서 아래와 같은 에러가 나면서 완료가 되지 않는다.

coolify 는 80 / 443 포트를 사용하기 때문에 nginx 가 이미 해당 포트를 사용하고 있어서 에러가 나는 것이다.

어떻게 nginx 를 사용하면서 coolify 원격서버로 활용할 수 있나요?

먼저 원격서버의 nginx 포트를 바꿔준다. (아래와 비슷할 것이다.) 기존 https 포트인 443 을 8443 으로 변경했다.

cat /etc/nginx/sites-enabled/your-site.conf

server {
	server_name your-site.com;
  	...
	...
  
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/your-site.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/your-site.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
  
}

포트 변경 : 443 => 8443
server {
	...
    listen 8443 ssl; # managed by Certbot
    ...
}


변경 후 nginx 재시작

systemctl restart nginx

위처럼 80/443 포트를 사용하는 관련된 nginx 설정을 변경해주고, nginx 를 재시작 해준다.

coolify 관리페이지의 Server => Proxy 부분에서 (실패 지점)  일단 Proxy 서버를 Caddy 로 바꿔준다.

Caddy 를 이용해서 기존 웹서버 경로(도메인)로 우회(변경) 하는 설정을 할 것이다.

웹서비스 사용자 => nginx (80/443)

의 흐름으로 접속하게 되는데, 이를 coolify (caddy) 가 받아서 변경된 nginx 포트로 넘겨주는 설정을 해준다.

웹서비스 사용자 => coolify,caddy(80/443) => nginx (8080/8443)

 

Coolify 에서 Caddy 설정을 해준다.

coolify 관리메뉴 Server => Proxy 메뉴에서 Dynamic Configurations 에서 설정을 해준다.

파일명은 임의로 해준다. Configuration 부분에 본인에 맞게 설정을 해준다.

http://your-site.com {
    redir https://your-site.com
}
https://your-site.com:443 {
    reverse_proxy https://your-site.com:8443
}

예시를 간단하게 설명하면,
첫번째 블록은 http(80) 포트로 접속하는 주소를 https(443) 으로 변경해주는 설정이다.
두번째 블록은 443 포트로 접속하는 주소를 위에서 nginx 변경한 포트(8443)로 우회하도록 하는 설정이다.

redir 과 reverse_proxy 의 차이점은
브라우저 URL 주소부분을 redir 은 아예 변경을 해주고,
reverse_proxy 는 주소 변경 없이 8443 으로 요청한 결과값을 443 으로 보내주는 역할을 한다.

caddy 관련 상세한 설정은 caddy 사이트에 잘 설명되어 있다. https://caddyserver.com/docs/caddyfile/directives/redir

 

Caddy - The Ultimate Server with Automatic HTTPS

Caddy is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go

caddyserver.com

caddy 설정 살펴보면, 기존 nginx 기능을 모두 할 수 있는 듯 하다. 즉, nginx 를 대체할 수도 있으니, 설정을 살펴보고 적용해도 된다.

내 경우는 coolify 원격서버 용도를 계속 사용할지 불확실해서, 한서버에 nginx/coolify 를 같이 운영하기로 했다.
또는 기존 nginx 로 세팅했던 사이트를 coolify 도커 기반으로 바꾸는 것도 재미있을 듯 하다.(이 부분도 하게 되면 별도 포스팅으로 )

 

[추가 - feat. certbot]

위 설정을 하게 되면, 기존 nginx 에 certbot 이 설정된 경우 80 port 로 접속이 안되어 certbot renew 가 실패하게 된다.

http://your-site.com {
    reverse_proxy http://your-site.com:8080
}
https://your-site.com:443 {
    reverse_proxy https://your-site.com:8443
}

기존 caddy 설정을 80 => 8080 / 443 => 8443 으로 처리되도록 해준다.

그리고, certbot 이 80 대신 8080 으로 접속이 가능하도록 renewal 세팅에 다음 항목을 추가해준다. https://blog.1day1.org/711

 

letsencrypt 를 좀더 활용해보자. (feat. post_hook)

letsencrypt 를 잘 사용하고 있는데, 주로 개발용으로 사용했다.간단한 사용법은 https://blog.1day1.org/657 에서 확인. letsencrypt 초간단 설치 in ubuntu , nginx (feat. certbot)https 를 사용하는 것은 옵션이 아니

blog.1day1.org

# Options used in the renewal process
[renewalparams]
...
http01_port = 8080
...

renewal 시에 8080 으로 접속하여 SSL 인증서를 체크할 수 있도록 해줘야 정상적으로 갱신된다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

지난 coolify 관련 글은 로컬서버에 설치하는 방법이었다. https://blog.1day1.org/717

 

coolify + n8n 으로 자동화해보자 - 설치편 (feat. vultr)

최근 재미있는 것을 봐서 시도해보려고 한다.coolify 는 vercel / netlify 비슷한 서비스를 만들어주는 오픈소스라고 보면 된다. - 서비스로도 사용할 수 있지만, 셀프 호스팅으로 설치해보려 한다. -

blog.1day1.org

coolify 는 로컬서버 뿐 아니라, 원격지 서버를 등록해서 앱을 배포해서 사용할 수 있다.
서버 사양을 분산하거나, 프로젝트별로 분리해서 관리하는 등 여러가지 이유로 원격서버에 설치할 필요가 생긴다.
서버는 여러개가 될 수 있지만, 전체를 coolify 에서 통합관리하기에 불편하지는 않다.

원격서버는 클라우드 서버일 수도 있고, 리얼서버일 수도 있다. 인터넷 접속할 수 있다면 모두 등록 가능하다.
원격서버 등록은 크게 어렵지는 않다. 단, 원격접속 설정 한가지만 사전 등록해준다.

coolify 가 원격서버에 접속할 수 있도록 ssh key 등록을 해준다.(아래 이미지의 localhost's key )

ssh key 를 원격지서버에 등록해준다.

어떤 key 를 등록해줘야 하는가? (publick key 등록)

coolify 의 Keys & tokens 메뉴에서 아래 이미지의 표시한 부분에서 Public Key 를 복사한다.(아래는 일부지만, 전체를 복사)

원격지 서버에 접속해서 .ssh/authorized_keys 에 해당 Public Key를 입력해준다.

형식은 아래와 비슷한데, 맨끝의 coolify 는 구분용으로 임의로 입력한 값이다.

# cat .ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5A-퍼블릭키값-NDZbYm-전체-AuLg3 coolify

사전 준비는 끝. (coolify => remote 접속이 가능하면 OK)

주의!!

다음 진행하기 전에 원격서버가
웹(80/443 포트)서버로 이미 사용중이라면 정상설치가 안될 수 있다.

 

원격 서버에 도커엔진 설치하기

위 Validate Server & Install Docker Engine 버튼을 클릭하면,
서버에 접속가능한지 체크하고, 필요한 도커관련 설치를 한다.

특별한 이상이 없다면, 위처럼 단계가 처리된다.

원격 서버를 등록한 후에는 coolify 앱 등록 / 배포등을 진행하면 된다.

Products => Resources => (앱 또는 서비스) => [서버선택시 등록한 원격 서버 선택] => Configuration => Deploy

위와 같은 단계로 진행하는데, 중간단계에 설치/배포할 서버를 원격지 서버로 선택하면 된다.

 

[활용방안]

이 작업을 하는 이유는 기존의 단독으로 운영되는 스프링프로젝트 서버가 있다.
접속이 많을 때 서버가 다운되는 현상이 있어서 어떻게 조치할 까 생각중인데, 스프링앱을 일부 분리해서 도커에 올려 부하 분산을 할려고 구상중이다. 접속이 많은 현상이 항상 그런 것이 아니라, 간헐적으로 나타나기 때문에 앱을 신규 등록 했다가 다시 삭제 하는 형태로 유동적으로 운영할려고 한다.

 

[추가]

혹시 위 원격서버 등록시 다음과 비슷한 에러를 만난 경우

기존에 nginx 로 80/443 포트를 사용하던 원격서버에 세팅하는 경우 위와 같은 에러를 만나게 된다.
관련 조치는 nginx 설정을 다른포트(8080/8443 등)로 바꾸고 coolify 쪽에서 proxy 설정을 연동해줘야한다.
즉, coolify 가 80 / 443 포트를 컨트롤 하도록 해줘야 한다. 이 부분은 별도로 포스팅 하도록 하겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

지난글에 nestJS 앱을 dockerfile 을 사용해서 배포하는 방법을 정리했다. https://blog.1day1.org/719

 

coolify 를 사용해서 nestJS + postgres 앱을 배포해보자

coolify 를 써보다 보니 재밌다.처음이라 좀 헤맨 부분이 있지만 ... 익숙해지면 정말 편해질 것 같다세팅하려는 대략적인 흐름도는 아래와 같다 # Docker - nestJS 부분projects 메뉴에서 새프로젝트를

blog.1day1.org

그런데, dockerfile 내에서 git clone 으로 소스를 가져와서 하는 방법이다보니, github webhook 를 처리하기 어려운 부분이 있다.

그래서 coolify 에서 github app 을 세팅해서 사용하는 방법을 사용하기로 한다.

# coolify 프로젝트 ( + New Resource )

with GitHub App 으로 선택한다.

처음에는 +Add GitHub App 으로 앱등록을 해준다.(해당 방법은 아래에 따로 설명)

등록된 앱을 선택하고, Load Repository 를 하고, Build Pack 을 Dockerfile 으로 선택하고 다음으로 넘어간다.

기존에 봤던 설정화면 - 본인에 맞는 입력사항을 입력하고 Save

이전 글의 Dockerfile 이 차이가 있는데,
그 부분은 아래 깃허브 앱 등록 부분을 정리 후에 마지막에 설명한다.

 


# GitHub App 등록

Create a new Application 에서 +Add GitHub App 를 클릭하거나,
Coolify 좌측메뉴의 Sources 메뉴를 들어간다.(+Add)

적당한 이름을 입력하고, Continue ..

Webhook Endpoint 부분에 github 쪽에서 접근가능한 URL 을 선택하고, Regiser Now

깃허브로 이동한다. ( 앱을 생성하는 절차 )

다시 coolify 로 이동해서, Install Repositories on GitHub  를 클릭한다.(세부 정보 입력으로 이동)

그러면 다시 깃허브로 이동해서 세부적인 설정을 하게 된다.

본인 깃허브 계정의 전체 저장소 또는 프로젝트를 선택할 수 있다. (Install 으로 Github App 을 생성한다.)

다시 coolify 로 이동하면, 설정된 앱을 확인할 수 있다.(아래에서 따로 추가 설정할 것은 없고, 완료 화면)

해당 App 등록이 완료되면,  초기에 Create a new Application 부분에 해당 앱이 나오게 된다(선택하여 다음 진행)

 

# Dockerfile 설정.(깃허브 프로젝트 소스내에 포함)

예전 글(https://blog.1day1.org/719)에는 Dockerfile 내에 git clone 으로 소스 다운로드하는 형태였는데,
Github App 연동 방식은 저장소를 연결해서 소스에 접근할 수 있어, 다운로드 단계를 제거 한다.

# 빌드 스테이지
FROM node:22 AS builder

# 작업 디렉토리 설정
WORKDIR /usr/src/app

# pnpm 설치
RUN npm install -g pnpm

# 모든 소스 파일 복사
COPY . .

# 의존성 설치
RUN pnpm install

# 앱 빌드
RUN pnpm run build


# 프로덕션 스테이지
FROM node:22-slim

# 작업 디렉토리 설정
WORKDIR /app

# pnpm 설치
RUN npm install -g pnpm

# 빌드 스테이지에서 필요한 파일들만 복사
COPY --from=builder /usr/src/app/package*.json ./
COPY --from=builder /usr/src/app/pnpm-lock.yaml ./
COPY --from=builder /usr/src/app/dist ./dist

# 프로덕션 의존성만 설치
RUN pnpm install --prod


# 프로덕션 모드로 실행
CMD ["pnpm", "run", "start:prod"]

# 포트 설정 (NestJS 기본 포트는 3000)
EXPOSE 3000

도커의 이미지 빌드시 두단계를 거치도록 분리했다. (multi-stage 빌드 라고 하는 듯 하다.)

빌드 단계 + 프로덕션 단계.  코드가 복잡하지는 않아 쭈욱 한번 보면 파악이 될 것이다.

 

깃허브 webhook 설정해서 git push 하면 자동으로 배포하게 되도록 설정한다.
일단 여기까지... webhoook 설정은 다음에...

Github App 방식으로 하니, 따로 webhook 설정 안해도 되네. 패스... 끝.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

coolify 를 써보다 보니 재밌다.

처음이라 좀 헤맨 부분이 있지만 ... 익숙해지면 정말 편해질 것 같다

세팅하려는 대략적인 흐름도는 아래와 같다

 

# Docker - nestJS 부분

projects 메뉴에서 새프로젝트를 만들어 준다.

적당한 이름을 입력하고, continue ( New Resource )

여러 방법이 있지만, Dockerfile 방법으로 하도록 한다.

중간 부분의 git clone 본인의 프로젝트소스를 가져오도록 한다.

# 베이스 이미지로 Node.js 사용
FROM node:22

# 작업 디렉토리 설정
WORKDIR /usr/src/app

# git clone
RUN apt-get update && apt-get install -y git

RUN git clone https://github.com/your-account/nestjs-practice-netflix .

# pnpm 설치
RUN npm install -g pnpm

# 의존성 설치
RUN pnpm install

# 앱 빌드
RUN pnpm run build

# 프로덕션 모드로 실행
CMD ["pnpm", "run", "start:prod"]

# 포트 설정 (NestJS 기본 포트는 3000)
EXPOSE 3000

프로젝트에 접속할 주소를 적절하게 적어준다.

저장(Save) 한 후 deploy 하면 도커이미지를 만들어주고, 앱이 실행된다.


# 디비 postgres 부분

내가 테스트 한 프로젝트는 postgres 를 사용하기에 DB도 세팅해준다.

프로젝트에서 ( New Resource ) 로

PostgreSQL 을 선택해준다.

PostgreSQL 16 을 선택해줬다.

세팅에 암호를 정해준다.

중간 부분의 Postgres URL (internal) 으로 접속할 것이니, 해당 값을 nestjs 에서 사용할 것이다.
DB 를 Start 해준다.

 

그리고, 다시 nestJS 설정으로 와서.

위 처럼 설정값을 적어준다.
(DB_HOST 부분의 값이 - Postgres URL (internal) 에 있던 주소)

프로젝트에 따라 저 환경변수 값이 다를 수 있으니, 본인의 프로젝트에 맞게 수정해준다.

프로젝트를 Deploy 한다. 이미 프로젝트를 Deploy 했다면, Restart 해주면 입력한 설정값이 적용된다.

이제 프로젝트가 동작하는지 확인해본다. (정상적으로 응답된다)

 

아마도 다음 단계는 프로젝트 수정하고 git push 하면
자동으로 coolify 에서 자동 빌드 + 재배포 하는 프로세스를 만들어 봐야 겠다.

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

최근 재미있는 것을 봐서 시도해보려고 한다.

coolify 는 vercel / netlify 비슷한 서비스를 만들어주는 오픈소스라고 보면 된다.
 - 서비스로도 사용할 수 있지만, 셀프 호스팅으로 설치해보려 한다.
 - https://coolify.io/self-hosted

n8n 은 자동화(노코드 툴?)에서 자주 언급되는 make / zapier 같은 서비스를 만들어 주는 오픈소스
 - 역시 이것도 셀프 호스팅으로 https://docs.n8n.io/hosting/

일단 목표는 n8n 으로 블로그 자동포스팅에 적용해보고자 한다.
이 블로그에 글을 올릴지, 별도의 다른 블로그로 할지는 모르겠다.

설치 자체는 가이드 따라서 하면 그리 어렵지는 않아 보이지만,
어느 정도 사양이면 제대로 사용할 수 있을지 실제로 돌려봐야 겠다.(coolify 는 최소 2G / 2 CPUs 정도면 된다고 하지만...)

vultr 에 설치해서 돌려봐야 겠다.
뜬금 광고 시간.(아래 링크로 최초 가입하시면 300$의 크레딧 -30일내사용- 을 받아서 사용해 볼 수 있습니다.)

30일동안 사용해보고 괜찮으면 연장해서 사용하면 좋을 듯 하다.

 

coolify + n8n 의 설치까지는 별 무리는 없어 보이지만, n8n 실제 사용은 또 다른 영역(노코드툴)이니 좀 헤맬지도 모르겠다.

#이제 본격적인 설치시간

월 비용은 대략 22달러 정도 될 듯 하다.

OS를 뭘로 할까? 기본 ubuntu 를 할까, Docker(on ubuntu) 로 할까 등등 살펴 보다보니, 어!

기본 설치되어 있는 이미지가 있네요.(유명해서 그런지. 이미 있군.)

살짝 고민, 설치부터 해볼까. 그냥 설치된 거 쓸까...
고민좀 해보고 다시 찾아오겠습니다.


[추가]

다시 돌아왔다, 그냥 설치된 버전으로 해보기로 했다.

vultr 관련 선택하고 Deploy 한 후 기다리면, 접속할 수 있다.

1. 기본 {서버IP}:8000 로 접속하면 된다.
2. 처음 접속하면 관리계정 등록을 하면 된다.
3. 그러면 coolify 관리화면으로 접속된다.

그냥 아이피로 접속해서 해도 되지만, 뭔가 세련되지 않은 듯 하다.

도메인을 연결해본다.

본인이 가지고 있는 도메인을 연결하면 된다.

SSL 인증서는 어디서 세팅하나 했는데, 자동으로 세팅해주는 듯 하다. (letsencrypt 를 사용한다)

Save 하고 설정한 도메인으로 재접속해서 사용하면 된다.

.

.

이제 n8n 을 설치해보자.

Projects 의 메뉴에서 +Add 로 적당한 이름을 적어준다.(다음 다음 넘어가면 된다)

production 클릭

+Add New Resource 클릭

이제 본격적인 패키지 선택

git 소스를 가져올 수도 있고 / Dockerfile 등 도커이미지를 사용할 수도 있고 / 데이터베이스를 설치할 수도 있다.

아래 부분에 Services 에서 검색한다. N8N 을 선택한다.( 그외 여러가지 유명한 서비스들이 있다)
최근 관심중인 supabase 도 보인다(이것도 해볼 예정)

n8n 을 선택한 후 다음 처럼 세팅한다.(도메인 세팅만 하면 된다)

적당한 서비스 이름 너히고, 도메인 넣고, Deploy 해준다 (좀 시간이 걸린 후 )
deploy 가 완료되면 다음처럼 바뀐다.

메뉴의 Links 에 설정한 도메인을 클릭해서 들어간다.

짠! (여기도 처음 접속시 관리계정 설정 하고 들어가면 된다)


[참고]

처음 에 다음 세팅을 How big is your company? 를 20 이하로 하면, 아래 설정창이 계속 나온다.
(뭔가 버그인 듯 하다. 아래처럼 20-99 로 해줬다)

 

이제 본격적인 n8n - 노코드 자동화를 설정해봐야 겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,