Skip to content

Latest commit

 

History

History
75 lines (56 loc) · 6.58 KB

File metadata and controls

75 lines (56 loc) · 6.58 KB

GOAPI for NUBO

license stars last commit

GOAPI는 NUBO의 고성능 백엔드 구현체입니다. GoFiber v3 기반으로 개발하였습니다.

🛠 NUBO 프로젝트 기술 스택

Category Tools
Frontend Nuxt Vue Pinia Tailwind Shadcn
Backend Go
Database MySQL MariaDB
  • 본래 TSBOARD 프로젝트에서 Bun 런타임 기반 웹프레임워크인 ElysiaJS 를 대체하기 위해 Go 언어로 개발한 백엔드입니다. JS/TS 런타임 기반으로 구현한 백엔드 대비하여 동시성 기반의 보다 빠르고 효율적인 연산을 제공하면서도 더 적은 메모리만 사용합니다.
  • 26년 부터는 NUBO 프로젝트에서 사용하는 백엔드 프로젝트가 되었습니다. TSBOARD의 백엔드에서 한층 더 개선되었고, NUBO에서 제공하는 추가 기능들을 모두 지원하도록 같이 업데이트 됩니다.
  • GoFiber v3 기반으로 설계되어 있습니다. 최신 NUBO 프로젝트에서는 64bit Linux용 바이너리가 포함됩니다.

GOAPI 사용 준비

  • 기본으로 제공하는 ./goapi-linux 바이너리는 64bit Linux OS에서, libvips-dev 라이브러리가 설치된 환경을 가정하고 컴파일 되었습니다.
  • 만약 사용하시는 서버의 CPU가 Intel/AMD가 아닌 Arm 계열일 경우(예를 들어 Mac), 이 프로젝트를 git clone으로 내려받아서 본인의 서버에 맞게 새로 컴파일 하여 바이너리 파일을 만들어서 사용하실 수 있습니다.
  • ./goapi-linux 바이너리 (혹은 여러분이 직접 컴파일하신 ./goapi-mac 등)는 NUBO 폴더 아래에 두고 실행하셔야 합니다. (예: /var/www/nubo.git/goapi-linux)
  • ./goapi-linux 바이너리는 실행 시점에 동일 경로에 .env 파일이 있는지 검사하고, 없다면 설치를 진행합니다.
  • Go 언어로 작성되어 있으므로 직접 코드를 수정하거나 컴파일하기 위해서는 서버에 Go 개발 환경이 준비되어 있어야 합니다.

GOAPI 최대로 활용하기

  • ./goapi-linux 바이너리 파일은 실행 전에 항상 같은 경로에서 .env 파일을 확인합니다.
  • .env 파일에는 아래의 내용들이 있는데, 소셜 로그인이나 메일 발송 등에 사용되는 키 값들을 보관하는 용도입니다.
  • (아래 예시)
# Resend로 메일 발송에 필요한 API Key
# 주의) localhost 에서는 동작하지 않으며, 실제 도메인 인증을 받은 서버에서만 동작합니다
# 참고) Resend API Key가 지정되어 있으면 Gmail 메일 대신 Resend를 사용합니다
RESEND_API_KEY=

# 구글 앱비밀번호 for GMAIL 발송
# 참고) https://velog.io/@seul06/nodemailer
GMAIL_ID=
GMAIL_APP_PASSWORD=

# 구글 OAuth 클라이언트
OAUTH_GOOGLE_CLIENT_ID=
OAUTH_GOOGLE_SECRET=

# 네이버 OAuth 클라이언트
OAUTH_NAVER_CLIENT_ID=
OAUTH_NAVER_SECRET=

# 카카오 OAuth 클라이언트
OAUTH_KAKAO_CLIENT_ID=
OAUTH_KAKAO_SECRET=

# OpenAI API Key
OPENAI_API_KEY=
  • GOAPI 백엔드에서 메일을 발송하거나, 소셜 로그인 처리를 원할하게 하려면 가급적 공란을 모두 채워주세요.
  • OpenAI API를 제외한 나머지 값들은 모두 무료로 어느 정도 이용이 가능합니다.
    • OpenAI API가 있으면 업로드된 이미지에 대해서 설명글을 생성하여 추후 검색이 가능하게 만들어줍니다.
    • 이밖에도 OpenAI API 기반으로 NUBO에서 다양한 (부가)기능들을 제공할 예정입니다.
    • OpenAI API는 정말로 없어도 됩니다. 메일 발송 등과는 달리 필수적이진 않습니다.

GOAPI가 제대로 동작하도록 하는 Nginx 설정은 아래 NUBO 프로젝트의 README.md를 참조하세요.

참고 리포지토리