缘起
在上一篇文章中,我介绍了如何使用Obsidian和Nextcloud来管理笔记。上一篇文章的标题中使用了“全平台”这个词,是说Obsidian支持Windows、Linux、Mac、Android等多个平台。一般来说,这已经够用了,但是在某些场景下却依然不太方便。
比如某些单位的电脑不允许随意安装软件,Obsidian就无法在单位电脑上使用了。要想真正做到全平台,我觉得还是需要有个网页版。于是我在网上搜索了一番,还真发现有人已经实现了网页版的Obsidian,于是我就尝试了一下。客观地说,网页版的Obsidian还不太成熟,略显粗糙,但基本功能已经可以了。因此我就把它部署在了自己的服务器上,以供不时之需。
本系列介绍Obsidian的其他文章参见:
前置条件
基本和部署各种容器服务所需的前置条件一样:
- 一台可作为服务器的电脑
- docker和docker compose
Obsidian Docker版
Obsidian Docker版简介
Obsidian的网页版是一个由linuxserver.io开发的开源项目,基于Obsidian的核心功能,提供了一个Web界面。它可以通过Docker容器运行,非常适合在服务器上部署。其GitHub地址是:docker-obsidian.
docker-obsidian使用KasmVNC作为Web界面,KasmVNC是一个基于VNC的Web桌面解决方案。它允许用户通过浏览器访问Obsidian的桌面环境。
docker-obsidian包括了一些可定制化的选项,比如支持HTTP基本认证,即用户在部署容器时可以设置一个用户名和密码来保护Obsidian的访问。
部署Obsidian Docker
项目结构
跟之前部署容器类似,我们使用docker compose来部署Obsidian。首先,创建一个目录来存放配置文件和数据:
1 2
mkdir -p ~/docker/obsidian cd ~/docker/obsidian
在此目录下我们创建两个文件:
docker-compose.yml
和.env
。docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
services: obsidian: image: lscr.io/linuxserver/obsidian:latest container_name: obsidian security_opt: - seccomp:unconfined #optional environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - DOCKER_MODS=linuxserver/mods:universal-package-install - CUSTOM_USER=${CUSTOM_USER} - PASSWORD=${PASSWORD} volumes: - ${APP_DIR}/config:/config shm_size: "1gb" restart: unless-stopped networks: traefik-net: aliases: - obsidian
.env
1 2 3
APP_DIR=/media/user/docker_data/obsidian CUSTOM_USER=username PASSWORD='your_password_here'
其中,
APP_DIR
是Obsidian的配置文件和数据存储目录,CUSTOM_USER
是你希望使用的用户名,PASSWORD
是访问Obsidian的密码。
启动容器
1
docker compose up -d
运行上述命令后,Docker会自动下载Obsidian镜像并启动容器。docker-obsidian默认使用的端口是3000,你可以通过浏览器访问
http://your_server_ip:3000
来访问Obsidian。反向代理
为容器做反向代理以便通过域名访问有多种方式,我之前写过使用Nginx、Traefik以及Cloudflare Tunnel做反向代理的文章,具体可以参考:
docker-obsidian的初始配置
如果上述步骤都没问题,你应该可以通过浏览器访问Obsidian的Web界面了。
首次访问,你会看到一个登录验证弹窗
输入你在
.env
文件中设置的用户名和密码。登录后,你会看到Obsidian的Web界面:
这个界面和Obsidian的桌面版一样,只不过你还会看到KasmVNC的工具栏在顶部和侧边。
同时浏览器还会出现一个弹窗,提示你授权访问剪切板:
点击“允许”以便在Obsidian中使用剪切板功能。否则你在其他地方复制的内容将无法粘贴到Obsidian网页版中,反之亦然。
然后初始化Obsidian就行了,注意笔记仓库的名字要和你之前在其他Obsidian客户端中使用的名字一致,这样才能同步。其他的设置如开启插件、设置云同步等都和桌面版Obsidian一样,可参加我之前的文章:全平台笔记管理软件Obsidian。
设置完成后就可以开始使用Obsidian了:
你可以在浏览器中使用Obsidian的所有功能,包括编辑笔记、使用插件等。
粘贴在别处复制的内容似乎不能直接粘贴进Obsidian中,需要通过KasmVNC的剪切板功能来实现:
小问题及解决
我发现Obsidian的网页版无法显示汉字:
解决方案是让容器在启动时安装可以显示汉字的字体及设置LC_ALL
环境变量。
在docker-compose.yml
中添加以下环境变量即可:
|
|
然后重新启动容器:
|
|
现在Obsidian的网页版应该可以正常显示汉字了:
总结
Obsidian的网页版虽然还不够成熟,但基本功能已经可以满足日常使用。通过Docker容器部署Obsidian的Web版,可以方便地在服务器上运行,并通过浏览器访问。这样才算真正实现了全平台的笔记管理。