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

腻烦 Twitter? 受够了 Facebook? 在线滥用和 NSFW 内容让您失望? 只是想在反对你的人的目光中交换想法吗?

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

如果您不熟悉乳齿象,这里是基础知识。 嘟嘟就像推文,最多可以由 500 个字符组成(而不是 Twitter的 140 个字符限制)。 查看我们最近对乳齿象的观察,了解它是怎样运作的。

你需要什么

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

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

设置乳齿象需要三个主要元素:

  • Docker——有用的虚拟化软件
  • Mastodon——社交网络本身
  • Nginx(读作 EngineX)——多用途网络服务器软件,在这种情况下用作反向代理

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

您还需要通过 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 存储库需要一个 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 本身。 切换到mastodon子目录:

cd /home/mastodon

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

git clone 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

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

sudo nano .env.production

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

添加您的 Mailgun 设置

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

接下来,查找 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

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

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

控制 + 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 实例进行注册并开始发送他们的嘟嘟声。 这包括您 – 但当然,您需要一个具有提升权限的帐户。 首先创建您的帐户并单击确认电子邮件中的链接。

接下来,返回 mastodon 子目录:

cd /home/mastodon/mastodon

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

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

在浏览器窗口中返回 Mastodon,然后访问您的帐户 喜好. 找出 行政 用于查看用户帐户和管理 Mastodon 的链接 网站设置, 其中包括标题和描述以及实例的目的/主题等内容。

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

Twitter 近几个月来,由于在处理网络欺凌方面行动迟缓,以及宣扬和美化伊斯兰极端主义的账户激增,受到了抨击。 Facebook与此同时,隐私仍然是一场噩梦。

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

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