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:
syskiller
2026-08-26 09:54:35 +09:00
parent c3c91d4573
commit 9ebc24d681
5 changed files with 113 additions and 10 deletions
+37 -10
View File
@@ -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: