您自己的社交网络:如何在 Linux 上设置 Mastodon 实例

腻烦 Twitter? 受够了 Facebook? 在线滥用和 NSFW 内容让您失望? 只是想在反对你的人的眼光下交换意见?

乳齿象就是答案。 并且由于其开源性质,可以设置您自己的 Mastodon 实例,启用任何主题的对话,并为您的用户提供一些安全和隐私,使其免受各种巨魔的侵害。

如果您不熟悉 Mastodon,这里是基础知识。 嘟嘟就像推文,最多可以由 500 个字符组成(而不是 Twitter的 140 个字符限制)。 查看我们最近对 Mastodon 的看法,看看它是如何工作的。

你需要什么

创建您自己的 Mastodon 实例需要以下内容:

  • 运行 Ubuntu Server 16.04 的 Web 服务器。 您可以在以下网址找到每月不到 10 美元的廉价服务器帐户 Vultr.com,尽管有其他解决方案可用。
  • 指向服务器的未使用域名。 这意味着 Web 域主机上的 DNS 记录设置为将访问者引向 Ubuntu 服务器的 IP 地址。 提供者之间的完成方式不同,因此请查看相应的文档。
  • 一个 Mailgun 帐户,用于管理您的 Mastodon 实例的注册。 这是免费提供的,但需要您的信用卡详细信息才能发送前 10,000 封电子邮件。 前往 Mailgun 注册页面 创建一个帐户,并确保您遵循域验证说明,以确保您的电子邮件新/未使用域列为活动。

设置 Mastodon 需要三个主要元素:

  • Docker——有用的虚拟化软件
  • Mastodon——社交网络本身
  • Nginx(发音为 EngineX)——多用途 Web 服务器软件,在本例中用作反向代理

(反向代理允许服务器代表客户端从一个或多个其他服务器检索资源或数据。在许多情况下,这是保护服务器的一种安全措施。)

您还需要与服务器建立 SSH 连接。 这可以通过 Linux(或 macOS)中的终端获得。 如果您在 Windows 上使用 SSH,请下载并安装 油灰.

建立 SSH 连接并安装 Docker

您需要通过 SSH 连接到您的服务器并使用通常的方式登录 admin 证书。 完成后,创建一个名为“mastodon”的用户,分配 root 权限,然后切换到新用户:

adduser mastodon
usermod -aG sudo mastodon
su - mastodon

接下来,更新包数据库,并安装管理工具:

sudo apt-get update
sudo apt-get install apt-transport-https software-properties-common

Docker repo 需要一个 GPG 密钥,您可以使用

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

接下来,将 Docker 存储库添加到源,并再次更新。

sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
sudo apt-get update

为确保它正常工作,Docker 需要安装自己的存储库,而不是官方 Ubuntu 16.04 存储库中的版本。 该政策将确保发生这种情况:

sudo apt-cache policy docker-engine

您现在可以安装 Docker:

sudo apt-get install -y docker-engine

等待这完成。 安装包括一个在服务器启动时运行 Docker 的守护进程。 检查状态

sudo systemctl status docker

您会看到几行文本——查找“活动(运行)”以确认一切正常。

使用 Docker Compose 进行配置

创建新用户组将节省输入用户组的时间 sudo 每次在此配置中运行 Docker 指令时执行命令。 这样做

sudo usermod -aG docker $(whoami)

通过退出 SSH 设置(退出)来完成此操作,然后重新登录。

提供 Docker Compose 来管理多容器 Docker 应用程序的运行。 在 github.com/docker/compose/releases 你会发现最新的发布版本。 记下数字,因为您需要在下一个命令中输入它,用它代替“xxx”:

sudo curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/x.x.x/docker-compose-$(uname -s)-$(uname -m)"

使其可执行:

sudo chmod +x /usr/local/bin/docker-compose

您可以检查 Docker Compose 是否安装了

docker-compose -v

然后将显示版本号,它应该与您下载的版本相匹配 – 请注意您替换的数字以进行确认。

安装乳齿象

所有的准备工作都完成了。 您现在已准备好安装 Mastodon 本身。 切换到乳齿象子目录:

cd /home/mastodon

接下来,将 mastodon.git 克隆到目录中,然后打开该位置并复制 .env.production.sample 文件。

git clone "https://github.com/tootsuite/mastodon.git" target="_blank">https://github.com/tootsuite/mastodon.git
cd mastodon
cp .env.production.sample .env.production

您可以稍后使用该文件。 首先,构建 Docker 镜像。

docker-compose build

这需要一段时间。 完成后,您可以使用此命令创建三个密钥:

docker-compose run --rm web rake secret

运行三遍,将每个唯一键复制并粘贴到文本编辑器中。 三个都准备好后,在 nano 中运行 .env.production 文件。

sudo nano .env.production

查找以下字段:PAPERCLIP_SECRET、SECRET_KEY_BASE 和 OTP_SECRET。 其中每一个都应该有一个针对它们插入的密钥。

添加您的 Mailgun 设置

是时候为您的 Mailgun 电子邮件帐户添加详细信息了。 去 https://app.mailgun.com/app/domains 并单击域。 找出 默认 SMTP 登录 默认密码,并将详细信息作为 SMTP_LOGIN 和 SMTP_PASSWORD 的条目复制到 .env.production 文件中。

接下来,查找 SMTP_FROM_ADDRESS 并确保该条目的名称以“notifications”开头,例如 [email protected]。 最后,查找 LOCAL_DOMAIN 并添加您用于此项目的域名。

完成后,点击 CTRL+X 保存和 close,然后重建 Docker。

docker-compose build

以下命令将确保数据迁移和资产预编译按预期工作。

docker-compose run --rm web rails db:migrate
docker-compose run --rm web rails assets:precompile

这些命令需要一点时间才能完成。 完成后,启用容器:

docker-compose up -d

启用 Nginx

Nginx 在此设置中用作反向代理。

安装它:

sudo apt-get install nginx

Nginx 有一个默认配置文件,您需要删除它:

sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

创建一个新的配置文件

sudo touch /etc/nginx/sites-available/mastodon

接下来,您需要为要访问的配置文件创建一个符号链接:

sudo ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

然后,您可以将配置文件复制到文本编辑器中。 访问 这个 Github 页面 并复制内容,然后粘贴到

sudo nano /etc/nginx/sites-available/mastodon

打开文件,找到每个实例 example.com 并将其替换为您正在使用的域名。 确保省略“www”。

CTRL+X 保存并退出。

获取 SSL 证书并运行 Mastodon!

您现在可以启动 Mastodon 实例并创建自己的社交网络。 但要使其受到信任,您需要一个 SSL 证书。

首先安装 certbot PPA,然后安装 certbot 本身:

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update sudo apt-get install certbot

接下来,停止 Nginx,以便生成 SSL 证书。

sudo systemctl stop nginx.service

使用以下命令执行此操作,替换为 example.com 使用您自己的域名。

sudo letsencrypt certonly --standalone -d example.com

按照提示完成该过程。 完成后,返回乳齿象目录:

cd /home/mastodon/mastodon

下一步是暂时停止 Docker:

docker-compose down

我们快完成了——只需依次运行这些命令:

docker-compose build
docker-compose run --rm web rails assets:precompile
docker-compose run --rm web rails db:migrate
docker-compose up -d

等待这些命令完成,然后重新启动 Nginx:

sudo systemctl restart nginx.service

现在,如果一切正常,您应该可以打开浏览器窗口并前往新的 Mastodon 实例以查看它是否正常工作!

遗憾的是,这里的任何问题都意味着重复你迄今为止所做的事情。 如果 .env.production 全部正确,并且 Mailgun 正在工作,那么只需继续上次保存 .env.production 之后的步骤。请注意,如果您的域未正确配置您的域注册商和 Mailgun,则在解决这些问题之前,您将无法运行 Mastodon。

请注意,如果您的域没有通过您的域注册商和 Mailgun 正确配置,那么在这些问题得到解决之前,您将无法运行 Mastodon。

您已启动并正在运行:自动化任务和管理 Mastodon

我们很诱人 close 现在到最后。 再过几分钟,您就可以公开您的 Mastodon 实例。

某些任务需要自动化。 转到 mastodon 目录,并为 cron 作业(在预定时间运行的指令)创建一个新目录。

cd /home/mastodon
nano mastodon_cron

在文本文件中,添加:

cd /home/mastodon/mastodon
docker-compose run --rm web rake mastodon:media:clear
docker-compose run --rm web rake mastodon:push:refresh
docker-compose run --rm web rake mastodon:push:clear
docker-compose run --rm web rake mastodon:feeds:clear

Exit 和 CTRL + Y,然后输入:

sudo chmod +x mastodon_cron && sudo crontab -e

crontab 文件——所有计划(cron)脚本的一种控制索引——将打开。 在最后输入这一行:

0 0 * * * /home/mastodon/mastodon_cron > /home/mastodon/mastodon_log

CTRL + X 保存并退出。

刷新 SSL

虽然设置了 SSL 证书,但它会在 90 天后过期。 解决方案是自动更新证书的 cron 作业。 输入

sudo crontab -e

…然后滚动到文件末尾并将这些添加到行中:

0 1 * * 1 /usr/bin/letsencrypt renew >> /home/mastodon/letsencrypt.log
5 1 * * 1 /bin/systemctl reload nginx

再次按下 CTRL + X to 保存并退出; 该指令将在星期一凌晨 1 点更新超过 60 天的证书。 然后它将重新加载 Nginx。

乳齿象管理

现在一切都准备好了。 任何人都可以前往您的 Mastodon 实例进行注册并开始发送他们的嘟嘟声。 这包括你——但当然,你需要一个具有提升权限的帐户。 首先创建您的帐户并单击确认电子邮件中的链接。

接下来,返回乳齿象子目录:

cd /home/mastodon/mastodon

使用此命令将您的用户名提升到 admin 等级:

docker-compose run --rm web rails mastodon:make_admin USERNAME=yourusername

在浏览器窗口中返回 Mastodon,然后访问您的帐户 优先. 找到 行政 链接以查看用户帐户和管理 Mastodon 小号项目设置, 其中包括标题和描述,以及实例的目的/主题。

你自己的社交网络,讨论你的话题!

Twitter 最近几个月,该公司因其在处理网络欺凌方面的迟缓以及宣扬和美化伊斯兰极端主义的账户激增而受到抨击。 Facebook与此同时,它仍然是隐私​​的噩梦。

为了解决这个问题,你可以加入 Mastodon。 我们认为您应该这样做,因为您至少会看到如何以不同的方式做事。 如果你喜欢它,为什么不安装你自己的实例呢?

你试过乳齿象吗? 您是否设置了自己的实例? 告诉我们进展如何。