CVAT Installation
Installation
github: https://github.com/opencv/cvat
cvat는 cvat.ai 에서 바로 사용할 수 있지만, 무료플랜은 저장공간, 그룹, 멤버 등에 대해서 제한적입니다.
따라서 self-hosting 할 수 있는 서버가 있다면 해당 서버(local) 에 설치하여 운영하는것이 좋습니다.
cvat를 local에 설치하는 가장 쉬운 방법은 docker compose를 사용하는 것입니다.
local에 docker (docker-compose) 가 설치되어 있고, 설치를 진행하는 유저가 docker 권한이 있어야 합니다.
1. Clone CVAT sources
cvat 설치를 위해 소스코드를 github에서 clone합니다.
git clone https://github.com/opencv/cvat
cd cvat
2. Set IP address
다른 환경(서버 등) 에서 cvat에 접근하려면 ip address를 설정해주어야 합니다. 기본(localhost) 설정이면 해당 서버에서만 cvat에 접근할 수 있습니다.
예를 들어 도메인이 cvat.example.com
인 서버에서 서버를 실행한다고 하면 export CVAT_HOST=cvat.example.com
와 같이 사용합니다.
export CVAT_HOST=<your-ip-address>
3.Run docker compose
미리 작성되어있는 docker compose를 실행시킵니다.
필요한 docker image들이 다운로드 되며, cvat_db
, cvat_redis
, cvat_server
, etc...등 docker compose 에 정의되어있는 모든 service가 오류 없이 실행되는것을 확인해야 합니다.
docker compose up -d
cvat server는 8080 port를 기본으로 사용합니다. 만약 해당 포트가 이미 사용중이거나 다른 포트를 사용해야 할 경우 docker-compose.yaml
를 수정해줍니다.
다른 포트는 건드리지 말고, traefik
(load balancer) 에서만 수정하면 완료됩니다.
traefik:
image: traefik:v2.9
container_name: traefik
restart: always
command:
- '--providers.docker.exposedByDefault=false'
- '--providers.docker.network=cvat'
- '--entryPoints.web.address=:8080'
- '--providers.file.directory=/etc/traefik/rules'
# Uncomment to get Traefik dashboard
# - "--entryPoints.dashboard.address=:8090"
# - "--api.dashboard=true"
# labels:
# - traefik.enable=true
# - traefik.http.routers.dashboard.entrypoints=dashboard
# - traefik.http.routers.dashboard.service=api@internal
# - traefik.http.routers.dashboard.rule=Host(`${CVAT_HOST:-localhost}`)
ports:
- <PORT YOU WANT>:8080
- 8090:8090
4.Create superuser
정상적으로 cvat 서버가 실행되었을 경우 <host>:<port>
로 접속 시 cvat 페이지가 나타납니다.
해당 페이지에서 일반유저들은 Create an account 를 눌러서 계정 가입을 진행하면 되며,
superuser(admin) 은 아래의 명령어를 통해서 생성할 수 있습니다.
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
5. (optional) Server health check
아래의 명령어를 통해 cvat의 모든 service가 정상적으로 작동하고 있는지 간단하게 테스트 해볼수 있습니다.
docker exec -t cvat_server python manage.py health_check