技术 Keycloak使用群晖Synology Directory Server作为AD/LDAP用户数据源 这又是keycloak的另外一个大坑。keycloak并不会自动创建一系列SSL证书相关的配置,都要自己手撸。 如果还没安装keycloak,可以参考前一篇文章『Docker Compose安装Keycloak』 然后,你的群晖要先把AD配置好,这里就不重复了。 1、获得群晖AD对应的SSL证书 首先,要把群晖为AD所生产的自签名SSL证书下载回来,后面需要用。 位置:群晖DSM管理后台-控制面板-安全性-证书。如果不太确定是哪张证书,可以点击『设置』,找到『Synology Directory Server』对应的证书下拉。 在对应的证书上点击右键,选择『导出证书』 导出的证书解压后有两个文件,一个是证书本身cert.pem,另外一个是证书的私钥privkey.pem,我们需要用到的是cert.pem 💡UPDATE 另外一个使用OpenSSL来获取证书的方法(方便不支持导出的LDAP服务器) openssl s_client -showcerts -verify 5 -connect <AD/LDAP服务器IP或者域名>:636
技术 Docker Compose安装Keycloak Keycloak的安装其实挺烦人的,相关文章并不多,参考也不多,很多例子都是旧版本的,随手记录下安装和配置信息吧。 使用的数据库是postgresql,假设已经有安装好的postgresql,并且默认管理员账号是postgres,那么我们先创建keycloak的用户 su - postgres # 我们创建一个名为keycloak的pgsql用户,和名为keycloak的数据库 createuser -s -P keycloak createdb keycloak -O keycloak 然后我们创建一个文件,docker-compose.yml version: "3" services: keycloak: image: quay.io/keycloak/keycloak:20.0 container_name: keycloak environment: KC_HOSTNAME: <域名,如sso.naizhao.com>
Synology Gitlab整合群晖Synology Active Directory 群晖自己的文章并没有相关的帮助文档,网上也搜不到,这里留下来做个备份吧。 1、群晖先创建AD域 这里假定你设置的域名是wu.work,NetBIOS是wu,域管理员账号是ad-admin。大概类似截图中的样子 域管理员账号是你创建AD时输入的,不是NAS的管理员账号,别搞错了! 2、编辑gitlab.rb 如果你是用docker-compose安装的,应该会在docker-compose.yml里面指定了config目录的volume,在config目录里面就可以找到gitlab.rb。如果你是其他方式安装,文件在/etc/gitlab。如果还是找不着,自己Google。 打开gitlab.rb文件,找到ldap部分,然后把下面的内容贴进去(自己根据情况修改) 注意空格和缩进,注意空格和缩进,注意空格和缩进!!! # LDAP gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in&
ssl Cloudflare SSL验证一直卡在Pending Validation(TXT) 最近有两个域名DNS改到Cloudflare,SSL证书验证一直卡在 待验证(TXT) Pending Validation(TXT),禁用通用 SSL(Disable Universal SSL)也试了很多次,不管怎么搞也解决不了这个问题。 后来想到了一点,这两个域名都开启了DNSSEC,域名DNS转移到Cloudflare后,一直没更新DS记录。 解决方法是,在Cloudflare的DNS管理页面,开启DNSSEC,把DS记录在域名注册商后台更新,问题解决。
云服务 使用Cloudflare Tunnel实现内网穿透,把服务器架在家里 Cloudflare Tunnel是Cloudflare零信任网络的一个产品,用于打通企业、员工、设备之间的边界,从而摒弃掉VPN之类的过时技术(其实也不是过时,只不过是相对来说安全性、可控性较差) 通过Cloudflare Tunnel,可以实现云与设备之间打通一条加密通道,这样Cloudflare的CDN就可以很方便的通过这条加密通道访问到部署在内网的服务,包括Web、SSH等。同时,还不用考虑电信、移动等ISP不提供固定IP地址、不能开放端口,甚至解决备案的问题。 而且,还免费。 所以,整套内网穿透的方案大致如下 前置条件 * 首先,你要有一个Cloudflare的账号,并且添加了所需要使用的域名,同时,开通Cloudflare Zero Trust。 * 本地内网有一台Linux服务器。CentOS、Ubuntu、Debian都无所谓,树莓派也没问题。Web网站正常跑,内网能正常访问。 安装Cloudflared Cloudflared是Cloudflare Tunnel的一个本地cli客户端,可以实现管理功能和守护程序。 macOS可以用homebre
mac 彻底干掉烦人的.DS_Store文件 macOS系统会持续在目录里面不断的生成.DS_Store文件,用来存储当前目录的一些个性化设置信息,但这真的很烦人,每次删掉后,又会自动重新创建。真不知道苹果的产品经理和工程师是怎么想的。 但在macOS新版本里头,提供了一个小脚本专门来处理这个问题。不但可以删掉.DS_Store,还可以针对某个文件夹专门设置规则,不再创建。这对我等开发人员来说,实在是太贴心了。 这个小脚本叫dot_clean,位置在/usr/sbin 比如要禁止某个目录创建.DS_Store,那么只需要在terminal里面运行 /usr/sbin/dot_clean -m '目录名' 比如要禁止Downloads目录及子目录 /usr/sbin/dot_clean -m ~/Downloads 这个命令还有另外一个功效,自动删掉已经创建的.DS_Store,实在是一了百了
Outline 本地快速部署Outline Outline是一款类似于Notion的笔记本/团队协作Wiki软件。因为Outline在一开始就面向的团队协作,所以这款应用部署异常的难,中文的就更少了。我自己捣鼓了几天,基本把这玩意搞清楚了,快速记录下折腾过程。 阅读这篇文章之前,先假设你懂域名,会折腾服务器,会一些基础的服务器运维。这批文章将不会重点讲Web服务器部署之类的事情。 另外,Web前端的反向代理是用的Caddy,NGINX用户自行转换配置文件。 环境准备 你要先准备以下东西: * 一个域名,配置一个主域和一个二级域。比如note.naizhao.com(用户访问Outline)和storage.naizhao.com(用于Outline存储附件),然后IP地址指向你的服务器 * Docker运行环境 * 一个微软账号,可以登陆到https://portal.azure.com/。本文将以Azure AD登陆为基础 * 一个MailJet或者MailGun或者其他的SMTP账号,用于Outline发送邮件 * 网站根目录在/var/www/com/naizhao/note 以上准备完毕,开整
网络 SSH远程服务器提示Their offer: ssh-rsa macOS升级到Ventura后,远程连接服务器提示 Unable to negotiate with x.x.x.x port 1234: no matching host key type found. Their offer: ssh-rsa 这是因为新版本的openssh不支持RSA和DSA等老算法的协商了,所以需要在```.ssh/config```里面增加配置 Host * HostkeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa 保存后重新连接就可以了
windows OneXPlayer Mini如何改善低分辨率(800)的游戏模糊情况 开始-英特尔显卡控制中心-右上角全局设置-复古缩放-关闭 游戏的快捷方式-右键-属性-兼容性-禁用全屏优化 如果是Steam的游戏,打开Steam的安装目录,\steamapps\common,找到对应的游戏,进入bin目录,exe文件右键-属性-兼容性-禁用全屏优化
RaspberryPi 移远EC200U-CN AA在树莓派下使用 EC200U-CN AA是个USB Dongle,除了支持Cat 1的LTE以外,还支持GPS/北斗等GNSS,价格便宜,合适放到树莓派上当移动数据使用。 设备在树莓派下会被识别成cdc_ether的设备,官方并没有提供树莓派的使用文档,给过来的Linux脚本设备名称也不对,网上看了不少文档,结果发现走了很多弯路。 首先需要把模块给识别成USB Serial,加载成功后,会识别出ttyUSB0-ttyUSB7共8个设备。官方的脚本里面调用的是ttyUSB3,这个端口不对(应该是GPS的端口),直接用ttyUSB0就可以了。 先lsusb看看设备是否被识别 pi@raspberrypi:~ $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 2c7c:0901 Quectel Wireless Solutions
技术 Windows 11硬盘对拷后丢失UEFI启动的解决方法 过年期间给Onexplayer换了个2T的新硬盘,结果换完后死活在UEFI里面找不到Windows 11的启动项,用PE工具来修复也不成功,最后还是手工搞定。 先找一个Win11的安装U盘启动,然后进入修复系统-高级-命令行。 c:\> diskpart diskpart> list disk diskpart> sel disk #(#是装有Windows的硬盘号,一般是0) diskpart> list volume diskpart> sel volume #(#是UEFI的SYSTEM分区号) diskpart> assign letter=K: diskpart> exit c:\> format K: /FS:FAT32 c:\> bcdboot C:\windows /s K:
网络 TP-LINK AC使用OpenWRT作为DHCP Server TP-LINK的AC,如果把自身的DHCP Server关闭后,会导致所有的AP连接不上AC进行集中的管理。其实只需要OpenWRT的DHCP Server在下发的option里面附带AC的IP地址就可以了。 指定AC常用的option有43、60、138,一般的AC/AP下发43就够了。但TP-LINK比较特殊,不认43,只认60和138。所以需要在OpenWRT配置下面的参数: list dhcp_option '60,TP-LINK' list dhcp_option '138,10.0.1.1'
飞行 Jeppview提示Error initializing themes的解决方法 打开Jeppview的时候,有可能会提示Error initializing themes,一般出现这种情况,是因为Jeppview安装在非C盘,或者数据目录不在C盘的情况。解决方法需要修改注册表,Win+R-regedit,找到下面这个位置 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Jeppesen\JeppView for Windows\Paths 把Themes的值修改为 C:\ProgramData\Jeppesen\JeppView for Windows\Themes\ 保存即可
技术 如何下载macOS安装包及加入beta测试 下载完整安装包 # softwareupdate --fetch-full-installer --full-installer-version **.**.* 比如 # softwareupdate --fetch-full-installer --full-installer-version 10.15 加入开发者测试版 sudo /System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil enroll DeveloperSeed 加入公共测试版 sudo /System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil enroll PublicSeed 退出测试版 sudo /System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil unen
技术 CentOS 7升级到CentOS 8 Stream # yum update -y # yum install -y epel-release # yum install -y yum-utils rpmconf # rpmconf -a # package-cleanup --leaves # package-cleanup --orphans # yum install -y dnf # dnf -y remove yum yum-metadata-parser # rm -Rf /etc/yum # dnf upgrade -y # dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/{centos-linux-release-8.3-1.2011.
技术 OpenWRT升级提示空间不够的处理 x86的OpenWRT固件一般都比较大,系统升级的时候,需要把.img文件解压到/tmp。但系统申请的/tmp只有内存的一半大小,所以在内存小的机器里面,会出现空间不足导致失败的情况。 在这样的情况下,需要对/tmp进行扩容 # mount -t tmpfs -o remount,size=2G tmpfs /tmp # sysupgrade -v openwrt-x86-64-generic-squashfs-combined.img
飞行 中国民航局CAAC签发的飞行驾照如何换成美国FAA的飞行驾照? 基本上国内的文章都只说了如何把FAA的飞行驾照换成CAAC的飞行驾照,CAAC换成FAA的倒是没看到有人提过。 为什么要换FAA驾照?虽然ICAO说了,驾照在ICAO的公约国全球通用,但仅限于 * 在驾照颁发国开驾照颁发国注册的飞机(比如在中国驾驶B开头的注册号) * 在非驾照颁发国开驾照颁发国注册的飞机(比如在美国、英国驾驶B开头的注册号) 如果,拿着中国CAAC发的驾照,去美国开N开头的飞机,是不可以的。 同理,拿着美国FAA发的驾照,在中国开B开头的飞机,也是不可以的。 但好就好在,ICAO开了个口子,各国虽然不能直接飞,但可以先『换』一个当地的驾照,这样就可以在当地飞了。而且原来国家的驾照也不会作废。 FAA换CAAC,需要的手续比较多,也比较繁琐。需要重新考笔试、做体检。但CAAC换FAA就没这么麻烦了,只需要经过一个简单的『验证』(Verify)过程就可以了,不需要笔试,不需要实操,甚至都不需要在美国体检(Holds a medical certificate issued under part 67 of this
技术 Bitwarden_rs升级 # docker ps # cd /var/hosts/path/to/bitwarden/ # docker pull vaultwarden/server:latest # docker stop bitwarden # docker rm bitwarden # docker-compose up -d # docker ps 使用 docker-compose 时的更新 docker-compose stop docker-compose pull docker-compose start
技术 Caddy php_fastcgi 报错解决 新配置了一台Ubuntu环境的机器,但Caddy访问php-cgi.sock一直报错 Dec 23 16:10:05 server.bra caddy[2190]: {"level":"error","ts":1608711005.8737435,"logger":"http.log.error.log0","msg":"dialing backend: dial unix /tmp/php-cgi.sock: connect: no such file or directory"
技术 Safari绕过SSL证书错误的对话框 go to Safari > Preferences > Advanced and select the "Show Develop menu in menu bar" option at the bottom. 1. Develop > Show Javascript Console. 2. Paste CertificateWarningController.visitInsecureWebsiteWithTemporaryBypass() in the console. 3. Press enter to run the code and bypass the warning page without adding the
技术 Caddy 2 如何设置CORS Caddy 2 去掉了专门的CORS插件,所以需要额外的去重写header,以便支持Access-Control-Allow-Origin "*" route { try_files {path} {path}/ /index.php?{query} php_fastcgi unix//tmp/php-cgi.sock { header_down Access-Control-Allow-Origin "*" } } header_down表示,从上游的服务器(PHP、node等)取回数据后,重写header。同理,header_up则是把header传给/重写给上游服务器(如用户的浏览器类型、referer等)。 Caddy 2的Caddyfile改变很大,顺便附上一个参考配置 https://test.bra.do { encode zstd gzip log
技术 小白如何从零开始安装Discuz! Q内测版 首先强调一点:当前Discuz! Q还是很早期的版本,主要是面向开发者,让开发者提前介入模板和插件的开发。或者有经验的站长,作为早期体验和选型。 但如果是不很懂技术的小白,也想体验的话,可以按照下面的方法来安装。并且保证是全新的服务器。如果这些条件都不具备,或者用了宝塔面板之类的第三方工具,不建议安装使用。 因为,当前官方开发人员的主要精力,集中在开发迭代新功能上,并没有太多精力来帮助没经验的用户安装使用。 UPDATE:URLOS提供了Discuz! Q的Docker一键安装脚本,欢迎体验 安装Discuz! Q内测版,首先你要具备以下条件 * 一个腾讯云实名认证过的账号,并且使用了DNSPod,在DNSPod至少有一个域名。(并不是为了强绑腾讯云,而是为了保证初期内测使用的用户都是强需求的) * 一台船新的腾讯云的CVM,操作系统可以是CentOS或者Ubuntu或者Debian,最新版本即可。当然阿里云或者华为云或者本地虚拟机也可以。但一定要干净,没装过任何东西。 * 在腾讯云账号中心的API密钥管理,获取到SecretId和SecretKey。注意:请