思源笔记 docker 部署及第三方同步

本贴最后更新于 319 天前,其中的信息可能已经天翻地覆

2023.11.17

思源社区的部署教程已经过时(2021 年发布),因此我们在实践中逐个解决问题,并重新撰写了部署教程,在此感谢 chatGPT 的大力支持

环境

Ubuntu22.04

在本地和阿里云服务器都进行了测试,本地部署相对简单,阿里云上需要注意一些细节(后面说)

docker & docker-compose

换源

老生常谈的问题了,直接上指令

cp /etc/apt/sources.list /etc/apt/sources.list.bk
vim /etc/apt/sources.list

把以下内容 copy 进去

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

然后更新

sudo apt-get update
sudo apt-get upgrade

安装 docker & docker-compose

docker

直接在 bash

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker run hello-world

执行完如果没问题的话,执行如下指令试试

docker ps -a

没提示没有“docker”这个命令就成功了

docker-compose

下载二进制文件,放进 <u>/usr/local/bin</u>​即可,指令如下

喜欢什么版本,把版本号**v2.2.2**换掉就行

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

下载的时候经常因为网络、路径错误出问题,一定要仔细看下执行完的反馈

测试/dm

docker-compose

没提示没有“docker-compose”这个命令就成功了

至此总算是完成了大部分的准备工作

docker-compose.yml

找一个文件路径,作为之后你存放思源数据的地方,此处假设文件路径为/siyuan

在路径/siyuan 下新建 docker-compose.yml 文件,内容如下:

version: '3'

services:
  siyuan:
    image: b3log/siyuan:latest
    container_name: siyuan
    restart: always
    volumes:
      - /siyuan:/root/Documents/SiYuan
    command: [--workspace=/root/Documents/SiYuan,--lang=zh_CN,--accessAuthCode=授权码]
    network_mode: "host"

ps:路径一定要改,授权码一定要写

授权码指的是 最后访问思源时输入的密码,这个可以自己任意设置,比如一堆乱码:128398236rjsdafakdnfasdk

run

然后在/siyuan 路径下执行

docker compose up -d

执行完查看以下 log

docker-compose logs

应当显示跟下图差不多(不用怀疑,我肯定没有全部截图):

image

接下来直接用*http://ip:6806 访问测试一下,能成功访问就大功告成了*

补充(阿里云)

本地端这样部署就结束了,阿里云服务器还需要关闭防火墙和配置安全组

第三方同步

阿里云和腾讯云

阿里云和腾讯云已经有大佬写过教程,我这里不再赘述了,大家可以参看如下:

思源笔记同步指南 - 知乎 (zhihu.com)

第三方同步选择 - S3 服务商对比推荐 - 链滴 (ld246.com)

思源使用阿里云 OSS 同步详细教程 - 链滴 (ld246.com)

华为云

我个人都是已经首选华为云,我没有设置子帐号了,主要是主账号也没啥重要的东西

域名绑定

服务器/本地设备有公网 ip 的话非常简单,购买域名、ICP 备案,然后添加一条 dns 解析即可。

给大家说个滑稽的事情,我的域名是在华为云购买和备案的,然后 docker 的服务器是阿里云买的。我在华为云 dns 配置了解析,然后乐子来了,阿里云认为华为云这个域名没有备案,把访问拦截了,咱也没办法

域名:图解从域名到建站_域名注册服务 Domains_产品介绍_华为云 (huaweicloud.com)

备案:成长地图_ICP 备案_华为云 (huaweicloud.com)

DNS 解析:成长地图_云解析服务 DNS_华为云 (huaweicloud.com)

结束

放个捐赠思源开发者的,我已经捐了

靠爱发电 - 链滴 (ld246.com)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22388 引用 • 89640 回帖
5 操作
Zhangshanshan 在 2024-01-10 11:01:30 更新了该帖
Zhangshanshan 在 2023-12-14 17:26:21 更新了该帖
Zhangshanshan 在 2023-12-14 17:19:13 更新了该帖
Zhangshanshan 在 2023-11-18 16:42:55 更新了该帖 Zhangshanshan 在 2023-11-17 20:33:17 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 我印象中不写 network_mode,也是默认 hosts(我朋友没写这个也能用)。可能有些玄学问题,不过能用就行

  • 其他回帖
  • submartingale

    大佬,我今天参照你的教程在服务器部署了一下,但在公网使用 ip+ 端口访问不了。在服务器上看该容器的 port 是空的,我把 network_mode 这一行注释掉,加了 port 6806:6806 现在可以访问了。想咨询一下 network_mode 这个如果用 hosts 的话,为什么会出现这个情况呢?我查了我的入站规则肯定是没问题的(不然我修改之后应该也无法访问)

    1 回复
  • Zhangshanshan

    主要是思源笔记可以一键发布在思源社区,说白了就是懒哈哈

  • Mura

    可以用“预定设置好的密码”来理解 授权码 AccessAuthCode

  • 查看全部回帖