乱七八糟地记录建站、博客等等的配置
在此实时更新
用 typora 随便写了一下
早知道备案这么麻烦就租香港或国外的的服务器了
一些安全的注意事项:
treehollow/install-doc: 如何搭建一个树洞 (github.com)
请务必确保时刻没有子域名 DNS 解析到服务器真实 IP,并且服务器真实 IP 必须始终保密!
服务器的 IP 如果泄露,DDoS 等情况就有可能发生,同时还会极大地增加攻击面。因此,服务器的 HTTP 流量必须始终通过 CDN(比如 Cloudflare CDN)。在 https://securitytrails.com/dns-trails 网站上,一个域名的全部子域名和 DNS 历史记录都可以轻松查到,因此不能有任何时刻让服务器真实 IP 暴露在外。
配置 SELinux
但由于目前使用的个人主站的服务器 ip 早已暴露,所以先没有做这些安全事项了
需要修改域名服务器,国内用户访问速度不稳定
可以非常方便地使用 Let’s Encrypt 实现 (通过 Certbot
的脚本)
真的真的非常地方便!并且免费!所以我不写具体教程了。
一些具体的细节需要注意,比如有些后端的应用需要端口转发等。
ᓚᘏᗢ
我的愿景是所有数据与计算都在云端。无论何时何地,只需一台安装有通用浏览器的终端机,就能安全方便地访问自己的应用与数据
配置 docker-compose.yml
文件:
旧版本(2.4 版本之前)的方法
version: '3'
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: always
user: "1000:1000" # 镜像中是使用默认创建的普通用户 `siyuan` 来启动内核进程的
ports:
- "6806:6806" # 宿主机端口:容器端口
volumes:
- /root/siyuan/workspace:/siyuan/workspace # workspace 是思源的数据目录
command: [--resident=true,--ssl=false,--accessAuthCode=password,--servePath=sy.framist.top,--workspace=/siyuan/workspace/ ] # 约 2.4 版本前
约 2.4 版本后:
version: '3'
services:
siyuan:
image: b3log/siyuan:latest
container_name: siyuan
restart: always
user: "1000:1000" # 镜像中是使用默认创建的普通用户 `siyuan` 来启动内核进程的
ports:
- "6806:6806" # 宿主机端口:容器端口
volumes:
- /root/siyuan/workspace:/siyuan/workspace # workspace 是思源的数据目录
command: [--ssl=false,--accessAuthCode=password,--servePath=sy.framist.top,--workspace=/siyuan/workspace/ ]
开启 HTTPS 后可设置 --ssl=true
镜像中是使用默认创建的普通用户
siyuan
(uid 1000/gid 1000)来启动内核进程的,所以在宿主机创建工作空间文件夹时请注意设置该文件夹所属用户组:chown -R 1000:1000 ./workspace
,在启动容器时需要带参数-u 1000:1000
。
docker-compose up -d
后台启动容器
一个简单的手动更新 python 脚本:
使用 watchtower
优雅得更新 docker 镜像:TODO 还未实际测试
在 docker-compose.yml
后添加:
watchtower:
image: containrrr/watchtower
container_name: watchtower_for_siyuan
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: siyuan --cleanup --schedule "0 0 5 * * *" # 北京时间早晨 5 点
Nginx 多个子域名映射到不同的端口或 ip
https://cloud.tencent.com/developer/article/1558240
注意要在阿里云的 DNS 云解析设置中添加子域名解析记录,否则反向代理不生效。
# cp nginx_siyuan.conf /etc/nginx/sites-available/siyuan.conf
# ln -s /etc/nginx/sites-available/siyuan.conf /etc/nginx/sites-enabled/sy.framist.top.conf
server {
listen 80;
server_name sy.framist.top;
location / {
proxy_pass http://127.0.0.1:6806;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 配置 WebSocket 反代 `/ws`
location /ws {
proxy_pass http://127.0.0.1:6806;
proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
}
备份与还原
新版本可以直接通过 思源-设置-导出
进行备份与还原。以下是旧版本的方法:
# tar:
# -z 代表用 gzip 算法来压缩/解压。
# -c, --create 创建一个新归档
# -v:显示所有过程
# -f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
tar -zcvf siyuan_backup.tar.gz [思源的数据目录]
# sz 从服务器下载到本地
sz siyuan_backup.tar.gz
上传备份文件
# rz 上传文件到服务器
rz
# 注:z 代表用 gzip 算法来压缩/解压。
# -x, --extract, --get 从归档中解出文件
tar -zxvf [原文件名].tar.gz
2.5.0 版本之后的第三方数据同步(官方)
思源笔记 v2.5.0 发布,数据同步和备份支持第三方 WebDAV 和 S3 协议,支持导出长图 之后,就可以官方支持第三方数据稳定的同步了
仿照用阿里云 OSS 建图床的方式(这个有很多教程了)
阿里云创建一个对象 OSS(私有读/写)
在 RAM 访问控制中创建一个子用户
开通 Open API 调用访问,记下 AccessKey ID
、AccessKey Secret
在 思源 - 设置 - 云端 里选择 S3,填入以下内容
bucket
实际上就是 阿里云上的名字
Endpoint
(地域节点)
Region
公共云下 OSS Region 和 Endpoint 对照表
Addressing
选择 Virtual-hosted-style (?)
注意内网可以使用内网访问节点
然后就可以同步啦
哎,现在这个又成收费功能了。其实这种不需要开发者提供支持服务,软件本身又是开源的情况下,做成必须登录才使用的功能是不合适的,而且很容易就绕过、产生分叉
旧的:
version: "3"
services:
database:
image: postgres:11.6-alpine
environment:
- POSTGRES_USER=codimd
- POSTGRES_PASSWORD=你的密码
- POSTGRES_DB=codimd
volumes:
- "database-data:/var/lib/postgresql/data"
restart: always
codimd:
image: hackmdio/hackmd:2.4.1
environment:
- CMD_DB_URL=postgres://codimd:你的密码d@database/codimd
- CMD_USECDN=false
depends_on:
- database
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
database-data: {}
upload-data: {}
备份:
cd /var/lib/docker/volumes
tar -zxvf plasma_backup.tar.gz
新的:
cd /var/lib/docker/volumes
tar -zcvf plasma_backup.tar.gz
version: "3"
services:
database:
image: postgres:11.6-alpine
environment:
- POSTGRES_USER=codimd
- POSTGRES_PASSWORD=你的密码
- POSTGRES_DB=codimd
volumes:
- "database-data:/var/lib/postgresql/data"
restart: always
codimd:
image: hackmdio/hackmd:2.4.1
environment:
- CMD_DB_URL=postgres://codimd:你的密码@database/codimd
- CMD_USECDN=false
depends_on:
- database
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
database-data: {}
upload-data: {}
个人博客部分目前是用 Hexo - Next 建设的。
Hexo 如何隐藏文章
602.framist.top
bucket 静态网页托管
注意事项:
出于安全考虑,中国内地各地域自 2018 年 09 月 28 日起,非中国内地各地域自 2019 年 09 月 25 日起,通过浏览器访问 OSS 静态网页类型文件(mimetype 为 text/html,扩展名包括 HTM、HTML、JSP、PLG、HTX、STM):
使用 OSS 默认域名通过浏览器访问静态网页文件时,Response Header 中会自动加上 Content-Disposition:attachment。即从浏览器访问这些文件时,会以附件形式进行下载。
使用自定义域名通过浏览器访问静态网页文件时,在浏览器支持预览对应格式的网页文件的情况下,默认直接预览文件内容。
https://www.bilibili.com/read/cv3372025
version: "3.3"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql密码
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress密码
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8081:80"
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress密码
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}