博客

  • OpenMediaVault(OMV)设置

    OpenMediaVault(OMV)设置

    [c-alert type=”success”]原文地址:omv设置 | 赤城的部落格 (akagiyui.com)[/c-alert]

    参考:OpenMediaVault (OMV) 切换国内源

    修改debian源

    sed -i 's/httpredir.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
    sed -i 's#http://deb.debian.org#https://mirrors.ustc.edu.cn#g' /etc/apt/sources.list.d/openmediavault-os-security.list
    sed -i 's#http://deb.debian.org#https://mirrors.ustc.edu.cn#g' /etc/apt/sources.list.d/openmediavault-kernel-backports.list
    
    sed -i 's#http://security.debian.org/debian-security#https://mirrors.ustc.edu.cn/debian-security#g' /etc/apt/sources.list
    

    修改omv源

    sed -i 's#https://packages.openmediavault.org#https://mirrors.bfsu.edu.cn/OpenMediaVault#g' /etc/apt/sources.list.d/openmediavault.list
    
    sed -i 's#http://packages.openmediavault.org#https://mirrors.bfsu.edu.cn/OpenMediaVault#g' /etc/apt/sources.list.d/openmediavault.list
    
    
    sed -i 's#http://security.debian.org#https://mirrors.bfsu.edu.cn#g' /etc/apt/sources.list.d/openmediavault-os-security.list
    
    sed -i 's#http://httpredir.debian.org#https://mirrors.bfsu.edu.cn#g' /etc/apt/sources.list.d/openmediavault-kernel-backports.list
    

    修改docker源

    sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/apt/sources.list.d/docker.list
    

    安装必要的软件

    apt install htop screenfetch curl
    

    安装omv-extras

    wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
    wget https://mirror.ghproxy.com/github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install
    sed -i 's#https://github.com#https://mirror.ghproxy.com/https://github.com#g' install
    bash install
    rm install

    修改omv-extras源

    sed -i 's#openmediavault-plugin-developers.github.io/packages/debian#mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers#g' /etc/apt/sources.list.d/omvextras.list

    软件源参考

    已安装omv-extra并开启backports的源

    deb http://mirrors.bfsu.edu.cn/debian/ bullseye main
    deb-src http://mirrors.bfsu.edu.cn/debian/ bullseye main
    
    deb http://mirrors.bfsu.edu.cn/debian/ bullseye-updates main contrib non-free
    deb-src http://mirrors.bfsu.edu.cn/debian/ bullseye-updates main contrib non-free
    deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public/ shaitan main
    deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://openmediavault.github.io/packages/ shaitan main
    # deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://downloads.sourceforge.net/project/openmediavault/packages/ shaitan main
    deb [signed-by=/usr/share/keyrings/debian-archive-bullseye-automatic.gpg] http://httpredir.debian.org/debian bullseye-backports main contrib non-free

    创建Gotify通知方式

    安装curl

    apt install curl
    

    在目录/usr/share/openmediavault/notification/sink.d

    cat << EOF > /usr/share/openmediavault/notification/sink.d/98gotify
    #!/bin/sh
    nachricht=$(cat $OMV_NOTIFICATION_MESSAGE_FILE)
    curl "http://localhost:4080/message?token=A7qMnMQSph8UxK6" -F "message=$nachricht" -F "title=$OMV_NOTIFICATION_SUBJECT"
    EOF
    
    chmod +x /usr/share/openmediavault/notification/sink.d/98gotify
    

    连接到lxc容器

    virsh --connect lxc:///system console <container_name>
    
    virsh -c lxc:/// console <container_name>

    openmediavault-hosts

    插件openmediavault-host,管理系统etc/hosts文件 ,安装完后在管理页面, 网络 – 主机 按照规范填写对应的ip和网址

  • Panther x2 (黑豹 x2) 的PVE之路-卒-Reborn

    Panther x2 (黑豹 x2) 的PVE之路-卒-Reborn

    JP-BOX正常服役,跑了很多Docker服务,懒得去动他,N1又感觉性能比较弱,没有太大的意义。又买了个Panther X2 做测试

    Panther X2我这台的体制太差了吧,服役杠2个多月。卒

    刷机Armbian

     

    安装PVE

    我使用的是自动安装,手动安装请查看:转载:Arm版本的Proxmox VE8.0安装教程 – 颓废的美 (ijays.com)

    [c-alert type=”warning”]前提:0、armbian使用的是ophub 大佬编译的。1、主机设置为固定IP翻边查找。2、网络必须为已科学。第2尤为主要,否则容易失联[/c-alert]

    armbian-software

    选择308  – 输入主机名 X2 #这里可以自定义,我填写的X2

    选择 No configuration

    中间会提示一些错误,貌似不影响安装,忽略即可!

    dpkg: error processing package pve-manager (--configure):
    installed pve-manager package post-installation script subprocess returned error exit status 1
    dpkg: dependency problems prevent configuration of proxmox-ve:
    proxmox-ve depends on pve-manager (>= 8.0.4); however:
    Package pve-manager is not configured yet.
    
    dpkg: error processing package proxmox-ve (--configure):
    dependency problems - leaving unconfigured
    Errors were encountered while processing:
    pve-manager
    proxmox-ve

    出现以下,标识安装成功了。

    浏览器打开:https://192.168.1.80:8006  即可访问PVE的管理界面

    查看一下宿主机的网络变换,nano /etc/network/interfaces ,出现vmbr0即代表PVE网络也已配置成功 – 非必须!

    先装个LXC Debian练练手 – 看图即可

    登录PVE后依次选择 主机(X2)-local – CT模板 – 模板 – 搜索 debian – 选择要下载的系统 – 点击下载出现 task ok即下载完成

    我这里选择的是arm64版的debian-bookworm,也就是debian12。
    1、

    2、

    3、

    4、

    5、

    6、

    7、

    8、

    9、

    10、

    11、

    [c-alert type=”warning”]12、没有直通需求,进设置网络即可[/c-alert]

    nano /etc/pve/lxc/100.conf #宿主机操作

    #Network config 
    lxc.net.0.flags: up
    lxc.net.0.type: veth
    lxc.net.0.link: vmbr0
    lxc.net.0.name: eth0
    
    # TUN  - By cooip
    lxc.cgroup2.devices.allow = c 10:200 rwm
    lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
    
    # 直通GPU - By cooip
    # lxc gpu、声卡 直通
    # 需要赋权600或者666...
    # 不限设备架构,纯LXC 自行按照格式修改:为=
    lxc.cgroup2.devices.allow: c 226:* rwm
    lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,create=file
    lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,create=file
    lxc.cgroup2.devices.allow: c 116:* rwm
    lxc.mount.entry: /dev/snd dev/snd none bind,create=dir

    13、

    14、编辑LXC创建的debian网络

    # 通过宿主机进入LXC debian的ssh,也可以通过PVE的控制台操作。三种方式随意

    lxc-attach 100 

    #编辑网络

    14.1 启动网络服务:systemctl start systemd-networkd

    14.2 设置开机启动网络服务:systemctl enable systemd-networkd

    vi /etc/systemd/network/eth0.network

    注释掉原有信息,替换为以下。XX替换为你的IP、网关、DNS

    [Match]
    Name=eth0
    [Network]
    Address=192.168.1.XX/24
    DNS=192.168.1.XX
    IPForward=yes
    IPv6AcceptRA=true
    [Route]
    Gateway=192.168.1.XX

    # 替换源

    # 安装必要软件

    # 更新安装软件
    apt update
    apt upgrade
    apt install -y  openssh-server nano curl wget git apt-transport-https ca-certificates bash

    # 设置ssh

    nano /etc/ssh/sshd_config

    #PermitRootLogin prohibit-password  修改为 PermitRootLogin yes 后重启ssh服务

    可以这样:20241130

    echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
    /etc/init.d/ssh restart

    重启后就可以直接通过 SSH 客户端软件连接LXC debian 了

    # 可以愉快的折腾了

    openwrt和mihomo adg 都是差不多的过程,包括抛弃PVE纯LXC容器部署

    可以去看:第二步‐电视盒子‐LXC · cooip-jm/About-openwrt Wiki (github.com)

     

    [c-alert type=”success”]参考与感谢各位大佬的教程与开源:[/c-alert]

    一、安装篇:手把手教你PVE系统下用LXC方式安装OpenWrt_爱田小牛资源分享 (aitxn.com)

    roacn/pve: PVE脚本,一键换源、去订阅弹窗等;LXC容器OpenWrt自动安装、更新 (github.com)

    xYx-c/build-openwrt: 自用openwrt功能非常精简,完美支持ipv6,适用pve lxc容器 (github.com)

    PVE主体安装 | 一键虚拟化项目 (spiritlhl.net)

    Panther X2折腾记录 | 纷纷 (ffoo.cc)

    百元矿渣Panther X2(黑豹 X2):小白折腾日记1-论坛-深度科技 (deepin.org)

    Index of /lxc-images/images/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

    Proxmox VE(N1)网络配置、内存优化、LXC安装OpenWrt、AdGuardHome、Docker – YsxlionBlog (ysx88.top)

    Arm版本的Proxmox VE8.0安装教程(N1) – YsxlionBlog (ysx88.top)

    Panther X2 rk3566安装jellyfin开启硬件解码 | HiAsia的小站 (gitee.io)

    软路由虚拟机PVE使用LXC安装Debian教程 – 南山如雪 (ckajx.com)

    如何在 Ubuntu/Debian 中安装、创建和管理 LXC (linux-console.net)

    PiMox7 – RPi4 – arm64 CT Basic Configuration – LXD – Linux Containers Forum

    Looking for rootfs.tar.xz | Proxmox Support Forum

    第二步‐电视盒子‐LXC · cooip-jm/About-openwrt Wiki (github.com)

    Linux 安装 Clash 内核并开启透明代理 | ZhiChao’s Blog

    mihomo-config with emoji | Notion Blog (ag.cn.eu.org)

    修改 Proxmox 虚拟机 ID | 呉真的博客 (kuretru.com)

    Arm Proxmox VE8.0 安装教程

  • 大善人-Cloudflare

    大善人-Cloudflare

    之前只知道域名解析免费、域名购买费用低、WARP、CDN

    近期解除了下 cloudflare 的Workers

    才发现cloudflare真是个大善人啊!随时随地连接、保护和构建 | Cloudflare

    在用的workers程序

    sink – 短链程序

    miantiao-me/Sink: ⚡ A Simple / Speedy / Secure Link Shortener with Analytics, 100% run on Cloudflare.

    sublinks – 配置转换

    7Sageer/sublink-worker: One Worker, All Subscriptions

    cloud-mail – 基于 Cloudflare 的邮箱服务

    maillab/cloud-mail: A Cloudflare-based email service | 基于 Cloudflare 的邮箱服务 | Cloudflare Email 邮箱 Mail

  • 2025总结!

    待编辑!

  • Portainer v2.33.4 + Docker Engine v29的天坑!

    Portainer v2.33.4 + Docker Engine v29的天坑!

    天坑啊!

    把手里的盒子升级到debian 13,然后lxc创建了debian 13的容器,安装docker一切都正常

    然后部署 portainer ,发现运行正常,但是点击 local 失败 ,“加载失败环境,本地的环境无法访问”

    Error Failed loading environment
    The environment named local is unreachable.

    遂复查docker run命令行,发现没问题

    之后询问grok及chatgpt

    给出的方案不是宿主机lxc权限问题,就是部署命令行的问题。

    最后还是查看github找到了答案:加载失败的环境 名为本地的环境无法访问。·波尔泰纳·讨论#12926

    Hello everyone, this is a RC release from Docker. We are aware of breaking changes for Docker 29 but please stick to the tested versions of Docker found here –https://docs.portainer.io/start/requirements-and-prerequisites

    最终解决方案:

    DEFINITIVE SOLUTION: Portainer + Docker Engine v29

    🎯 PROBLEM IDENTIFIED

    Docker Engine v29 introduced incompatibility with Portainer v2.33.4 due to the minimum API increase from 1.41 to 1.44.

    Symptoms:

    • ✅ Portainer starts normally
    • ❌ Environment “primary” appears as “Down” and “Disconnected”
    • ❌ Error: “Failed loading environment – The environment named primary is unreachable”
    • 🔍 This can happen on some Cloud VMs: Hetzner, Digital Ocean, AWS EC2, etc.

    🔧 IMPLEMENTED SOLUTION

    1. Docker Daemon Configuration

    Created :/etc/docker/daemon.json

    {
      "min-api-version": "1.24",
      "log-driver": "json-file", 
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "features": {
        "containerd-snapshotter": false
      }
    }

    2. Restart Docker

    sudo systemctl restart docker

    3. Verify Compatibility

    docker version
    # Should show: API version 1.52 (minimum version 1.24)

    📚 REFERENCE

  • 转载:VMware17Pro虚拟机导入macOS14.5镜像免安装使用

    原文地址:VMware17Pro虚拟机导入macOS14.5镜像免安装使用 – Jason’s Blog

    安装VMware17Pro

    百度网盘
    链接:https://pan.baidu.com/s/1XhDSY2NDqp5AxX_4_cUD0w?pwd=9892
    提取码: 9892
    123网盘
    链接:https://www.123pan.com/s/jGXfTd-yV3nH.html
    提取码:i9pH
    密钥
    CU5E8-ARY05-480JY-VGMGX-ZGKT6

    安装补丁

    下载

    百度网盘
    链接: https://pan.baidu.com/s/1neTXHF9xfimRLi0GtVd3TA?pwd=izzs
    提取码: izzs
    123网盘
    链接:https://www.123pan.com/s/jGXfTd-6V3nH.html
    提取码:u5pZ

    解压

    解压unlocker424.zip

    结束VMware相关进程

    在任务栏上 右键——任务管理器——详细信息,找到VMware相关的进程全部结束掉。

    运行补丁包

    找到补丁包解压目录后进入windows目录,双击运行unlock.exe

    然后点击 是 ,就会显示如下弹窗,按下回车即可

    下载macos镜像文件(vmx文件)

    百度网盘
    链接:https://pan.baidu.com/s/15wNOnpv6erkaT_RiyVPYdQ?pwd=lcim
    提取码:lcim
    123网盘
    链接:https://www.123pan.com/s/jGXfTd-jV3nH.html
    提取码:yxat

    导入镜像

    解压下载好的压缩包文件

    打开虚拟机软件



    开启虚拟机



    初始账号:MyMac
    密码:123456

    联网

    启动VMware DHCP和NAT服务

    在windows上启动这两个服务:

    1. VMware DHCP Services
    2. VMware NAT Services

    设置网络连接为NAT模式

    设置DNS服务器

    在macos虚拟机中设置DNS服务器

    解决vmware卡顿的办法

    1.虚拟机关机
    2.选择虚拟机右键设置
    3.点击显示器
    4.勾选指定监视器设置
    5.分辨率调低

  • PVE合并local、local-lvm分区!DeepSeek牛逼!

    PVE合并local、local-lvm分区!DeepSeek牛逼!

    PVE年后回来突然发现默认分区也就是local已经占用到96%了,正好在B站刷到个视频,合并local、local-lvm提高利用率。

    其实之前刚安装PVE是就看到,各种教程里都有这个操作,当时想着用不到就偷懒了一下,没有去做。以为128G的系统盘应该够折腾了

    然后视频作者提供了个思路,情景二:local-lvm分区存储有虚拟机磁盘 ,但是我现有的local分区已经不能满足迁移所需空间

    所有就问了下ChatGPT,还可以迁移到已挂载的其他硬盘,所以有了此文

    整体都是参照情景二,只是增加了一个步骤

    1、创建一个新的 storage 目录并添加到 PVE

    PS:我的另外一块硬盘是挂载在/mnt目录

    mkdir -p /mnt/pve-storage
    chown -R www-data:www-data /mnt/pve-storage
    chmod 755 /mnt/pve-storage

    2、在 PVE Web 界面添加存储

    • 进入 Datacenter -> Storage -> Add -> Directory
    • ID: pve-storage
    • Directory: /mnt/pve-storage
    • Content: Disk images, Container
    • 保存

    完成以上就可以按照情景二 ,先把lxc容器、虚拟机磁盘迁移到新创建的pve-storage

    删除local-lvm合并磁盘空间至local后,再迁移到local即可完成了全部过程。

    本来前几个一切顺利,但是有一个lxc容器移动存储时提示:

    you can't move a volume with snapshots and delete the source (500)

    使用以下办法,又无法删除:

    root@PVE:/mnt# pct listsnapshot 203
    `-> vzdump                      2024-12-15 10:06:41     vzdump backup snapshot
    `-> current                                             You are here!
    root@PVE:/mnt# pct delsnapshot 203 vzdump
    lvremove snapshot 'pve/snap_vm-203-disk-0_vzdump' error:   Failed to find logical volume "pve/snap_vm-203-disk-0_vzdump"

    结果问了GPT半天也没解决,最后用了下deepseek 试试,结果一次性解决

    原来不知道为啥,PVE在CT 203配置文件里增加“snapshots ”备份,类似下图

    删除 [vzdump] 这行及它以下的内容,即可正常移动存储了。

     

    [c-alert type=”success”]参考原视频地址:https://www.bilibili.com/video/av113977493293708[/c-alert]

    [c-alert type=”success”]参考原文地址:PVE合并local、local-lvm分区,迁移虚拟机磁盘到其他分区 – 知乎[/c-alert]

    PS:由于知乎不登录没办法看全文,所以建议去知乎看全文

    前言

    PVE默认会有两个分区,这两个分区可以理解为PVE对不同类型的文件进行分类管理。对于我目前的使用情况来说,local分区也就用来存储一些ISO镜像,local-lvm分区则是用来存放虚拟机磁盘,所以其实就没有必要划分为两个分区了。

    那么我把分区的合并,分为了两种情况:

    情景一:刚安装完PVE

    大家刚安装完PVE,两个分区都没存有数据,可以直接通过下面的操作进行合并。

    # 删除local-lvm分区
    lvremove /dev/pve/data -y
    
    # 将剩余的空间扩展至local分区
    lvextend -rl +100%FREE /dev/pve/root

    输入完上面的内容,再在“数据中心”,“存储”里面,把local-lvm分区给移除掉。

    最后再编辑local分区的“内容”,把所有的东西都选上,合并就完成了。

    情景二:local-lvm分区存储有虚拟机磁盘

    若已经开设有虚拟机,则需要先将虚拟机的硬盘进行迁移,把磁盘都迁移到local分区,迁移完成再进行情景一上面的操作。

    当然了,如果这些虚拟机可以删除的话,移除后,直接通过情景一的操作进行合并也是可以的。

  • 二零二四

    2024.08.04 ,Lost my F ,miss you!

     

  • 转:Openwrt使用wireguard实现异地组网

    转:Openwrt使用wireguard实现异地组网

    一直在用wireguard访问办公室的资源,但是又要经常出差导致很不方便,所以萌生了用两台OP组网的想法,大概原理明白

    但是在实际操作中,还是碰到各种问题。最后参考了下面文章组网成功。

    [c-alert type=”warning”]PS:组网如果涉及到局域网内有不同的外网网关,需要在其他网关上也设置下静态路由,才能访问这个对端网关下的主机。[/c-alert]

    补充多网关情况

    例如:A地有一条宽带,路由器为A。B地,有两条宽带。两个路由器分别为B和B1。A路由和B路由通过wireguard组网成功。 B地局域网内,指向B-1路由的设备是无法访问A地局域网内设备,需要在B-1上设置一条静态路由 地址:10.0.0.0/24 网关:192.168.20.1,才可以。

     

    [c-alert type=”success”]原文地址:Openwrt使用wireguard实现异地组网 – 咸鱼的小站[/c-alert]

    前言

    事情是这样的,早在2022年我换上了Pixe之后惊奇的发现android13默默移除了L2TP的支持,只能使用IPsec的VPN了,对于我这样的懒狗来说,配置IPsec是不可能的,这辈子都是不可能的

    所以!我换掉了原先家中使用的某品牌成品AC,改用支持wireguard的Openwrt开发板来作为主路由使用。并开始了这一次的折腾

    设备及环境介绍

    在实作过程中,踩了不少坑,并且由于openwrt版本不同的情况下软件包会有一点区别,所以在此标注本次实操的系统版本等信息,需要注意:请保证两端LAN的网段不能有重合!

    设备 A地路由(拥有ipv4公网IP) B地路由(无ipv4公网IP) B-1路由(无ipv4公网IP)
    系统版本 openwrt-22.03 openwrt-22.03 openwrt-22.03/任意
    LAN口IP 192.168.10.1/24 192.168.20.1/24 192.168.20.2/24
    wg网段IP 10.0.0.1/24 10.0.0.2/24 无需设置或10.0.0.2/24

    A地路由设置

    添加防火墙

    首先需要添加一个wireguard的防火墙区域,依照下图设置即可

    添加wireguard虚拟接口

     网络接口 页面新建一个接口,名字随意并选择协议为Wireguard VPN

    虚拟接口配置

    点击生成新的密钥对生成本机的公钥和私钥,并填写下方监听端口我们规划好的此设备在wireguard虚拟网络中的ip

    记得配置此接口所在的防火墙区域

    到这里,我们就可以暂时保存端口的设置了,等B设备配置好后我们再回来配置对端设置。(其实此处可以先在这台路由上将B端的公私钥生成好并填写对端配置)

    配置静态路由

    为了让局域网下的设备访问到对端网段下的设备,最好请添加以下静态路由(实测好像不加也没事)

    上图中的含义为:当接口区域wg有去往192.168.20.0/24网段的数据包时,将其网关设为本机在wireguard虚拟网络中的ip地址

    B地路由设置

    添加防火墙

    首先需要添加一个wireguard的防火墙区域,依照下图设置即可

    添加wireguard虚拟接口

     网络接口 页面新建一个接口,名字随意并选择协议为Wireguard VPN

    虚拟接口配置

    点击生成新的密钥对生成本机的公钥和私钥,并填写下方我们规划好的此设备在wireguard虚拟网络中的ip,由于此地无公网ip所以监听端口是否配置其实无所谓(默认其实会开一个)

    记得配置此接口所在的防火墙区域

    配置对端(A地路由信息)

    在对端选项卡中添加一个对端,并填入A路由的对应信息

    在允许的ip选项中除了要填A端路由在虚拟网络中的ip(10.0.0.1/24)外,要加A地LAN的网段(192.168.1.0/24)

    私钥和预共享密钥为可选项。

    配置静态路由

    为了让局域网下的设备访问到对端网段下的设备,最好请添加以下静态路由(实测好像不加也没事)

    上图中的含义为:当接口区域wg有去往192.168.10.0/24网段的数据包时,将其网关设为本机在wireguard虚拟网络中的ip地址

    A地路由的对端设置

    回到A地路由器的配置,我们将B端信息填入对端选项卡中并保存应用

    使配置生效

    在保存并应用配置后就已完成所有配置项,但建议重启wg虚拟端口,最好直接重启路由器,以免系统抽风没有无法正常使用。

  • 开个新坑-学习AlpineLinux

    Alpine安装SSH服务,并开启SSH远程登录 – 初心

    #!/usr/bin/env sh
    apk update
    apk add openssh-server
    rc-service sshd start
    # 设置开机启动
    rc-update add sshd
    # 删除开机启动服务
    # rc-update del sshd
    # 开放Root登录
    echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
    rc-service sshd restart
    # 显示所有服务
    # rc-status -a

    如何用 Alpine 一步一步搭建一个完整的 Linux 桌面系统 – V2EX

    AlpineLinux 安装 Xfce 桌面 | Wener Live & Life

    setup xorg

    安装 X server 和基础硬件驱动

    # xfce + xorg
    setup-xorg-base xfce4 xfce4-terminal dbus-x11 sudo pm-utils
    
    service dbus start
    rc-update add dbus
    
    # xorg 输入设备
    # apk add xf86-input-mouse xf86-input-keyboard kbd
    # 默认包含 libinput
    # 其他 synaptics vmmouse wacom mtrack
    apk add xf86-input-libinput xf86-input-evdev kbd
    
    # Intel 芯片集成显卡
    apk add xf86-video-intel
    # AMD 显卡
    apk add xf86-video-amdgpu
    # QEMU
    # apk add xf86-video-qxl
    # 如果以上都不支持则考虑使用 framebuffer
    # https://pkgs.alpinelinux.org/packages?name=xf86-video-*
    # apk add xf86-video-fbdev
    

    此时已经可以进入 xfce 桌面, 没有登陆界面, 进入界面后可右上角退出登陆或者 Ctrl+Alt+F1 来切换回命令行会话。

    # 通过 xorg 提供的 startx 启动
    startx
    # 或者指定启动 xfce4
    startxfce4
    

    setup lightdm

    安装 lightdm 后可以可以通过账号密码登陆, 也可以远程 VNC 进入 xfce 会话。

    apk add lightdm-gtk-greeter
    
    # 添加非 root 用户 admin 密码 admin - 不少应用需要非 root 用户
    adduser -D admin
    echo 'admin:admin' | chpasswd
    echo 'admin ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
    
    # 开机进入登陆界面
    rc-update add lightdm
    # 立即启动 lightdm 进行登陆
    service lightdm start
    

    setup xfce

    安装常用的包

    # 默认无法显示中文字符
    apk add font-noto-cjk
    
    # 允许非 root 通过 fuse 访问设备
    apk add gvfs-fuse gvfs-smb
    service fuse start
    rc-update add fuse
    
    # 自动挂载 外部设备
    apk add thunar-volman udisks2
    # 部分设备需要额外的包
    # gvfs-mtp - MTP - 媒体播放器和移动设备
    # gvfs-gphoto2 - PTP - 相机和移动设备
    # gvfs-afc - 苹果移动设备
    
    # 文件管理器支持压缩和解压
    apk add thunar-archive-plugin
    apk add file-roller # thunar-archive-plugin 支持的管理器
    

    安装了相关插件后最好退出会话重新登陆确保生效。

    应用

    # 屏保, 任务管理器
    apk add xfce4-screensaver xfce4-taskmanager
    
    # 谷歌浏览器 - 也可以通过 flatpak 安装
    apk add chromium
    # 火狐浏览器
    # apk add firefox-esr
    

    flatpak

    Linux 因为发布版太大了,应用分发比较混乱,且不少应用并不直接支持 musl,使用 flatpak 打包的应用可避免这些问题。

    apk add flatpak xdg-user-dirs
    # https://flathub.org/setup/Alpine
    flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
    
    # 安装
    flatpak install flathub com.visualstudio.code
    # 启动
    flatpak run com.visualstudio.code
    
    flatpak install flathub org.chromium.Chromium
    

    常用应用

    id name 用途
    com.visualstudio.code VSC 编辑器
    om.vscodium.codium Codium 编辑器
    org.chromium.Chromium Chromium 浏览器
    org.mozilla.firefox Firefox 浏览器
    org.telegram.desktop Telegram 即时聊天
    com.valvesoftware.Steam Steam 游戏
    org.mozilla.Thunderbird Thunderbird 邮件
    org.filezillaproject.Filezilla Filezilla 文件

    AppImage

    不通过 flatpak 需要安装,AppImage 是封装好的一体化应用,类似容器,类似 macOS 应用。 但目前由于 glibc 兼容问题 Alpine 无法运行 AppImage 参见 AppImage/AppImageKit#1015

    已知提供 AppImage 的应用

    • Jetbrain Toolbox
    • Lens – Kubernetes IDE

    其他服务

    • xrdp – RDP 服务端 – 支持 Windows 直接远程登陆
    • gvncviewer – VNC 客户端

    FAQ

    xfce 支持高分辨率

    # 两倍缩放
    # Settings Manager > Appearance > Settings > Window Scaling
    xfconf-query -c xsettings -p /Gdk/WindowScalingFactor -s 2
    # 调整主题为 默认 xhdpi
    # Settings Manager > Window Manager > Style
    xfconf-query -c xfwm4 -p /general/theme -s Default-xhdpi
    

    DISPLAY 信息

    apk add xrandr
    DISPLAY=:0 xrandr
    

    查看当前显卡和声卡信息

    apk add inxi
    inxi -AG
    

    kernel: i915 0000:00:02.0: [drm] ERROR CPU pipe A FIFO underrun

    如果该错误导致闪烁可添加启动参数避免 i915.enable_psr=0

    Intel graphics#Screen flickering

    可能由于 Intel 集成显卡的节能功能导致

    VNC 远程桌面

    apk add x11vnc
    
    # 启动服务端访问已打开会话
    x11vnc -display :0 -auth /var/run/lightdm/root/\:0
    # 然后访问 vnc://<IP>:5900 即可
    
    # 不退出
    x11vnc -display :0 -auth /var/run/lightdm/root/\:0 --loop
    
    # 访问时创建新的会话
    # 确保 init 能启动
    echo "exec startxfce4" >> ~/.xinitrc
    apk add xvfb
    x11vnc -ncache_cr -display :1 -auth /var/run/lightdm/root/\:1 --create
    
    # 不警告没有设置密码
    echo nopw >> ~/.x11vncrc
    
    # 可设置为开机启动
    # x11vnc -create -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -rfbauth /etc/x11vnc.pass -rfbport 5900
    
    # 登陆之前开启 VNC
    # x11vnc -auth guess -display :0
    

    如果服务常开,建议设置密码

    KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied

    • DRM – Direct Rendering Manager

    xrandr auto

    xrandr --auto
    
    xrandr: Output DP1 is not disconnected but has no modes
    xrandr: Output HDMI2 is not disconnected but has no modes
    
    export DISPLAY=:0
    xrandr --query
    

    kiskos

    ~/.initrc
    xset -dpms     # Disable DPMS (Energy Star) features
    xset s off     # Disable screen saver
    xset s noblank # Don't blank the video device
    exec chromium-browser --kiosk --no-first-run --no-sandbox 'https://wener.me'
    

    参考

  • NPM:Missing command line flag or config entry for this setting

    Nginx proxy manager letsencrypt 错误提示

    Missing command line flag or config entry for this setting:
    [11/1/2024] [9:42:04 AM] [Express  ] ›   warning   Saving debug log to /tmp/letsencrypt-log/letsencrypt.log
    Please choose an account

     

    删除:/docker/npm/letsencrypt/accounts/acme-v02.api.letsencrypt.org/directory 下的文件

     

    参考:解决mailinabox ssl续签出错 – 虎笺 – Tiger’s Notes – Powered By Trilium Blog