Skip to content

Mastodon

在这篇文章中

信息

Mastodon 是一个免费且开源的去中心化社交平台。与集中式的商业平台不同,Mastodon 不受任何单一组织的控制。

Mastodon 关键功能

  • Mastodon 允许用户订阅并与任何已连接服务器上的其他用户进行沟通;
  • 该平台提供公开帖子源,帮助用户发现有趣的内容。本地源显示您服务器上的帖子,而联合源显示您服务器上已知的所有订阅用户的公开帖子;
  • 用户可以直接在源中或在高级帖子视图中通过回复、分享、添加到收藏夹、书签或使用附加菜单与帖子互动;
  • Mastodon 会发送与您个人资料和帖子相关的各种互动事件的通知。这些通知可以按类型过滤;
  • 要订阅用户,只需点击其个人资料上的 Follow 按钮。您还可以启用来自您订阅的新帖子的通知;
  • Mastodon 中的搜索功能允许您通过链接查找用户、标签和帖子。安装全文搜索后,您可以搜索自己的帖子和收藏夹;
  • Mastodon 中的私人帖子仅对订阅者可见。它们显示在单独的对话框列中;
  • 订阅列表可用于仅查看帖子源。

部署功能

ID 软件名称 兼容操作系统 虚拟机 物理机 vGPU GPU 最低CPU(核) 最低内存(GB) 最低硬盘(GB) 自定义域名 是否启用
59 Mastodon Ubuntu 22.04 + + + + 2 2 - 订购

有关此软件的部署功能信息,请参阅 此链接

备注

除非另有说明,默认情况下,我们从开发者的网站或操作系统存储库安装软件的最新发布版本。

部署 Mastodon 后的入门指南

支付订单后,将向注册时指定的电子邮件发送通知,告知服务器已准备好工作。它将包含 VPS 的 IP 地址以及连接的登录名和密码。我们公司的客户在服务器和 API 控制面板中管理硬件 — Invapi

您可以在服务器控制面板的 Configuration >> Tags 选项卡或发送的电子邮件中找到授权数据。

  • 访问带有 Web 界面的 Mastodon 仪表板的链接:在 webpanel 标签中;
  • 登录名密码 用于连接到服务器:在软件部署后服务器准备就绪时通过电子邮件发送到您的地址;
  • 登录名密码 用于在 Mastodon Web 界面中认证,是在通过管理员控制台创建帐户时手动设置的。

访问 Web 界面的链接将是:https://mastodon{Server_ID_from_Invapi}.hostkey.in

配置更改

要从命令行更改 Mastodon 配置,请使用 tootctlrails 实用程序:

  • 帐户设置,创建、修改、分配权限等;
  • SMTP 服务器设置;
  • 用户注册设置。

信息

有关如何使用这些实用程序的更多信息,请参阅 开发者文档

使用示例

  1. 通过 SSH 连接到服务器:
    ssh root@<server_ip>
    
  2. 登录到 Mastodon Web 应用程序容器。找到并连接到 mastodon_web_1 容器:

    docker exec -it mastodon_web_1 bash
    

  3. 要创建新用户,请使用命令 tootctl accounts create。指定用户名、电子邮件和用于帐户确认的 --confirmed 标志。

    RAILS_ENV=production bin/tootctl accounts create new_username --email [email protected] --confirmed
    
    new_username 替换为您想要的用户名,将 [email protected] 替换为用户的实际电子邮件。执行此命令后,用户将被创建。务必保存屏幕上显示的密码:

授予管理员权限和批准用户

创建用户后,需要在数据库中查找他们以更改其权限和状态。

  1. 启动 Rails 控制台:
    RAILS_ENV=production bin/rails console
    
  2. 通过电子邮件或用户名查找用户:
    user = User.find_by(email: '[email protected]')  # 或:User.find_by(username: 'new_username')
    
  3. 更新其状态:

    user.update(approved: true)
    
    此操作将从管理员面板中移除通知 Your application is pending review by our staff...

  4. 分配管理员角色:

    user.update(role: UserRole.find_by(name: 'Admin'))
    

  5. 验证:
    user.reload
    
    user.role           # => "Admin"
    
    user.approved       # => true
    
  6. 退出控制台:
    exit
    

配置邮件服务器

如果需要配置或更改邮件服务器,请执行以下操作:

  1. 打开配置文件:

    nano /opt/mastodon/.env.production
    
    2. 配置 SMTP 参数(例如,对于 MailHog):

    # Sending mail
    # ------------
    SMTP_SERVER=mailhog
    SMTP_PORT=1025
    SMTP_LOGIN=
    SMTP_PASSWORD=
    SMTP_FROM_ADDRESS=notifications@your_domain
    SMTP_AUTH_METHOD=none
    SMTP_OPENSSL_VERIFY_MODE=none
    SMTP_ENABLE_STARTTLS=false
    
    3. 重启 Mastodon 容器 要应用新设置,请重启 Mastodon 容器:

    cd /opt/mastodon
    
    docker-compose restart
    
    4. 检查邮件功能 - 对于 MailHog: 打开 Web 界面 http://your_server:8025 - 检查日志:
    docker-compose -f /opt/mastodon/docker-compose.yml logs sidekiq | grep -i mail
    
    - 测试一下: 注册新用户并检查是否收到电子邮件

备注

检查 Docker 容器: 如果您不确定哪些容器正在运行,请执行:

 docker ps
确保 Mastodon 容器(mastodon_web_1mastodon_db_1 等)正在运行。

信息

开发者文档 中了解有关配置设置的更多信息。

信息

开发者文档 中了解有关使用 setup.sh 的更多信息。

更改 Mastodon 服务器域名

信息

本指南使用 skaz.online 作为示例域名。最初,Mastodon 配置为类似 mastodon<server_ID>.hostkey.in 的域名。在所有配置示例中,将 skaz.online 替换为您的实际域名。

关键文件和目录

文件/目录 更改内容
/opt/mastodon/.env.production 环境变量、域名
/data/nginx/user_conf.d/*.conf 新域名的 Nginx 配置
/etc/letsencrypt/live/ SSL 证书(如果使用 certbot)
Docker Compose 文件 docker-compose.yml 或变量中的域名
SMTP 配置 更新与域名相关的地址

要更改域名,请按照以下步骤操作:

  1. 注册您自己的域名,例如 mastodon.mydomain.com

  2. 为此域名配置 DNS 记录:

    • 设置指向 Mastodon 服务器 IP 地址的 A 记录;
    • 配置指向邮件服务器的 MX 记录。

    信息

    DNS 管理

  3. Invapi 的 IP 地址设置中添加 PTR 记录; !!! info "信息" 在 Invapi 中设置 PTR 记录的更多信息请参见 此处

  4. 更新 Mastodon 环境变量 编辑文件 /opt/mastodon/.env.production,将当前值(例如 mastodon<server_ID>.hostkey.in)替换为您的新域名:

    # Previous:
    # LOCAL_DOMAIN=mastodon<server_ID>.hostkey.in
    
    
    # Updated:
    LOCAL_DOMAIN=skaz.online
    WEB_DOMAIN=skaz.online
    
    5. 设置支持 HTTPS 的 Nginx

    5.1 创建 Nginx 配置 重要: 创建新的配置文件,替换旧文件。旧配置可能包含不同的 proxy_pass 指令,导致故障。 创建 Nginx 配置文件 /data/nginx/user_conf.d/skaz.online.conf,内容如下:

    server {
        listen 80;
        server_name skaz.online;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name skaz.online;
    
    
        # SSL certificates
        ssl_certificate         /etc/letsencrypt/live/skaz.online/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/skaz.online/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/skaz.online/chain.pem;
        ssl_dhparam /etc/letsencrypt/dhparams/dhparam.pem;
    
    
        # Main Mastodon application (port 3000)
        location / {
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:3000;
            real_ip_header X-Forwarded-For;
            # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header X-Scheme $scheme;
            proxy_buffering off;
        }
    
    
        # Mastodon Streaming API (port 4000)
        location ^~ /api/v1/streaming {
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:4000;
            real_ip_header X-Forwarded-For;
            # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header X-Scheme $scheme;
            proxy_buffering off;
        }
    }
    
    5.2 获取 SSL 证书 检查证书:
    docker exec -it mastodon-nginx-1 ls /etc/letsencrypt/live/
    
    如果缺少证书,请获取它:
    docker compose stop nginx
    
    docker compose run --rm nginx certbot certonly --standalone -d skaz.online
    
    docker compose start nginx
    

  5. 清理冲突的配置

重要! 删除旧的 Nginx 配置,因为多个 .conf 文件可能导致冲突: 删除旧配置(例如,对于 mastodon<server_ID>.hostkey.in

rm /data/nginx/user_conf.d/mastodon<server_ID>*.conf
或者重命名以保留备份

mv /data/nginx/user_conf.d/mastodon<server_ID>.hostkey.in.conf /data/nginx/user_conf.d/mastodon<server_ID>.hostkey.in.conf.backup

冲突原因:

  • 重复的 listen 443 ssl 指令会导致错误 duplicate listen options
  • 旧配置可能有不同的 proxy_pass 地址或端口
  • Nginx 可能会误解具有多个服务器块的请求

  • 重启服务 在包含 docker-compose.yml 的目录中,执行:

    docker compose down
    
    docker compose up -d
    

  • 验证功能 从命令行测试

    curl -Ik https://skaz.online
    
    预期响应:HTTP/1.1 200 OK 在浏览器中检查 在浏览器中打开域名 — 应加载 Mastodon 主页。

管理员面板初始设置

要访问管理员面板,请按照 webpanel 标签中的链接操作,点击 Log In 按钮,并输入之前设置的凭据。

管理服务器规则

此去中心化社交网络中每个单独服务器的管理员和版主制定 Mastodon 的规则。要管理规则,请转到 Administration >> Server Rules

设置规则的基本原则:

  • 确保规则合理并遵循普遍接受的礼仪标准,以免让用户望而却步;
  • 明确说明禁止的内容类型,如残忍、暴力和非法活动,并澄清可接受的 NSFW 内容级别;
  • 指定警告、阻止或限制违规者的程序,以及纪律措施和时间限制;
  • 服务器规则必须易于所有用户访问,并在注册期间公开显示;
  • 随着服务器的发展,定期审查和更新规则非常重要,并让社区参与修改和改进过程。

邀请用户

Mastodon 在源中有多个选项卡用于管理订阅和邀请新用户:

  • Follows and Followers - 此选项卡显示当前用户订阅的帐户,源将显示来自这些用户的条目。此外,此选项卡列出了订阅此帐户的人,即 Mastodon 中的受众。
  • Invite people - 此功能允许用户邀请朋友和熟人加入他们的社交网络。此文本描述了创建唯一链接的过程,可以共享该链接以允许其他用户加入 Mastodon 服务器。

.

备注

有关基本 Mastodon 设置的详细信息,请参阅 开发者文档

使用 API 订购带有 Mastodon 的服务器

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×