CodiMD를 개인 위키로 설정하는 방법은 무엇입니까?

CodiMD를 개인 위키로 설정하는 방법은 무엇입니까?

코디 MD공동작업에 적합하지만 인터넷 연결 없이 작동하도록 구성된 노트북(Ubuntu 18.04)에서 개인 메모용으로 사용하고 리소스를 최대한 적게 사용하고 싶습니다. 이것수동 설치좋은 출발점인 것 같지만 지침에서는 Node, npm, 데이터베이스 관리 등에 대한 지식이 있다고 가정합니다. 이는 제가 익숙하지 않습니다. TLS, 사용자 인증 또는 클라우드 서비스 연결이 필요하지 않습니다.

이것이 내가 지금까지 가지고 있는 것입니다:

sudo apt install -y nodejs npm sqlite3
sudo npm install -g node-gyp
sudo npm install -g yarn
# broken: sudo apt install -y libssl-dev
git clone https://github.com/codimd/server.git
cd server
sudo bin/setup
sudo vi config.json .sequelizerc
# in vi, copy 4 "db" lines from "development" to "production"
# in vi, disable "hsts" and "csp"
# in vi, what should go in the "url" line?
# in vi, what else needs modificaiton?
sudo npm run build
sudo npm start --production  # fails:  sequelize db:migrate && node app.js
# what is the best way to start CodiMD at boot?

즉, Ubuntu에서 최소 1명의 사용자 CodiMD를 설정하는 방법에 대한 자세한 지침을 찾고 있습니다.

답변1

나는 그것을 알아 냈습니다. 격리와 안전을 위해 LXC용기에 담았습니다. 이러한 단계를 수행하는 더 나은 방법에 대한 제안을 환영합니다.

lxc launch ubuntu:18.04/amd64 codimd
lxc exec codimd -- apt update
lxc exec codimd -- apt install -y nodejs npm sqlite3
lxc exec codimd -- npm install -g node-gyp
lxc exec codimd -- npm install -g yarn
lxc exec codimd -- git clone https://github.com/codimd/server.git
lxc exec codimd -- bash -c 'cd server && bin/setup'
VMIP=$(lxc list codimd -c4 --format=csv |grep -o '^\S*'); echo $VMIP  # use this IP below
lxc exec codimd -- vi server/config.json
# in vi, under "production", set "domain" to the IP displayed above
# in vi, copy 4 "db" lines from "development" to "production", add final comma
# in vi, delete 8 "db" lines for "postgres"
# in vi, delete 15 "saml" lines
lxc exec codimd -- vi server/.sequelizerc
# in vi, set "url" to 'sqlite://./db.codimd.sqlite'
lxc exec codimd -- vi server/lib/config/default.js
# in vi, set port to 80
lxc exec codimd -- bash -c 'cd server && npm run build'
#test it: lxc exec codimd -- bash -c 'cd server && npm start --production'
lxc exec codimd -- bash -c '(crontab -l 2>/dev/null; echo @reboot /bin/bash -c \""cd /root/server && npm start --production"\") |sudo crontab'
lxc stop codimd && sleep 3 && lxc start codimd
firefox "http://$VMIP"

업데이트 2020-04-26: 저는 CodiMD와 함께 먼 길을 왔지만 여전히 그것을 좋아합니다. 다음 단계는 "새롭게 개선된" 설치 프로세스입니다. 특히, .js위에서 했던 것처럼 파일을 편집하지 말고, SQLite 대신 Postgres를 사용하고, http를 사용하세요.에스.

마지막으로 전역 검색 기능에 관심이 있는 분을 위해 다음 항목에 추가했습니다.Github의 CodiMD 포크. 그러나 여기에는 두 가지 중요한 주의 사항이 있습니다. 로그인한 모든 사용자가 다른 사용자의 페이지를 찾을 수 있도록 허용하므로 CodiMD 권한 모델을 깨뜨립니다. 7개월이 지나면 아무 문제도 나타나지 않습니다).

업데이트된 설치 프로세스는 다음과 같습니다.

  • LXD를 설치합니다:
sudo apt install -y lxd
sudo lxd init --auto --storage-backend=dir
  • 컨테이너 생성 및 업데이트:
lxc launch ubuntu:18.04 codimd
lxc exec codimd -- apt update && lxc exec codimd -- apt upgrade -y
  • CodiMD를 설치합니다:
lxc exec codimd -- apt install -y git nodejs npm postgresql
lxc exec codimd -- npm install -g node-gyp
lxc exec codimd -- npm install -g yarn
lxc exec codimd -- git clone https://github.com/codimd/server.git
lxc exec codimd -- bash -c 'cd server && bin/setup'
  • PostgreSQL을 설치합니다:
lxc exec codimd -- sudo -i -u postgres createuser --createdb codimd
lxc exec codimd -- sudo -i -u postgres createdb codimd
lxc exec codimd -- useradd codimd
lxc exec codimd -- mkdir /home/codimd
lxc exec codimd -- chown -R codimd:codimd /home/codimd
lxc exec codimd -- sudo -i -u codimd psql --command='\password codimd'  # set password to <pgpass>
lxc exec codimd -- sudo -i -u codimd psql --command='\conninfo'  # verify
  • 자체 서명된 TLS 인증서 생성(원천):
lxc exec codimd -- openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/codimdselfsigned.key -out /etc/ssl/certs/codimdselfsigned.crt  # use defaults except Common Name: $MYURL
lxc exec codimd -- openssl dhparam -dsaparam -out /etc/ssl/dhparam.pem 4096
  • 세우다:
lxc exec codimd -- bash -c 'cd server && npm run build'
  • 방화벽 활성화(아웃바운드 인터넷을 차단하므로 필요하지 않음):
lxc exec codimd -- ufw enable
lxc exec codimd -- ufw default allow incoming # allow inbound https, ssh
lxc exec codimd -- ufw default deny outgoing
  • 오류를 확인하려면 한 번 실행하세요(종료하려면 Ctrl-C).
#test it: lxc exec codimd -- bash -c 'cd server && npm start --production'
  • 사용자 계정 추가:
lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL1"
lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL2"
lxc exec codimd -- bash -c "cd server && NODE_ENV=production bin/manage_users --pass $USERPASSW --add $EMAIL3"
cd /tmp
printf "[Unit]\nDescription=CodiMD collaborative markdown notes\n" >codimd.service
printf "Documentation=https://github.com/codimd/server\nAfter=network.target\nAfter=postgresql.service\n\n" >>codimd.service
printf "[Service]\nType=exec\nRestartSec=2s\nUser=root\nGroup=root\nWorkingDirectory=/root/server\n" >>codimd.service
printf "ExecStart=/usr/bin/npm start --production\nRestart=always\nPrivateTmp=true\nPrivateDevices=true\n\n" >>codimd.service
printf "[Install]\nWantedBy=multi-user.target\n" >>codimd.service
lxc file push codimd.service codimd/lib/systemd/system/codimd.service
lxc exec codimd -- systemctl enable /lib/systemd/system/codimd.service
lxc exec codimd -- systemctl daemon-reload
lxc exec codimd -- systemctl enable codimd
  • 디버깅하려면 log.console()다음을 사용하여 출력을 확인하세요.
lxc exec codimd -- systemctl stop codimd
lxc exec codimd -- bash -c 'cd server && npm start --production'
#... monitor output; ctrl-c to quit
lxc stop codimd; sleep 5; lxc start codimd
  • 재부팅하고 연결합니다:
lxc stop codimd; sleep 5; lxc start codimd
firefox "https://$MYURL"
  • Firefox에서는 자체 서명된 인증서를 수락하고 로그인합니다.

관련 정보