关于Firexfox auth server与sync server
最近打算把主力浏览器从Chrome换成Firefox,主要是因为Manifest V3,既然Google不想让我们用adblock,那我不用Chrome就是了。
以前对Firefox的印象是有点慢,不过就算现在依旧慢,总好过看广告是吧。
既然要迁移到Firefox,反正都是开源的,也有现成的文档,干脆就自己跑auth和sync呗。其实是也没什么必要,Mozilla怎么着都比Google值得信任,不过谁让我爱折腾呢。
现成的文档有不少:
https://mozilla-services.readthedocs.io/en/latest/howtos/run-fxa.html
不过似乎没看到docker相关的文档,有一些相关的讨论和repo,但似乎都比较老或者只包含一个,比如:
另外有一个让我觉得很奇怪的事情,Auth Server的fxa是mozilla账户下的repo,Sync Server的Syncstorage-rs却属于mozilla-services账户。mozilla的账户里面也有不少不知道用来干啥的或者看说明有点重复的repo,总感觉管理有些混乱。
搜索过后发现sync官方在docker hub有镜像,但是没有相关文档。Syncstorage-rs repo中有docker-compose模板,修改之后可以用。fxa的官方repo实在是十分混乱和复杂,一番尝试后我选择放弃。
fxa有很多组件,具体可见additional-docs。docker hub上有一些很老的镜像,但现在只有fxa一个repo了,官方也没有提供docker镜像,在_dev文件夹下有一些docker相关的文件,但几乎没有文档,似乎也没有维护。
部署fxa与sync
我最后选择了fxa-selfhosting这个项目来部署fxa,虽然更新不频繁,但这个项目至少有在跟进官方repo。
首先用git clone https://github.com/jackyzy823/fxa-selfhosting.git
拉取代码。
根据github页面Installation的说明创建DNS记录,这里并没有提到所有域名,所有需要的域名在config.yml.sample的domain中都有,如果不需要某一个服务,可以跳过对应的域名。
我因为想要用我现有的Nginx来反代服务,不想另外运行Nginx,这里先配置Nginx反代并签发证书。反代的配置在/example文件夹下有模板。
配置完反代后,把config模板config.yml.sample复制到一个新文件config.yml并根据需要修改。我发现smtp不能用STARTTLS,不然会报错error:1408F10B:SSL routines:ssl3_get_record:wrong version number
。建议使用465端口,smtp_secure改为true。
运行init.sh,并且每次修改config.yml后都需要重新运行该脚本。把脚本最后输出的内容复制下来保存,这是设置firefox需要的信息。
脚本运行后进入./dest文件夹,检查里面的docker-compose.yml,如果没有问题就可以用docker-compose up -d
启动。
启动后访问设置的根域名,看到登录页面就代表成功了。可能会出现502错误,可以尝试停止并删除nginx容器,然后重新用docker-compose up -d
启动nginx,或者可以给channelserver部分手动加上container_name: channelserver
并向nginx块中的depends_on加上channelserver。
使用正确的channelserver镜像
目前最新的channelserver镜像有bug,错误为:
channelserver_1 | /app/bin/channelserver: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /app/bin/channelserver)
channelserver_1 | /app/bin/channelserver: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /app/bin/channelserver)
使用mozilla/channelserver@sha256:01f9251637cc3679b8cf31493569a79a27b41f952d4eb3d5306e1ee8d9d3feea避免这个问题。
使用IOS客户端
IOS客户端没有被默认加入oauth列表,需要手动在template添加。
在/_init/auth/oauthserver-prod.tmpl.yml中加入:
- id: 1b1a3e44c54fbb58
name: Client iOS
hashedSecret: 88716ed2927c96cdc0fb7efe57d5f124fb4161066c1ff7f4263069822256ec66
redirectUri: #@ "https://{content}.{domain_name}/oauth/success/1b1a3e44c54fbb58".format(content=data.values.domain.content,domain_name=data.values.domain.name)
imageUri: ''
publicClient: true
canGrant: true
termsUri: ''
privacyUri: ''
trusted: true
allowedScopes: https://identity.mozilla.com/apps/oldsync https://identity.mozilla.com/tokens/session
重新运行init.sh。
Comments NOTHING