# Docker로 배포하기 도커 사용을 권장합니다. 이미지는 이 저장소의 `Dockerfile`로 빌드하며, 프론트엔드 빌드도 이미지 빌드 안에서 함께 이루어집니다. 서버에 Node.js를 따로 설치할 필요가 없습니다. ## 빠른 시작 ```bash git clone https://git.dodo-lab.kr/blue2rai/DodoTransfer.git cd DodoTransfer cp .env.example .env # 두 비밀번호를 정해서 .env에 적습니다 docker compose -f compose.example.yaml up -d --build ``` [compose.example.yaml](../compose.example.yaml)은 이 프로젝트의 운영 예시입니다. 서버 환경에 맞게 복사해서 고쳐 쓰세요. 중요한 부분은 다음과 같습니다. | 항목 | 설명 | |---|---| | `user: "1000:1000"` | 데이터 폴더 소유자의 uid/gid와 같아야 합니다. | | `ports: "127.0.0.1:3377:3000"` | 외부에 직접 열지 않고 같은 서버의 nginx만 접근하게 합니다. | | `env_file: .env` | 비밀번호는 compose 파일이 아니라 `.env`에 둡니다 (`.env`는 git에 올라가지 않습니다). | | `volumes: /data` | 업로드한 파일과 관리자 설정(이름, 로고)이 모두 여기에 저장됩니다. 컨테이너를 다시 만들어도 유지됩니다. | ## 하위 경로(`/sharing`)로 서비스하기 `PSITRANSFER_BASE_URL: "/sharing"`으로 설정하면 모든 주소가 `/sharing/` 아래로 옮겨갑니다. nginx는 경로를 그대로 넘기면 됩니다 (경로를 잘라내지 않습니다). ```nginx location /sharing/ { proxy_pass http://127.0.0.1:3377; proxy_http_version 1.1; proxy_buffering off; proxy_request_buffering off; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 10m; # 파일은 5MB 조각으로 올라갑니다 } ``` ## 상태 확인 이미지에는 `HEALTHCHECK`가 들어 있습니다. 로그인이 필요 없는 `/healthz`가 `ok`로 답하면 정상입니다. ```bash docker compose -f compose.example.yaml ps # STATUS가 healthy curl http://127.0.0.1:3377/sharing/healthz # ok ``` ## 업데이트 ```bash git pull docker compose -f compose.example.yaml up -d --build ``` 데이터(`/data`)는 그대로 유지됩니다. 이전 PsiTransfer가 저장한 파일과 비밀번호도 그대로 사용할 수 있습니다. (이전에 올린 파일에는 썸네일이 없어서 아이콘으로 표시됩니다.) ## 환경변수 모든 설정은 `PSITRANSFER_` 접두사의 환경변수로 바꿀 수 있습니다. 목록은 [configuration.md](configuration.md)를 참고하세요.