반응형

분류 전체보기 68

Vite + Nest 통합 프로젝트, Docker + Nginx + HTTPS 배포기

개인 프로젝트에서 프론트와 백엔드를 한 서버에서 함께 운영하는 구조가 흔하다.이번 글에서는 NestJS 백엔드와 Vite 기반 프론트엔드를 각각 도커 이미지로 빌드하고,하나의 Docker Compose와 Nginx + HTTPS로 통합 배포한 전체 과정을 정리한다. 프로젝트 구조 (서버 상)~/project/converter├── docker-compose.yml # FE + BE 통합 Compose├── be/ # NestJS 백엔드├── fe/ # Vite + React 프론트엔드 Docker Compose 파일은 백엔드 디렉터리와 분리된 루트 경로에서 프론트와 백엔드 컨테이너를 함께 관..

카테고리 없음 2025.06.11

Let’s Encrypt로 무료 HTTPS 인증서 발급하고 적용하기

작은 프로젝트라고 해도 보안을 위해 HTTPS를 사용하는 것이 좋다.HTTPS를 설정하면 데이터가 암호화되어 전송되므로, 로그인 정보나 중요한 요청이 중간에서 탈취되는 것을 방지할 수 있다. 이번 글에서는 Let’s Encrypt와 Certbot을 이용해 Ubuntu 서버에서 간단하게 HTTPS를 설정하는 방법을 알아보자.이미 도메인이 서버에 연결되어 있다고 가정하고, 실제 설정에 필요한 부분만 다룬다. 앞선 과정들은 이전 글에서 확인 가능합니다. 도메인 연결하기 [Contabo] 도메인 연결하기: 콘타보 서버에서 프로젝트 운영하기 (feat. Clouldflare)앞선 글에서 콘타보 인스턴스에 Docker와 프로젝트를 배포하는 과정을 정리했다.이제 다음 단계로 도메인 연결, Nginx 설정, 방화벽 ..

카테고리 없음 2025.06.09

[Contabo] 도메인 연결하기: 콘타보 서버에서 프로젝트 운영하기 (feat. Clouldflare)

앞선 글에서 콘타보 인스턴스에 Docker와 프로젝트를 배포하는 과정을 정리했다.이제 다음 단계로 도메인 연결, Nginx 설정, 방화벽 설정을 마무리해보자. 1. 도메인 연결 (Cloudflare) 이미 Cloudflare에서 도메인을 보유하고 있다면, 나는 이미 Cloudflare를 통해 이미 도메인을 가지고 있었다.다음과 같은 방식으로 서버와 연결할 수 있다. A 레코드 등록Cloudflare의 DNS 탭에서 아래처럼 A 레코드를 추가한다. 이름타입값프록시 상태@A서버의 공인 IPDNS only (☁️ 회색)wwwA서버의 공인 IPDNS only (☁️ 회색) 처음에는 프록시를 비활성화해 디버깅을 쉽게 한다.HTTPS까지 설정 완료된 후 다시 프록시를 켜는 것이 좋다. 프록시의 차이는 다..

카테고리 없음 2025.06.07

[Contabo] Github Actions + GHCR + Docker Compose로 CI/CD 구현하기 (Contabo 서버)

이번 글에서는 GitHub Actions, GHCR(GitHub Container Registry), Docker Compose를 이용해 코드 push → 자동 배포까지 연결하는 전체 과정을 정리한다. [Contabo] 콘타보 우분투 계정 생성과 SSH 접속 환경 설정에 대해서 알아보자.해보고 싶은 개인 프로젝트가 있어서 AWS 프리티어 및 Oracle 무료 인스턴스를 사용해 봤지만 사양이 넉넉치 않아서 저렴하고 성능 좋은 콘타보 인스턴스를 구매하게 되었다. 최초 로그인은iwillcomplete.tistory.com콘타보 초기 셋팅이 필요하다면 해당 게시물을 확인해보자. 우분투에서 Docker & Docker Compose 설치하기 CI/CD를 구성하려면 우선 서버에 Docker와 Doc..

인프라 2025.06.06

[Cursor AI] Cursor 사이드 바를 VSCode 처럼 셋팅하기

Cursor AI를 처음 사용하면서 VSCode처럼 사이드바를 설정하고 싶었다.     하지만...   간단한 방법으로 해결할 수 있다.1. 단축키로 설정 열기맥북에서는 Command + Shift + P를 눌러 Command Palette를 연다.그리고 open vscode settings를 입력하여 설정 창으로 이동한다.    2. orientation 설정 변경설정 창에서 orientation을 검색하면 workbench.activityBar.orientation 옵션이 나타난다.기본값은 horizontal로 되어 있는데, 이것을 vertical로 변경하면 VSCode와 같은 세로형 사이드바가 적용된다.     이후 재시작 해야한다는 알림이 뜨는데 까짓꺼 해주자.   다시 Cursor를 켜면 우리가..

[Contabo] 콘타보 우분투 계정 생성과 SSH 접속 환경 설정에 대해서 알아보자.

해보고 싶은 개인 프로젝트가 있어서 AWS 프리티어 및 Oracle 무료 인스턴스를 사용해 봤지만 사양이 넉넉치 않아서 저렴하고 성능 좋은 콘타보 인스턴스를 구매하게 되었다.     최초 로그인은 root 계정 패스워드 방식으로 해야 하지만, 더 안전하고 편리하게 사용하려면 새로운 계정을 추가하는 것이 좋다.이번 글에서는 왜 root 대신 추가 계정을 사용하는 것이 좋은지, 그리고 어떻게 설정할 수 있는지 알아보자.  왜 root 대신 추가 계정을 사용할까?보안 강화root 계정은 모든 권한을 가지고 있어서 해킹당하면 피해가 크다. 대신 ubuntu 같은 계정을 만들어 사용하면 필요할 때만 관리자 권한을 사용하니 더 안전하다.접속 로그 관리서버를 여러 명이 관리해야 할 경우, 각자 계정을 만들어 사용하면..

OS 2024.12.04

[Python] 파이썬 Fast API 개발 환경 설정 및 Docker와 Github Action으로 CI/CD 구현하기

이번 포스팅에서는 제가 최근에 진행한 Python 개발 환경 설정과 Docker를 이용한 CI/CD 구축 과정에 대해 공유하려고 합니다.개인적으로 진행하는 프로젝트가 파이썬의 FastAPI를 사용하고 있어서 파이썬을 선택하게 되었습니다. macOS와 VSCode를 사용하고 있으며, 각 패키지를 Homebrew로 설치했습니다. 배포 환경은 AWS가 아닌 Oracle 인스턴스로, GitHub Actions를 사용하여 배포할 예정입니다.   1. Python 개발 환경 설정먼저 파이썬 개발 환경을 세팅하기 위해 pyenv, poetry, ruff, 그리고 mypy를 사용하였습니다. 이 과정에서 사용된 설정 방법을 공유하겠습니다.1.1 pyenv로 Python 버전 관리하기pyenv는 여러 파이썬 버전을 쉽게 ..

Programming/Python 2024.12.02

[소프트웨어 3대 개발 원칙] DRY에 대해서 알아보자. (Feat. WET)

코딩을 하는데 있어서 중요한 습관들이 있다. 그 중에서 흔히 [소프트웨어 3대 개발 원칙] 중 DRY에 대해서 알아보자. DRY의 뜻은 Don't Repeat Yourself 반복을 피하라! 라는 뜻이고 그의 반대는 WET Write Every Time 매번 작성한다. Write Every Twice 매번 2번씩 작성한다. Waste Everyone's Time 모두의 시간을 낭비한다. DRY is about the duplication of knowledge of intent. It's about expressing the same thing in two different places, possibly in two totally different ways. 특정한 지식, 의도, 로직 등이 다양한 곳에서..

[PostgreSQL] View Table(뷰 테이블)에 대해서 알아보자.

뷰테이블은 하나의 가상 테이블이라고 생각하면 된다. 실제 데이터가 저장되는것이 아니고 뷰를 통해 데이터를 관리할 수 있다. VIEW와 TABLE과의 차이점은 그냥 TABLE은 실질적인 데이터가 있지만, VIEW는 데이터가 없고 SQL만 저장한다. 쿼리의 결과를 마치 사진으로 찍어 보존한 후, 다음에 또 쿼리 없이 볼 수 있도록 하는 역할 따로 데이터를 생성하는 것이 아니라 참조만 하는 것이다. 뷰가 참조하는 테이블의 데이터가 변경되면 뷰의 데이터도 같이 업데이트 된다. CREATE VIEW myview AS SELECT name, temp_lo, temp_hi, prcp, date, location FROM weather, cities WHERE city = name; SELECT * FROM myvie..

DB/PostgreSQL 2022.11.11

[PostgreSQL] PostgreSQL의 유니크 인덱스에 대해서 알아보자. (Unique Index)

A unique index guarantees that the table won't have more than one row with the same value. It's advantageous to create unique indexes for two reasons: data integrity and performance. Lookups on a unique index are generally very fast. 유니크 인덱스는 테이블에서 한개 이상의 row가 동일한 값을 갖지 않는 것을 보장한다. data integrity와 performance 측면에서 장점이 있다. 찾는 속도가 가장 빠르다. Only B-tree indexes can be declared unique. 오직 B-tree 인덱스만 ..

DB/PostgreSQL 2022.06.30
반응형