一直是筆記軟件的重度用戶,但是做的好的云同步軟件通常要收費,要么就是有大小的限制。
研究了在自己的服務器上搭建一套筆記軟件。
介紹一下我的需求。
- markdown語法 記錄筆記,支持自動粘貼圖片,截圖等等
- 多端訪問,pc mac android ios pad,數(shù)據(jù)同步及時,手機端查看方便。
- 數(shù)據(jù)方便備份,整理,最好是自己存儲在服務器上。
- 由于筆記很多,需要快速的檢索功能。 拆分標簽展示
使用之前的軟件雖然也能滿足部分需求,但是在自由度上還是有不方便的地方。
比如joplin 雖然多端同步和移動端支持做的非常好,但是界面真的丑...
現(xiàn)在使用code-server當替代方案,感覺除了移動端的支持弱一些,其他方面簡直完美
code-server 就是vscode在云端運行,可以在瀏覽器使用vscode,試用后發(fā)現(xiàn)體驗和本地運行基本沒啥太大差距。
因此除了這個方案可以滿足我上述的需求外,還能額外在 記錄筆記的時候運行代碼,甚至有命令行直接操作服務器。
因為這個優(yōu)點,我把所有的項目代碼用submodule的方式引入筆記目錄中,基本實現(xiàn)了一個網(wǎng)頁操作所有項目。
此外,自己搭建的方案費用可以便宜好多,騰訊云最垃圾的服務器一個月也才一二十。
現(xiàn)在介紹一下搭建步驟
安裝code-server
首先你得有臺服務器...
然后執(zhí)行code-server安裝命令
curl -fsSL https://code-server.dev/install.sh | sh
安裝完成后 修改vscode配置
vim ~/.config/code-server/config.yaml
配置如下:
bind-addr: 0.0.0.0:88 #綁定端口
auth: password
password: xxxxxx
cert: xxxxxx/xx/xbundle.crt
cert-key: xxx/xxx/xxx.key
值得注意,cert 和cert-key是服務器的ssl證書
必須配置,不然后續(xù)無法使用https的方式訪問vscode,導致無法預覽圖片 markdown文檔
vscode配置
中文
先從擴展中搜索 chinese

安裝之后
ctrl+shift +p 打開快捷命令欄輸入 >Configure Display Language
選擇簡體中文即可

粘貼圖片
記錄筆記時候很多情況都會需要截圖,如果直接在md文件中用快捷鍵粘,圖片文件會直接粘貼在當前路徑下,導致目錄混亂
這里可以通過markdown.copy調(diào)整,在設置中搜索markdown.copy

通過配置項,將圖片的粘貼位置指定到某個絕對路徑、

比如我這樣就是將md文件粘貼路徑 固定到項目/data/img/md下。并且會在md文件夾下創(chuàng)建圖片在筆記根目錄下對應的文件夾。
可視化擴展
使用code-server的另外一個優(yōu)點就是對于markdown語法及其可視化展示的支持非常好。
安裝了 Markdown Preview Enhanced 之后可以支持 流程圖,數(shù)學公式,思維導圖等等可視化。
具體可以查看markdown preview enhanced官網(wǎng)
安裝gitlab
gitlab 是自己搭建的git,主要目的是為了讓筆記有版本控制。
當然我使用的目的是為了方便在筆記中隨時加入代碼片段并且記錄版本。
由于gitlab占用內(nèi)存極高,關閉了大多數(shù)配置后,服務器占用內(nèi)存在2g以內(nèi),精簡版本的docker-compose 配置如下:
version: "3"
services:
gitlab:
restart: always
image: gitlab/gitlab-ce:14.0.5-ce.0
container_name: gitlab
hostname: xxxxx
ports:
- "99:80"
volumes:
- /root/static/gitlab/config:/etc/gitlab
- /root/static/gitlab/data:/var/opt/gitlab
environment:
TZ: Asia/Shanghai
GITLAB_OMNIBUS_CONFIG: |
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 關閉電子郵件相關功能
gitlab_rails['smtp_enable'] = false
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['incoming_email_enabled'] = false
# Terraform
gitlab_rails['terraform_state_enabled'] = false
# Usage Statistics
gitlab_rails['usage_ping_enabled'] = false
gitlab_rails['sentry_enabled'] = false
grafana['reporting_enabled'] = false
# 關閉容器倉庫功能
gitlab_rails['gitlab_default_projects_features_container_registry'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
registry_nginx['enable'] = false
# 包倉庫
gitlab_rails['packages_enabled'] = false
gitlab_rails['dependency_proxy_enabled'] = false
# GitLab KAS
gitlab_kas['enable'] = false
gitlab_rails['gitlab_kas_enabled'] = false
# Mattermost
mattermost['enable'] = false
mattermost_nginx['enable'] = false
# Kerberos
gitlab_rails['kerberos_enabled'] = false
sentinel['enable'] = false
# GitLab Pages
gitlab_pages['enable'] = false
pages_nginx['enable'] = false
# 禁用 PUMA 集群模式
puma['worker_processes'] = 0
puma['min_threads'] = 1
puma['max_threads'] = 2
# 降低后臺守護進程并發(fā)數(shù)
sidekiq['max_concurrency'] = 5
gitlab_ci['gitlab_ci_all_broken_builds'] = false
gitlab_ci['gitlab_ci_add_pusher'] = false
# 關閉監(jiān)控
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
pgbouncer_exporter['enable'] = false
gitlab_exporter['enable'] = false
grafana['enable'] = false
sidekiq['metrics_enabled'] = false
postgresql['shared_buffers'] = "64MB"
postgresql['max_worker_processes'] = 1
sidekiq['concurrency'] = 1
nginx['worker_processes'] = 1
postgresql['shared_buffers'] = "64MB"
prometheus_monitoring['enable'] = false
這里需要注意。 gitlab 1.3之后采用了 puma來控制web訪問
最后登陸gitlab,將初始化git倉庫就可以了。
最后
code-server + md + git 這一套比較方便的是在電腦上記錄筆記,尤其是在一些不想留存本地文件的地方(公司!),但是一些零碎的想法記錄,待辦事項還是不夠方便。
目前我是
code-server記錄筆記,主要是pc pad 端
joplin 記錄待辦事項,多端通用
flomo 記錄一些零碎的想法, 主要是手機端
這三者同時使用基本滿足了日常需求。