===== 0基础搭建Misskey教程 =====
==== 写在前面 ====
1. 为什么选择Misskey?
* 当然是因为可爱,毕竟颜值第一嘛(●'◡'●)\\
2. 针对人群:
* 没有编程基础
* 不懂网络技术
3. 可能产生的花费:
* 域名购买及续费——$5~20每年
* VPS购买及续费——$5~10每月
4. 会有后续维护成本,包括但不限于:
* 开通邮箱服务
* 扩展储存
* 进一步学习编程知识、网络技术等
====购买域名====
===支付方式===
* 需要可以支付的账户,包括并不限于:Visa,Mastercard,Paypal,支付宝,微信
===域名选购===
* 域名的选择和注意事项可具体参考以下博文及讨论:
* [[https://blog.bgme.me/posts/precautions-for-registering-domains/|注册域名时的注意事项 - 影子屋]]
* [[https://o3o.ca/@salt/104303577562930405|有关建站前域名选择的建议 Mastodon 讨论串]]
===注册域名===
* 本文以Namesilo为例,请根据自己的需求和喜好选择域名注册商\\
- 访问[[https://www.namesilo.com|Namesilo]]主页
- 注册账户\\ 这项不具体演示,按照要求填写信息就可以
- 搜索你想好的域名\\ 记得起个好记有特色的名字,不然以后记不住自己站点的域名可不好办
- 点击Add将选好的域名加入购物车\\ 注意:
* 查看一下续费价格,有些域名第一年很便宜,但是续费会比较贵
- 付款购买\\ 注意:Namesilo是附赠WHOIS的,请选WHOIS privacy保护你的隐私\\ {{wiki:misskey建站:namesilo购物车.jpg}}
- 进入Domain Manager管理域名\\ {{wiki:misskey建站:domain_manager.png}}\\ 选中你的域名,点击Change Nameservice\\ 把原来的nameservice删除换成之后我们会使用的DNS解析服务商Cloudflare的\\
* dale.ns.cloudflare.com
* fish.ns.cloudflare.com
====购买VPS====
===支付方式===
* 需要可以支付的账户,包括并不限于:Visa,Mastercard,Paypal,支付宝,微信
===选择供应商===
* 可以参考[[https://www.10besty.com/best-vps-hosting-services/|最好的国外VPS推荐]]
* 本文以Amazon Lightsail为例
* 访问[[https://aws.amazon.com/cn|AWS云服务主页]],注册并登录\\ 注意选择root user\\ 点击所有服务,找到Lightsail\\ {{wiki:misskey建站:aws_signin.png}}\\ {{wiki:misskey建站:lightsail.png}}
===创建实例===
- 选择实例位置:日本或新加坡
- 选择实例映像:
* 平台:Linux/Unix
* 蓝图:仅限操作系统:Debian10或Ubuntu20
- 选择实例计划:$5或$10的计划
===SSH登录===
* 参见[[https://lightsail.aws.amazon.com/ls/docs/zh_cn/articles/lightsail-how-to-set-up-putty-to-connect-using-ssh|下载 PuTTY 并将其设置为使用中的SSH 进行连接Amazon Lightsail]]
===创建静态IP===
* 参见[[https://lightsail.aws.amazon.com/ls/docs/zh_cn/articles/lightsail-create-static-ip|Create a static IP and attach it to an instance in Amazon Lightsail]]
===防火墙设置===
* 选中实例
* 选择联网
* 打开防火墙443和ping端口\\
{{wiki:misskey建站:firewall.png}}
==== DNS解析====
- 选择DNS解析服务商
* 通常域名注册商也提供DNS解析服务
* 本文选择Cloudflare的服务
- 添加A记录\\ 点击DNS\\ {{wiki:misskey建站:dns.png}}
* 想要知道是否解析成功可以进行以下操作:
* 在windows操作系统上运行cmd命令:win+R,在窗口输入cmd
* 输入命令:ping #你的域名
* 如果正确解析,则会回复带有服务器IP地址的相关信息\\ 如果失败请再等一段时间
- 创建SSL证书
* 点击SSL/TLS,点击Origin Service
* Create Certificate\\ 填上你的域名\\ {{wiki:misskey建站:ssl.png}}\\ 将两段密码分别复制到记事本,保存\\ 注意:后缀.pem和.key不要搞错
- 将SSL证书上传到服务器
* 通过PuTTY登录VPS,按顺序输入以下命令sudo passwd root #设置root用户密码,务必记住密码
su root #换成root用户登录,输入刚刚设置的密码
mkdir /etc/nginx/ssl/misskey #创建一个新目录
nano /etc/nginx/ssl/misskey/sever_name.pem #sever_name改成你的域名
* 使用*记事本*打开.pem文件,全选复制,回到PuTTY右击
* ctrl+x退出,y,enter保存
* 将.key文件也复制到/etc/nginx/ssl/misskey目录下
====Misskey使用Docker部署====
[[https://github.com/syuilo/misskey/blob/develop/docs/docker.zh.md|官方指南]]\\ [[https://candinya.com/posts/play-with-misskey/|喵窝站长的搭建过程]]
- 环境配置
* 必要依赖apt install git curl nginx -y
* 安装Docker\\ bash <(curl -L -s https://get.docker.com)
* 安装Docker-compose\\ curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 下载Misskey
* 克隆Misskey\\ git clone -b master git://github.com/syuilo/misskey.git
* 打开misskey文件夹\\ cd misskey
* 检查是否最新版本\\ git checkout master
- 配置Misskey
* 可以按照如下方式创建配置文件\\ cd .config
cp example.yml default.yml
cp docker_example.env docker.env
* 编辑docker.env\\ nano docker.env
\\ {{wiki:misskey建站:docker.env.png}}
* 编辑default.yml\\ 修改打勾的地方,注意db的用户名和密码是上一步中docker.env文件中设置的,请保持一致\\ nano default.yml
\\ {{wiki:misskey建站:default.yml.jpg}}
- 配置Docker
* 回到misskey根目录cd ~/misskey
* 编辑docker-compose.yml,根据下面的代码适当修改\\ version: "3"
services:
web:
# build: .
image: misskey/misskey:latest #自动更新
restart: always
links:
- db
- redis
# - es
ports:
- "127.0.0.1:3000:3000"
networks:
- internal_network
- external_network
volumes:
- ./files:/misskey/files
- ./.config:/misskey/.config #卷映射
redis:
restart: always
image: redis:latest
networks:
- internal_network
volumes:
- ./redis:/data
db:
restart: always
image: postgres:12.2-alpine
networks:
- internal_network
env_file:
- .config/docker.env
volumes:
- ./db:/var/lib/postgresql/data
# es:
# restart: always
# image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.2
# environment:
# - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
# networks:
# -internal_network
# volumes:
# - ./elasticsearch:/usr/share/elasticsearch/data
networks:
internal_network:
internal: ture
external_network:
- 构建Misskey
* 使用如下方式构建Misskey\\ docker-compose build
* 失败的话,请尝试如下命令,再执行上一条命令\\ service docker start
- 初始化数据库\\ docker-compose run --rm web yarn run init
* 如果失败,可能是内存不够,请参考这篇教程{{https://cloud.tencent.com/developer/article/1156834|Linux解决内存不足-添加SWAP交换分区}}
- 正常启动\\ docker-compose up -d
- 反代配置\\ nano /etc/nginx/conf.d/misskey.conf
\\ 根据以下代码做适当修改\\
# Sample nginx configuration for Misskey
#
# 1. Replace example.tld to your domain
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-enabled/
# or copy to /etc/nginx/conf.d/
# For WebSocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_tem$
server {
listen 80;
listen [::]:80;
server_name f.jymuoyu.com; #你的域名
return 301 https://$host$request_uri;
# For SSL domain validation
root /var/www/html;
location /.well-known/acme-challenge/ { allow all; }
location /.well-known/pki-validation/ { allow all; }
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name f.jymuoyu.com; #你的域名
ssl_session_cache shared:ssl_session_cache:10m;
# To use Let's Encrypt certificate
ssl_certificate /etc/v2ray/rss.jymuoyu.pem; #你的ssl证书存放路径
ssl_certificate_key /etc/v2ray/rss.jymuoyu.key;
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SH$
ssl_prefer_server_ciphers on;
# Change to your upload limit
client_max_body_size 80m; #上传文件的最大限制
# Proxy to Node
location / {
proxy_pass http://127.0.0.1:3000;
proxy_cache_bypass $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_redirect off;
# For WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Cache settings
proxy_cache cache1;
proxy_cache_lock on;
proxy_cache_use_stale updating;
add_header X-Cache $upstream_cache_status;
}
}
- 执行控制台命令
* 执行此项命令前,先去你的网站注册一个用户\\ docker-compose run --rm web node built/tools/mark-admin @example #example换成你的用户名