계정과 워크스페이스 접근
계정은 dtxWiki 서버에 로그인하는 사용자 정보입니다. 워크스페이스 멤버십은 어느 공유 공간에 들어갈 수 있고 무엇을 할 수 있는지 정합니다. 서버 관리자는 설치 전체를 운영하고 계정 복구를 시작할 수 있습니다. 각각 다른 책임입니다.
역할 선택
| 워크스페이스 역할 | 주로 필요한 사람 | 주요 권한 |
|---|---|---|
| 뷰어(Viewer) | 지식을 찾아 읽는 동료 | 접근 가능한 내용을 읽고 읽기 화면 사용. 편집 동작은 제한 |
| 편집자(Editor) | 지식을 작성하는 사람 | 검토·정책에 따라 컨텍스트 작성과 수정, 에이전트 초안과 채팅 작업 |
| 소유자(Owner) | 해당 공간 운영 책임자 | 편집자 권한과 멤버·역할·공유·워크스페이스 정책 관리 |
역할 외에도 페이지 상태, 자료 민감도, 검토 정책에 따라 가능한 동작이 달라집니다. 작성자 전용 MCP 편집은 본인만 보지만 브라우저 초안 저장·자동 저장은 같은 공간의 편집자·소유자도 읽을 수 있는 미게시 초안입니다. 뷰어는 게시 버전이 필요합니다. 편집자 역할이라고 모든 보호된 동작을 할 수 있는 것은 아닙니다. 페이지 탐색기의 리뷰 상태 표시는 편집자와 소유자에게만 보입니다. 모든 역할은 내 즐겨찾기에 추가로 항목을 표시할 수 있으며, 즐겨찾기는 표시한 본인에게만 보입니다.
설정 → 첨부 파일에서는 각 멤버가 조회할 수 있는 페이지의 업로드를 봅니다. 뷰어와 편집자는 자신이 올린 파일을 보고, 소유자는 다른 멤버가 올린 파일도 봅니다. 편집자는 자신이 올린 미사용 파일을 삭제할 수 있습니다. 소유자는 목록에 있는 미사용 파일이라면 누가 올렸든 삭제할 수 있고, 미사용 파일 자동 회수에서 미사용 업로드를 얼마나 보관할지 정합니다. 뷰어는 확인만 할 수 있고 삭제할 수 없습니다. 자동 정리는 개인정보와 안전한 공유를 참고하세요.
설정 → 실험실은 역할이 아닌 개인 표시 설정입니다. Ask 메뉴 표시와 Agent 메뉴 표시는 해당 브라우저에서 그 사람에게 보이는 실험 중인 메뉴만 바꾸며, 권한을 주거나 없애지 않습니다.
멤버십은 특정 폴더나 페이지가 아닌 워크스페이스 전체에 적용됩니다. 일부 자료만 공유하려면 해당 자료를 위한 공동 워크스페이스를 만드세요. 개인 워크스페이스에 사람을 추가하면 그 공간의 접근 대상도 바뀝니다.
기존 계정을 워크스페이스에 추가
소유자로 대상 공간을 선택하고 설정 → 멤버 및 접근을 엽니다. 현재 멤버 목록 아래 별도 멤버 추가 대화상자에서 활성 계정의 정확한 사용자 UUID 또는 등록된 계정 이메일을 입력하고 역할·확인 내용을 검토한 뒤 추가하세요. 당사자가 계정 → 사용자 ID → 사용자 ID 복사로 UUID를 전달하게 하세요. 이메일 없는 계정도 이 값으로 찾습니다. 자동 사용자명은 별도로 생성되며 로그인에 쓰지 않습니다. 부분 이름은 멤버 찾기에 도움을 주지만 추가할 계정을 확정하지 않습니다. 검증되지 않은 IdP 프로필 이메일은 조회 키가 아닙니다.
회사 디렉터리는 운영자가 검증된 제공자·tenant를 활성화하고 요청 소유자도 그 범위에 속할 때만 제공합니다. 같은 표시 이름보다 UUID와 신뢰된 조직 표시를 확인하세요. 멤버 추가는 계정 생성이나 초대 메일 전송이 아닙니다. 먼저 서버 가입·설정된 SSO·운영자 계정 생성으로 계정이 있어야 합니다.
멤버십은 워크스페이스 전체에 적용됩니다. 소유자는 멤버·정책·공유를 관리합니다. 가입 때 생성된 비공개 공간도 일반 워크스페이스로 인계할 수 있고 삭제 후 다시 만들지 않습니다. 직접 만드는 슬러그에는 예약된 personal- 접두어를 쓸 수 없습니다.
검색되는 워크스페이스에 참여하기
워크스페이스 노출 범위와 멤버십은 별개입니다.
- 비공개(Private): 멤버만 발견하고 들어갈 수 있습니다.
- 팀(Team): 해당 서버에 로그인한 사용자가 발견할 수 있으나 입장에는 멤버십이 필요합니다.
- 공개(Public): 방문자가 공개 프로필을 발견할 수 있으나 내부 지식에는 멤버십이 필요합니다.
가입 요청이 열려 있으면 로그인한 비멤버가 참여를 신청할 수 있습니다. 소유자가 멤버 및 접근에서 검토하며, 승인하면 뷰어로 추가됩니다. 작성이 필요하면 소유자가 나중에 역할을 바꿀 수 있습니다.
노출 범위를 공개로 바꿨다고 모든 페이지가 웹에 공개되지는 않습니다. 발행된 컨텍스트 버전을 별도로 웹에 게시해야 합니다. 공유하기를 참고하세요.
서버 계정 만들기
서버 운영자가 진행합니다. 팀·원격 모드는 직접 회원가입이 기본적으로 닫혀 있습니다. systemd 설치에서는:
sudo dtxwiki users add person@example.com
Docker에서는 기존 infra/prod 디렉터리에서:
docker compose exec app dtxwiki users add person@example.com
명령은 8~128자 비밀번호를 숨김 입력으로 두 번 받은 뒤 계정과 Personal Workspace를 만듭니다. 비밀번호가 이 범위를 벗어나면 user add failed: password must be between 8 and 128 characters와 함께 중단되고, 올바르지 않은 이메일은 거부됩니다. 두 경우 모두 계정은 만들어지지 않습니다. 최대 32자의 표시 이름을 정하려면 --display-name "Example Person"을 추가합니다. 지정하지 않으면 이메일의 @ 앞부분을 사용하고, 그 부분을 쓸 수 없으면 User로 정합니다. 이메일·비밀번호 로그인은 계정 이메일을 사용하며 계정 화면의 자동 사용자명은 로그인에 쓰지 않습니다. 초기 정보를 안전하게 전달하고, 사용자가 계정 → 비밀번호 변경에서 새 비밀번호를 정하도록 하세요. 계정 생성만으로 기존 공유 워크스페이스에 추가되지는 않습니다.
가입을 허용한 로컬 설치는 브라우저에서 가입을 선택할 수도 있습니다. 별도의 서버 관리자 권한 부여는 설치와 첫 로그인을 따르세요. 처음 가입한 계정은 워크스페이스 소유자이며 서버 관리자가 자동으로 되지는 않습니다.
운영자는 워크스페이스의 실제 slug, 즉 URL에 쓰는 식별자를 이용해 기존 계정을 추가할 수도 있습니다.
sudo dtxwiki workspace members add person@example.com \
--workspace YOUR_WORKSPACE_SLUG --role viewer
sudo dtxwiki workspace members list --workspace YOUR_WORKSPACE_SLUG
slug를 default라고 가정하지 마세요. 개인 워크스페이스는 사용자별 slug를 사용합니다.
로컬 설치에서는 이 dtxwiki users …, dtxwiki workspace … 명령을 sudo 없이 실행하되, 먼저 dtxWiki를 중지합니다. dtxWiki를 실행 중인 터미널에서 Ctrl+C를 누르고 명령을 실행한 뒤 dtxwiki를 다시 시작하세요. 앱이 실행 중이면 명령은 stop dtxWiki (server and worker) first: …로 끝나는 긴 오류와 함께 중단되며 아무것도 바꾸지 않습니다. 앱을 계속 실행해야 하는 관리자는 대신 해당 명령에 DTXWIKI_AUTO_BOOTSTRAP=false를 설정할 수 있습니다. 예: DTXWIKI_AUTO_BOOTSTRAP=false dtxwiki workspace members list --workspace YOUR_WORKSPACE_SLUG.
표시 이름이나 로그인 이메일 바꾸기
앱에서 표시 이름이나 기존 계정 이메일을 교체하지는 못합니다. 이메일 없는 계정은 SMTP와 비밀번호 로그인이 켜져 있으면 계정 → 로그인 방법 → 계정 이메일 추가를 사용하고 같은 브라우저에서 주소를 확인할 수 있습니다. 그 밖의 변경은 운영자가 UUID로 처리합니다. dtxwiki users add는 계정을 만들 때 ID를 출력하며, dtxwiki workspace members list의 --json 출력에는 각 멤버의 user_id가 있습니다.
이 변경 명령은 설치 방식과 관계없이 dtxWiki 서버나 작업자가 실행 중이면 거부됩니다. systemd 서버에서는:
sudo systemctl stop dtxwiki dtxwiki-worker
sudo dtxwiki workspace members list --workspace YOUR_WORKSPACE_SLUG --json
sudo dtxwiki users set-display-name USER_ID --display-name "Example Person"
sudo dtxwiki users set-email USER_ID --email new.person@example.com
sudo systemctl start dtxwiki dtxwiki-worker
필요한 변경 명령만 실행하세요. 성공하면 각 명령이 Input repaired; database revision preserved.를 출력합니다. 로컬 설치에서는 Ctrl+C로 앱을 중지하고 같은 명령을 sudo 없이 실행한 뒤 dtxwiki를 다시 시작합니다. Docker에서는 infra/prod에서 docker compose stop app worker를 실행하고, 각 명령을 docker compose run --rm --no-deps app dtxwiki … 형식으로 실행한 다음 docker compose up -d app worker로 서비스를 다시 시작합니다.
표시 이름은 앞뒤 공백 없이 1~32자여야 합니다. 이메일을 바꾸면 해당 사용자는 모든 브라우저에서 로그아웃되고, 사용하지 않은 비밀번호 재설정 링크는 취소되며, 주소는 미확인 상태가 됩니다. 사용자가 새 주소를 확인해야 해당 계정의 이메일 복구를 다시 사용할 수 있습니다. 이름이나 이메일 때문에 v0.1.2에서의 업그레이드가 거부되었다면 백업과 유지보수를 따르세요.
비밀번호 변경과 복구
로그인할 수 있을 때 비밀번호를 바꾸려면 상단의 사람 모양 아이콘(계정)을 누른 뒤 비밀번호 변경을 선택합니다. 새 비밀번호는 8~128자여야 하며 공백도 비밀번호에 포함됩니다. 기존의 128자 이하 비밀번호도 계속 사용할 수 있으므로 꼭 바꿀 필요는 없습니다. 로그인할 수 없다면 서버의 메일 복구가 활성화되어 있을 때 비밀번호를 잊으셨나요?를 사용합니다. 이메일 복구는 메일 서비스 설정과 복구 가능한 확인된 이메일이 필요합니다. 그렇지 않으면 워크스페이스 소유자가 아닌 서버 운영자에게 문의하세요.
v0.1.2는 128자보다 긴 비밀번호도 허용했습니다. 이런 비밀번호로는 더 이상 로그인할 수 없고, 비밀번호 변경 화면은 현재 비밀번호를 요구하므로 여기서 바꿀 수도 없습니다. 비밀번호를 잊으셨나요? 또는 아래에서 설명하는 운영자 링크로 재설정하세요.
대표 HTTPS URL을 설정한 서버에서는 운영자가 새 비밀번호를 정하거나 보지 않고 일회용 링크를 발급할 수 있습니다.
sudo dtxwiki users issue-password-reset person@example.com --delivery link
관리자가 발급하는 링크의 기본 만료 시간은 30분이며 표시하려면 대화형 터미널이 필요합니다. 링크를 연 사람이 8~128자의 새 비밀번호를 정합니다. 모든 비밀번호 복구는 완료 시 사용자의 브라우저 세션을 종료합니다. 관리자·CLI 복구에서는 발급자 또는 수신자가 요청하면 PAT/MCP/OAuth 자격 증명도 폐기합니다. 계정 탈취가 의심되면 운영자가 --revoke-api-tokens를 사용하세요. 공개 비밀번호를 잊으셨나요?에서 시작한 복구는 완료 시 해당 자격 증명을 항상 폐기하므로 이후 AI 앱을 다시 연결해야 합니다.
관리자가 명시적으로 사용하는 --delivery link에는 SMTP가 없어도 되지만 대표 HTTPS URL은 필요합니다. 기본 로컬 HTTP 설치에는 해당 복구 링크 모드가 설정되어 있지 않습니다. 사용자가 메일로 직접 복구하려면 SMTP 설정과 확인된 계정 이메일도 필요합니다. 메일 설정만으로 모든 계정의 이메일이 자동 확인되지는 않습니다.
설정 → 사용자 계정은 서버 관리자의 계정 검색·복구 화면입니다. 서버 관리 권한이 있다고 모든 워크스페이스에 자동으로 참여하지는 않습니다.
서버 관리자는 설정 → 첨부 파일에서 첨부 파일 조회 범위도 고를 수 있습니다. 전체 워크스페이스는 관리자가 멤버가 아닌 곳을 포함해 서버의 모든 워크스페이스에 있는 첨부 파일 정보, 즉 워크스페이스, 파일 이름, 페이지 제목, 업로드한 사람, 업로드 시각을 미리보기 없이 보여 줍니다. 관리자는 여기서 미사용 파일을 삭제할 수 있으며 dtxWiki는 각 삭제를 기록합니다. 이 화면으로 멤버가 되거나 페이지를 열거나 워크스페이스의 정리 설정을 바꿀 수는 없습니다.
AI 접근에는 추가 경계가 있습니다
AI 앱은 내 워크스페이스 멤버십과 해당 공간·동작을 허용하는 자격 증명이 모두 필요합니다. 액세스 키에 공간을 추가해도 내 역할을 넘어설 수 없습니다. 키에서 공간을 제거하면 해당 연결의 접근이 중지됩니다. 키를 만들 때 전체 목록 보기·선택을 누르면 허용된 워크스페이스 대화상자가 열리며, 내가 멤버인 워크스페이스만 표시됩니다. 액세스 키 하나나 OAuth 앱 승인 하나에는 워크스페이스를 최대 256개까지 넣을 수 있습니다. 멤버를 제거하거나 키·앱에서 워크스페이스를 제거하면 해당 연결은 설정 → MCP 접근 → 연결된 MCP 클라이언트에서 인증 취소로 표시됩니다. AI 앱 연결을 참고하세요.
외부 신원·삭제·복구
이메일 없는 외부 계정에도 UUID로 멤버십과 서버 관리 권한을 부여할 수 있습니다. 제공자는 SSO 운영, 연결·해제는 계정 관리를 따릅니다. 계정 삭제는 즉시 접근을 폐기한 뒤 설정된 기간 보존하며 정리 전 서버 관리자가 복구할 수 있습니다. 마지막 관리자 워크스페이스의 인계·공유 이력 보존을 먼저 확인하세요.
UUID로 멤버와 서버 관리자 인계하기
이메일 없는 계정도 정확한 사용자 UUID로 추가·제거할 수 있습니다. 앞의 설명처럼 서비스를 멈춘 뒤 같은 설치의 유지보수 환경을 사용하고 로컬 설치에서는 sudo를 빼세요.
sudo dtxwiki workspace members add --user-id USER_UUID \
--workspace YOUR_WORKSPACE_SLUG --role viewer
sudo dtxwiki workspace members remove --user-id USER_UUID \
--workspace YOUR_WORKSPACE_SLUG
remove는 해당 공간 전체의 멤버십을 제거하므로 필요한 동작만 선택하세요. 마지막 서버 관리자 인계는 다른 활성 계정에 운영자가 별도로 권한을 부여합니다.
sudo dtxwiki admin grant --user-id OTHER_ACTIVE_USER_UUID
sudo dtxwiki admin list
새 관리자가 로그인할 수 있는지 확인한 뒤 기존 관리자가 탈퇴하세요. 워크스페이스 소유자 역할을 주는 것만으로 서버 관리 권한이 인계되지는 않습니다.
서버 계정 도구
서버 관리자는 설정 → 사용자 계정을 열고 필요할 때 최근 본인 인증을 완료한 뒤 이름·계정 이메일·사용자 ID·워크스페이스로 검색합니다. 같은 표시 이름만 보고 처리하지 말고 대상 계정의 메뉴를 여세요.
| 조작 | 용도와 한계 |
|---|---|
| 계정 삭제 데이터 보관 기간 | 0~36500일의 정수이며 기본 30일. 새 삭제 요청에만 적용하고 기존 예정일은 유지합니다. 0일이면 다음 worker 정리부터 삭제할 수 있습니다. |
| 계정 삭제, 계정 복구 | 삭제 영향을 검토해 접근을 폐기하거나 정리 전 계정을 복구합니다. 복구해도 세션·API/OAuth 자격 증명은 폐기 상태입니다. |
| 관리자 지정 → 관리자로 지정 | 활성 멤버를 골라 계정과 함께 삭제 대기인 공간을 보존합니다. 공간 관리 권한이며 서버 관리 권한이 아닙니다. |
| 이메일 충돌로 대기 중인 SSO 가입 → 대기 중인 요청 보기 | 요청자와 기존 계정을 확인하고 사유와 함께 주소 해제 또는 기존 계정 유지를 선택합니다. 해제는 데이터를 보존하며 기존 계정을 비활성화하고 자격 증명을 폐기합니다. |
| SSO identity 다시 연결 | 독립적으로 소유권을 확인한 뒤 선택한 UUID의 신원을 다시 연결합니다. 데이터·역할은 유지하고 세션·자격 증명은 폐기합니다. |
| 서버 감사 기록 → 기록 보기 | CLI 작업을 포함한 서버 단위 계정·자격 증명·관리 권한 변경을 읽습니다. 최근 본인 인증이 필요하며 조회 사실도 기록됩니다. 워크스페이스 활동과 별개입니다. |
비밀번호 복구는 전달 방법·토큰 폐기 선택을 확인하고 발급하세요. 이메일 없는 SSO는 기존 UUID를 기준으로 복구하며 복구 메일 양식으로 접근 불가 IdP 신원을 되살리지는 못합니다. 계정 관리와 SSO 운영을 참고하세요.
구현 근거: 계정·멤버 관리 명령, 계정 입력 규칙, 표시 이름·이메일 변경, 이메일 변경의 영향, 실행 중 거부, 멤버·접근 화면 문구, 복구 화면, 복구·자격 증명 폐기, 첨부 파일 화면, 서버 전체 첨부 파일 목록.