원문 캡처 · github.com
원문 캡처 · github.com

Hold My Docs는 단일 Go 실행 파일로 운영하는 자체 호스팅 위키다. 페이지를 Markdown 파일로 저장하고 저장할 때마다 Git 커밋을 만들어, 변경 이력을 남기고 설정한 원격 저장소와 동기화할 수 있다.

읽기 전용 모드에서는 Git 토큰 없이 공개 문서 저장소를 복제해 열람하고 업데이트를 가져올 수 있다. 위키 영역별로 공개 범위, 탐색 메뉴, 외관과 페이지 생성 기본값을 설정하는 네임스페이스도 지원한다. 편집기에는 미리보기, 위키 링크, 백링크, Mermaid 다이어그램, 첨부 파일, 기록 및 되돌리기 기능이 있으며, 전체 페이지 검색도 제공한다. 운영자가 Apache Tika Server를 제공하면 PDF와 Office 첨부 파일도 로컬에서 키워드·시맨틱 검색할 수 있다.

사용자는 로컬 계정이나 OIDC 싱글 사인온으로 로그인한다. 접근 범위와 개인 액세스 토큰으로 사용자 및 도구의 권한을 제한할 수 있으며, MCP 서버를 통해 권한을 받은 에이전트가 일반 페이지를 읽고 쓸 수 있다. 첨부 파일 검색은 지정한 네임스페이스로 제한할 수 있다. 네임스페이스를 HMD 없이 실행되는 사이트로 내보내는 정적 내보내기 기능도 있다.

Docker Compose로 시작하려면 관리자 계정 정보를 설정하고 다음 명령을 실행한다.

sh
export HMD_ADMIN_USER=admin
export HMD_ADMIN_PASSWORD='use-a-unique-password-of-at-least-12-characters'
docker compose up -d
curl -f http://127.0.0.1:8080/_/ready

http://localhost:8080에서 초기 계정으로 로그인한 뒤에는 부트스트랩 환경 변수를 제거해야 한다. 기본 Compose 구성은 루프백에만 바인딩된다. Git 원격 저장소 동기화를 설정하려면 ./git_token.txt를 만들고 HMD_GIT_* 변수와 git_token 시크릿을 활성화해야 한다. 문서 검색은 HMD_DOCUMENT_SEARCH_TIKA_URL을 활성화하고 docker compose --profile documents up으로 실행한다. Tika는 비공개로 유지해야 한다.

바이너리를 직접 빌드하고 실행하는 명령은 다음과 같다.

sh
go build -o hmd ./cmd/hmd
HMD_SERVER_BIND=:8080 \\
HMD_SERVER_REPO_DIR=./data/repo \\
HMD_APP_DIR=./data/app \\
HMD_ADMIN_USER=admin HMD_ADMIN_PASSWORD='use-a-unique-password-of-at-least-12-characters' \\
./hmd

HMD_APP_DIR은 NFS가 아닌 로컬 디스크에 두어야 한다. HMD_SERVER_REPO_DIR은 네트워크 저장소에 둘 수 있다. 설치와 설정, 운영, MCP 및 개발 문서는 HMD 문서 사이트에서 확인할 수 있다.

프로젝트는 초기 단계로, 미완성된 부분과 호환성을 깨는 변경이 있을 수 있다. 중요한 문서의 유일한 저장소로 삼기 전에 백업을 유지하고 업그레이드를 시험해야 한다. 라이선스는 MIT다.