오픈나무
오픈나무는 Go 기반의 위키 엔진입니다.
시작하기
릴리즈 페이지에서 사용하는 운영체제와 아키텍처에 맞는 바이너리를 내려받아 실행할 수 있습니다.
릴리즈 페이지에서 다음 파일 중 하나를 내려받으세요.
| 운영체제 | 바이너리 | | --- | --- | | Linux amd64 | main.amd64.bin | | Linux arm64 | main.arm64.bin | | Windows amd64 | main.amd64.exe | | Windows arm64 | main.arm64.exe | | macOS arm64 | main.mac.arm64.bin |
Linux
./main.amd64.bin
Windows
.\main.amd64.exe
기본 포트는 3000이며, 실행 시 첫 번째 인자로 변경할 수 있습니다.
./main.amd64.bin 3000
외부에서 접근하지 않고 같은 컴퓨터에서만 사용할 때는 --localhost를 추가합니다.
./main.amd64.bin --localhost
./main.amd64.bin 3000 --localhost
서버가 정상적으로 시작되지 않을 때는 이머전시 툴을 실행할 수 있습니다.
./main.amd64.bin em
개발자용
소스 코드를 수정하거나 직접 빌드하려는 경우에 참고하세요.
클론
아래 명령을 터미널(명령 프롬프트)에 입력하여 본 리포지토리를 클론할 수 있습니다.
- 일반:
git clone -b stable https://github.com/openNAMU/openNAMU.git - 베타:
git clone -b beta https://github.com/openNAMU/openNAMU.git
빌드 및 테스트
소스에서 빌드하려면 Go 1.25 이상이 필요합니다.
./linux.sh linux_amd64
Windows에서는 다음 명령을 사용할 수 있습니다.
.\windows.ps1 windows_amd64
직접 빌드하려면 다음 명령을 사용할 수 있습니다.
go build -o main .
./main
변경 사항을 확인할 때는 다음 명령을 사용할 수 있습니다.
go test ./...
go vet ./...
데이터베이스 설정
기본 설정은 data/set.json에서 지정합니다.
{"db_type":"sqlite","db":"data"}
위 설정에서는 실행 디렉터리의 data.db를 SQLite 데이터베이스로 사용합니다. 설정이 없으면 SQLite의 data.db를 기본값으로 사용합니다.
MySQL을 사용하려면 data/set.json을 다음처럼 작성하고 data/mysql.json에 접속 정보를 넣습니다.
{"db_type":"mysql","db":"openNAMU"}
{"user":"username","password":"password","host":"127.0.0.1","port":"3306"}
Turso 엔진(로컬 파일)을 사용하려면 db_type을 turso로 지정합니다. 파일 이름은 SQLite와 같은 방식으로 해석되며, 서버나 네트워크 접속 없이 data.db를 Turso 임베디드 드라이버로 엽니다.
{"db_type":"turso","db":"data"}
turso를 선택하면 MVCC 저널 모드(journal_mode = mvcc)가 기본 적용되어 동시 쓰기 충돌이 완화됩니다. 단, MVCC는 아직 실험적 기능이므로 중요한 위키 데이터는 정기적으로 백업하세요. 제약 사항은 다음과 같습니다.
- Turso로 데이터를 쓴 뒤
db_type을sqlite로 되돌리려면 먼저 체크포인트를 실행해야 변경 사항이 보입니다. - 서버 실행 중 데이터베이스 파일을 sqlite3 CLI 등 다른 프로세스로 열지 마세요.
- windows/arm64 바이너리에서는 turso를 선택할 수 없습니다(기본 제공 라이브러리 미제공).
현재 상태
오픈나무는 현재 beta 단계입니다.
- Go 단일 서버로 실행합니다.
- SQLite, MySQL, Turso(임베디드)를 지원합니다.
- 기본 스킨과 언어 데이터는 바이너리에 포함됩니다.
기여
오픈나무에는 확인되지 않은 버그가 존재할 수 있습니다. 이를 보고해주시면 오픈나무의 발전을 도울 수 있습니다. 여기를 눌러 버그를 보고해주세요.
오픈나무는 오픈소스 프로젝트입니다. 원한다면 직접 코드를 수정하고 Pull Request를 보낼 수 있습니다.
라이선스
오픈나무 프로젝트는 BSD 3-Clause License를 따릅니다. 자세한 내용은 문서를 참고하세요.
포함된 외부 프로젝트
도움을 주신 분들
- Team Croatia
- Basix
- Efrit
- 기타 여러 사람들
지원 문법
- 나무마크 (NamuMark)
- 마크다운 (Markdown)
- MacroMark
- Raw