mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-05 20:02:47 +01:00
123 lines
3.9 KiB
Markdown
123 lines
3.9 KiB
Markdown
# Vercel에 배포하기
|
|
|
|
[Vercel](https://vercel.com)은 정적 사이트를 가장 쉽게 배포할 수 있는 환경을 제공합니다.
|
|
|
|
## 원클릭 배포
|
|
|
|
[](https://vercel.com/new/clone?repository-url=https://github.com/alam00000/bentopdf)
|
|
|
|
## 수동 배포
|
|
|
|
### 1단계: 저장소 포크
|
|
|
|
[bentopdf/bentopdf](https://github.com/alam00000/bentopdf)를 GitHub 계정으로 포크합니다.
|
|
|
|
### 2단계: Vercel로 가져오기
|
|
|
|
1. [vercel.com/new](https://vercel.com/new)로 이동합니다
|
|
2. 포크한 저장소를 선택합니다
|
|
3. 프로젝트를 구성합니다.
|
|
|
|
| 설정 | 값 |
|
|
| ---------------- | --------------- |
|
|
| Framework Preset | Vite |
|
|
| Build Command | `npm run build` |
|
|
| Output Directory | `dist` |
|
|
| Install Command | `npm install` |
|
|
|
|
### 3단계: 환경 변수 (선택 사항)
|
|
|
|
필요한 경우 다음을 추가합니다.
|
|
|
|
| 변수 | 설명 |
|
|
| ----------------------- | --------------------------------------------------- |
|
|
| `SIMPLE_MODE` | 최소 UI를 사용하려면 `true`로 설정 |
|
|
| `VITE_BRAND_NAME` | 사용자 지정 브랜드 이름 ("BentoPDF" 대체) |
|
|
| `VITE_BRAND_LOGO` | `public/` 기준 로고 경로 (예: `images/my-logo.svg`) |
|
|
| `VITE_FOOTER_TEXT` | 사용자 지정 바닥글/저작권 텍스트 |
|
|
| `VITE_DEFAULT_LANGUAGE` | 기본 UI 언어 (예: `fr`, `de`, `es`) |
|
|
|
|
### 4단계: 배포
|
|
|
|
"Deploy"를 클릭하고 빌드가 끝날 때까지 기다립니다.
|
|
|
|
## 사용자 지정 도메인
|
|
|
|
1. 프로젝트 설정으로 이동합니다
|
|
2. "Domains"로 이동합니다
|
|
3. 사용자 지정 도메인을 추가합니다
|
|
4. 안내에 따라 DNS를 구성합니다
|
|
|
|
## 제한 사항
|
|
|
|
::: warning 대용량 파일
|
|
Vercel의 서버리스 함수에는 50MB 제한이 있습니다. BentoPDF는 정적 사이트이므로 영향을 받지 않아야 하지만, WASM 모듈은 용량이 큽니다(총 약 100MB). `/public` 폴더에서 제공되도록 하세요.
|
|
:::
|
|
|
|
## 문제 해결
|
|
|
|
### 빌드 시간 초과
|
|
|
|
빌드 시간이 초과되면 다음을 시도해 보세요.
|
|
|
|
```json
|
|
// vercel.json
|
|
{
|
|
"buildCommand": "npm run build",
|
|
"outputDirectory": "dist"
|
|
}
|
|
```
|
|
|
|
### 새로고침 시 404
|
|
|
|
SPA 라우팅을 위해 `vercel.json`을 추가합니다.
|
|
|
|
```json
|
|
{
|
|
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
|
|
}
|
|
```
|
|
|
|
### Word/ODT/Excel을 PDF로 변환이 작동하지 않음
|
|
|
|
LibreOffice WASM 변환에는 `SharedArrayBuffer`가 필요하며, 이를 위해 모든 페이지에 다음 응답 헤더가 있어야 합니다.
|
|
|
|
- `Cross-Origin-Embedder-Policy: require-corp`
|
|
- `Cross-Origin-Opener-Policy: same-origin`
|
|
|
|
미리 압축된 `.wasm.gz` 및 `.data.gz` 파일도 브라우저가 압축을 풀 수 있도록 `Content-Encoding: gzip`이 필요합니다.
|
|
|
|
`vercel.json`에 다음을 추가합니다.
|
|
|
|
```json
|
|
{
|
|
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
|
|
"headers": [
|
|
{
|
|
"source": "/(.*)",
|
|
"headers": [
|
|
{ "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
|
|
{ "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
|
|
{ "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
|
|
]
|
|
},
|
|
{
|
|
"source": "/libreoffice-wasm/soffice.wasm.gz",
|
|
"headers": [
|
|
{ "key": "Content-Type", "value": "application/wasm" },
|
|
{ "key": "Content-Encoding", "value": "gzip" }
|
|
]
|
|
},
|
|
{
|
|
"source": "/libreoffice-wasm/soffice.data.gz",
|
|
"headers": [
|
|
{ "key": "Content-Type", "value": "application/octet-stream" },
|
|
{ "key": "Content-Encoding", "value": "gzip" }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
확인하려면 DevTools 콘솔을 열고 `console.log(window.crossOriginIsolated)`를 실행하세요. `true`가 반환되어야 합니다.
|