Mastodon 长毛象多租户:自定义域名、自定义账号别名

news2024/11/18 1:46:33

概念

自定义域名后缀

假设,Mastodon 主节点域名 domain1.com,我在该域名下拥有一个用户 user1@domain1.com

配置自定义域名后缀支持后,也可以通过 user1@domain2.com 搜索到。该配置需要在主节点中设置 ALTERNATE_DOMAINS

自定义账号别名

假设,Mastodon 主节点域名 domain1.com,我在该域名下拥有一个用户 user1@domain1.com

配置自定义账号别名支持后,可以通过 user2@domain2.com 搜索到(即用户名和域名均可自定义)。

如果您想要一个属于自己的账号别名,但没有服务器的话,可以参考一下我的发电计划: https://afdian.net/a/willin

配置自定义域名后缀

1. 配置环境变量

首先检查 .env.production 环境变量中的 ALTERNATE_DOMAINS,配置正确,示例值:

LOCAL_DOMAIN=example1.com
ALTERNATE_DOMAINS=example2.com,example3.com

配置好重启 Mastodon 服务。

2.配置域名

以自定义域名 example2.com 为例,需要做 3 个 301 跳转的配置:

  • /.well-known/host-meta 跳转到 https://example1.com/.well-known/host-meta
  • /.well-known/webfinger 跳转到 https://example1.com/.well-known/webfinger
  • /.well-known/nodeinfo 跳转到 https://example1.com/.well-known/nodeinfo

传统配置

可以通过 Apache 或者 Nginx 的配置直接进行跳转。配置文件自行编写一下即可。

Serverless 配置

如果是 Serverless 服务,以 Cloudflare Pages 为例,为 example2.com 的应用创建 _redirects 文件:

/.well-known/host-meta* https://example1.com/.well-known/host-meta:splat 301
/.well-known/webfinger* https://example1.com/.well-known/webfinger:splat 301
/.well-known/nodeinfo* https://example1.com/.well-known/nodeinfo:splat 301

Cloudflare Redirect 跳转

可以在 Cloudflare Redirect Rules 中直接创建规则跳转。

在这里插入图片描述
免费有 10 条配额,照着上图创建 3 次即可。

设置自定义账号别名

如果您想要一个属于自己的账号别名,但没有服务器的话,可以参考一下我的发电计划: https://afdian.net/a/willin

该方法理论上来说并不需要在 example1.com 主站域名上进行额外配置。只需要自定义三个静态文件即可。

/.well-known/webfinger

{
  "subject": "acct:user1@example1.com",
  "aliases": [
    "https://example1.com/user1",
    "https://example1.com/users/user1"
  ],
  "links": [
     {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://example1.com/@user1"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://example1.com/users/user1"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://example1.com/authorize_interaction?uri={uri}"
    }
  ]
}

/.well-known/host-meta

<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
  <Link rel="lrdd" template="https://example1.com/.well-known/webfinger?resource=acct:user1@example1.com" />
</XRD>

/.well-known/nodeinfo

{
    "links": [
        {
            "rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
            "href": "https://example1.com/nodeinfo/2.0"
        }
    ]
}

进阶使用

使用该方法进写死了一个域名下的一个账号,如果需要多账号自定义域名的话。则需要使用动态接口来实现类似以上格式的响应。参考资料:

  • 主站讨论: https://github.com/mastodon/mastodon/issues/2668
  • 旧文档: https://guide.toot.as/guide/use-your-own-domain/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOS的常用指令:

DOS的常用指令&#xff1a; DOS【介绍】&#xff1a;磁盘操作系统 cmd是操作DOS的媒介&#xff0c;dos可以操作Windows的目录结构&#xff0c; 基本操作指令&#xff1a; cmd【控制台】->发给dos【解析】->win的目录结构 常用操作指令&#xff1a; 《一》目录操作 &a…

QT学习笔记-QT5.15.2使用qtopcua5.15.2实现与PLC通讯(上)

QT学习笔记-QT5.15.2使用qtopcua5.15.2实现与PLC通讯&#xff08;上&#xff09; 环境说明背景思路perl依赖安装qtopcua插件编译解决编译报错问题解决安装mingw32-make install报错问题 环境说明 操作系统&#xff1a;Windows10 专业版 64位 开发工具&#xff1a;Qt 5.15.2 OP…

Python提取PDF文字的10个方法,OCR识别扫描版pdf,图片pdf格式的10种ocr汉字识别方法

Python 读取扫描版 PDF、图片 PDF 并进行 OCR 识别的方法&#xff1a; pytesseract&#xff1a;一种基于 Python 的 OCR 库&#xff0c;可用于识别扫描版 PDF 和图片 PDF 中的文本。 它可以使用 Google 的 OCR 引擎进行识别&#xff0c;也可以使用本地的 OCR 引擎进行识别。使…

阿里云免费ssl证书申请与部署

一、证书申请 1、找到 ssl 证书 2、点击选择SSL 证书 进入其管理控台 3、如果你还没有免费证书&#xff0c;选择购买即可&#xff0c;一个自然年内每个账号可以领取一次数量为20的免费单域名试用证书额度&#xff0c;我的已经购买过来&#xff0c;今年的&#xff0c;所以无法…

网络安全各类WAF绕过技巧

一、WAF绕过 1、脏数据绕过 即传入一段长数据使waf失效&#xff0c;从而实现绕过waf。某些waf处理POST的数据时&#xff0c;只会检测开头的8K&#xff0c;后面选择全部放过。 例如&#xff0c;当发现某网站存在一个反序列化漏洞时&#xff0c;但是无回显&#xff0c;被waf拦…

MQTT中间件Eclipse Mosquitto安装和使用(.asc文件)MQTT监控命令mosquitto_sub(mosquitto C++库源码编译)

昨天弄的&#xff0c;今天忘了不少。。。 文章目录 参考链接安装MQTT服务中间件安装启动与查询卸载与清理 MQTT C支持库安装&#xff08;使C能使用相关库函数&#xff09;离线安装&#xff08;通过源码&#xff09;ubuntu官网下载软件包编译mosquitto客户端库 mosquitto Docker…

后端SpringBoot应用向云原生K8S平台迁移

目录 一、引言二、方式1&#xff1a;在K8S上部署Spring Cloud Alibaba三、方式2&#xff1a;在K8S上部署Spring Cloud K8S3.1 第1次优化&#xff1a;移除Spring Cloud K8S DiscoveryClient 四、方式3&#xff1a;在K8S上部署SpringBoot应用4.1 第2次优化&#xff1a;移除Spring…

acwing提高--DFS之剪枝与优化

剪枝与优化的方法 1.优化搜索顺序 大部分情况下&#xff0c;我们应该优先搜索分支较少的节点 2.排除等效冗余 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索&#xff08;DP&#xff09; 1.小猫爬山 题目https://www.acwing.com/problem/content/description/167/ 1.优化搜索顺…

《操作系统》期末最全复习题及解析

文章目录 选择题填空题简答题程序题综合题1.银行家算法2.页面置换算法3.进程调度算法4.磁盘调度算法5.求物理/逻辑地址6.分页存储管理7.可变分区分配算法 选择题 若信号量S的初值为2&#xff0c;且有3个进程共享此信号量&#xff0c;则S的取值范围是&#xff08;B &#xff09;…

单词长度统计,统计数据放入列表

输入一段英文计算每个单词长度&#xff0c;统计不含非英文字符&#xff0c;列表输出。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址…

AI与税务管理:新技术带来的新机遇和新挑战

本文作者&#xff1a;王伊琳 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是指由计算机系统或机器人模拟人类智能的过程和结果&#xff0c;包括感知、理解、学习、推理、决策等能力。近年来&#xff0c;随着计算机技术、互联网平台、大数据分析等的…

AI工具 ChatGPT-4 vs Google Bard , PostgreSQL 开发者会pick谁?

在人工智能 (AI) 进步的快节奏世界中&#xff0c;开发人员正在寻找最高效和突破性的解决方案来加快和提高他们的工作质量。对于 PostgreSQL 开发人员来说&#xff0c;选择理想的 AI 支持的工具以最专业的方式解决他们的查询至关重要。 近年来&#xff0c;人工智能工具的普及率…

Redis如何做到内存高效利用?过期key删除术解析!

大家好&#xff0c;我是小米&#xff0c;一个热衷于分享技术的小伙伴。今天我要和大家探讨一个关于 Redis 的话题&#xff1a;删除过期key。在使用 Redis 进行数据存储和缓存时&#xff0c;我们经常会遇到过期数据的处理问题。接下来&#xff0c;我将为大家介绍为什么要删除过期…

很多人都在考的PMP认证到底有什么用?考试内容难不难?

工作几年之后&#xff0c;很多人都会选择提升自己&#xff0c;从而达到升职加薪的目的&#xff0c;而除了学习专业的技能外&#xff0c;考取一份含金量高的证书&#xff0c;也是非常重要的途径&#xff0c;PMP的证书在业界内的名气很大&#xff0c;该证书是由美国项目管理协会&…

JSP工作原理

一、JSP--一门远古的技术 JSP全称是Java Server Pages&#xff0c;它和servle技术一样&#xff0c;都是SUN公司定义的一种用于开发动态web资源的技术。 JSP这门技术的最大特点在于&#xff0c;写JSP就行html&#xff0c;但是html只能提供静态数据&#xff0c;而Jsp技术可以嵌套…

【C++】容器篇(二)——List的基本概述以及模拟实现

前言&#xff1a; 在上期&#xff0c;我们学习了STL库中的第一个容器--vector &#xff0c;今天我将给大家介绍的是 库中的另外一个容器--List。其实&#xff0c;有了之前学习 vector 的知识&#xff0c;对于List 的学习成本就很低了。 目录 &#xff08;一&#xff09;基本介…

Windows古老Bug损坏SSD/HDD,Win7到Win11全遭殃

去年微软确认了 Windows 12 将在2024年发布&#xff0c;Win11 的更新变为了小的功能更新。 今年3月 Win11 Moment 2 带来了包括任务栏在内的小更新&#xff0c;Moment 3 在这两天就会出来。 Win11 的更新明显放缓&#xff0c;也让用户松了口气。 因为自古以来 Windows 更新大…

5.7 文件I/O(文件IO打开和关闭)

目录 文件描述符 open open-示例1 open-示例2 close 笔记 文件描述符 每个打开的文件都对应一个文件描述符。 文件描述符是一个非负整数。Linux为程序中每个打开的文件分配一个文件描述符。 文件描述符从0开始分配&#xff0c;依次递增。 文件IO操作通过文件描述符来完…

【多线程】常见面试题

1.你知道线程与进程的区别吗&#xff1f; 进程是系统进行资源分配和调度的一个独立单位&#xff0c;线程是程序执行的最小单位&#xff0c;一个进程必然有一条线程&#xff08;主线程&#xff09;。进程有自己的内存地址空间&#xff0c;线程只独享指令流执行的必要资源&#…