Featured image of post Obsidian(二):网页版Obsidian的部署与使用

Obsidian(二):网页版Obsidian的部署与使用

部署Obsidian的网页版,真正实现全平台笔记管理

缘起

在上一篇文章中,我介绍了如何使用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

  1. 项目结构

    跟之前部署容器类似,我们使用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的密码。

  2. 启动容器

    1
    
    docker compose up -d
    

    运行上述命令后,Docker会自动下载Obsidian镜像并启动容器。docker-obsidian默认使用的端口是3000,你可以通过浏览器访问http://your_server_ip:3000来访问Obsidian。

  3. 反向代理

    为容器做反向代理以便通过域名访问有多种方式,我之前写过使用Nginx、Traefik以及Cloudflare Tunnel做反向代理的文章,具体可以参考:

docker-obsidian的初始配置

如果上述步骤都没问题,你应该可以通过浏览器访问Obsidian的Web界面了。

  1. 首次访问,你会看到一个登录验证弹窗

    Obsidian登录验证

    输入你在.env文件中设置的用户名和密码。

  2. 登录后,你会看到Obsidian的Web界面:

    Obsidian Web界面

    这个界面和Obsidian的桌面版一样,只不过你还会看到KasmVNC的工具栏在顶部和侧边。

    同时浏览器还会出现一个弹窗,提示你授权访问剪切板:

    Obsidian剪切板授权

    点击“允许”以便在Obsidian中使用剪切板功能。否则你在其他地方复制的内容将无法粘贴到Obsidian网页版中,反之亦然。

    然后初始化Obsidian就行了,注意笔记仓库的名字要和你之前在其他Obsidian客户端中使用的名字一致,这样才能同步。其他的设置如开启插件、设置云同步等都和桌面版Obsidian一样,可参加我之前的文章:全平台笔记管理软件Obsidian

  3. 设置完成后就可以开始使用Obsidian了:

    Obsidian Web界面

    你可以在浏览器中使用Obsidian的所有功能,包括编辑笔记、使用插件等。

    粘贴在别处复制的内容似乎不能直接粘贴进Obsidian中,需要通过KasmVNC的剪切板功能来实现:

    Obsidian剪切板粘贴

小问题及解决

我发现Obsidian的网页版无法显示汉字:

Obsidian Web界面汉字问题

解决方案是让容器在启动时安装可以显示汉字的字体及设置LC_ALL环境变量。

docker-compose.yml中添加以下环境变量即可:

1
2
3
    environment:
        - INSTALL_PACKAGES=fonts-noto-cjk
        - LC_ALL=zh_CN.UTF-8

然后重新启动容器:

1
2
docker compose down
docker compose up -d

现在Obsidian的网页版应该可以正常显示汉字了:

Obsidian Web界面汉字显示正常

总结

Obsidian的网页版虽然还不够成熟,但基本功能已经可以满足日常使用。通过Docker容器部署Obsidian的Web版,可以方便地在服务器上运行,并通过浏览器访问。这样才算真正实现了全平台的笔记管理。

comments powered by Disqus