已安装docker
compose
新建目录memos
,新建文件docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
version: "3.0"
services:
memos:
image: ghcr.io/usememos/memos:0.18.0
container_name: memos
restart: always
volumes:
- ./memos/:/var/opt/memos
environment:
- MEMOS_DRIVER=mysql
- MEMOS_DSN=root:password@tcp(db:3306)/memos_prod
command: ["--metric=false"]
depends_on:
- db
db:
image: mysql:8.2.0
container_name: mysql
restart: always
env_file: .db.env
volumes:
- ./mysql_data:/var/lib/mysql
caddy:
image: caddy:2.7.5
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy/site:/srv
- ./caddy/caddy_data:/data
- ./caddy/caddy_config:/config
depends_on:
- memos
|
创建.db.env
,修改为自己的数据库密码
1
2
3
4
|
MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=memos_prod
MYSQL_USER=yourusername
MYSQL_PASSWORD=yourpassword
|
创建Caddyfile
,memos
修改为你的域名
1
2
3
|
memos.com {
reverse_proxy memos:5230
}
|
执行docker-compose up -d
启动
访问域名打开网站,设置一个管理员账户
自定义css#
修改发文字体为其他
1
2
3
4
5
6
7
8
|
@font-face {
font-family: 'font';
src: url('https://www.font.woff') format('woff');
}
.memo-content-text {
font-family: 'font', sans-serif;
}
|
配置 Cloudflare R2 存储#
详细教程Configuring Cloudflare R2 Storage - Memos
存储路径处可以设置{year}/{month}/{timestamp}_{filename}
以文件夹方式存储保存在R2上的内容
1.tag
使用
支持#hello
#hello/haha
后面加一个空格即可
自托管最重要的就是数据备份了,写了个简单的脚本,利用mysqldump
导出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bash
BACKUPPASS="setBACKUPPASS"
BACKUPDIR="/path/to/backup"
# 使用 mysqldump 备份
echo "开始备份"
docker exec mysql bash -c 'mysqldump -u root --password="password" --no-tablespaces "memos_prod"' > $BACKUPDIR/memos-db-$(date '+%F').sql
echo "备份完成"
#加密文件
echo "开始加密"
7z a -p$BACKUPPASS -mhe=on $BACKUPDIR/memos-db-$(date '+%F').7z $BACKUPDIR/memos-db-$(date '+%F').sql
echo "加密完成"
|
如果你使用 Docker 运行 MySQL 容器,你可以通过以下步骤导入数据。假设你已经使用 docker run
启动了一个 MySQL 容器。
-
将 SQL 文件复制到容器内部: 在执行导入之前,需要将备份的 SQL 文件复制到 MySQL 容器内。使用以下命令将文件复制到容器:
docker cp $BACKUPDIR/memos-db-日期.sql mysql容器名称:/tmp/memos-db-日期.sql
请将 mysql容器名称
替换为你实际运行的 MySQL 容器的名称。
-
进入容器: 使用以下命令进入 MySQL 容器的命令行界面:
docker exec -it mysql容器名称 bash
-
使用 MySQL 命令行工具导入数据: 进入容器后,在容器的命令行中使用以下命令导入数据:
mysql -u root -p 目标数据库名称 < /tmp/memos-db-日期.sql
请将 目标数据库名称
替换为你要导入数据的实际数据库名称。
系统会提示你输入 MySQL 用户的密码,输入后即可执行导入。
-
退出容器: 导入完成后,使用以下命令退出容器的命令行界面:
exit
这样,你的备份数据应该已成功导入到 MySQL 容器中的指定数据库中。确保路径和文件名与实际情况相匹配,并替换相关的容器名称和数据库名称。
来自ChatGPT,太强大了,blog很多没有必要写了🫡
FAQ#
- 由于众所周知的网络问题,国内拉取镜像可能会失败,可以执行
1
|
echo -e '\ndocker pull togettoyou/ghcr.io.usememos.memos:0.17.1\ndocker tag togettoyou/ghcr.io.usememos.memos:0.17.1 ghcr.io/usememos/memos:0.17.1' | bash
|
详见:[hub-mirror] 请求执行任务 · Issue #1515 · togettoyou/hub-mirror · GitHub
Self-Hosting - Memos
搭建个人 Memos 服务
Moe Memos
快捷指令
Getting Started • Zettelkasten Method