最近对联邦宇宙的概念非常感兴趣,也认为互联网服务不应该集中在单个服务器或单个企业手中,这种每个人都能搭建自己的星球,互相接入形成热闹的联邦宇宙的方法,才是互联网应有的开放与包容~

其实按道理目前联邦宇宙的主要用户是Mastodon,不过misskey虽然小众,但界面更对我胃口,对开发者搭建更友好,对服务器要求也更低.而且联邦宇宙最大的优点就是互联性,misskey和Mastodon的用户都能访问彼此的推文,并回复或转推(嘟)~当然,缺点也是有的,misskey和Mastodon的推文还好,但用户交互有些困难...不过对于我这种在互联网偏安一隅,默默观察联邦宇宙的人来说也不重要啦~

首先,搭建前推荐去官方文档查看~本文选取的是docker搭建方法,用nginx反代~(很普通的做法呢~)

同时,本教程也参考了我不是咕咕鸽的博客~

不过不能照搬,因为不同该博客可能据发布有一定时间了(其实更大可能是我的问题quq),照搬会走不通的~

首先,安装docker和docker-compose,具体可查看我之前安装Nginx Proxy Manager的实测:

安装完成后,新建一个文件夹(路径自选哦~):

mkdir -p /root/data/docker_data/misskey

cd /root/data/docker_data/misskey

然后写入docker-compose.yml(vim或类似的输入指令请自行了解哦~):

vim docker-compose.yml

写入:

# Misskey minimal deploy config
version: "3"

services:
  web:
    restart: always # 自动重启,请注意如果您对您的配置没有信心,请不要开启这个选项,以避免进程崩溃反复重启耗费大量资源!
    image: misskey/misskey:latest # 这里使用了官方镜像,以避免本地构建时资源不足的问题
    container_name: misskey_web # 容器名,方便管理,您可以自行修改为您觉得合适的内容
    links:
      - db
      - redis
    ports:
      - "3001:3001"
    networks:
      - internal_network
      - external_network
    volumes:
      - ./config:/misskey/.config:ro # 用于映射配置文件,请根据您的实际配置来决定文件夹名称,设定为只读即可;
      - ./files:/misskey/files # 用户上传到本地的文件,如果您一开始就接入外部存储(如wasabi或是AWS S3)您可以忽略这块配置

  redis:
    restart: always
    image: redis:latest
    container_name: misskey_redis
    networks:
      - internal_network
    volumes:
      - ./redis:/data # redis数据库的数据文件夹映射,创建后默认在 ./redis 文件夹中

  db:
    restart: always
    image: postgres:12.2-alpine
    container_name: misskey_db
    networks:
      - internal_network
    env_file:
      - ./config/docker.env # 需要使用配置文件中设置的 Docker 环境变量
    volumes:
      - ./db:/var/lib/postgresql/data # 主数据库的数据文件夹映射,创建后默认在 ./db 文件夹中

networks:
  internal_network: # 内部网络
    internal: true
  external_network: # 外部网

基本上不改也行,改的话请记住您设置的端口等信息~

保存以后,输入如下指令创建文件夹及写入default.yml:

mkdir config
cd config
vim default.yml

写入如下配置:

#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey configuration
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

#   ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────

# Final accessible URL seen by a user.
url: https://miss.flymlc.com/       # 注意改成自己最后反向代理想要的网址

# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# URL SETTINGS AFTER THAT!

#   ┌───────────────────────┐
#───┘ Port and TLS settings └───────────────────────────────────

#
# Misskey requires a reverse proxy to support HTTPS connections.
#
#                 +----- https://example.tld/ ------------+
#   +------+      |+-------------+      +----------------+|
#   | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
#   +------+      |+-------------+      +----------------+|
#                 +---------------------------------------+
#
#   You need to set up a reverse proxy. (e.g. nginx)
#   An encrypted connection with HTTPS is highly recommended
#   because tokens may be transferred in GET requests.

# The port that your Misskey server should listen on.
port: 3001

#   ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────

db:
  host: db
  port: 5432

  # Database name
  db: misskey

  # Auth
  user: example-misskey-user
  pass: example-misskey-pass

  # Whether disable Caching queries
  #disableCache: true

  # Extra Connection options
  #extra:
  #  ssl: true

#   ┌─────────────────────┐
#───┘ Redis configuration └─────────────────────────────────────

redis:
  host: redis
  port: 6379
  #family: 0  # 0=Both, 4=IPv4, 6=IPv6
  #pass: example-pass
  #prefix: example-prefix
  #db: 1

#   ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────

#elasticsearch:
#  host: localhost
#  port: 9200
#  ssl: false
#  user: 
#  pass: 

#   ┌───────────────┐
#───┘ ID generation └───────────────────────────────────────────

# You can select the ID generation method.
# You don't usually need to change this setting, but you can
# change it according to your preferences.

# Available methods:
# aid ... Short, Millisecond accuracy
# meid ... Similar to ObjectID, Millisecond accuracy
# ulid ... Millisecond accuracy
# objectid ... This is left for backward compatibility

# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# ID SETTINGS AFTER THAT!

id: 'aid'

#   ┌─────────────────────┐
#───┘ Other configuration └─────────────────────────────────────

# Whether disable HSTS
#disableHsts: true

# Number of worker processes
#clusterLimit: 1

# Job concurrency per worker
# deliverJobConcurrency: 128
# inboxJobConcurrency: 16

# Job rate limiter
# deliverJobPerSec: 128
# inboxJobPerSec: 16

# Job attempts
# deliverJobMaxAttempts: 12
# inboxJobMaxAttempts: 8

# IP address family used for outgoing request (ipv4, ipv6 or dual)
#outgoingAddressFamily: ipv4

# Syslog option
#syslog:
#  host: localhost
#  port: 514

# Proxy for HTTP/HTTPS
#proxy: http://127.0.0.1:3128

#proxyBypassHosts: [
#  'example.com',
#  '192.0.2.8'
#]

# Proxy for SMTP/SMTPS
#proxySmtp: http://127.0.0.1:3128   # use HTTP/1.1 CONNECT
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4
#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5

# Media Proxy
#mediaProxy: https://example.com/proxy

# Proxy remote files (default: false)
#proxyRemoteFiles: true

# Sign to ActivityPub GET request (default: false)
#signToActivityPubGet: true

#allowedPrivateNetworks: [
#  '127.0.0.1/32'
#]

# Upload or download file size limits (bytes)
#maxFileSize: 262144000

还是那句话,除了域名都可以不改,改的话记住自己改正的用户名,密码,端口等信息哦~

写完default.yml,就要写入docker.env了:

vim docker.env

然后写入:

(!!!注意!!!用户名密码与数据库名称需要对应上方default.yml文件所写!

# db settings
POSTGRES_PASSWORD=example-misskey-pass
POSTGRES_USER=example-misskey-user
POSTGRES_DB=misskey

保存后回到docker-compose.yml文件所在文件夹中:

cd ..

然后执行:

sudo docker compose build
sudo docker compose run --rm web pnpm run init
sudo docker compose up -d

就安装完成了~需要一定时间~请耐心等待~

最后请执行这条指令,否则无法上传图片(路径还是在docker-compose.yml文件所在文件夹中)~:

chown -R 991:991 ./files

至此,单纯的搭建工作就完成了~不过还有反代之类的

其实本篇博客几乎通篇与我不是咕咕鸽大佬的博客类似,但是执行的这行代码除外:

sudo docker compose run --rm web pnpm run init

而咕咕鸽大佬的则会报错,不知道是因为我个人原因还是咕咕鸽大佬的博客有点过时了.

还有就是这行代码我不是咕咕鸽大佬也没有,可能是我个人环境问题?

chown -R 991:991 ./files

之后就是将域名反代到指定ip,这方面大家也可以参考我之前的安装Nginx Proxy Manager教程,安装好后域名解析及反代非常简单!

至此,搭建就算完成了!之后是更新的指令(也可写成脚本定时执行~)~

docker-compose -f /root/data/docker_data/misskey/docker-compose.yml pull
docker-compose -f /root/data/docker_data/misskey/docker-compose.yml up -d
docker system prune -f

(tips:请不要忘记对上更新路径哦!)

如果不想要了,卸载也是简单滴~

cd /root/data/docker_data/misskey
docker-compose down
rm -rf /root/data/docker_data/misskey # 完全删除映射到本地的数据
開源·共享·互聯·可及
最后更新于 2024-07-05