AI 로 대표되는 챗지피티 (Chatgpt) 뿐 아니라, 여러가지 서비스 형태로 나오고 있다.

그 중에 서비스 개발 측면에서도 많은 발전이 있었다.

개발자의 코드 에디터와 연계된 형태로 나온것도 있다.
- vscode 와 연동하는 github copilot . https://github.com/features/copilot
- 아예 AI 에디터를 표방하는 Cursor AI 도 있다. https://www.cursor.com/

클로드는 챗GPT와 비슷하지만, 앱/웹 개발에 손쉽게 도와주는 방식
Vercel 에서 v0 라는 것도 있다.  https://v0.dev
Replit 도 꽤 괜찮은 사용자 경험을 제공한다. https://replit.com

 

Replit – Build software faster

Replit is an AI-powered software development & deployment platform for building, sharing, and shipping software fast.

replit.com

 

여러 서비스가 계속 나오니, 맛뵈기로 써보는 것도 벅차다.

어떤 것을 쓸지 모르겠지만, 해당 서비스를 이용해서 나도 나만의 서비스를 만들어보는 연습을 해봐야 겠다.

 

 

반응형

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

,

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

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

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

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

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

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

 

워드프레스 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
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

Mac OS 세쿼이아 업그레이드 했다. Xcode 16으로 업그레이드 했다.

별다른 이슈가 없는 듯 했는데, iOS 빌드 후 testflight 업로드 하려니 이슈가 발생하였다.

*** Error: [ContentDelivery.Uploader.600000068240] Asset validation failed (90482) Invalid Executable. The executable 'Runner.app/Frameworks/AdFitSDK.framework/AdFitSDK' contains bitcode.

target build 버전 등의 차이로 인한 듯 한데. adFit SDK 쪽에서 처리해줘야 하나? 따로 직접 해결할 수 있나?

예전 비슷한 이슈인가? 다른 이슈? https://devtalk.kakao.com/t/appstore-minimum-os-version/135747

 

[AppStore] 테스트플라이트 아카이브 안됨(minimum OS Version 관련)

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요. 현재 사용 SDK 버전 - 2.21 제가 현재 엑스코드에서 테스트플라이트를 위해 아카이브를 했는데 아래와 같은 에러가 계속 뜹니

devtalk.kakao.com

메시지는 동일한 것은 아닌데, 빌드시 버전 이슈를 본것 같아서 일단 정리.

다른 정확한 해결책을 찾아보는 중.

관련이슈 2 - https://developer.apple.com/forums/thread/764576

 

Invalid Executable. The excecutabl… | Apple Developer Forums

After upgrading to XCode 16, while uploading apps to app store, it's throwing below error and not letting me upload it. It's iOS app. Please help. Invalid Executable. The excecutable ......app/Frameworks/hermes.framework/hermes contains bitcode.

developer.apple.com

역시나 SDK 쪽에서 지원해줘야 하나...

 

[해결책] bitcode 에러 조치 - Xcode 16

관련이슈 3 - https://medium.com/@hyosing92/ios-bitcode%EC%99%80-%EA%B4%80%EB%A0%A8-issue-4643dc841af7

 

[iOS]Bitcode와 관련 Issue

Bitcode 관련 이슈와 왜 deprecate되었을지

medium.com

위 글 내용상 - 직접 bitcode 를 제거해줘야 하는 듯 하다.

ios/Podfile

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'AdFitSDK'
      `xcrun --sdk iphoneos bitcode_strip -r Pods/AdFitSDK/Frameworks/AdFitSDK.framework/AdFitSDK -o Pods/AdFitSDK/Frameworks/AdFitSDK.framework/AdFitSDK`
    end

  end
end

본인의 코드중 에러나는 위치를 확인한다. 내 경우는 아래 경로.

Pods/AdFitSDK/Frameworks/AdFitSDK.framework/AdFitSDK

(SDK 종류마다 해당 위치가 차이가 난다 - Pods 에서 해당 경로 확인)

실제 동작은 체크해봐야겠다. Xcode > Product > archive 로 확인해보니

에러 메시지는 사라졌다. 아래의 경고메시지가 거슬르긴 하지만, testflight 로 업로드는 된다.

실제 내부테스트 배포가 되는지 체크해봐야 겠다. (위 경고 메시지 제거방법은 따로 체크)

...

내부테스트 정상 배포되었다. - 일단 긴급 이슈는 해결

반응형

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
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,