コーディ 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人のユーザーCodidMDを設定する方法の詳細な手順を探しています。
答え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:私はCodidMDと長い道のりをしてきましたが、それでも好きです。次のステップは、「新しく改良された」インストールプロセスです。特に、.js
上記のようにファイルを編集するのではなく、SQLiteの代わりにPostgresを使用してhttpを使用してください。S。
最後に、グローバル検索機能に興味がある方のために、次の項目に追加しました。GithubのCodiMDフォーク。しかし、ここには2つの重要な注意事項があります。ログインしているすべてのユーザーが他のユーザーのページを見つけることを許可するので、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"
- 起動時に開始しました(問題#46):
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は自己署名証明書を受け入れてログインします。