在CentOS 7上安装Mastodon

Mastodon是一款开源的自托管微博客和社交网络服务器。它提供类似Twitter的功能;但它不是由单个公司控制,而是由分散的服务器联合而成,它们相互连接在一起构成整个社交网络系统。小型团队可以启动其Mastodon服务器实例,以在彼此之间以及与联盟社区的其他用户进行通信。它还使您能够选择自己的隐私和审核策略,并定义如何与其他服务器的其他用户进行通信。单个用户创建和订阅的内容托管在创建其帐户的服务器上。即使用户不在同一服务器上,他们也可以彼此跟随。Mastodon网络中的​​每个用户都有其唯一的名称或ID,该名称或ID位于@[email protected]格式。Mastodon的客户端应用程序可用于几乎所有平台。

先决条件

注意:我们将使用social.example.comMastodon实例作为域名。用social.example.com您要用于Mastodon应用程序的实际域名替换所有出现的

如有必要,请使用指南如何更新CentOS 7更新基本系统。系统更新后,继续安装所需的依赖项。

安装依赖项

Mastodon需要几个依赖项才能起作用。安装的最新版本Node.js,该版本将用于编译JavaScript文件。

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

Install Yarn,这是一个快速,可靠和安全的依赖项管理器应用程序。我们将使用Yarn安装Node.js依赖项。

sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn

安装Redis。Redis是一个内存中的数据结构存储和缓存应用程序。

sudo yum -y install redis

启动Redis并使其能够在启动时自动启动。

sudo systemctl start redis
sudo systemctl enable redis

安装一些其他的依赖关系,这些依赖关系是构建Ruby安装所需的,还需要其他依赖关系。

sudo yum -y install ImageMagick git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel

您还需要安装开发工具。

sudo yum -y groupinstall 'Development Tools'

安装和配置PostgreSQL

PostgreSQL是一个对象关系数据库系统。您将需要将PostgreSQL存储库添加到系统中,因为默认yum存储库包含较旧版本的应用程序。

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

安装PostgreSQL数据库服务器。

sudo yum -y install postgresql96-server postgresql96-contrib postgresql96-devel

初始化数据库。

sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

编辑pg_hba.conf文件以启用MD5基于身份验证。

sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf

找到以下行,并改变peertrustidentmd5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

更新后,配置应如下所示。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

启动PostgreSQL服务器,并使其能够在启动时自动启动。

sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6

更改默认PostgreSQL用户的密码。

sudo passwd postgres

PostgreSQL用户身份登录到外壳。

sudo su - postgres

PostgreSQL为Mastodon 创建一个新用户。

createuser mastodon

PostgreSQL提供了psql在数据库上运行查询的外壳。通过运行切换到PostgreSQL Shell。

psql

为Mastodon数据库的新创建的用户设置密码,并提供添加新数据库的权限。

ALTER USER mastodon WITH ENCRYPTED password 'DBPassword' CREATEDB;

替换DBPassword为强密码。从psql外壳退出:

\q

切换到sudo用户。

exit

安装更多必需的PostgreSQL依赖项。

sudo yum -y install libpqxx-devel protobuf-devel

安装Ruby

为Mastodon创建一个新用户,然后切换到新创建的用户。

sudo adduser mastodon -d /opt/mastodon
sudo su - mastodon

我们将使用Ruby Version Manager或RVM安装最新版本的Ruby。它用于安装和管理Ruby的多个版本。

GPGRVM 的密钥添加到您的服务器。

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

安装RVM。

curl -sSL https://get.rvm.io | bash -s stable
source /opt/mastodon/.rvm/scripts/rvm

现在获取可用的Ruby版本列表。

rvm list known

您将看到以下输出。

[mastodon@vultr ~]$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head

...

现在,从列表中安装最新版本的Ruby。

rvm install 2.4

使用已安装的Ruby版本。

rvm use 2.4

您应该能够验证其版本。

ruby -v

您应该看到类似的输出。

[mastodon@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

Install bundler,它是Ruby应用程序的依赖项管理器。

gem install bundler

现在切换到Mastodon用户的主目录,并从Github克隆应用程序存储库文件。

cd ~
git clone https://github.com/tootsuite/mastodon.git app

移动应用程序目录并签出应用程序的最新版本。

cd ~/app
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

配置,bundle以将自定义路径用于PostgreSQL配置。另外,安装Ruby依赖项。

bundle config build.pg --with-pg-config=/usr/pgsql-9.6/bin/pg_config
bundle install --deployment --without development test

使用Yarn安装Node.js依赖项。

yarn install --pure-lockfile

您将需要为Mastodon应用程序创建一个配置文件。复制样本配置文件。

cd ~/app
cp .env.production.sample .env.production

编辑文件之前,请secrets通过运行以下命令三次来生成三种不同的文件。您将需要在配置文件中设置这些机密。

RAILS_ENV=production bundle exec rake secret

您应该得到类似的输出。

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake secret
0f17dab1cf4a07f6fac671ecd5815adcb59d012b338dae9350c66402250c6c729dccd6182b1a8f75c4fde55453ce283ea66e07ed4466cdc6d4d6974c98512967

使用nano编辑器编辑配置文件。

nano .env.production

查找以下行并相应地更改值。

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

根据您在PostgreSQL安装过程中创建的数据库用户,提供数据库凭据。为数据库名称提供任何名称,因为Mastodon将使用您提供的名称自动创建数据库。

DB_HOST=127.0.0.1
DB_USER=mastodon
DB_NAME=mastodon
DB_PASS=DBPassword
DB_PORT=5432

设置应用程序的域名。

LOCAL_DOMAIN=social.example.com

找到以下几行并将其值设置为您生成的机密。

PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=

保存文件并退出编辑器。

现在,运行以下命令来生成Web Push VAPID密钥。如果尚未在上述配置文件中设置机密,则在生成Web Push VAPID密钥时会出现错误。

RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key

您应该看到以下输出。

[mastodon@vultr app]$ RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key
VAPID_PRIVATE_KEY=DCMQdSPkdm-mepsNh4F3suc-UIvsABCvwFd03jSVemM=
VAPID_PUBLIC_KEY=BMMVcVXmqnV0C8S_ybZ7eQH-MXBEX2exqfdPSYQiMMUF2rRxfhoEtVF931i26ebMgmslHB_nvVadOdcBPhaFEjw=

再次打开配置文件,并在各自的行中设置生成的密钥。

VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

最后,提供SMTP邮件服务器的信息,以便应用程序可以向用户发送电子邮件。使用有效的SMTP服务器非常重要,因为新注册后,将向用户发送一封带有激活链接的电子邮件。新用户将必须单击激活链接来激活其帐户。

SMTP_SERVER=mail.example.com
SMTP_PORT=456
[email protected]
SMTP_PASSWORD=MailPassword
[email protected]
SMTP_TLS=true

完成后,保存文件并退出编辑器。您已完成Mastodon实例的基本配置。

首次设置PostgreSQL数据库。

RAILS_ENV=production bundle exec rails db:setup

首先,以上命令将使用配置中提到的名称创建一个新数据库。然后,它将根据配置写入数据库。

预编译所有CSSJavaScript文件以创建缓存。

RAILS_ENV=production bundle exec rails assets:precompile

Mastodon现在已安装在您的服务器上。现在,您将需要设置一个NginxWeb服务器来为应用程序Systemd提供服务,并需要设置服务来运行Mastodon服务。

从现在开始,我们将需要使用sudo用户来执行命令。

使用“让我们加密SSL”安装Nginx

我们将Nginx Web服务器用作反向代理,以向用户提供应用程序。我们还将从Let's Encrypt获取并安装SSL证书。

安装Nginx和Certbot。Certbot是Let's Encrypt CA的官方证书颁发客户端。

sudo yum -y install nginx certbot

调整防火墙设置,以允许标准HTTPHTTPS端口通过防火墙,因为Certbot需要建立HTTP连接来验证域权限。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

注意:要从Let's Encrypt CA获得证书,必须确保要为其生成证书的域指向服务器。如果不是,请对您域的DNS记录进行必要的更改,并等待DNS传播,然后再次提出证书请求。Certbot在提供证书之前会检查域权限

现在,使用Certbot中的内置Web服务器为您的域生成证书。

sudo certbot certonly --standalone -d social.example.com

生成的证书很可能存储在/etc/letsencrypt/live/social.example.com/目录中。SSL证书将保留为fullchain.pem,私钥将另存为privkey.pem

“加密”证书将在90天后过期,因此建议使用Cron作业为证书设置自动续订。Cron是一项系统服务,用于运行定期任务。

打开cron作业文件。

sudo crontab -e

添加以下行。

0 0 * * * /usr/bin/certbot renew --quiet

上面的cron工作将每天在午夜运行。如果证书到期,它将自动更新证书。

现在为Mastodon站点创建一个新的Nginx服务器块。

sudo nano /etc/nginx/conf.d/mastodon.conf

以此填充文件。

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {
  listen 80;
  listen [::]:80;
  server_name social.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name social.example.com;

  ssl_protocols TLSv1.2;
  ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;

  ssl_certificate     /etc/letsencrypt/live/social.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/social.example.com/privkey.pem;

  keepalive_timeout    70;
  sendfile             on;
  client_max_body_size 0;

  root /opt/mastodon/app/public;

  gzip on;
  gzip_disable "msie6";
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_buffers 16 8k;
  gzip_http_version 1.1;
  gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

  add_header Strict-Transport-Security "max-age=31536000";

  location / {
    try_files $uri @proxy;
  }

  location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
    add_header Cache-Control "public, max-age=31536000, immutable";
    try_files $uri @proxy;
  }

  location @proxy {
    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 https;
    proxy_set_header Proxy "";
    proxy_pass_header Server;

    proxy_pass http://127.0.0.1:3000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  location /api/v1/streaming {
    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 https;
    proxy_set_header Proxy "";

    proxy_pass http://127.0.0.1:4000;
    proxy_buffering off;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    tcp_nodelay on;
  }

  error_page 500 501 502 503 504 /500.html;
}

确保更改域名和SSL证书的路径。

现在,您可以启动Nginx Web服务器,并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

您还需要允许端口4000通过防火墙,因为该端口将提供流API服务。

sudo firewall-cmd --permanent --zone=public --add-port=4000/tcp
sudo firewall-cmd --reload

提供Mastodon目录的执行权限。

sudo chmod +x /opt/mastodon

设置系统服务

您将需要启动三个不同的过程来成功启动Mastodon服务器。使用Systemd服务将确保Mastodon服务器在启动时自动启动并处理故障。

创建一个新的systemd服务以运行Mastodon Web服务。该服务将在port上启动内置的Web服务器3000

sudo nano /etc/systemd/system/mastodon-web.service

用以下内容填充文件。

[Unit]
Description=Mastodon Web Service
After=network.target

[Service]
Type=simple
User=mastodon
Group=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="PORT=3000"
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

创建第二个Systemd服务以运行Mastodon后台队列服务。Mastodon队列服务负责所有后台任务。

sudo nano /etc/systemd/system/mastodon-queue.service

用以下内容填充文件。

[Unit]
Description=Mastodon Queue Service
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="RAILS_ENV=production"
Environment="DB_POOL=5"
ExecStart=/bin/bash -lc 'bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

最后,为Mastodon流API服务创建最后一个服务文件。

sudo nano /etc/systemd/system/mastodon-api.service

用以下内容填充文件。

[Unit]
Description=Mastodon Streaming
After=network.target

[Service]
Type=simple
User=mastodon
WorkingDirectory=/opt/mastodon/app
Environment="NODE_ENV=production"
Environment="PORT=4000"
ExecStart=/bin/npm run start
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target

启用Mastodon服务以在启动时自动启动。

sudo systemctl enable mastodon-web mastodon-queue mastodon-api 

要启动Mastodon服务,您可以运行此程序。

sudo systemctl start mastodon-web mastodon-queue mastodon-api 

要检查服务的状态,可以运行此程序。

sudo systemctl status mastodon-web mastodon-queue mastodon-api 

结论

现在,您可以通过访问Mastodon应用程序https://social.example.com。在服务器上创建一个新的用户帐户,并通过打开电子邮件中发送的链接来验证用户帐户。要为刚创建的帐户提供管理员特权,请运行此命令。

sudo su - mastodon && cd ~/app
RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=<user_name>

替换<user_name>为您在Mastodon界面中用于创建帐户的实际用户名。

Mastodon实例现已安装并配置为运行。首先邀请您的朋友加入您的实例,并探索Mastodon提供的功能。您可以通过��载可用于各种平台的任何应用程序来在移动设备中使用社交网站。



Leave a Comment

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

使用Nethogs监视网络带宽使用情况

使用Nethogs监视网络带宽使用情况

在本教程中,我们将介绍在CentOS 6x x64上安装和使用nethogs的过程。nethogs是一种网络监视工具,它允许Networ

如何在CentOS 7上安装BoltWire CMS

如何在CentOS 7上安装BoltWire CMS

使用其他系统?简介BoltWire是一个用PHP编写的免费,轻量级的内容管理系统。与大多数其他内容管理人员相比

在CentOS 6上设置SA-MP San Andreas多人服务器

在CentOS 6上设置SA-MP San Andreas多人服务器

欢迎来到另一个Vultr教程。在这里,您将学习如何安装和运行SAMP服务器。本指南是为CentOS 6编写的。先决条件

使用Etckeeper进行/ etc的版本控制

使用Etckeeper进行/ etc的版本控制

简介/ etc /目录在Linux系统运行中起着至关重要的作用。其原因是因为几乎每个系统配置

如何在CentOS 7上安装Microweber

如何在CentOS 7上安装Microweber

使用其他系统?Microweber是一个开放源代码的拖放式CMS和在线商店。Microweber源代码托管在GitHub上。本指南将向您展示

如何在CentOS 7上安装SonarQube

如何在CentOS 7上安装SonarQube

使用其他系统?SonarQube是用于质量系统开发的开源工具。它是用Java编写的,并且支持多个数据库。它提供

如何在CentOS 7上使用Mosh进行远程服务器管理

如何在CentOS 7上使用Mosh进行远程服务器管理

使用其他系统?Mosh是Mobile Shell的缩写,是一种新兴的远程终端应用程序,旨在提供更好的连接和使用

如何在CentOS 7上安装MoinMoin

如何在CentOS 7上安装MoinMoin

MoinMoin是一个使用Python编写的基于文件系统的开源Wiki引擎。如今,MoinMoin已广泛用于开源社区。许多供应商

在CentOS 7上安装H2O Web服务器

在CentOS 7上安装H2O Web服务器

H2O是新一代HTTP服务器,它对所有当前使用的Web服务器都具有出色的,功能齐全的HTTP / 2实现。使用H2O作为您的Web服务器

如何在Debian,CentOS和FreeBSD上使用Sudo

如何在Debian,CentOS和FreeBSD上使用Sudo

在Linux和Unix系统管理员中,使用sudo用户访问服务器并在root级执行命令是一种非常普遍的做法。使用泡沫

如何在Ubuntu 16.10上安装Countly Analytics

如何在Ubuntu 16.10上安装Countly Analytics

使用其他系统?Countly是一个开源Web /移动分析和营销平台。它具有许多用于从Web收集数据的功能

如何在CentOS 7上安装MODX CMS和Nginx

如何在CentOS 7上安装MODX CMS和Nginx

MODX是一个用PHP编写的免费开放源内容管理系统。它使用MySQL或MariaDB来存储其数据库。MODX专为满足以下条件的企业而设计:

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

如何在CentOS 7 LAMP VPS上安装Lychee 3.1相册

使用其他系统?Lychee 3.1相册是一种简单,灵活,免费和开源的照片管理工具,可在VPS服务器上运行。安装

如何在CentOS 7上安装ERPNext开源ERP

如何在CentOS 7上安装ERPNext开源ERP

使用其他系统?ERP或企业资源计划是用于管理核心业务流程的企业应用程序套件。ERPNext是免费的

如何在CentOS 7 LAMP VPS上安装Paste 2.1

如何在CentOS 7 LAMP VPS上安装Paste 2.1

使用其他系统?Paste 2.1是一个简单,灵活,免费和开源的pastebin应用程序,用于存储代码,文本等。最初是

如何在CentOS 7上安装Seafile Server

如何在CentOS 7上安装Seafile Server

使用其他系统?Seafile(社区版本)是一个免费和开源的文件同步和共享解决方案,类似于ownCloud。机智

如何在CentOS 7上安装Kolab组件

如何在CentOS 7上安装Kolab组件

使用其他系统?Kolab Groupware是一个免费的基于Web的开源组件软件。它的功能包括电子邮件通信,事件

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息