elsa in mac

깔끔한 Web Interface를 지원하는 이미지 앱 - ImageMagick WebGUI (docker - selfhosted) 본문

Linux

깔끔한 Web Interface를 지원하는 이미지 앱 - ImageMagick WebGUI (docker - selfhosted)

elsa in mac 2025. 12. 10. 21:41

 

본 포스트는 Fedora Linux를 기준으로 작성되었습니다.

이번 포스트에서는 Docker Container로 구동할 수 있는 있는 Self-Hosted 이미지 편집 앱인 ImageMagick WebGUI를 소개 합니다. 최근에 Github에 등록된 따끈한 프로젝트 입니다.

Web Interface이므로 웹 브라우저를 통해 사용할 수 있으며, 무엇보다 인터페이스가 깔끔하고 이쁩니다. 여기에 image 편집에 요구되는 대부분의 주요 기능들을 지원합니다. resize, crop, type 변환, filtering, Effect(Blur, Sharpen, Grayscale, Sepia, Brightness, Contrast, Saturation) , 워터마킹과 text 추가, rotation 및  flip 등을 지원하고, 여러 image 파일을 한꺼번에 처리할 수 있는 Batch Processing을 지원합니다. 

Light / Drak theme를 지원하고 배경 제거, Auto Enhance 및 Smart Upscaling 에서는 AI를 지원하여, 빠르면서도 준수한  품질의 결과를 얻을 수 있습니다. 

Test에 사용된 원본 이미지
Auto Enhance 기능을 반영한 결과물

 2배, 4배로 upscaling을 처리하는데는 LANCZOS 알고리즘을 사용합니다. 

실제 구동 예

 

설치 방법


구성은 Next.js 기반의 WebInterface를 지원하는 Frontend와 FastAPI REST API를 위한 Backend, Database는 PostgreSQL 을 사용하고, Queue System으로 Redis를 사용합니다.  설치는 Docker를 이용하는 방법과 Local 에서 빌드하고 실행할 수 있는 방법이 있는데, Host에 설치하는 것은 여러가지 Dependency들을 남길 수 있으니 Docker 사용을 추천합니다. 

설치는 Docker Image를 사용하는 방법과 source로 부터 Docker Image와 Container를 빌드하는 방법 두 가지 중 선택하여 설치할 수 있습니다. 

첫번째 방법은 Docker Image를 사용하는 것으로 방법은 다음과 같습니다. 

# 프로젝트 디렉토리 생성 
mkdir imagemagick-webgui && cd imagemagick-webgui

# docker-compose file 다운로드 
curl -O https://raw.githubusercontent.com/PrzemekSkw/imagemagick-webui/main/docker-compose.example.yml

# 파일명 변경 
mv docker-compose.example.yml docker-compose.yml

#  Docker Image 설치 및 Container 실행 
docker compose up -d

 

두번 째 방법은 source로 Docker Image를 빌드하고 설치하는 방법 입니다.  

git clone https://github.com/PrzemekSkw/imagemagick-webui.git
cd imagemagick-webgui
cp .env.example .env
docker compose up --build -d

팔자는 두 번째 방법을 사용했고, 빌드 및 설치 중에 특별한 문제는 발견되지 않았습니다. 한번에 매끄럽게 처리되었습니다. 위의 과정을 모두 마치면,  imagemagick-webgui 디렉토리내의 .env.example 파일을 .env 파일로 복사 합니다. 

.env 파일에서  우선 위의 스샷처럼 SECRET_KEY와 JWT_SECRET 만 임의의 문자열로 변경합니다. 

# ImageMagick WebGUI Environment Variables
# Copy this file to .env and modify as needed

# Security - CHANGE THESE IN PRODUCTION!
SECRET_KEY=<이 부분을 변경>
JWT_SECRET=<이 부분을 변경>

# Require login to use the app (true/false)
# false : 로그인 하지 않아도 사용할 수 있음. 
REQUIRE_LOGIN=false

# Allow new user registration (true/false)
# Set to false to prevent new signups (only admins can create users)
ALLOW_REGISTRATION=true

# Database
DATABASE_URL=postgresql://imagemagick:imagemagick@postgres:5432/imagemagick

# Redis
REDIS_URL=redis://redis:6379/0

# Google OAuth (optional - see README for setup instructions)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# Upload limits (업로드 이미지 크기)
MAX_UPLOAD_SIZE_MB=500   

# Default processing settings
DEFAULT_OUTPUT_FORMAT=webp
# 기본 이미지 퀄리티 : 100% 수정 
DEFAULT_QUALITY=100

# ImageMagick limits
IMAGEMAGICK_TIMEOUT=30
IMAGEMAGICK_MEMORY_LIMIT=2GB

# History retention (hours)
HISTORY_RETENTION_HOURS=24

 

lazydocker 에서 보면, 아래와 같이 3개의 container가 있는데, 이 3개를 모두 실행시키면 사용할 수 있습니다. 

Docker를 처음 사용히사는 분들을 위해 시작, 종료, 업데이트 명령은 다음과 같습니다.  터미널에서 명령을 내려 주면 됩니다.

# Container 실행 
docker compose start

# Container 중지 
docker compose stop 

# Container 업데이트 
docker compose up -d

 

개인적인 평가를 해 보자면, 배경 제거는 Image의 복잡도나 배경과 전경의 수준에 따라 호불호가 있을 것 같다는 생각 입니다.

배경 제거 실행 결과

배경 제거는 준수한 편이지만, 살짝 외각선이 뭉게지는 부분도 있습니다. AI 관련 기능은 향 후 각기 다른 AI Model로 변경할 수 있는 옵션이 생겼으면 좋겠다는 생각을 해 봅니다. 

공유하기 링크
Comments