Redmine(레드마인) 설치부터 실무 활용까지 — 오픈소스 프로젝트 관리 시스템 구축 가이드

Redmine은 무료로 직접 서버에 설치해 운영할 수 있는 오픈소스 프로젝트 관리 및 이슈 추적 시스템입니다. 개발자의 버그 관리 도구로 출발했지만, 지금은 제조업의 설비 개선, 품질관리, 신제품 개발, IT 시스템 운영 등 다양한 업무에 활용할 수 있습니다.

특히 Excel과 이메일, 메신저에 흩어진 업무를 하나의 시스템으로 통합하려는 중소기업에 유용합니다. 누가 어떤 일을 맡았는지, 마감일은 언제인지, 무엇 때문에 지연되는지를 체계적으로 관리할 수 있기 때문입니다.

이번 글에서는 Docker를 이용한 Redmine 설치를 중심으로 프로젝트 설정, 사용자 권한, 이슈 관리, 간트 차트, REST API 자동화, 제조업 활용 사례까지 실무 관점에서 살펴보겠습니다.

1. Redmine이란 무엇인가?

Redmine은 Ruby on Rails 기반의 웹 프로젝트 관리 소프트웨어입니다. 브라우저에서 접속하며, 프로젝트별로 사용자와 업무를 관리할 수 있습니다.

주요 기능은 다음과 같습니다.

기능활용 목적
프로젝트 관리개발·품질·설비·연구과제 관리
이슈 추적작업 요청, 오류, 개선사항 관리
간트 차트시작일·완료일 및 일정 확인
캘린더업무 일정 확인
위키업무 매뉴얼, 기술 문서 공유
파일 첨부보고서, 사진, 설계 자료 보관
역할 및 권한관리자·담당자·조회자 권한 분리
REST API다른 시스템과 데이터 연동

Redmine은 별도 상용 라이선스 비용 없이 자체 서버에 구축할 수 있습니다. 다만 서버 운영, 보안, 백업, 유지보수 비용은 고려해야 합니다.

2026년 10월 기준 최신 안정 버전은 Redmine 7.0.2이며, 6.1.5도 보안 및 버그 수정 지원을 받는 안정 버전입니다. Redmine+1

2. Redmine 시스템 구성 이해하기

사용자

PC · 노트북 · 모바일 브라우저

Redmine 웹 서버

프로젝트 · 이슈 · 간트 차트 · 위키 · API

PostgreSQL

업무 및 사용자 데이터

파일 저장소

첨부파일 및 자료

Redmine은 데이터베이스에 업무 정보를 저장하고 별도의 파일 저장소에 첨부파일을 보관합니다. 따라서 백업할 때는 데이터베이스와 첨부파일을 모두 관리해야 합니다.

3. Redmine 설치 방법 비교

설치 방식장점추천 환경
Docker Compose빠른 구축, 이식성, 버전 관리개인·기업 대부분
Ubuntu 직접 설치세밀한 설정 가능Linux 운영 경험자
Windows + Docker Desktop로컬 테스트가 편리개인 학습
가상머신 설치서버 단위 격리사내 가상화 인프라

이번에는 유지보수가 편리한 Docker Compose 방식을 사용하겠습니다.

4. Docker Compose로 Redmine 설치하기

Ubuntu 서버를 기준으로 설명하지만 Docker Desktop이 설치된 Windows에서도 유사하게 적용할 수 있습니다.

4-1. 설치 준비

서버에는 Docker Engine과 Docker Compose 플러그인이 설치되어 있어야 합니다.

학습용으로는 2vCPU, RAM 4GB 정도부터 시작할 수 있지만, 실제 필요한 자원은 사용자 수, 첨부파일 크기, 플러그인, 동시 접속량에 따라 달라집니다.

프로젝트 폴더를 만듭니다.

mkdir -p ~/redmine-server
cd ~/redmine-server

4-2. 환경변수 파일 생성

.env 파일을 생성합니다.

POSTGRES_PASSWORD=replace_with_strong_password
REDMINE_SECRET_KEY_BASE=replace_with_random_secret

Secret 값은 다음 명령으로 생성할 수 있습니다.

openssl rand -hex 64

생성한 값을 REDMINE_SECRET_KEY_BASE에 입력합니다. 데이터베이스 암호도 별도로 강력하게 설정합니다.

.env 파일은 Git 저장소에 올리지 않고 접근 권한을 제한해야 합니다.

4-3. docker-compose.yml 작성

services:
  db:
    image: postgres:17
    restart: unless-stopped
    environment:
      POSTGRES_DB: redmine
      POSTGRES_USER: redmine
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U redmine -d redmine"]
      interval: 10s
      timeout: 5s
      retries: 10

  redmine:
    image: redmine:7.0.2
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      REDMINE_DB_POSTGRES: db
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: ${POSTGRES_PASSWORD}
      REDMINE_SECRET_KEY_BASE: ${REDMINE_SECRET_KEY_BASE}
    volumes:
      - redmine_files:/usr/src/redmine/files

volumes:
  postgres_data:
  redmine_files:

Redmine 이미지는 공식 Docker 이미지에서 제공하는 7.0.2 버전을 사용했습니다. 실무 환경에서는 latest보다 검증한 버전을 명시하는 것이 변경 관리에 유리합니다. Docker Hub

여기서는 보안을 위해 127.0.0.1에만 포트를 연결했습니다. 다른 PC에서 접속하려면 Nginx 또는 Caddy 같은 리버스 프록시와 HTTPS를 구성하거나 사내 VPN을 이용하는 것이 좋습니다.

4-4. 컨테이너 실행

docker compose up -d

실행 상태를 확인합니다.

docker compose ps

로그도 확인합니다.

docker compose logs -f redmine

정상 실행 후 서버에서 다음 주소에 접속합니다.

http://localhost:3000

초기 관리자 계정은 일반적으로 admin / admin입니다. 최초 로그인 후 반드시 비밀번호를 변경하고, 기본 계정의 보안 설정을 확인해야 합니다.

5. Redmine 초기 설정

설치가 완료되었다면 바로 프로젝트를 만들기보다 먼저 기본 환경을 정리하는 것이 좋습니다.

관리자 메뉴에서 다음을 설정합니다.

  • 기본 언어와 시간대
  • 사용자 등록 정책
  • 프로젝트 공개 여부
  • 이메일 알림용 SMTP
  • 이슈 유형(Tracker)
  • 이슈 상태와 Workflow
  • 역할별 권한
  • REST API 활성화 여부

특히 사내 시스템에서는 익명 사용자에게 프로젝트 정보가 노출되지 않도록 권한을 확인해야 합니다.

6. 첫 번째 프로젝트 만들기

예를 들어 자동차 부품 제조업체에서 고무 사출공정 품질개선 프로젝트를 진행한다고 가정하겠습니다.

프로젝트 이름은 다음과 같이 설정할 수 있습니다.

프로젝트명:
고무 사출공정 불량률 개선

프로젝트 식별자:
rubber-quality-2026

목표:
불량률 감소 및 공정 안정화

참여 부서:
생산기술팀
품질관리팀
제조팀
설비보전팀

프로젝트를 생성한 후 이슈 추적, 간트 차트, 위키, 파일 등의 모듈을 활성화합니다.

이슈 유형(Tracker) 설계

업무 성격에 따라 Tracker를 구분하면 보고서 작성과 분석이 쉬워집니다.

Tracker사용 예
업무일반 작업 및 실행 계획
품질문제불량 발생 및 원인 조사
설비개선설비 수리 및 개선 요청
개발과제신규 기술 및 프로그램 개발
변경요청공정조건·설계·시스템 변경

Redmine의 기본 Tracker를 그대로 사용할 수도 있지만 조직의 업무 언어에 맞춰 변경하는 것이 현장 정착에 도움이 됩니다.

7. 이슈 등록부터 완료까지

Redmine의 핵심 단위는 **이슈(Issue)**입니다.

이슈는 반드시 소프트웨어 오류만 의미하지 않습니다. 해야 할 일, 문제가 발생한 사건, 변경 요청, 개선 과제 모두 이슈로 관리할 수 있습니다.

예를 들어 다음과 같이 등록합니다.

품질 개선 이슈 예시

진행 중

고무 제품 외관 기포 불량 원인 분석

담당 부서

품질관리팀

우선순위

높음

시작일

2026-10-26

완료 목표

2026-11-06

주요 작업

  • 불량 샘플 수집 및 사진 첨부
  • 원재료 LOT 및 공정조건 확인
  • 금형 온도·가류시간 분석
  • 개선조건 시험 및 결과 검증

작업이 진행되면 담당자는 댓글과 파일을 추가하고 상태를 변경합니다.

예를 들어 다음과 같은 Workflow를 설계할 수 있습니다.

신규

검토

진행

검증

완료

예시 워크플로입니다. 실제 상태 전환 권한은 관리자 설정에서 정의합니다.

이 방식의 장점은 업무를 단순히 등록하는 데서 끝내지 않고 누가 언제 무엇을 변경했는지 이력으로 남길 수 있다는 것입니다.

8. 간트 차트로 일정 관리하기

Redmine은 프로젝트의 작업 시작일과 완료일을 기반으로 간트 차트를 제공합니다.

예를 들어 다음과 같은 프로젝트 일정이 있다고 가정하겠습니다.

고무 사출공정 품질개선 일정 예시

11월 1~4주

불량 데이터 수집

원인 분석

개선조건 시험

결과 검증

일정 구조를 설명하기 위한 예시이며 실제 Redmine 화면은 아닙니다.

간트 차트의 가장 큰 장점은 프로젝트 지연을 시각적으로 파악할 수 있다는 것입니다.

다만 Redmine 기본 간트 차트를 Microsoft Project와 같은 전문 일정 최적화 도구로 생각해서는 안 됩니다. 복잡한 자원 배분이나 고급 일정 계산은 추가 도구 또는 플러그인이 필요할 수 있습니다.

9. Redmine을 제조업에 활용하는 방법

제조업에서는 업무 정보가 여러 시스템에 흩어져 있는 경우가 많습니다.

MES에는 생산실적이 있고, ERP에는 구매 및 원가 데이터가 있으며, PLM에는 도면과 설계변경 정보가 있습니다.

그런데 이 시스템 사이에서 발생하는 개선 업무와 협업 이력은 이메일이나 Excel에 남아 있는 경우가 많습니다.

Redmine은 바로 그 영역을 보완할 수 있습니다.

MES

생산·불량

ERP

구매·원가

PLM

도면·변경

Redmine — 개선 업무 및 협업 관리

담당자 지정 · 일정 · 승인 · 이력 · 결과 보고

실무 적용 사례를 정리하면 다음과 같습니다.

분야활용 예
품질관리고객 클레임, 8D 개선조치, 불량 원인 분석
설비보전고장 접수, 예방보전 개선과제
생산기술Cycle Time 개선, 금형 개선
연구개발시제품 평가, 설계 변경 요청
IT 운영MES 오류, ERP 개선 요청
경영혁신부서별 개선과제, 실행 일정

중요한 점은 Redmine이 MES나 PLM 자체를 대체하는 시스템이 아니라는 것입니다. 전문 시스템에 있는 원본 데이터는 그대로 유지하고, Redmine에서 업무와 조치 이력을 연결하는 방식이 더 현실적입니다.

10. Redmine REST API로 자동화하기

Redmine은 REST API를 제공합니다. 프로젝트, 이슈, 사용자, 작업시간 등의 데이터를 JSON 또는 XML 형식으로 조회하거나 변경할 수 있습니다. Redmine

관리자 메뉴에서 REST API를 활성화한 후 개인 계정의 API 키를 발급받으면 됩니다.

Python으로 이슈 자동 등록

다음 예시는 품질관리 시스템에서 불량이 발생했을 때 Redmine에 개선 업무를 등록하는 기본 코드입니다.

import osimport requestsREDMINE_URL = os.environ["REDMINE_URL"].rstrip("/")API_KEY = os.environ["REDMINE_API_KEY"]headers = {    "X-Redmine-API-Key": API_KEY,    "Content-Type": "application/json",}payload = {    "issue": {        "project_id": "rubber-quality-2026",        "subject": "사출공정 외관 불량 개선 요청",        "description": (            "불량 유형: 기포\n"            "발생 공정: 고무 사출\n"            "조치 요청: 원인 분석 및 개선"        ),        "priority_id": 4    }}response = requests.post(    f"{REDMINE_URL}/issues.json",    headers=headers,    json=payload,    timeout=15)response.raise_for_status()print(response.json())

실행 전에 다음과 같이 환경변수를 설정합니다.

export REDMINE_URL="https://redmine.example.com"
export REDMINE_API_KEY="YOUR_API_KEY"

project_id는 실제 생성한 프로젝트 식별자 또는 유효한 프로젝트 ID로 변경해야 합니다. priority_id 역시 서버 설정에 따라 확인이 필요합니다.

Redmine의 이슈 생성 API는 POST /issues.json을 사용하며, 요청 본문에는 issue 객체가 들어갑니다. Redmine

이 구조를 활용하면 MES의 불량 발생 이벤트를 받아 Redmine 이슈를 자동 생성하는 연동 프로그램을 개발할 수 있습니다.

11. AI와 Redmine을 연결하면?

Redmine의 데이터를 AI와 연결하면 업무관리 시스템을 한 단계 확장할 수 있습니다.

예를 들어 다음과 같은 구성이 가능합니다.

Redmine 이슈 및 작업 이력

Python API 연동 서버

LLM / AI 분석

요약 · 분류 · 위험 분석 · 유사 이슈 검색

주간 업무 보고서 / 개선 제안

대표적인 AI 활용 시나리오는 다음과 같습니다.

  • 주간 보고서 자동 작성: 완료·지연·진행 중인 이슈를 요약합니다.
  • 이슈 자동 분류: 등록된 내용을 분석해 품질, 설비, 개발 등으로 분류합니다.
  • 유사 장애 검색: 과거 유사한 이슈와 해결 방법을 찾아줍니다.
  • 지연 위험 예측: 마감일, 업무량, 과거 지연 이력을 활용해 위험 신호를 분석합니다.
  • 기술 문서 검색: 위키와 이슈 이력을 연결해 업무 지식을 검색합니다.

다만 AI가 생성한 결과는 검토 후 사용해야 합니다. 특히 고객 정보, 설계 도면, 품질 데이터 등을 외부 AI 서비스에 전송할 때는 회사의 정보보호 정책과 데이터 처리 조건을 먼저 확인해야 합니다.

12. 백업과 운영 관리

Redmine을 실무에서 운영할 때 가장 중요한 것은 화려한 플러그인보다 백업과 복구입니다.

앞서 구성한 Docker 환경에서는 PostgreSQL 데이터와 Redmine 첨부파일을 별도 볼륨에 저장합니다.

데이터베이스 백업

docker compose exec -T db \
  pg_dump -U redmine -d redmine \
  > redmine_backup.sql

첨부파일 백업

docker run --rm \
  -v redmine-server_redmine_files:/data:ro \
  -v "$PWD":/backup \
  alpine \
  tar czf /backup/redmine_files.tar.gz -C /data .

위 명령의 볼륨 이름은 Docker Compose 프로젝트 이름에 따라 달라집니다. docker volume ls로 실제 이름을 확인해야 합니다.

실무에서는 백업 파일을 같은 서버에만 두지 말고 별도 저장소로 복제해야 합니다. 또한 데이터베이스와 첨부파일 간 일관성을 확보하기 위해 백업 시점의 쓰기 작업을 제어하고 정기적인 복구 테스트를 수행하는 것이 좋습니다.

운영 시 점검 항목

Redmine 운영 점검표

0/8 완료HTTPS와 사내 접근제어 구성기본 관리자 비밀번호 변경불필요한 익명 접근 차단정기적인 Redmine 및 플러그인 업데이트데이터베이스·첨부파일 백업백업 복구 테스트사용자별 최소 권한 적용로그·디스크 사용량 모니터링

13. Redmine 도입 시 실패하지 않는 방법

Redmine을 도입하면서 흔히 발생하는 실수는 처음부터 모든 부서의 업무를 통합하려는 것입니다.

처음에는 기능이 많을수록 좋아 보입니다. 하지만 업무 유형이 지나치게 많아지고 상태와 권한이 복잡해지면 사용자들이 시스템을 사용하기 어려워집니다.

저는 다음과 같은 단계적 접근을 권합니다.

1단계 — 시범 프로젝트

한 부서에서 실제 업무 20~30건을 등록하고 처리합니다. 담당자, 마감일, 상태를 관리하는 기본 기능부터 정착시킵니다.

2단계 — 표준 업무 흐름

Tracker, 상태, 우선순위, 권한을 정리합니다. 보고서 양식과 이슈 등록 기준도 통일합니다.

3단계 — 부서 확대

품질관리, 생산기술, IT 운영 등으로 적용 범위를 확대합니다.

4단계 — API 연동

MES, ERP, PLM 등과 필요한 데이터만 연동합니다.

5단계 — 자동화 및 AI 활용

반복적인 이슈 등록, 주간 보고서, 지연 위험 분석 등을 자동화합니다.

시스템 구축 자체보다 중요한 것은 직원들이 자연스럽게 업무를 등록하고 진행 상태를 갱신하는 습관을 만드는 것입니다.

14. Redmine의 장점과 한계

장점한계
오픈소스, 자체 호스팅 가능서버 운영 인력이 필요
유연한 이슈 및 권한 설정초기 설정에 학습 시간 필요
간트 차트, 위키, 이력 관리최신 SaaS에 비해 UI가 익숙하지 않을 수 있음
REST API 연동 가능고급 자동화는 별도 개발 필요
플러그인으로 기능 확장버전별 호환성 검증 필요
데이터 직접 관리 가능백업과 보안을 직접 책임져야 함

Redmine은 특히 회사 내부 데이터 관리와 업무 프로세스의 자유로운 설계가 중요한 조직에 적합합니다.

반면 서버를 운영할 인력이 전혀 없고 별도 구축 없이 바로 사용해야 하는 조직이라면 클라우드형 프로젝트 관리 도구와도 비교해 보는 것이 좋습니다.

마무리 — Redmine은 업무 이력을 회사의 자산으로 만드는 도구

많은 회사에서 프로젝트가 끝나면 중요한 지식도 함께 사라집니다.

문제를 해결했던 직원이 부서를 옮기고, 메신저 대화가 묻히고, Excel 파일은 어느 폴더에 있는지 찾기 어려워집니다.

Redmine의 진정한 가치는 이런 경험을 조직의 기록으로 남기는 데 있습니다.

어떤 문제가 발생했고, 누가 담당했으며, 어떤 조치를 취했고, 결과는 어땠는지를 하나의 흐름으로 관리할 수 있습니다.

여기에 REST API를 통해 MES·ERP·PLM을 연결하고, AI를 이용해 과거 업무를 검색하거나 보고서를 자동 작성한다면 단순한 프로젝트 관리 도구를 넘어 기업의 업무 지식과 개선 활동을 축적하는 플랫폼으로 발전시킬 수 있습니다.

처음부터 거대한 시스템을 만들 필요는 없습니다. Docker로 Redmine을 설치하고, 실제 프로젝트 하나를 등록해 보는 것부터 시작하면 됩니다.

공식 자료 및 참고 링크