前言
本文已失效,建议跟随官方教程Installing from source进行部署,安装ElasticSearch出现问题可以看看这个Fail to create the ElasticSearch indices
前提条件
- 一台你有root访问权限的运行 Ubuntu 18.04 的机器
- 一个用于Mastodon站点的域名(或一个子域名),例如:example.com
- 一个电子邮件发送服务提供商,或其他SMTP服务器
软件仓库
首先确保已经安装curl:
Node.js
curl -sL https://deb.nodesource.com/setup_12.x | bash -
Yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
软件包
apt update
apt install -y \
imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
bison build-essential libssl-dev libyaml-dev libreadline6-dev \
zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
nginx redis-server redis-tools postgresql postgresql-contrib \
certbot python3-certbot-nginx yarn libidn11-dev libicu-dev libjemalloc-dev
安装 Ruby
因为使用 rbenv 可以更容易的获得正确的版本并在新版本发布后进行更新,我们将使用 rbenv 来管理Ruby版本。rbenv 必须安装在单个Linux用户中,因此,我们首先需要使用以下命令创建一个Mastodon用户:
adduser --disabled-login mastodon
切换到mastodon用户:
su - mastodon
执行以下步骤安装 rbenv 和 rbenv-build:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
上述操作完成,我们便可以安装正确的 Ruby 版本,通过以下命令获取版本号:
curl https://raw.githubusercontent.com/mastodon/mastodon/main/.ruby-version
此时显示3.0.3
,则所需版本为3.0.3
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.0.3
rbenv global 3.0.3
我们同样需要安装 bundler:
gem install bundler --no-document
返回root用户:
exit
配置
配置 PostgreSQL
性能调优(可选)
为了优化性能,你可以使用 pgTune 生成一个合适的配置文件(DB Type是Web application)。编辑 /etc/postgresql/10/main/postgresql.conf
中的相应数值并使用 systemctl restart postgresql
命令重启 PostgreSQL。
创建帐户
你需创建一个供Mastodon使用的PostgreSQL帐户。创建一个使用“ident”认证方式的帐户是最容易的配置方法,即PostgreSQL帐户不需要独立的密码并由同名Linux用户使用。
打开控制台:
sudo -u postgres psql //由于此时在root目录下,所以会提示postgres用户没有权限
在控制台中执行:
CREATE USER mastodon CREATEDB;
\q
完成!
配置 Mastodon
现在该下载Mastodon代码了。切换至mastodon用户:
su - mastodon
检出代码
使用git下载最新main
分支Mastodon:
git clone https://github.com/tootsuite/mastodon.git live && cd live
安装依赖
现在,安装Ruby和JavaScript依赖:
bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile
两个
bundle config
命令仅仅第一次安装依赖时需要。如果你之后进行升级或重安装依赖,只需要bundle install
就够了。
生成配置文件
运行交互式安装向导,注意如果你的SMTP服务提供商只支持SSL,此时无法完成邮件测试,需要之后在.env.production
文件中添加SMTP_SSL=true
:
RAILS_ENV=production bundle exec rake mastodon:setup
它将:
- 创建一个配置文件
- 预编译静态文件
- 创建数据库schema
配置文件被保存在.env.production
。如果你愿意的话,你可以查看并编辑这个文件。请参阅配置文件的文档。
这里提供一下我所用的smtp配置文件片段:
SMTP_SERVER=smtp.xxx.xxx
SMTP_PORT=465
SMTP_LOGIN=noreply@example.com
SMTP_PASSWORD=password
SMTP_AUTH_METHOD=plain
SMTP_OPENSSL_VERIFY_MODE=none
SMTP_FROM_ADDRESS='Mastodon <noreply@example.com>'
SMTP_SSL=true
你已经完成需使用mastodon用户进行的操作,请切换回root用户:
exit
配置 nginx
从Mastodon目录复制配置文件模版到nginx:
cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
编辑 /etc/nginx/sites-available/mastodon
,替换 example.com
为你自己的域名,你可以根据自己的需求做出其它的一些调整。
重载 nginx 以使变更生效:
获取SSL证书
我们将使用 Let’s Encrypt 获取一个免费的SSL证书:
certbot --nginx -d example.com
这个命令将获取一个证书,自动更新 /etc/nginx/sites-available/mastodon
以使用新证书并重载nginx以使变更生效。
现在你应该能够通过浏览器访问你的域名,然后看到一只大象锤击电脑屏幕的错误页面。这是因为我们还没有启动Mastodon进程。
配置 systemd 服务
从Mastodon目录复制systemd服务模版:
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
如果你在任何时候偏离默认值,请检查用户名和路径是否正确:
$EDITOR /etc/systemd/system/mastodon-*.service
最后,启动新systemd服务并将该服务设为开机自动激活:
systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming
他们将在开机启动时自动开始运行。
欢呼吧!你现在可以从浏览器中访问你的域名了!
参考
- https://docs.joinmastodon.org/admin/install/
- https://docs.joinmastodon.org/zh-cn/admin/install/