Free cookie consent management tool by TermsFeed Update cookies preferences

阿卡林刘

黑夜给了我黑色的眼睛,我却用它去寻找光明。——《荣耀》

分类: 技术宅

技术宅拯救世界!

  • 为什么我卸载了用了很久的 Ollama?

    为什么我卸载了用了很久的 Ollama?

    最近,我发现使用 Ollama 运行大模型很慢很慢,后面查询文档得知,Ollama 官方放弃了对 NVIDIA GeForce GTX 1650 显卡的官方支持,我作出了个决定:卸载 Ollama,使用 LM Studio 替代。

    换用 LM Studio 后,感觉使用比 Ollama 更加易用,它的 OpenAI 兼容 API 不需要额外操作,服务器设置可以使用图形化配置。

    LM Studio 还有个好处,就是兼容大部分电脑的显卡,不同于 Ollama 仅支持 ROCm 和 CUDA。LM Studio 支持 Vulkan,未来的摩尔线程等国产显卡一旦支持 Vulkan,意味着可以在国产显卡使用 LM Studio 软件了。

  • Casdoor 入坑指南——以 Kanboard 为例

    上一篇文章展示了 WordPress 配合插件 Authorizer 怎么接入 Casdoor,这篇文章将向你展示怎么将 Kanboard 接入 Casdoor。

    接入非常简单,安装插件 OAuth2,安装好后来到用户头像➡️设置➡️整合➡️,按照我提供的列表填写:

    提示填写
    Callback URLhttps://<KANBOARD_DOMAIN>/oauth/callback
    Client ID(请填写你在 Casdoor 获取到的Client ID)
    Client Secret(请填写你在 Casdoor 获取到的Client Secret)
    Authorize URLhttps://<CASDOOR_DOMAIN>/login/oauth/authorize
    Token URLhttps://<CASDOOR_DOMAIN>/api/login/oauth/access_token
    User API URLhttps://<CASDOOR_DOMAIN>/api/userinfo
    Scopesopenid profile email
    Username Keypreferred_username
    Name Keyname
    Email Keyemail
    User ID Keysub

    填写好后点击保存按钮即可。

    如果你在 Casdoor 没有用户的话,建议新建一个用户,同时我强烈建议网站的不同用户使用同一个用户名,方便后续接入 Casdoor。

    接下来,登出你的账号,点击 OAuth2 Login,输入 Casdoor 的账号密码,点击登录,神奇的是你的账号成功登录了!

  • Casdoor 入坑指南——以 WordPress 为例

    注意:本文的实操内容可能会导致账号访问权限丢失,请谨慎操作!

    最近,我正在尝试使用 Casdoor,让 WordPress 支持 SSO 登录。

    事情的起因是这样的:

    网站的服务越来越多了,但是登录不同的服务需要单独的不同账号,这样显得非常麻烦,所以为了终结需要多个账号的问题,计划三步走:

    1. 在本地尝试使用 Casdoor 接入 WordPress 作为可行性验证;
    2. 搭建一个 Casdoor 服务(https://sso.akarinliu.com),在每个网站的登录页面新增 “阿卡林刘 SSO” 登录选项,引导用户迁移至 SSO。
    3. 等到全部迁移实现或达到迁移目标的 99%,将强制跳转至 SSO 登录。

    1. 安装 Docker

    前往 https://docker.com 安装 Docker。

    2. 安装 1Panel(可选)

    前往 https://1panel.cn 获取安装命令执行安装。

    3. 搭建虚拟环境

    复制以下 Docker Compose 文件和 Casdoor 的配置文件:

    # dir: ./compose.yml
    services:
      mariadb:
        image: mariadb:lts
        volumes:
          - ./data/mariadb:/var/lib/mysql
        environment:
          - MYSQL_ROOT_PASSWORD=mysql
        healthcheck:
          test:
            [
              "CMD",
              "healthcheck.sh",
              "--su-mysql",
              "--connect",
              "--innodb_initialized",
            ]
          start_period: 1m
          start_interval: 10s
          interval: 1m
          timeout: 5s
          retries: 3
      phpmyadmin:
        image: phpmyadmin
        environment:
          - PMA_HOST=mariadb
        ports:
          - 3307:80
        depends_on:
          mariadb:
            condition: service_healthy
      casdoor:
        image: casbin/casdoor
        ports:
          - 8000:8000
        volumes:
          - ./data/casdoor:/data
          - ./conf/casdoor:/conf
        environment:
          - RUNNING_IN_DOCKER=true
        depends_on:
          mariadb:
            condition: service_healthy
      wordpress:
        image: wordpress
        volumes:
          - ./data/wordpress:/var/www/html
        ports:
          - 8080:80
        depends_on:
          mariadb:
            condition: service_healthy
    
    
    # dir: ./conf/casdoor/app.conf
    appname = casdoor
    httpport = 8000
    runmode = dev
    SessionOn = true
    copyrequestbody = true
    driverName = mysql
    dataSourceName = root:mysql@tcp(mariadb:3306)/
    dbName = casdoor
    tableNamePrefix =
    showSql = false
    redisEndpoint =
    defaultStorageProvider =
    isCloudIntranet = false
    authState = "casdoor"
    socks5Proxy = "127.0.0.1:10808"
    verificationCodeTimeout = 30
    initScore = 2000
    logPostOnly = true
    origin = "http://localhost:8000"
    staticBaseUrl = "https://cdn.casbin.org"
    enableGzip = true
    inactiveTimeoutMinutes =

    保存好文件后,执行以下命令启动编排:

    docker compose up -d

    访问 http://localhost:8000 输入账号密码: admin 123

    4. 让 WordPress 接入 Casdoor

    这一点整个过程非常棘手,我一开始使用的 MiniOrange 的 OAuth2 插件,配置好后结果无法正常登录,OpenID 的插件一年没有维护了也不可用。最终使用了 Authorizer 这个插件,目前来看非常可靠,不会出问题。

    我觉得这个最容易掉坑里的是良莠不齐的插件生态,所以如果你有更好的插件,可以在评论区留言。

    好吧,扯远了,回到话题。

    1. 访问 Casdoor 的后台,新建一个组织,不要使用内置的组织;
    2. 切换至新建的组织,创建一个应用,填好信息保存;
    3. 在 WordPress 的插件市场搜索 Authorizer,点击安装;
    4. 在 WordPress 插件管理器 启用它;
    5. 点击 设置 ➡️ Authorizer,打开它的管理页面;
    6. 在外部服务 Tab 勾选 “启用 OAuth2 服务” 复选框;
    7. 请按照下图填写,Client ID 和 Client Secret 填写你在 Casdoor 得到的,另外 localhost:8000 和 casdoor:8000 替换成你部署 SSO 服务的域名,http 替换成 https,最后点击保存。
    图片

    5. 测试部署结果

    辛苦啦,来测试一下结果如何吧!

    在 Casdoor 新组织创建一个与您在 WordPress 用户名和邮箱一致的账号。

    新建一个隐私标签页,访问网站的管理后台,例如:https://www.akarinliu.com/wp-admin。

    这时候会自动跳转至 Casdoor 登录页面,如果没有的话,点击带有 SSO 登录的按钮。

    输入您的账号密码,按下回车键登录。

    如果进入到了后台,恭喜你,WordPress 使用 Casdoor 登录成功!

    总结

    Casdoor 可以解决您的网站的账号体系混乱问题,虽然配置很麻烦,但是一旦配置好了,体验会得到提升,以后不需要多个同域名不同网站的账号了。

  • WordPress Playground:一个开箱即用的 WordPress 临时环境

    最近,我在测试 WordPress 的插件: Advance Media Offloader,当时我在雨云的 1 元试用的云主机上安装了 WordPress,直到服务器关机的时候,我后悔了:何必为了一碟醋包一盘饺子呢?

    后面,我使用了 WordPress Playground,使用起来相当顺滑,而且无需手动安装,并且设计一套网站蓝图后,使用自带的工具导出网站档案就行。

  • 为什么我会卸载新版 Outlook?

    最近,我卸载了新版 Outlook,换成 Thunderbird 邮件客户端,卸载的原因还得从第一次使用新版 Outlook 说起:

    第一次接触新版 Outlook

    一开始,我打开默认的 Windows 邮件客户端,提示他们正在迁移至新版 Outlook 客户端,我开始尝鲜,一开始体验还不错,直到最近对启动速度不满意,我才换成了 Mozilla 的 Thunderbird 邮件客户端。

    为什么会换成 Mozilla Thunderbird?

    • 启动速度慢
    • 卡顿
    • 配置要求高
    • 优化差

    Mozilla Thunderbird 有什么好处?

    • 开放源代码
    • 隐私优先
    • 优化好
    • 启动速度快
  • 如何手动安装 ComfyUI

    最近,我尝试自己搭建 ComfyUI,其中踩了不少坑,之前第一次使用 ComfyUI 用的是官方构建的整合包,让我印象深刻,现在想试试手动安装 ComfyUI,当然现在得利于阿里云镜像站有 PyTorch whl 包 提供

    配置

    名称
    CPUAMD Ryzen 5 4600H
    GPUNVIDIA GTX 1650
    内存容量32 GB
    Python 版本Python 3.11

    第一步:下载源代码

    下载源代码是一件麻烦事,因为 GitHub 在国内的稳定性不佳,所以,我使用了 Dev-Sidecar 软件辅助下载源代码。

    git clone https://github.com/comfyanonymous/ComfyUI.git

    第二步:安装依赖

    下载好源代码后,使用 VSCode 打开,按下 Control + Shift + P,打开命令面板,选择创建虚拟环境,选择 venv,选择阿里云镜像站里面提供 PyTorch 所支持最新的 Python 版本。

    执行以下命令进入 venv:

    ./.venv/Scripts/activate.bat

    在国内安装 PyTorch 用官网下载得下到猴年马月,所以我在阿里云的 PyTorch 镜像站下载 whl 文件,输入以下命令后将文件拖入终端以复制文件路径,注意空格和 cp (Python) 版本号:

    pip install 

    当然,你可以把 PyTorch 的 whl 包的 URL 复制到 requirements.txt 里面,这样就可以省下很多事。

    执行以下命令安装依赖:

    pip install -r ./requirements.txt

    第三步:试运行和安装 ComfyUI Manager

    输入以下命令运行代码:

    python ./main.py

    代码运行成功!🎆

    接下来安装 ComfyUI Manager 插件,输入以下命令安装:

    cd custom_nodes
    git clone https://github.com/ltdrdata/ComfyUI-Manager.git

    这样你就有了一个万能的 ComfyUI 环境!

  • Chocolatey:一个好用的 Windows 软件包管理器

    最近,我给自己的电脑安装了 Chocolatey 和 UnigetUI (前身是 WingetUI)。这几天用下来没有遇到安装时的网络问题,安装非常快捷。

    安装软件非常简单,只需执行一条命令即可安装 WireGuard:

    sudo choco install wireguard -y

    Chocolatey 会自动选择官网或者是通过仓库下载安装包,安装就像使用 apt 命令安装一样丝滑。

    官网: https://chocolatey.org/

    安装 Chocolatey

    此软件需要 .NET Framework 4.8 运行时环境,下载链接:

    https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net48

    以管理员身份打开 Windows Powershell 终端,复制以下命令安装:

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
  • 服务器频繁宕机的背后,是一个有Bug的更新

    在经历上一个版本的 1Panel 的 OpenResty App 更新,服务器出现了频繁宕机,磁盘读取经常被占满。后面经联系阿里云客服,得知是内存被占满后调用了 SWAP,最后导致硬盘读取被占满。

    第一章:噩梦的开始

    4月底,服务器迁移到了 1Panel,当时服务器一直在运行着 WordPress、 Yourls 和 FreshRSS。

    5月21日,服务器发生了宕机事故,当时以为服务器是中了病毒,于是,服务器执行了重启。

    第二章:求助

    当我遇到这个症状后,向飞致云论坛的管理员求助:

    https://bbs.fit2cloud.com/t/topic/5411

    当时,这个问题是普遍性的Bug,后面,飞致云的管理员向我问了一些问题,我把当时发生的情况如实报告给了管理员。

    第三章:真相大白

    今日,飞致云发布了 1Panel 1.10.10 版本更新,同时发布了 OpenResty 1.21.4.3.-3-2-focal 镜像版本,这次更新修复了一个内存泄露的 Bug。真相大白,原来是 OpenResty 的内存占用高的离谱,现在已经修复了。

    总结

    总之,服务器经常宕机的原因是 OpenResty 的内存占用高的离谱,内存用完后用了磁盘的 SWAP,最后导致磁盘读取被占满的 Bug 出现了。

  • 为什么我选择使用Duplicati来备份我的电脑数据?

    现在的备份方案:

    软件/服务描述
    Duplicati一款在线数据备份软件,通过AList的WebDAV协议连接至123云盘
    FreeFileSync一款本地数据备份软件,通过外接USB移动硬盘备份离线数据
    Syncthing一款数据同步软件,同步我的手机相册数据

    起因

    之前,我的相册数据备份在OneDrive上,但是好景不长,OneDrive在小米应用商店上下架了!所以,我开始寻找其他备份数据的解决方案。最终,备份数据的最终解决方案选择了Duplicati连接AList的WebDAV的123云盘,之后如果考虑开会员的话,会直接使用123云盘的WebDAV。

    为什么会选择这个组合?

    主要原因是看上了123云盘的2T大容量和不限速的优势,而AList是一个网盘聚合器,所以可以连接不同的网盘,结合它的WebDAV协议就可以轻松实现自动备份。

    为什么还有本地备份?

    主要原因是担心网盘会随时限速,同时为了实现快速恢复数据,就选择使用FreeFileSync备份数据,同时会使用Syncthing同步相册到电脑上。

    总结

    123云盘与AList的结合可以实现本地支持WebDAV,Duplicati与WebDAV可以实现自动备份至网盘,FreeFileSync可以实现本地备份,Syncthing可以实现自动同步手机相册到电脑上。总之是套娃式备份。