新建邮箱账户时 有个Login name ,这里和Email填写相同的话有可能导致Snappymail、roundcube 等网页客户端无法发送邮件。
(应该没有人用邮件地址当发件人名字吧)
提示 501 5.5.4 you are not allowed to send from this address.
我一开始傻傻的把Login name 改成了不带@abc.com ,结果导致管理后台无法登录,进去就是用户权限,都怪我全用admin。
正确做法是Setting 》SMTP 》 Inbound 》AUTH Stage ,把Must match sender 修改为false
前言
官方的Synapse docker镜像仅给出了简单的用法,这里简单记录下自己使用docker compose来搭建synapse的过程,数据库使用postgres并同时启用redis。
搭建
首先,选择一个宿主机文件夹,用于存放synapse所有的数据,我的规划如下:
Synapse数据:/data/synapse/data
PostgreSQL数据: /data/synapse/postgres
Redis持久化数据: /data/synapse/redis
PostgreSQL
pg库我选择了12.5版本,选择的镜像是postgres:12.5-alpine。 (2024年最新版要求postgresql13以上)
拉取pg镜像并初始化pg库,挂载volume到上面规划的pg数据文件夹
docker run --name postgres13 -v /data/synapse/postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=自定义PostgreSQL密码 -d postgres:13-alpine
界面会显示容器的hash值,接着执行下面的命令创建一个用于连接数据库的synapse用户并输入你的密码
docker exec -it postgres13 createuser -U postgres --pwprompt synapse_user
执行下面的语句进入psql
docker exec -it postgres12 psql -U postgres
执行下面的建库语句用于建立一个synapse库
CREATE DATABASE synapse
ENCODING 'UTF8'
LC_COLLATE='C'
LC_CTYPE='C'
template=template0
OWNER synapse_user;
执行完毕后输入\q退出
*后续连接如果有问题,可以在postgres/pg_hba.conf中添加host synapse synapse_user all trust
*具体可以参看官方的Pg搭建手册
终止postgres的容器并删除
docker stop postgres13
docker rm postgres13
Synapse
接下来需要进行synapse的初始化
拉取Synapse镜像并生成配置文件
docker run -it --rm \
-v /data/synapse/data:/data \
-e SYNAPSE_SERVER_NAME=b612.im \
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generate
*里面的/data/synapse/data需要更改为自己的配置文件夹地址,b612.im需要改为自己的域名,SYNAPSE_REPORT_STATS=yes表明允许匿名汇报你的Synapse信息
编辑Synapse生成的配置文件
文件地址为:/data/synapse/data/homeserver.yaml
找到database配置项,注释掉原先的sqlite3配置,修改为postgres配置
database:
name: psycopg2
args:
user: synapse_user
password: synapse_user的密码
database: synapse
host: db
cp_min: 5
cp_max: 10
找到redis配置项,修改为下述内容
redis:
enabled: true
host: redis
port: 6379
若需要启用email发信,找到email配置项,配置即可(记得同时配置public_baseurl)
配置docker compose
在/data/synapse文件夹下新建docker-compose.yml文件,内容如下
version: '3'
services:
db:
restart: always
image: postgres:13-alpine
shm_size: 1024mb
networks:
- internal_network
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
volumes:
- ./postgres:/var/lib/postgresql/data
redis:
restart: always
image: redis:6.0-alpine
networks:
- internal_network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
volumes:
- ./redis:/data
synapse:
build: .
image: matrixdotorg/synapse
restart: always
ports:
- "127.0.0.1:8008:8008"
depends_on:
- db
- redis
networks:
- external_network
- internal_network
volumes:
- ./data:/data
networks:
external_network:
internal_network:
internal: true
保存后,执行 docker-compose up -d 即可启动Synapse进程
配置Riot web界面
Synapse没有自带的web界面,使用Riot(已更名为element)搭建一个web界面
在(https://github.com/vector-im/element-web/releases)[https://github.com/vector-im/element-web/releases]找到最新的预编译包并下载到服务器web文件夹中。
修改配置文件
cp config.sample.json config.json
修改m.homeserver中域名为自己的域名,m.identity_server建议使用https://vector.im
配置管理页面
riot(element)没有后台管理界面,可以使用synapse-admin搭建一个管理页面
docker run -d -p 8100:80 awesometechnologies/synapse-admin
配置nginx
不使用cdn
在不使用CND(如cloudflare)的情况下,配置nginx反向代理,参考如下
注意:8448端口必须开启,否则会无法与其它站通信
server {
listen 80;
listen [::]:80;
server_name 你的域名;
# Enforce HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
listen 8448 ssl default_server;
listen [::]:8448 ssl default_server;
server_name 你的域名;
ssl_certificate 域名证书地址;
ssl_certificate_key 域名私钥地址;
root Riot所在地址;
client_max_body_size 1024M;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://你的域名"}}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location ~* ^(\/_matrix|\/_synapse) {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
}
location /admin/ {
#最新的synapse版本(2022-06及以后版本)中,由于静态文件在代码中使用了绝对地址,所以需要进行地址替换
#建议使用子域名替代二级目录的访问方式
sub_filter_once off;
sub_filter "/static/" "/admin/static/";
#上面两行为需要进行地址替换的部分
proxy_pass http://localhost:8100/;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
使用CDN
使用CDN的情况下,由于大部分CDN无法转发8448端口,故需要在nginx配置中指定通信端口为443,示例配置如下
server {
listen 80;
listen [::]:80;
server_name 你的域名;
# Enforce HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 你的域名;
ssl_certificate 域名证书地址;
ssl_certificate_key 域名私钥地址;
root Riot所在地址;
client_max_body_size 1024M;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://你的域名"}}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location /.well-known/matrix/server{
return 200 '{"m.server": "你的域名:443"}';
default_type application/json;
add_header Access-Control-Allow-Origin *;
}
location ~* ^(\/_matrix|\/_synapse) {
proxy_pass http://localhost:8008;
proxy_set_header X-Forwarded-For $remote_addr;
# Nginx by default only allows file uploads up to 1M in size
# Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
}
location /admin/ {
proxy_pass http://localhost:8100/;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
配置turn服务器
turn/stun 服务器允许用户间建立语音视频连接,搭建配置方式可以参考官方的教程:https://github.com/matrix-org/synapse/blob/develop/docs/turn-howto.md
注册一位新用户
docker-compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
原文链接 https://www.b612.me/code/223.html
注意
首次登录后请设置安全备份 使用安全密钥或安全短语,记住并保存,这样第二个设备登录后可以用第一个设备验证后自动解密聊天内容
Read Morehttps://build2.cdn.cat/daily/elementaryos-8.0-daily.20240607.iso
https://build2.cdn.cat/daily/elementaryos-8.0-daily.20240607.sha256.txt
或
https://build.cdn.cat/daily/elementaryos-8.0-daily.20240607.iso
链接: https://pan.baidu.com/s/1EAnmNzPk3V0QQNDKzYzsjg?pwd=ele8 提取码: ele8
使用官方工具打包 https://github.com/elementary/os
Read Moregit clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
git checkout feat/arm64-cow
./generate_config.sh #填写FQDN 设置时区
docker compose pull
docker compose up -d
Read More
新买了个VPS 有ipv6/64 但是ping不通ipv6 ping: connect: Network is unreachable
查看 /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 123.123.123.123/24
- 2a10:cccc:ccc:ccc::/64
gateway4: 123.123.123.1
gateway6: 2a10:cccc:ccc::1
match:
macaddress: 22:ed:f8:f7:9f:a2
nameservers:
addresses:
- 1.1.1.1
- 8.8.4.4
- 2606:4700:4700::1111
search:
- ht-hosting.de
set-name: eth0
netplan apply 提示
gateway4 has been deprecated, use default routes instead. See the
'Default routes' section of the documentation for more details.
gateway6 has been deprecated, use default routes instead. See the
'Default routes' section of the documentation for more details.
于是去看 https://netplan.io/examples/
修改 /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 123.123.123.123/24
- 2a10:cccc:ccc:ccc::/64
routes:
- to: default
via: 123.123.123.1
- to: default
via: 2a10:cccc:ccc::1
on-link: true
match:
macaddress: 22:ed:f8:f7:9f:a2
nameservers:
addresses:
- 1.1.1.1
- 8.8.4.4
- 2606:4700:4700::1111
search:
- ht-hosting.de
set-name: eth0
然后
netplan generate
netplan apply
ping ipv6.google.com
PING ipv6.google.com(fra16s56-in-x0e.1e100.net (2a00:1450:4001:82f::200e)) 56 data bytes
64 bytes from fra16s56-in-x0e.1e100.net (2a00:1450:4001:82f::200e): icmp_seq=2 ttl=122 time=0.973 ms
64 bytes from fra16s56-in-x0e.1e100.net (2a00:1450:4001:82f::200e): icmp_seq=3 ttl=122 time=0.940 ms
64 bytes from fra16s56-in-x0e.1e100.net (2a00:1450:4001:82f::200e): icmp_seq=4 ttl=122 time=0.953 ms
docker-compose.yml
version: "3.5"
services:
maddy:
image: foxcpp/maddy:latest
restart: unless-stopped
ports:
- "25:25"
- "143:143"
- "465:465"
- "587:587"
- "993:993"
volumes:
- ./maddydata:/data
environment:
# REPLACE DOMAINS WITH YOURS
- MADDY_HOSTNAME=mx.example.com
- MADDY_DOMAIN=example.com
snappymail:
image: ajanvier/snappymail
volumes:
- ./snappymail/data:/snappymail/data
depends_on:
- maddy
ports:
- "80:8888"
maddy.conf
下载 https://github.com/foxcpp/maddy/raw/master/maddy.conf.docker
放入maddydata文件夹改名maddy.conf
maddy SSL 证书
maddydata/tls/fullchain.pem
maddydata/tls/privkey.pem
dkim 记录
域名添加txt 记录 default._domainkey
复制 maddydata/dkim/example.com_default.dns 填入
添加账户
docker-compose exec maddy maddyctl creds create foxcpp@maddy.test
docker-compose exec maddy maddyctl imap-acct create foxcpp@maddy.test
snappymail 配置
mx.example.com/?admin 打开管理面板 用户admin 密码在snappymail/data/_data_/_default_/
snappymail 后台添加域名,设置主机地址为maddy IMAP端口993 SMTP 587
自定义nginx配置
nginx.conf https://github.com/ajanvier/docker-snappymail/blob/master/rootfs/etc/nginx/nginx.conf
已知问题
snappymail 收到新邮件无法查看,是个bug,推荐使用桌面客户端
内存占用真的很少,当然是没有垃圾邮件和病毒防护的
mailcow 是个很好的邮局系统,但是官方没有ARM版本,现在可以用 platform: linux/amd64 在arm上运行amd64的容器,另外有网友编译了一些镜像的arm版
ubuntu要安装qemu binfmt-support qemu-user-static ,debian11 安装 bullseye-backports qemu binfmt-support qemu-user-static
docker-compose.override.yml
version: '2.4'
services:
unbound-mailcow:
image: quay.io/mailcowarm64/unbound
clamd-mailcow:
platform: linux/amd64
rspamd-mailcow:
# image: quay.io/mailcowarm64/rspamd #我用了这个arm镜像后连接不上smtp 有待后续测试
platform: linux/amd64
php-fpm-mailcow:
image: quay.io/mailcowarm64/phpfpm
sogo-mailcow:
platform: linux/amd64
image: mailcow/sogo:1.114
dovecot-mailcow:
platform: linux/amd64
image: mailcow/dovecot:1.21
postfix-mailcow:
image: quay.io/mailcowarm64/postfix
acme-mailcow:
image: quay.io/mailcowarm64/acme
netfilter-mailcow:
image: quay.io/mailcowarm64/netfilter
watchdog-mailcow:
image: quay.io/mailcowarm64/watchdog
dockerapi-mailcow:
image: quay.io/mailcowarm64/dockerapi
solr-mailcow:
image: quay.io/mailcowarm64/solr
olefy-mailcow:
image: quay.io/mailcowarm64/olefy
SOGo 和dovecot镜像 版本根据 https://github.com/mailcow/mailcow-dockerized/issues/879#issuecomment-1413271536 修改
SOGo 不能用,建议安装RoundCube 更新后可以使用
https://docs.mailcow.email/third_party/roundcube/third_party-roundcube/
Read More1 配置wine环境
export LANG=en_US.UTF8;
export LANGUAGE=en_US;
lutris
这时启动的是英文的lutris ,安装dotnet48很快,不会卡主,好像wine7.8修复了这个问题
手动配置一个wine游戏环境,设置容器目录为~/Games/14
禁用lutris 库,wine版本我用的lutris-fshack-6.21-6-x86_64 别的也可以
打开容器的winetricks 安装dotnet48 和cjkfonts
打开wine设置,系统修改为Windows 10
2 下载GE-Proton7-41 解压到 ~/Games
下载 FFXIV_ACT_Plugin.dll 放到 ~/Games/plugins
下载OverlayPlugin 解压后放到 ~/Games/plugins
https://github.com/ngld/OverlayPlugin/releases
https://advancedcombattracker.com/download.php
https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/GE-Proton7-41
3 安装XIVLauncher-cn ,可以自行编译,也可以用flatpak的
打开XIVLauncher 设置游戏目录,wine 选择自定义 填写~/Games/GE-Proton7-41/files/bin/ 启用Fsync 保存关闭
4 复制~/Games/14 目录下所有文件到 ~/.xlcore_cn/wineprefix
下载dxvk-async 解压后复制x64文件夹中的dll到 ~/.xlcore_cn/wineprefixdrive_c/windows/system32/
下载ACT解压后更名为ACT移动到~/.xlcore_cn/wineprefixdrive_c/
https://github.com/TundraWork/FFXIV_ACT_Plugin_CN/releases
https://github.com/Sporif/dxvk-async/releases/tag/2.0
5 下载 https://codeload.github.com/valarnin/ffxiv-tools/zip/refs/heads/xlcore 解压到~/Games/
修改ffxiv-tools-xlcore/setup-stage1.php 中.xlcore为.xlcore_cn
删除ffxiv-tools-xlcore、helpers/ensure-aur-xlcore.sh CHECK_FOR_MPR() 段落
6 打开XIVLauncher-cn 运行游戏
终端进入~/Games/ffxiv-tools-xlcore/
./setup-stage1.php #会提示wine路径什么的
./setup-stage2.php #会提示你游戏进程没有关闭,去手动关闭,然后备份可以N其他Y
./setup-stage3.php #生成启动脚本和快捷方式
7 启动ACT ,添加插件,英文环境才可以启动ACT
修改~/.local/share/ffxiv-tools/ffxiv-run-act.sh
$PROTON_DIST_PATH/bin/wine64 为$PROTON_PATH/wine64
export LANG=en_US.UTF8;
export LANGUAGE=en_US;
~/.local/share/ffxiv-tools/ffxiv-run-act.sh
添加插件后在OverlayPlugin 中新建悬浮窗
8 启动游戏,打怪测试,这时多半是解析不了游戏数据的,ACT解析插件中测试一下游戏链接,会提示添加防火墙规则,添加一下,关闭ACT和游戏
运行一下./setup-stage2.php 最后的几行命令,可以多运行几次
sudo setcap cap_net_raw,cap_net_admin,cap_sys_ptrace=eip "~/Games/GE-Proton7-41/files/bin/wine"
sudo setcap cap_net_raw,cap_net_admin,cap_sys_ptrace=eip "~/Games/GE-Proton7-41/files/bin/wine64"
sudo setcap cap_net_raw,cap_net_admin,cap_sys_ptrace=eip "~/Games/GE-Proton7-41/files/bin/wineserver"
再次测试
最后,可以修改~/.local/share/ffxiv-tools/ffxiv-run-act.sh 添加 export LANG=en_US.UTF8; 这样可以直接点击快捷方式启动ACT
~/.local/share/ffxiv-tools/ffxiv-run-game.sh 也可以添加,这样就可以使用卫月插件
卫月设置开启测试版插件后可以安装NextUI ,添加 ACT OverlayPlugin WSServer 的URL可以在游戏中显示悬浮窗
感谢 银狸狸的视频 https://www.bilibili.com/video/BV1f84y1y7Fu/
PS:测试时关闭游戏后去手动结束一下卫月和XIXLauncher.Core进程
参考20.04的安装方法
wget https://archive.ubuntukylin.com/ubuntukylin/pool/main/k/kylin-software-keyring/kylin-software-keyring_2022.03.30_all.deb
sudo dpkg -i kylin-software-keyring_2022.03.30_all.deb
sudo apt update
sudo apt install linux-headers-`uname -r`
sudo apt install kmre kylin-kmre-modules-dkms kylin-software-center
reboot
但启动麒麟软件商店会初始化失败
sudo apt install pyqt5-dev-tools
sudo kylin-software-center-daemon (或者重启系统)
重新打开软件商店,可以安装移动应用了,但是启动并没有窗口弹出
下载旧版本kyliin-kmre-window并解压
https://archive.ubuntukylin.com/ubuntukylin/pool/partner/kylin-kmre-window_2.2-14.1_amd64.deb
替换/usr/bin/kyliin-kmre-window 为旧版本的
安卓应用就可以运行了
Read More以前写过在Ubuntu 20.04 中安装UbuntuKylin kmre运行环境,但我使用的不多。
最近要用的时发现不出现安卓应用的窗口,折腾一通终于发现了问题所在。
是kylin-kmre-window 这个包更新的问题,回退老版本可以解决,但会破坏依赖
于是下载旧版本kyliin-kmre-window并解压
https://archive.ubuntukylin.com/ubuntukylin/pool/partner/kylin-kmre-window_2.2-14.1_amd64.deb
替换/usr/bin/kyliin-kmre-window 为旧版本的
安卓应用就可以运行了
Read More天翼生活和微信公众号客服果然是说要携带本人身份证去营业厅
直接投诉工信部,然后有当地电信电话问在不在本地,我说不在,让他直接改。结果下午当地的人(装宽带的)到我家来了,知道我在家本地(这时我不在家),又想让我去营业厅
我表示直接就可以改的业务,我为什么要去营业厅,你们不给我办理,我就继续投诉
一小时后,电信10000电话,修改成功。下月生效
因为当初上门推销我母亲办理了129的套餐,我很不喜欢当地的电信人员
Read More