Kamal을 활용한 Bugsink 배포 가이드

Bugsink - Deploy with Kamal

작성자
발행일
2025년 06월 16일

핵심 요약

  • 1 Kamal을 사용하여 개인 프로젝트를 위한 Bugsink 오류 추적 시스템을 효율적으로 배포하는 방법을 상세히 설명합니다.
  • 2 Kamal 초기 설정, Dockerfile 구성, GitLab Registry 연동 및 config/deploy.yml 환경 설정 등 배포 전반을 다룹니다.
  • 3 Kamal Proxy를 통한 HTTPS/SSL 통합 및 환경 변수 관리를 포함하여 안정적인 Bugsink 서비스 운영 방안을 제시합니다.

도입

개인 프로젝트를 운영하면서 Sentry 호스팅 서비스의 이벤트 드롭 문제와 비용 부담을 겪던 사용자가 효율적인 대안을 모색하던 중 Bugsink를 발견했습니다. 기존에 Ruby on Rails 앱 배포에 Kamal을 성공적으로 활용하고 있었기에, Kamal Proxy를 통한 HTTPS/SSL 통합이 간편하다는 이점을 고려하여 Bugsink 배포에도 Kamal을 적용하기로 결정했습니다. 이 가이드는 Sentry의 대안으로 Bugsink를 선택하고, Kamal을 사용하여 안정적이고 비용 효율적인 오류 추적 시스템을 구축하는 전반적인 과정을 상세히 설명합니다.

Kamal을 이용한 Bugsink 배포는 몇 가지 핵심 단계를 거칩니다.

1. Kamal 초기 설정

Kamal 배포를 시작하기 위해 먼저 프로젝트를 초기화합니다.

  • bundle initbundle add kamal (Kamal 2 이상 버전 권장)

  • kamal init 명령으로 기본 설정 파일을 생성

  • .env 파일을 생성하고 .gitignore, .dockerignore에 추가하여 민감 정보 노출 방지

2. 비밀 정보 관리

Kamal에서 비밀 정보를 관리하는 두 가지 주요 방법이 있습니다.

  • 가장 간단한 방법: .kamal/secrets 파일에 직접 하드코딩

  • 더 안전한 방법: .env 파일에 변수를 정의하고 dotenv kamal 명령으로 실행

    • .kamal/secrets 예시: KAMAL_REGISTRY_PASSWORD=$KAMAL_REGISTRY_PASSWORD SECRET_KEY=$SECRET_KEY CREATE_SUPERUSER=$CREATE_SUPERUSER
    • 실제 값은 .env 파일에 설정합니다.

3. Docker Registry 설정

Docker 이미지를 저장할 레지스트리가 필요합니다.

  • GitLab은 무료 레지스트리를 제공하며, read_repositorywrite_repository 권한을 가진 액세스 토큰을 생성하여 KAMAL_REGISTRY_PASSWORD로 사용합니다.

4. Dockerfile 생성

Kamal은 “App” 모드에서 로컬 Dockerfile을 필요로 합니다.

  • 간단한 Dockerfile 예시: dockerfile FROM bugsink/bugsink:latest # 특정 버전 사용 시: FROM bugsink/bugsink:1.61

  • 원격 이미지를 사용할 수도 있으나, Kamal이 이미지를 찾도록 서비스 레이블을 수동으로 추가해야 하므로 로컬 Dockerfile이 더 편리합니다.

5. Kamal 설정 파일 (config/deploy.yml)

config/deploy.yml 파일은 Bugsink 배포의 핵심 설정입니다.

  • service: bugsink

  • image: YourUserName/bugsink (GitLab Registry 경로)

  • volumes: bugsink_storage:/app/storage (데이터 영속성을 위한 볼륨)

  • servers: web 서버의 IP 주소 지정 (예: 1.2.3.4)

  • proxy:
    • ssl: true (HTTPS 활성화)
    • host: bugsink.YourCompany.com (DNS 레코드가 웹 서버를 가리키는지 확인, Let’s Encrypt 인증서 발급)
    • app_port: 8000
    • healthcheck: path: /, interval: 2
  • env:
    • clear: PORT: 8000, DATABASE_PATH, BEHIND_HTTPS_PROXY: 'true', SECURE_PROXY_SSL_HEADER: 'https', BASE_URL, SITE_TITLE, ALLOWED_HOSTS: '*'
    • secret: SECRET_KEY, CREATE_SUPERUSER (.env.kamal/secrets에 설정)
  • registry: server: registry.gitlab.com, username, password (KAMAL_REGISTRY_PASSWORD)

  • builder: arch: amd64

6. 배포 및 재부팅

  • 모든 설정이 완료되면 Git 커밋을 생성하고 dotenv kamal deploy 명령으로 배포합니다.

  • 환경 변수 변경 후 앱을 재부팅하려면 dotenv kamal app boot --version=SHAOFYOURGITCOMMIT 명령을 사용합니다.

결론

이 가이드는 Sentry의 대안으로 Bugsink를 선택하고 Kamal을 활용하여 안정적이고 비용 효율적인 오류 추적 시스템을 구축하는 방법을 제시합니다. Kamal의 간소화된 배포 프로세스와 HTTPS/SSL 통합 기능을 통해 개인 프로젝트에서도 전문적인 수준의 모니터링 환경을 손쉽게 구현할 수 있습니다. 이는 개발자가 핵심 개발에 집중하면서도 서비스의 안정성을 확보할 수 있도록 돕는 실용적인 접근 방식입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!