feat: install.sh 원클릭 설치 스크립트 + Dockerfile 추가 (main.cjs 실제 파일 포함)
- Dockerfile: triliumnext/notes:latest에 번역+패치된 main.cjs를 구워 넣어 별도 bind-mount 없이 한국어 내장 이미지를 만듦 - install.sh: curl | bash 한 줄로 clone + build + up까지 처리 - 기존 bind-mount 방식은 docker-compose.bind-mount.yml.example로 유지 - 실제 빌드/실행/언어전환/컨테이너완전재생성까지 전부 테스트 완료
This commit is contained in:
@@ -9,35 +9,62 @@
|
||||
|
||||
## 포함된 파일
|
||||
|
||||
- `install.sh` — **원클릭 설치 스크립트**. 명령어 한 줄로 저장소를 내려받고, 한국어가
|
||||
내장된 이미지를 빌드해서 바로 실행시킵니다.
|
||||
- `Dockerfile` — `triliumnext/notes:latest` 위에 번역 파일과 패치된 `main.cjs`를
|
||||
구워 넣어서, 별도 bind-mount 없이 한국어가 기본 내장된 이미지를 만듭니다.
|
||||
- `docker-compose.yml` — 위 `Dockerfile`로 빌드해서 바로 띄우는 compose 파일
|
||||
(`install.sh`가 내부적으로 이걸 사용합니다).
|
||||
- `translation.json` — 클라이언트(브라우저) UI 문자열, 1,712개 키, 100% 번역 완료.
|
||||
- `server.json` — 서버 문자열, 283개 키, 100% 번역 완료.
|
||||
- `main.cjs` — **이미 패치가 적용된, 바로 쓸 수 있는 서버 번들** (`triliumnext/notes:latest`,
|
||||
빌드일 2025-06-07, appVersion 0.95.0 기준). 아래 설치 방법 2번을 직접 실행할 필요 없이
|
||||
이 파일로 바로 bind-mount 하면 됩니다.
|
||||
빌드일 2025-06-07, appVersion 0.95.0 기준).
|
||||
- `patch_main_cjs.js` — 위 `main.cjs`를 만들어낸 패치 스크립트. 다른 버전의 이미지를 쓰거나
|
||||
이미지가 업데이트된 경우, 이 스크립트를 새 원본 `main.cjs`에 다시 돌려서 직접 패치된
|
||||
파일을 만들어야 합니다 (왜 이게 필요한지는 스크립트 상단 주석 참고).
|
||||
- `docker-compose.yml.example` — 아래 설치 방법을 그대로 반영한 예시 compose 파일.
|
||||
- `docker-compose.bind-mount.yml.example` — 이미 떠 있는 공식 이미지 컨테이너에 파일만
|
||||
bind-mount로 추가하고 싶을 때 쓰는 예시 (이미지를 새로 빌드하지 않는 방식).
|
||||
|
||||
`triliumnext/notes:latest` (빌드일 2025-06-07, appVersion 0.95.0) 기준으로 테스트했습니다.
|
||||
`main.cjs` 안의 변수명은 전부 난독화(minify)되어 있고 **빌드마다 이름이 바뀔 수 있습니다** —
|
||||
`patch_main_cjs.js`를 새 이미지에 돌렸을 때 `[skip]`이 출력되면, 스크립트가 찾는 문자열
|
||||
패턴이 그 빌드에서 바뀐 것이니 새 빌드에서 같은 패턴을 다시 찾아 스크립트를 갱신해야 합니다.
|
||||
|
||||
## 설치 방법 (빠른 길 — 이미지 버전이 같다면)
|
||||
## 설치 방법 — 명령어 한 줄 (추천)
|
||||
|
||||
이 저장소의 `main.cjs`는 이미 패치가 끝난 파일입니다. `triliumnext/notes:latest`
|
||||
(appVersion 0.95.0, 빌드일 2025-06-07)를 그대로 쓴다면 아래 1, 3번만 하면 됩니다.
|
||||
Docker와 Docker Compose 플러그인만 설치되어 있으면 됩니다:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://gitea.itosm.co.kr/syskiller/triliumnext-korean-patch/raw/branch/main/install.sh | bash
|
||||
```
|
||||
|
||||
기본적으로 `./trilium-korean` 폴더에 저장소를 내려받고, 한국어가 내장된 이미지를 빌드해서
|
||||
`http://localhost:8082`로 띄웁니다. 포트를 바꾸고 싶으면:
|
||||
|
||||
```bash
|
||||
TRILIUM_KO_PORT=9000 curl -fsSL https://gitea.itosm.co.kr/syskiller/triliumnext-korean-patch/raw/branch/main/install.sh | bash
|
||||
```
|
||||
|
||||
설치가 끝나면 브라우저로 접속해서 초기 비밀번호를 설정한 뒤, **옵션 → 언어 및 지역**에서
|
||||
"한국어"를 선택하고 페이지를 새로고침하면 됩니다 (본문 텍스트까지 전부 한국어로 바뀌려면
|
||||
새로고침이 한 번 필요합니다 — 앱 자체의 동작이며 이 패치의 문제는 아닙니다).
|
||||
|
||||
업데이트하려면 같은 명령어를 같은 폴더에서 다시 실행하면 됩니다.
|
||||
|
||||
## 설치 방법 — 이미 떠 있는 컨테이너에 추가하고 싶은 경우
|
||||
|
||||
이미지를 새로 빌드하지 않고, 이미 쓰고 있는 공식 `triliumnext/notes` 컨테이너에 파일만
|
||||
얹고 싶다면:
|
||||
|
||||
1. **번역 파일 + `main.cjs`를 `docker-compose.yml`에 bind-mount로 등록**
|
||||
(`docker cp`로만 넣지 말 것 — 아래 "문제 4" 참고):
|
||||
- `main.cjs` → `/usr/src/app/main.cjs`
|
||||
- `translation.json` → `/usr/src/app/public/translations/ko/translation.json`
|
||||
- `server.json` → `/usr/src/app/assets/translations/ko/server.json`
|
||||
2. `docker-compose.yml.example`을 참고해서 그대로 적용, 컨테이너 시작.
|
||||
3. 앱 안에서 **옵션 → 언어 및 지역**에서 "한국어" 선택.
|
||||
2. `docker-compose.bind-mount.yml.example`을 참고해서 그대로 적용, 컨테이너 재시작.
|
||||
3. 앱 안에서 **옵션 → 언어 및 지역**에서 "한국어" 선택 후 새로고침.
|
||||
|
||||
## 설치 방법 (다른 이미지 버전을 쓰는 경우)
|
||||
## 설치 방법 — 다른 이미지 버전을 쓰는 경우 (직접 패치)
|
||||
|
||||
이미지 버전이 다르면 `main.cjs`의 난독화된 변수명/위치가 달라 이 저장소의 `main.cjs`가
|
||||
그대로 안 맞을 수 있습니다. 이 경우 직접 패치해야 합니다:
|
||||
@@ -54,7 +81,7 @@
|
||||
`[skip]`이 출력되면 스크립트가 찾는 문자열 패턴이 그 빌드에서 바뀐 것이니, 새 빌드에서
|
||||
같은 패턴을 다시 찾아 스크립트를 갱신해야 합니다 (아래 "빌드마다 달라짐" 참고).
|
||||
3. **패치된 `main.cjs`를 `docker-compose.yml`에서 원본 위치에 bind-mount** —
|
||||
`docker-compose.yml.example` 참고:
|
||||
`docker-compose.bind-mount.yml.example` 참고:
|
||||
```yaml
|
||||
services:
|
||||
trilium:
|
||||
|
||||
Reference in New Issue
Block a user