建站相关 - Forever Young https://www.luxiyue.com/category/server/ Share Happiness,Enjoy Life~ Mon, 13 Oct 2025 03:53:22 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.3 https://www.luxiyue.com/wp-content/uploads/cropped-lovely-ina512-1-1-150x150.png 建站相关 - Forever Young https://www.luxiyue.com/category/server/ 32 32 VMware Fusion不断询问虚拟机是否被复制或移动 https://www.luxiyue.com/server/vmware-fusion%e4%b8%8d%e6%96%ad%e8%af%a2%e9%97%ae%e8%99%9a%e6%8b%9f%e6%9c%ba%e6%98%af%e5%90%a6%e8%a2%ab%e5%a4%8d%e5%88%b6%e6%88%96%e7%a7%bb%e5%8a%a8/ https://www.luxiyue.com/server/vmware-fusion%e4%b8%8d%e6%96%ad%e8%af%a2%e9%97%ae%e8%99%9a%e6%8b%9f%e6%9c%ba%e6%98%af%e5%90%a6%e8%a2%ab%e5%a4%8d%e5%88%b6%e6%88%96%e7%a7%bb%e5%8a%a8/#respond Mon, 13 Oct 2025 03:53:22 +0000 https://www.luxiyue.com/?p=6783 每次打开VMware Fusion都会提示“虚拟机是否被复制或移动”,无论之前是否已经询问并回答过这个问题。 根据我网上搜索一圈下来,最简单的方法是在虚拟机的.vmx 文件中添加“uuid.action”: uuid.action = "keep" 或者 uuid.action = "create" 注意: “keep”通常适用于你移动了虚拟机的情况; “c […]

VMware Fusion不断询问虚拟机是否被复制或移动最先出现在Forever Young

]]>
每次打开VMware Fusion都会提示“虚拟机是否被复制或移动”,无论之前是否已经询问并回答过这个问题。

根据我网上搜索一圈下来,最简单的方法是在虚拟机的.vmx 文件中添加“uuid.action”:

uuid.action = "keep"
或者
uuid.action = "create"

注意:

“keep”通常适用于你移动了虚拟机的情况;

“create”适用于你复制了虚拟机并希望同时运行(源虚拟机和复制的)虚拟机的情况(这将创建一个新的硬件 ID)。

下次打开应用程序时应该不会再出现了。

完美解决。

VMware Fusion不断询问虚拟机是否被复制或移动最先出现在Forever Young

]]>
https://www.luxiyue.com/server/vmware-fusion%e4%b8%8d%e6%96%ad%e8%af%a2%e9%97%ae%e8%99%9a%e6%8b%9f%e6%9c%ba%e6%98%af%e5%90%a6%e8%a2%ab%e5%a4%8d%e5%88%b6%e6%88%96%e7%a7%bb%e5%8a%a8/feed/ 0
分别编译基于最新版本OpenSSL和BoringSSL的Nginx支持HTTP3 https://www.luxiyue.com/server/%e5%88%86%e5%88%ab%e7%bc%96%e8%af%91%e5%9f%ba%e4%ba%8e%e6%9c%80%e6%96%b0%e7%89%88%e6%9c%acopenssl%e5%92%8cboringssl%e7%9a%84nginx%e6%94%af%e6%8c%81http3/ https://www.luxiyue.com/server/%e5%88%86%e5%88%ab%e7%bc%96%e8%af%91%e5%9f%ba%e4%ba%8e%e6%9c%80%e6%96%b0%e7%89%88%e6%9c%acopenssl%e5%92%8cboringssl%e7%9a%84nginx%e6%94%af%e6%8c%81http3/#respond Mon, 15 Sep 2025 06:40:39 +0000 https://www.luxiyue.com/?p=6762 前言 在 Nginx 上开启 HTTP/3 能带来不少性能和安全上的提升,这主要得益于其底层使用的 QUIC 协议(一种基于 UDP 的现代传输协议)。下面我用一个表格梳理了一下: 好处类型 具体说明 主要原因/技术 性能提升 降低延迟,减少网络拥塞,适应高并发场景 基于UDP、0-RTT连接重用、多路复用、改进的拥塞控制 用户体验优化 页面加载更快,移动网络体验更顺畅,弱网环境下更稳定 连接迁移 […]

分别编译基于最新版本OpenSSL和BoringSSL的Nginx支持HTTP3最先出现在Forever Young

]]>
前言

在 Nginx 上开启 HTTP/3 能带来不少性能和安全上的提升,这主要得益于其底层使用的 QUIC 协议(一种基于 UDP 的现代传输协议)。下面我用一个表格梳理了一下:

好处类型 具体说明 主要原因/技术
性能提升 降低延迟减少网络拥塞适应高并发场景 基于UDP、0-RTT连接重用、多路复用、改进的拥塞控制
用户体验优化 页面加载更快移动网络体验更顺畅弱网环境下更稳定 连接迁移、更好的丢包恢复机制
安全增强 默认加密减少中间人攻击风险 内置 TLS 1.3、放大攻击防御机制
技术优势 解决队头阻塞面向未来 QUIC 流级别多路复用、协议发展趋势

注意事项

虽然 HTTP/3 好处很多,但在 Nginx 上启用时也需要考虑以下几点:

  • Nginx 版本与编译需求:需要使用 Nginx 1.25.0 或更高版本

  • 实验性功能:目前 Nginx 中的 HTTP/3 支持在某些版本中可能仍标记为实验性(experimental)。生产环境部署前务必充分测试。

  • 客户端支持:主流现代浏览器(Chrome、Firefox、Edge 等)均已支持 HTTP/3,但仍需考虑旧版客户端或特定网络环境(如某些防火墙可能拦截 UDP)的兼容性问题。

  • UDP 端口开放:确保服务器的 UDP 443 端口(或其他你使用的端口)已在防火墙中打开。

  • 多服务器配置:如果一台服务器配置了多个域名,在配置 HTTP/3 监听时可能需要特别注意 reuseport 参数的使用,以避免端口冲突。

准备

官方的建议是使用 OpenSSL 3.5.1+ 的版本,或者 boringssl - Git at GoogleGitHub - quictls/openssl: TLS/SSL and crypto library with QUIC APIs

根据自身的需求,下载最新版本的SSL以及最新版的Nginx:nginx: download

截止到今天(2025年9月15日),通过包管理器安装到Nignx为 1.24.0 ,该版本不支持http3,需 1.25.0+ 才行。

如果想简单点的话,可以通过 add-apt-repository ppa:ondrej/nginx 添加Ondřej Surý 维护的 Nginx 官方 PPA (Personal Package Archive) 仓库,接下来直接使用 apt install nginx 即可升级到 1.28.0 版本,与目前最新的 1.29.1 都能支持http3,就不用进行编译了。

安装编译所需的基础工具:

apt install build-essential libpcre3-dev zlib1g-dev git mercurial cmake golang ninja-build perl libperl-dev libxml2-dev libxslt1-dev libexpat-dev 

编译

基于OpenSSL

一:下载OpenSSL以及Nginx

wget https://github.com/openssl/openssl/releases/download/openssl-3.5.2/openssl-3.5.2.tar.gz
tar -zxvf openssl-3.5.2.tar.gz
wget https://nginx.org/download/nginx-1.29.1.tar.gz
tar -zxvf nginx-1.29.1.tar.gz

二:编译配置

cd nginx-1.29.1

./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/run/nginx.pid \
    --lock-path=/run/nginx.lock \
    \
    --with-threads \
    --with-file-aio \
    --with-pcre \
    --with-pcre-jit \
    \
    --with-openssl=../openssl-3.5.2 \  # 指向openssl的目录
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_v3_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_degradation_module \
    --with-http_slice_module \
    --with-http_auth_request_module \
    \
    --with-mail \
    --with-mail_ssl_module \
    --with-stream \
    --with-stream_realip_module \
    --with-stream_ssl_module \
    \
    --user=www-data \
    --group=www-data

出现这个提示说明配置成功了:

三:编译和安装

make -j$(nproc)
sudo make install

基于BoringSSL

一:下载BoringSSL以及Nginx

BoringSSL 用国内网络下载可能比较麻烦,不过用国内镜像就行。

git clone https://gitee.com/mirrors/boringssl.git
wget https://nginx.org/download/nginx-1.29.1.tar.gz
tar -zxvf nginx-1.29.1.tar.gz

二:编译BoringSSL

cd boringssl
mkdir build && cd build  #创建构建目录
cmake .. -DCMAKE_BUILD_TYPE=Release  # 使用 cmake 编译
make -j$(nproc)

编译完成后,关键文件:

  • 头文件:boringssl/include/

  • 静态库:boringssl/build/libssl.a 和 boringssl/build/libcrypto.a

三:编译配置

cd nginx-1.29.1

./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib/nginx/modules \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/run/nginx.pid \
    --lock-path=/run/nginx.lock \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_v3_module \
    --with-http_realip_module \
    --with-http_addition_module \
    --with-http_sub_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --with-pcre \
    --with-pcre-jit \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-http_random_index_module \
    --with-http_secure_link_module \
    --with-http_degradation_module \
    --with-http_slice_module \
    --with-http_auth_request_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-stream \
    --with-stream_realip_module \
    --with-stream_ssl_module \
    --with-stream_ssl_preread_module \
    --with-cc-opt="-I/root/boringssl/include" \  #最重要的就是这两行,写绝对路径
    --with-ld-opt="-L/root/boringssl/build -L/root/boringssl/build/crypto -lssl -lcrypto -lstdc++ -lpthread -lm" \
    --user=www-data \
    --group=www-data \
    --with-threads \
    --with-file-aio \
    --with-compat

出现这个提示说明配置成功了:

四:编译和安装

make -j$(nproc)
sudo make install

创建系统服务

vim /etc/systemd/system/nginx.service

粘贴以下内容(根据你的实际路径调整):

[Unit]
Description=nginx - high performance web server
After=network.target network-online.target
Documentation=https://nginx.org/en/docs/
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
Restart=always

[Install]
WantedBy=multi-user.target

创建必要的目录和权限(如果不存在):

mkdir -p /var/cache/nginx /var/log/nginx
chown -R www-data:www-data /var/cache/nginx /var/log/nginx
systemctl daemon-reload
systemctl enable nginx
systemctl start nginx
systemctl status nginx

基于OpenSSL 3.5.2

基于BoringSSL

大功告成!

测试

注意:HTTP/3基于UDP 443端口,确保防火墙放行!

1:创建自签名证书(测试用)

# 创建证书目录
sudo mkdir -p /etc/nginx/certs

# 生成私钥和自签名证书(有效期 365 天)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/nginx/certs/example.com.key \
    -out /etc/nginx/certs/example.com.crt \
    -subj "/CN=localhost"

2:简单配置

编辑/etc/nginx/nginx.conf ,在http块中添加内容如下:

server {
    # for better compatibility it's recommended
    # to use the same port for http/3 and https
    listen 443 ssl;
    listen 443 quic reuseport;

    http2 on;

    index index.htm index.html index.nginx-debian.html;

    ssl_protocols TLSv1.3;
    ssl_certificate     certs/example.com.crt;
    ssl_certificate_key certs/example.com.key;

    location / {
        # used to advertise the availability of HTTP/3
        add_header Alt-Svc 'h3=":443"; ma=86400';
    }
}

3:重新载入nginx

systemctl reload nginx

4:访问网页

这里有个奇怪的现象,HTTP/3 并不是100%能够握手成功,不同浏览器反应的情况也不一样。

这次测试下来:

Safari浏览器成功显示HTTP/3协议

Edge显示HTTP/2协议

Chrome也显示的HTTP/2

最后

发表一下我的个人看法。

这两天其实一直在测试HTTP/3,从使用ondrej库安装,到自行编译,后来尝试了不同版本的OpenSSL,再尝试了官网涉及的BoringSSL,从本地测试,再到服务器上测试,过程不算坎坷,但是结果非常不稳定,相同的步骤、相同的配置,最终有显示HTTP/3的,大多数还是HTTP/2,而且,有一点非常令我困惑,成功握手HTTP/3后,打开页面的速度非常慢,远远不如HTTP/2。

这两天也查了很多关于HTTP/3的资料,非常有限,更多的推荐还是把网站代理到Cloudflare来支持HTTP/3。

至今也没搞懂,如果有懂的兄弟希望能帮我解惑。

记录一下这篇文章,等HTTP/3确定可行后,可以再来更新。


参考

Module ngx_http_v3_module

Support for QUIC and HTTP/3

分别编译基于最新版本OpenSSL和BoringSSL的Nginx支持HTTP3最先出现在Forever Young

]]>
https://www.luxiyue.com/server/%e5%88%86%e5%88%ab%e7%bc%96%e8%af%91%e5%9f%ba%e4%ba%8e%e6%9c%80%e6%96%b0%e7%89%88%e6%9c%acopenssl%e5%92%8cboringssl%e7%9a%84nginx%e6%94%af%e6%8c%81http3/feed/ 0
Vuepress使用Fancybox播放图片以及视频 https://www.luxiyue.com/server/vuepress%e4%bd%bf%e7%94%a8fancybox%e6%92%ad%e6%94%be%e5%9b%be%e7%89%87%e4%bb%a5%e5%8f%8a%e8%a7%86%e9%a2%91/ https://www.luxiyue.com/server/vuepress%e4%bd%bf%e7%94%a8fancybox%e6%92%ad%e6%94%be%e5%9b%be%e7%89%87%e4%bb%a5%e5%8f%8a%e8%a7%86%e9%a2%91/#respond Fri, 05 Sep 2025 01:20:05 +0000 https://www.luxiyue.com/?p=6724 前言 Vuepress默认的图片浏览是点击放大,可以说是非常简洁,如果网站图片比较多,还是可以加载Fancybox来使它更加优雅。 因为我不喜欢把一大堆包都放在服务器,直接从CDN引入,自动加载其最新版本,这样省去很多后期维护成本。 这篇文章介绍一下这种最简单的方法让Vuepress网站使用Fancybox。 图片步骤(已验证) 创建fancybox插件 在docs/.vuepress/plugi […]

Vuepress使用Fancybox播放图片以及视频最先出现在Forever Young

]]>
前言

Vuepress默认的图片浏览是点击放大,可以说是非常简洁,如果网站图片比较多,还是可以加载Fancybox来使它更加优雅。

因为我不喜欢把一大堆包都放在服务器,直接从CDN引入,自动加载其最新版本,这样省去很多后期维护成本。

这篇文章介绍一下这种最简单的方法让Vuepress网站使用Fancybox。

图片步骤(已验证)

  1. 创建fancybox插件

    docs/.vuepress/plugins 目录中创建一个名为vuepress-plugin-fancybox 的目录,如果没有 plugins 目录,先创建此目录;

    vuepress-plugin-fancybox 目录下,添加名为 index.js 的文件,将下面内容添加进去:

    // docs/.vuepress/plugins/vuepress-plugin-fancybox/index.js
    export default () => ({
        name: 'vuepress-plugin-fancybox',
        extendsMarkdown(md) {
            md.renderer.rules.image = function (tokens, idx, options, env, self) {
                const token = tokens[idx]
                const srcIndex = token.attrIndex('src')
                const src = token.attrs[srcIndex][1]
                const alt = token.content || ''
                // 使用页面路径作为 gallery 名称,避免跨页面冲突
                const galleryName = (env.relativePath || 'gallery')
                .replace(/\//g, '-')
                .replace(/\.\w+$/, '')
                return `<a href="${src}" data-fancybox="${galleryName}"><img src="${src}" alt="${alt}"></a>`
            }
        },
    })
  2. 修改 docs/.vuepress/config.js 配置文件

    对应栏目添加以下内容:

    // docs/.vuepress/config.js
    import { viteBundler } from '@vuepress/bundler-vite'
    import { defaultTheme } from '@vuepress/theme-default'
    //..省略..//
    import fancyboxPlugin from './plugins/vuepress-plugin-fancybox/index.js'
    
    export default defineUserConfig({
    
    //..省略..//
    
        head: [
            ['link', { rel: 'stylesheet', href: 'https://unpkg.com/@fancyapps/ui/dist/fancybox/fancybox.css' }],
            ['script', { src: 'https://unpkg.com/@fancyapps/ui/dist/fancybox/fancybox.umd.js' }],
            ['script', {}, `
                document.addEventListener('DOMContentLoaded', () => {
                    if (window.Fancybox) {
                        window.Fancybox.bind('[data-fancybox]');
                    }
                });
            `],
    
        //..省略..//
    
        ],
    
    //..省略..//
    
        plugins: [
            fancyboxPlugin(),
    
            //..省略..//
    
        ],
    })
  3. 构建网站

    最后使用 npm run docs:build 或者 npm run docs:dev 进行调试。

同时处理图片以及视频(未验证)

Fancybox给我最大的亮点是使用下面代码可以播放视频:

<a href="/sample.mp4" data-fancybox data-width="640" data-height="360">
  <img src="/poster.jpg" alt="Video poster" width="240" height="180" />
</a>

提供一个思路,修改 docs/.vuepress/plugins/vuepress-plugin-fancybox/index.js 的代码:

// docs/.vuepress/plugins/vuepress-plugin-fancybox/index.js
export default () => ({
  name: 'vuepress-plugin-fancybox',

  extendsMarkdown(md) {
    md.renderer.rules.image = function (tokens, idx, options, env, self) {
      const token = tokens[idx]
      const srcIndex = token.attrIndex('src')
      const src = token.attrs[srcIndex][1]
      const alt = token.content || ''

      const galleryName = (env.relativePath || 'gallery')
        .replace(/\//g, '-')
        .replace(/\.\w+$/, '')

      // 判断是否是视频
      const isVideo = /\.(mp4|webm|ogg)$/i.test(src)

      if (isVideo) {
        // 动态计算屏幕尺寸
        const width = window.innerWidth * 0.8  // 自适应 80% 屏幕宽度
        const height = window.innerHeight * 0.8  // 自适应 80% 屏幕高度

        return `<a href="${src}" data-fancybox="${galleryName}" data-width="${width}" data-height="${height}">
                  <img src="${token.attrs[srcIndex][1]}" alt="${alt}" />
                </a>`
      }

      // 默认渲染图片
      return `<a href="${src}" data-fancybox="${galleryName}"><img src="${src}" alt="${alt}"></a>`
    }
  },
})

不想弄视频的原因是需要给每个视频添加缩略图啥的,太麻烦,而且要考虑markdown的书写方式,图片和视频怎么写,怎么判断它是超链接还是图片,还是视频,缩略图怎么加,我这边也只是给个大致方向。不管出于什么原因,都不建议把视频加上。

最后

要说一个比较让我有点不习惯的地方:比如一个网页有很多图片,通过Fancybox浏览到其他一张图片,在这个位置关掉图片,那么页面会自动滚动到此时图片所在的位置。

不过这个也可以进行关闭:

// docs/.vuepress/config.js
['script', {}, `
    document.addEventListener('DOMContentLoaded', () => {
        if (window.Fancybox) {
            window.Fancybox.bind('[data-fancybox]', {
                placeFocusBack: false    //添加这个
              });
        }
    });
`],

其他的完全没问题。

Vuepress使用Fancybox播放图片以及视频最先出现在Forever Young

]]>
https://www.luxiyue.com/server/vuepress%e4%bd%bf%e7%94%a8fancybox%e6%92%ad%e6%94%be%e5%9b%be%e7%89%87%e4%bb%a5%e5%8f%8a%e8%a7%86%e9%a2%91/feed/ 0
iTerm2利器:Shell Integration的用法和注意事项 https://www.luxiyue.com/server/iterm2%e5%88%a9%e5%99%a8%ef%bc%9ashell-integration%e7%9a%84%e7%94%a8%e6%b3%95%e5%92%8c%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9/ https://www.luxiyue.com/server/iterm2%e5%88%a9%e5%99%a8%ef%bc%9ashell-integration%e7%9a%84%e7%94%a8%e6%b3%95%e5%92%8c%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9/#respond Thu, 04 Sep 2025 06:47:14 +0000 https://www.luxiyue.com/?p=6722 前言 为什么最近又在研究iTerm呢? 因为Mac系统上面实在没有好用点的SSH工具,研究了好久,也就Termius以及Electerm稍微能用用。 Termius简单实在一些,Electerm稍微有点卡,但是对于SFTP使用比较友好,要再说一个就是WindTerm,它其实整体还不错,唯一不舒服的一点就是通过SFTP修改某个文件,一直会显示本地文件已更改,是否要上传到服务器(未修改完之前也一直提示 […]

iTerm2利器:Shell Integration的用法和注意事项最先出现在Forever Young

]]>
前言

为什么最近又在研究iTerm呢?

因为Mac系统上面实在没有好用点的SSH工具,研究了好久,也就Termius以及Electerm稍微能用用。

Termius简单实在一些,Electerm稍微有点卡,但是对于SFTP使用比较友好,要再说一个就是WindTerm,它其实整体还不错,唯一不舒服的一点就是通过SFTP修改某个文件,一直会显示本地文件已更改,是否要上传到服务器(未修改完之前也一直提示,这个真的不能忍~)。

实在是被Windows上的MobaXterm养刁了,MobaXterm真的太好用了!

FinalShell我也尝试了一下,整体其实都很好,要说问题就是个人开发,感觉有点虚,而且最关键的是尝试了一下它自带的海外加速功能,直接报警说异地登陆了,它也没提示是说通过它的服务器进行中转,吓的我赶紧改密码。

顺便说一下为什么不提Tabby,其实我用过一段时间,感觉开着太占资源了,之前好像快1G,不知道后来有没有优化。。。

最后还是理了一下思路,平时文件传输很少,SFTP能有最好,没有也凑合,那么既然对SFTP需求不大,就直接使用自带的终端集成iTerm就行了。

iTerm最麻烦的就是每次访问都要输入密码,把密码解决了就OK了。

网上有很多教程,一搜一大把。

既然Mac上面的SSH软件都不太能满足我的要求,那不如退而求其次,化繁为简就用iTerm2吧。

关键在于iTerm2也支持简单的文件下载上传。

安装

iTerm2安装

iTerm2安装就不说了,上iTerm2 - macOS Terminal Replacement就行,搭配ohmyzsh,也是Oh My Zsh - a delightful & open source framework for Zsh官网,一条命令。

Shell Integration安装

iTerm2 的 Shell Integration 功能主要是通过 SFTP/SCP 协议 来实现文件上传和下载的。

不仅安全的同时,操作简便作为其特色,可谓是化腐朽为神奇。

接下来说重点:

1.Shell Integration需要在本地设备以及服务器上都安装

打开iTerm2,两个窗口,1个是本地终端以及1个服务器终端,分别在两个终端界面时点击左上角的【iTerm2】-【Install Shell Integration】进行安装。

也可以在两个终端分别执行:

curl -L https://iterm2.com/shell_integration/install_shell_integration.sh | bash

2.配置文件

安装后两台设备还无法连接,需要让它们知道彼此。

  • 本地设备:

    终端中运行:

    vim ~/.ssh/config

    添加以下内容:

    Host example.com  #你的域名
        Port 22       #SSH端口号
  • 服务器端:

    根据服务器使用的终端,找到它的配置文件进行修改,比如我用的zsh,它的配置文件就是 ~/.zshrc

    配置文件中,找到以下位置,一般在最底部,在它的上面添加一行:

    export iterm2_hostname=example.com  #添加这一行,example.com与上面的Host一栏对应
    test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"

完成这两步之后,重新登陆一下(或者重新启动),再次连接后就能看到最左侧有个蓝色小箭头,说明连接成功了,右键点击文件(夹),Download with scp from ...完成下载。

同理,按住 Option(或 Alt)⌥ 键,将文件拖到终端进行上传。

其他宝藏功能

Shell Integration 提供的功能远不止文件传输。除了最基础的文件上传下载,它还集 命令管理、状态提示、效率提升 等功能于一声,尤其是它的媒体显示和会话管理。

功能类别 功能点 描述/效果 常用操作/备注
⚡ 命令与提示 命令历史提示 快速查看和选择历史命令,不依赖 Shell 历史 Cmd + ; (提示), Shift + Cmd + ; (历史命令)
快速跳转命令标记点 在命令输出间快速跳转 Cmd + Shift + ↑/↓
智能标记 (Marks) 每个命令提示符前显示蓝色三角标记,便于定位
🔔 通知与提醒 命令结束通知 长命令结束后发送系统通知 Option + Cmd + A或通过菜单设置
触发器 (Triggers) 根据输出模式匹配触发动作(如报错标红) 需在设置中自定义正则表达式和动作
📂 文件操作 文件下载 右键文件列表中的文件名即可下载
文件上传 拖拽文件到终端窗口上传(配合按键) 需按住 Option 键
🖼 媒体显示 终端内显示图片 使用 imgcat 命令直接在终端内显示图片缩略图
🔄 会话管理 即时回放 (Instant Replay) 像看录像一样回放之前终端输出的内容 Option + Cmd + B
🧩 其他实用功能 密码管理器 (Password Manager) 安全存储密码,方便登录 使用 macOS 钥匙串
剪贴板历史 查看和使用复制历史 Shift + Cmd + H
光标定位辅助 高亮显示光标所在行,方便查找
时间戳显示 在输出旁显示时间戳 View > Show Timestamps 或 Shift + Cmd + E
捕获输出 定义触发器来捕获和跟踪特定输出(如日志关键信息)

结尾

之前只是知道有iTerm,但是真正了解的时候,才知道它真的太强大了。

闻名不如一见!


如果连接不上,建议参考:scp not connecting · Wiki · George Nachman / iterm2 · GitLab

iTerm2利器:Shell Integration的用法和注意事项最先出现在Forever Young

]]>
https://www.luxiyue.com/server/iterm2%e5%88%a9%e5%99%a8%ef%bc%9ashell-integration%e7%9a%84%e7%94%a8%e6%b3%95%e5%92%8c%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9/feed/ 0
WordPress加载评论头像 https://www.luxiyue.com/server/wordpress%e5%8a%a0%e8%bd%bd%e8%af%84%e8%ae%ba%e5%a4%b4%e5%83%8f/ https://www.luxiyue.com/server/wordpress%e5%8a%a0%e8%bd%bd%e8%af%84%e8%ae%ba%e5%a4%b4%e5%83%8f/#comments Tue, 02 Sep 2025 08:15:26 +0000 https://www.luxiyue.com/?p=6716 前言 今天干了一件蠢事,白白浪费好几个小时。 那就是最近换了个服务器,把wordpress给迁移了,而且wordpress看久了也是一点新意都没有,其中一条就是评论区的头像一模一样,都不知道谁是谁。 于是我就在想它能不能像国内几个评论插件那样,可以通过各个avatar那样通过邮箱获取头像并把它展示出来。。。 于是就千方百计的折腾。 折腾过程 目前wordpress评论系统是WpDiscuz。 在它 […]

WordPress加载评论头像最先出现在Forever Young

]]>
前言

今天干了一件蠢事,白白浪费好几个小时。

那就是最近换了个服务器,把wordpress给迁移了,而且wordpress看久了也是一点新意都没有,其中一条就是评论区的头像一模一样,都不知道谁是谁。

于是我就在想它能不能像国内几个评论插件那样,可以通过各个avatar那样通过邮箱获取头像并把它展示出来。。。

于是就千方百计的折腾。

折腾过程

目前wordpress评论系统是WpDiscuz。

在它自身【设置】-【评论线程特性】中可以填写头像URL,于是我就把各个avatar服务商的URL都试了一下,发现不行啊,根本识别不了。。。好像它根本无法获取到邮箱的MD5值。

然后!

  1. 尝试通过修改 function.php 来获取邮箱,并传递到avatar服务商对应的接口

    这个方法对我来说有点难,毕竟不是专业的,于是找DeepSeek和ChatGPT,让他们帮我写代码,我照抄就行,最后尝试了几十次,都是失败告终。

    其实也不能说是失败,因为他们给的代码其实是正确的,但是显示的前提必须是要将现有的WpDiscuz禁用掉

  2. 舍弃WpDiscuz,尝试修改 comments.php 文件直接加载国内的Twikoo或者Waline

    这个别说了,试了十几分钟发现太难了,无力。。。

  3. 怀疑是某个插件或者主题冲突

    只保留WpDiscuz插件,其他全部禁用,主题也换了个最基础的主题,修改WpDiscuz的头像URL,还是不行。。。

就上面这些来回捣鼓,就足足浪费了我几个小时。

最后,其实已经准备放弃了,就去逛逛几个avatar服务商的官网看看怎么传递邮箱的MD5。。。

万万没想到,众里寻他千百度。蓦然回首,那人却在,灯火阑珊处。

果然还是官网靠谱,都有针对wordpress的集成。

示例一:Cravatar

官网地址:为 WordPress 集成 - Cravatar 开发文档

示例二:WeAvatar

官网地址:文档 - WeAvatar

因为我一开始接触的是WeAvatar,所以这次也就根据WeAvatar的文档来。

我本以为以上作业照抄就行,但是还是稍微有点问题:

照抄之后,仅仅只有后台评论板块才能显示头像,前端页面仍然显示的是通用的默认头像。

真的把我搞糊涂了,百思不得其解。

就在这时,我突然灵光一现,有没有可能是与WpDiscuz的头像URL冲突了?

于是进设置里面想了一下,一不做二不休,直接把取消【显示头像】,【用户默认头像源URL】和【游客默认头像源URL】的内容删除,取消【启用默认头像的站点使用范围】。还别说,尝试一下之后访问前端直接没头像了,正好来了点灵感,把【显示头像】和【启用默认头像的站点使用范围】开启试一下,也就是头像的活不要WpDiscuz干了,让它一边去,只要把头像显示出来就行,具体显示什么,由WeAvatar说了算。

最后保存后访问一下页面,发现还真可以这样。

结尾

暑假很少玩服务器,今天这一下子把我整的风中凌乱了,最大的忌讳就是没有先去官网查文档,吃了文化的亏啊。

WordPress加载评论头像最先出现在Forever Young

]]>
https://www.luxiyue.com/server/wordpress%e5%8a%a0%e8%bd%bd%e8%af%84%e8%ae%ba%e5%a4%b4%e5%83%8f/feed/ 1
Vuepress的allowHosts设置 https://www.luxiyue.com/server/vuepress%e7%9a%84allowhosts%e8%ae%be%e7%bd%ae/ https://www.luxiyue.com/server/vuepress%e7%9a%84allowhosts%e8%ae%be%e7%bd%ae/#comments Thu, 03 Apr 2025 08:25:22 +0000 https://www.luxiyue.com/?p=6658 前言 趁着清明假期前最后一天闲来无事,把服务器相关东西更新一下,更新完之前搭建的vuepress后,访问网站出现如下提示: Blocked request. This host ("www.yydnas.com") is not allowed. To allow this host, add "www.yydnas.com" to `server.allo […]

Vuepress的allowHosts设置最先出现在Forever Young

]]>
前言

趁着清明假期前最后一天闲来无事,把服务器相关东西更新一下,更新完之前搭建的vuepress后,访问网站出现如下提示:

Blocked request. This host ("www.yydnas.com") is not allowed. To allow this host, add "www.yydnas.com" to `server.allowedHosts` in vite.config.js.

无法访问。。。

解决

只需在 config.jsbundler: viteBundler({}), 中添加以下信息:

  bundler: viteBundler({
    viteOptions: {
        server: {
            allowedHosts: ['你的域名xxx.com', '.xxx.com']
        }
    }
  }),

最后

其实解决起来很简单,但是对于我这种非程序员来说,allowedHosts具体添加在哪里还真的不知道,中间试了很多次,很多地方都添加了尝试,没有一个是正确的。

而且由于更新后版本比较新,网上也没有文章说这个,问了各个AI大模型,也没有一个能精准解决的。

最后还是自己慢慢摸索,研究vite文档后进行的尝试,终于搞定。发出来记录一下。

Vuepress的allowHosts设置最先出现在Forever Young

]]>
https://www.luxiyue.com/server/vuepress%e7%9a%84allowhosts%e8%ae%be%e7%bd%ae/feed/ 1
Command terminated with exit status 1的解决办法 https://www.luxiyue.com/server/command-terminated-with-exit-status-1%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/ https://www.luxiyue.com/server/command-terminated-with-exit-status-1%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/#respond Sat, 31 Aug 2024 03:03:56 +0000 https://www.luxiyue.com/?p=6541 前言 最近Ubuntu Server升级到24.04.1的渠道已经开放,于是就顺着升级一下试试看。 按照常规的 do-release-upgrade 方法升级,发现总是提示如下错误: Invalid package information After updating your package information, the essential package 'ubuntu-mini […]

Command terminated with exit status 1的解决办法最先出现在Forever Young

]]>
前言

最近Ubuntu Server升级到24.04.1的渠道已经开放,于是就顺着升级一下试试看。

按照常规的 do-release-upgrade 方法升级,发现总是提示如下错误:

Invalid package information

After updating your package information, the essential package 'ubuntu-minimal' could not be located. This may be because you have no official mirrors listed in your software sources, or because of excessive load on the mirror you are using. See /etc/apt/sources.list for the current list of configured software sources. In the case of an overloaded mirror, you may want to try the upgrade again later.

Restoring original system state

Aborting

g package lists...5% 
*** Collecting problem information

The collected information can be sent to the developers to improve the application. This might take a few minutes.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
.
=== Command terminated with exit status 1 (Fri Aug 30 21:15:04 2024) ===

根据错误信息,大致可以判断是由于第三方软件源引起的。

解决方法

直接运行以下命令升级:

sudo RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
  • RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1: 这个环境变量允许从第三方软件源进行升级。

这个方法比较暴力,就是不解决问题直接升级,等升级后再排出问题所在。

注意:升级前确保做好备份!!!

Command terminated with exit status 1的解决办法最先出现在Forever Young

]]>
https://www.luxiyue.com/server/command-terminated-with-exit-status-1%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/feed/ 0
Immich:秒杀一切的开源照片管理程序 https://www.luxiyue.com/server/immich%ef%bc%9a%e7%a7%92%e6%9d%80%e4%b8%80%e5%88%87%e7%9a%84%e5%bc%80%e6%ba%90%e7%85%a7%e7%89%87%e7%ae%a1%e7%90%86%e7%a8%8b%e5%ba%8f/ https://www.luxiyue.com/server/immich%ef%bc%9a%e7%a7%92%e6%9d%80%e4%b8%80%e5%88%87%e7%9a%84%e5%bc%80%e6%ba%90%e7%85%a7%e7%89%87%e7%ae%a1%e7%90%86%e7%a8%8b%e5%ba%8f/#respond Sun, 28 Apr 2024 03:11:15 +0000 https://www.luxiyue.com/?p=6496 前言 在个人的照片管理程序中,从最开始使用的Nextcloud,之后到群晖的DS Photo,后来到Photoprism,每一款程序或多或少都有点让我无法满意的地方。 Nextcloud的功能丰富,集文件管理、照片管理、邮箱、会议等功能一体,稍显臃肿,而且人脸识别 Face Recognition 安装非常费力; DS Photo照片网页浏览是个硬伤,略微简陋,人脸识别不是非常精确; Photop […]

Immich:秒杀一切的开源照片管理程序最先出现在Forever Young

]]>
前言

在个人的照片管理程序中,从最开始使用的Nextcloud,之后到群晖的DS Photo,后来到Photoprism,每一款程序或多或少都有点让我无法满意的地方。

Nextcloud的功能丰富,集文件管理、照片管理、邮箱、会议等功能一体,稍显臃肿,而且人脸识别 Face Recognition 安装非常费力;

DS Photo照片网页浏览是个硬伤,略微简陋,人脸识别不是非常精确;

Photoprism最大的硬伤是人脸识别,不管是亚洲人还是非洲人,都无法识别,而且没有原生App,导致IOS需要购买第三方应用来进行上传备份,Android系统也是依赖第三方应用。

而Immich可以完美的解决这几款应用的不足。

简介

高性能自托管照片和视频管理解决方案

Home | Immich

immich-app/immich: High performance self-hosted photo and video management solution. (github.com)

目前Github上面已经 31.8k Starred。

功能特性 移动端 网页端
上传并查看照片和视频
软件运行时自动备份 N/A
忽略重复的项目
选择需要备份的相册 N/A
下载照片和视频到本地
多用户支持
相册与共享相册
可拖动的快速滚动条
支持RAW格式
元数据视图(EXIF、地图)
通过元数据、对象、人脸和标签进行搜索
管理功能(用户管理)
后台备份 N/A
虚拟滚动
OAuth 支持
API Keys N/A
实况照片备份和查看
支持360度全景图显示
用户自定义存储结构
公共分享
归档与收藏功能
足迹地图
好友分享
人脸识别与分组
回忆(那年今日)
离线支持
只读相册
照片堆叠

安装

有多种安装方式:

  1. 命令行安装

    curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | bash
  2. Docker Compose(推荐)

    mkdir ./immich-app  
    cd ./immich-app
    wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

也可以下载额外的文件来为机器学习和转码启用硬件加速:(本文章暂不涉及)

Hardware Transcoding [Experimental] | Immich

Hardware-Accelerated Machine Learning [Experimental] | Immich

wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml

接着只需编辑 .env 文件的内容:

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_DATA_LOCATION=./postgres

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=postgres

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

一般建议更改数据库密码即可 DB_PASSWORD=postgres

最后启动容器:

docker compose up -d

这个过程取决于网络环境,这也是在国内使用该程序最头疼的一点,如果没有很好的网络环境,建议直接在后台挂着,几个小时就会自己跑完~

当然还有其它方式进行安装,适配Kubernetes,Unraid,Portainer,All-in-one,TrueNAS等等,具体可以查看官方文档。

使用

安装完成后可以通过 IP:2283 访问,首次访问设置管理员账号和密码。

后面就简单了,根据自己的需求进行相应设置。

升级

如果需要升级的情况,强烈建议访问Github的页面进行阅读更新内容!

docker compose pull && docker compose up -d

优缺点

优点:

  1. 原生App,完美适配;

  2. 人脸识别非常给力;

    如果第一次扫描不到人脸,在下图位置点击 ALL 重新扫描一下即可:

  3. 支持硬件加速(由于我的设备目前只有核显,留待下次体验);

  4. 时间轴精确,可以查看图片元数据;

  5. 基本支持全格式,HEIC、实况照片等。

缺点:

  1. 国内网络拉跨,拉取困难;

  2. 网页界面无中文(手机App适配中文)。

展示

最后

可以说,Immich是我用过几款照片管理工具中最强大的一款,用一个词来形容就是:遥遥领先

Immich:秒杀一切的开源照片管理程序最先出现在Forever Young

]]>
https://www.luxiyue.com/server/immich%ef%bc%9a%e7%a7%92%e6%9d%80%e4%b8%80%e5%88%87%e7%9a%84%e5%bc%80%e6%ba%90%e7%85%a7%e7%89%87%e7%ae%a1%e7%90%86%e7%a8%8b%e5%ba%8f/feed/ 0
CasaOS开源家庭云系统体验 https://www.luxiyue.com/server/casaos%e5%bc%80%e6%ba%90%e5%ae%b6%e5%ba%ad%e4%ba%91%e7%b3%bb%e7%bb%9f%e4%bd%93%e9%aa%8c/ https://www.luxiyue.com/server/casaos%e5%bc%80%e6%ba%90%e5%ae%b6%e5%ba%ad%e4%ba%91%e7%b3%bb%e7%bb%9f%e4%bd%93%e9%aa%8c/#respond Fri, 26 Apr 2024 04:17:25 +0000 https://www.luxiyue.com/?p=6487 前言 今天在逛Github的时候发现这个开源系统,可以说是系统,因为它将一些常用的程序进行整合,于是就做了个简单了解。 介绍 CasaOS是一款基于Docker生态系统的开源家庭云系统,专为家庭场景而设计。 官网:CasaOS - A simple, easy-to-use, elegant open-source personal cloud system Github:IceWhaleTech […]

CasaOS开源家庭云系统体验最先出现在Forever Young

]]>
前言

今天在逛Github的时候发现这个开源系统,可以说是系统,因为它将一些常用的程序进行整合,于是就做了个简单了解。

介绍

CasaOS是一款基于Docker生态系统的开源家庭云系统,专为家庭场景而设计。

官网:CasaOS - A simple, easy-to-use, elegant open-source personal cloud system

Github:IceWhaleTech/CasaOS: CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system. (github.com)

适用系统

目前在逐步适应更多操作系统。

Official Support

  • Debian 12 (✅ Tested, Recommended)

  • Ubuntu Server 20.04 (✅ Tested)

  • Raspberry Pi OS (✅ Tested)

Community Support

  • Elementary 6.1 (✅ Tested)

  • Armbian 22.04 (✅ Tested)

  • Alpine (🚧 Not Fully Tested Yet)

  • OpenWrt (🚧 Not Fully Tested Yet)

  • ArchLinux (🚧 Not Fully Tested Yet)

我这边就以Ubuntu为例演示。

安装

安装非常简单,一条命令即可:

wget -qO- https://get.casaos.io | sudo bash

或者

curl -fsSL https://get.casaos.io | sudo bash

等待一两分钟即可完成,根据界面显示登录地址进行访问。

界面

首先创建管理账号,之后来到主界面,界面非常干净美观。

在这边有一些小部件,比如系统状态、存储空间、网络状态等,App栏默认只有Files文件管理的模块,其他都可以在 App Store 中根据自身需求下载安装。

可以看到 App Store 里面已经内置了很多常用的应用,如果其中没有需求的应用,也可以在主界面 App 的右侧点击 + 号进行自定义添加。

这边我们安装Alist,直接点击安装即可一步到位:

鼠标悬停在Alist应用图标上面,点击三个点,设置,进行查看:

可以看到是以Docker容器的形式进行安装的,然后在右上角的日志中查看启动时创建的登录名和密码:

之后打开应用进行登录,版本号是 v3.28.0,目前最新的版本已经是 v3.33.0:

这不得不说是比较遗憾的事情。

最后

说一下我的观点吧,CasaOS毕竟是基于创建Docker程序来运行应用,只是做到比Portainer更加的图形化,如果对Docker比较熟悉的话,我的建议还是根据自身需求来进行手动部署。

如果是纯新手的话,不妨考虑一下CasaOS。或者花点时间了解一下Docker,比较学习成本真的不大。

CasaOS开源家庭云系统体验最先出现在Forever Young

]]>
https://www.luxiyue.com/server/casaos%e5%bc%80%e6%ba%90%e5%ae%b6%e5%ba%ad%e4%ba%91%e7%b3%bb%e7%bb%9f%e4%bd%93%e9%aa%8c/feed/ 0
带密码保护的个人导航页Flame体验 https://www.luxiyue.com/server/%e5%b8%a6%e5%af%86%e7%a0%81%e4%bf%9d%e6%8a%a4%e7%9a%84%e4%b8%aa%e4%ba%ba%e5%af%bc%e8%88%aa%e9%a1%b5flame%e4%bd%93%e9%aa%8c/ https://www.luxiyue.com/server/%e5%b8%a6%e5%af%86%e7%a0%81%e4%bf%9d%e6%8a%a4%e7%9a%84%e4%b8%aa%e4%ba%ba%e5%af%bc%e8%88%aa%e9%a1%b5flame%e4%bd%93%e9%aa%8c/#respond Fri, 15 Sep 2023 04:48:33 +0000 https://www.luxiyue.com/?p=6142 前言 之前导航页对我来说,其实没多大用,浏览器的书签其实可以承担起很大的重任,但是随着前几天装的软路由,再接着IPv6 DDNS动态域名解析,也就是说现在想要访问的东西越来越多,在家本地就可以访问,上班需要在办公室访问,所以想找个个人导航页面,需要访问密码保护的那种。 经过 于是就在Github上面找了几款Star最多的3个项目: dashy homepage Heimdall 介绍就不多介绍了, […]

带密码保护的个人导航页Flame体验最先出现在Forever Young

]]>
前言

之前导航页对我来说,其实没多大用,浏览器的书签其实可以承担起很大的重任,但是随着前几天装的软路由,再接着IPv6 DDNS动态域名解析,也就是说现在想要访问的东西越来越多,在家本地就可以访问,上班需要在办公室访问,所以想找个个人导航页面,需要访问密码保护的那种。

经过

于是就在Github上面找了几款Star最多的3个项目:

  1. dashy

  2. homepage

  3. Heimdall

介绍就不多介绍了,大家可以自行访问了解。

昨天把这3个都试了一遍:

dashy是可以设置密码的,但是这个设置比较麻烦,而且界面不是很合我胃口,放弃;

homepage界面非常好看,但是它没有密码,只能在Nginx或者Apache2的配置中增加基本身份验证(也就是访问的时候出现一个输入密码框,很丑陋),无奈使用了一天,放弃了;

Heimdall是PHP的,没有前两个那么轻量,而且好像也不能设置密码,放弃。

我是个比较完美主义的人,于是么就再来找,非要找一款适合的,然后让我差点吐血的事情就发生了,下一个排第四的Flame非常适合,它有三点比较达到我的需求:1.轻量,2.美观,3.隐私。我的大量时间啊~~~

接下来就介绍一下这款程序。

安装

Flame Github地址:https://github.com/pawelmalak/flame

安装可以Docker进行,我这边使用Docker-Compose来构建:

官方的文档如下:

version: '3.6'

services:
  flame:
    image: pawelmalak/flame
    container_name: flame
    volumes:
      - /path/to/host/data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration
    ports:
      - 5005:5005
    secrets:
      - password # optional but required for (1)
    environment:
      - PASSWORD=flame_password
      - PASSWORD_FILE=/run/secrets/password # optional but required for (1)
    restart: unless-stopped

# optional but required for Docker secrets (1)
secrets:
  password:
    file: /path/to/secrets/password

我们可以简化为:

version: '3.6'

services:
  flame:
    image: pawelmalak/flame
    container_name: flame
    volumes:
      - /path/to/host/data:/app/data    #更改本地路径
      - /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration
    ports:
      - 5005:5005
    environment:
      - PASSWORD=flame_password #这是管理密码
    restart: unless-stopped

使用 docker compose up -d 运行后访问网址,简洁的界面,登陆后即可到设置界面。

目前这款程序没有中文翻译,不像前面三款程序,不过这个对我不影响,不行就用浏览器的翻译功能翻译一下,一共也没多少字。

它的最实用功能是可以定义【所有人可看】和【隐藏仅自己可看】。

我试着添加了几个,效果如下:

这是我登陆后可看到的界面,我用手机访问了一下,该隐藏的都隐藏了,非常适合我!

不过手机界面好像就没有天气,当然这些不影响。

最后

终于有一款程序能够满足我的要求了,再也不用手动输入或者保存一堆书签了!

总的来说,这款程序虽然可以定制的内容不多,但是单单一个隐私就比较适合我了,主要是它设置简单,不像其他程序虽然有这个功能,但是配置很繁琐。赞!

带密码保护的个人导航页Flame体验最先出现在Forever Young

]]>
https://www.luxiyue.com/server/%e5%b8%a6%e5%af%86%e7%a0%81%e4%bf%9d%e6%8a%a4%e7%9a%84%e4%b8%aa%e4%ba%ba%e5%af%bc%e8%88%aa%e9%a1%b5flame%e4%bd%93%e9%aa%8c/feed/ 0