收起左侧

容器内持久化部署与桌面图标创建

0
回复
86
查看
[ 复制链接 ]

12

主题

71

回帖

0

牛值

初出茅庐

fnOS1.0上线纪念勋章

容器内持久化部署与桌面图标创建

概述

本文档记录在 linuxserver/webtop 容器内,将可解压即用的软件(Edge、PyCharm、RustDesk、VSCode)部署到持久化目录,并创建 XFCE 桌面图标的参考流程。

版本说明:本文示例默认使用当前脚本中的版本号,便于直接复现;实际使用时,请根据软件官网或发行页面,自行替换为当前可用的稳定版本。

免责声明:本文仅用于说明 Docker / Webtop 场景下的软件持久化部署、目录规划和桌面图标创建方法,不提供破解、绕过授权、二次分发安装包或规避官方许可限制的内容。文中涉及的软件请通过其官方渠道获取,并在实际使用时自行确认许可证、使用条款及适用地区要求。

目录结构约定

/config/
**── Downloads/
**   **── PortableDownloads/     # 存放原始压缩包/安装包
**── Softs/                     # 存放解压后的软件(运行目录)
**   **── Edge/
**   **── Pycharm/
**   **── RustDesk/
**   **── VSCode/
**── Desktop/                   # 桌面图标目录

一、Microsoft Edge 持久化部署

1. 下载与解压

# 创建目录
mkdir -p /config/Downloads/PortableDownloads
mkdir -p /config/Softs/Edge

# 安装工具
sudo apt install -y binutils xz-utils

# 下载官方 deb 包
# 示例使用当前脚本中的版本号,实际使用时请按需替换
cd /config/Downloads/PortableDownloads
wget 'https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_146.0.3856.72-1_amd64.deb' -O edge.deb

# 解压到运行目录
cd /tmp
ar x /config/Downloads/PortableDownloads/edge.deb
tar -xf data.tar.xz
mv opt/microsoft/msedge/* /config/Softs/Edge/

# 清理临时文件
rm -rf /tmp/opt /tmp/usr /tmp/control.tar.xz /tmp/data.tar.xz /tmp/debian-binary

2. 创建启动脚本

容器内运行 Edge 时,通常先使用不带 --no-sandbox 的启动脚本;若启动失败,再切换到带 --no-sandbox 的方案。

提示--no-sandbox 会降低浏览器的沙箱隔离能力,建议仅在容器内无法正常启动时作为兼容性方案使用,不建议在高风险环境下长期启用。

推荐:

cat > /config/Softs/Edge/msedge-portable.sh << 'EOF'
#!/bin/bash
DIR="$(cd "$(dirname "$0")" && pwd)"
exec "$DIR/msedge" "$@"
EOF

chmod +x /config/Softs/Edge/msedge-portable.sh

启动失败时可改用:

cat > /config/Softs/Edge/msedge-portable.sh << 'EOF'
#!/bin/bash
DIR="$(cd "$(dirname "$0")" && pwd)"
exec "$DIR/msedge" --no-sandbox "$@"
EOF

chmod +x /config/Softs/Edge/msedge-portable.sh

3. 创建桌面图标

cat > ~/Desktop/Edge.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=Microsoft Edge
Comment=Web Browser
Exec=/config/Softs/Edge/msedge-portable.sh
Icon=/config/Softs/Edge/product_logo_256.png
Terminal=false
Categories=Network;WebBrowser;
EOF

chmod +x ~/Desktop/Edge.desktop

4. 注意事项

  • Microsoft 账户登录:Edge 支持 Microsoft 账户登录同步,Chromium 默认不提供这部分体验
  • 容器运行:如果启动异常,可尝试添加 --no-sandbox 参数

二、PyCharm 持久化部署

1. 下载与解压

# 创建目录
mkdir -p /config/Downloads/PortableDownloads
mkdir -p /config/Softs/Pycharm

# 下载 tar.gz 包(示例使用当前脚本中的版本号,实际使用时请按需替换)
cd /config/Downloads/PortableDownloads
wget 'https://download.jetbrains.com/python/pycharm-community-2025.3.3.tar.gz' -O pycharm.tar.gz

# 解压到运行目录
tar -xzf pycharm.tar.gz -C /config/Softs/Pycharm/

2. 创建桌面图标

cat > ~/Desktop/PyCharm.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm
Comment=Python IDE
Exec=/config/Softs/Pycharm/pycharm-community-2025.3.3/bin/pycharm.sh %f
Icon=/config/Softs/Pycharm/pycharm-community-2025.3.3/bin/pycharm.png
Terminal=false
Categories=Development;IDE;
StartupNotify=true
StartupWMClass=jetbrains-pycharm
EOF

chmod +x ~/Desktop/PyCharm.desktop

3. 验证

# 测试启动
/config/Softs/Pycharm/pycharm-community-2025.3.3/bin/pycharm.sh

三、RustDesk 持久化部署

1. AppImage 提取(容器内无 FUSE)

容器内通常无法直接运行 AppImage,需要先提取再使用。

# 创建目录
mkdir -p /config/Downloads/PortableDownloads
mkdir -p /config/Softs/RustDesk

# 下载 AppImage
# 示例使用当前脚本中的版本号,实际使用时请按需替换
cd /config/Downloads/PortableDownloads
wget 'https://github.com/rustdesk/rustdesk/releases/download/1.4.6/rustdesk-1.4.6-x86_64.AppImage' -O rustdesk.AppImage

# 提取 AppImage
cd /config/Softs/RustDesk
chmod +x /config/Downloads/PortableDownloads/rustdesk.AppImage
/config/Downloads/PortableDownloads/rustdesk.AppImage --appimage-extract
mv squashfs-root rustdesk-portable

2. 创建桌面图标

cat > ~/Desktop/RustDesk.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=RustDesk
Comment=Remote Desktop
Exec=/config/Softs/RustDesk/rustdesk-portable/AppRun
Icon=/config/Softs/RustDesk/rustdesk-portable/rustdesk.png
Terminal=false
Categories=Network;RemoteAccess;
EOF

chmod +x ~/Desktop/RustDesk.desktop

3. 验证

# 测试启动
/config/Softs/RustDesk/rustdesk-portable/AppRun

四、VS Code 持久化部署

1. 下载与解压

# 创建目录
mkdir -p /config/Downloads/PortableDownloads
mkdir -p /config/Softs/VSCode

# 下载 tar.gz 包
# 示例使用当前可用的稳定下载地址,实际使用时请按需确认版本来源
cd /config/Downloads/PortableDownloads
wget 'https://code.visualstudio.com/sha/download?build=stable&os=linux-x64' -O vscode.tar.gz
# 或使用镜像
wget 'https://update.code.visualstudio.com/latest/linux-x64/stable' -O vscode.tar.gz

# 解压到运行目录
tar -xzf vscode.tar.gz -C /config/Softs/VSCode/ --strip-components=1

2. 创建桌面图标

cat > ~/Desktop/VSCode.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=VS Code
Comment=Code Editor
Exec=/config/Softs/VSCode/bin/code
Icon=/config/Softs/VSCode/resources/app/resources/linux/code.png
Terminal=false
Categories=Development;IDE;
EOF

chmod +x ~/Desktop/VSCode.desktop

3. 验证

# 测试启动
/config/Softs/VSCode/bin/code

五、批量部署脚本

一键部署所有应用

#!/bin/bash
# ============================================
# 容器内持久化部署一键脚本
# 用法: /config/deploy-portable-apps.sh
# 说明: 默认使用本文示例中的版本号,实际使用时请按需替换
# ============================================

echo "========== 开始部署持久化应用 =========="

# 创建目录结构
mkdir -p /config/Downloads/PortableDownloads
mkdir -p /config/Softs/{Edge,Pycharm,RustDesk,VSCode}

# 安装依赖
apt-get update -qq
apt-get install -y -qq binutils xz-utils wget curl

# ========== Edge ==========
echo "[1/4] 部署 Microsoft Edge..."
cd /config/Downloads/PortableDownloads
wget -q 'https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_146.0.3856.72-1_amd64.deb' -O edge.deb
cd /tmp
ar x /config/Downloads/PortableDownloads/edge.deb
tar -xf data.tar.xz
mv opt/microsoft/msedge/* /config/Softs/Edge/
rm -rf /tmp/opt /tmp/usr /tmp/control.tar.xz /tmp/data.tar.xz /tmp/debian-binary

cat > /config/Softs/Edge/msedge-portable.sh << 'EOF'
#!/bin/bash
DIR="$(cd "$(dirname "$0")" && pwd)"
exec "$DIR/msedge" "$@"
EOF
chmod +x /config/Softs/Edge/msedge-portable.sh

cat > /config/Desktop/Edge.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=Microsoft Edge
Comment=Web Browser
Exec=/config/Softs/Edge/msedge-portable.sh
Icon=/config/Softs/Edge/product_logo_256.png
Terminal=false
Categories=Network;WebBrowser;
EOF
chmod +x /config/Desktop/Edge.desktop
echo "  ✅ Edge 部署完成"

# ========== VS Code ==========
echo "[2/4] 部署 VS Code..."
cd /config/Downloads/PortableDownloads
wget -q 'https://update.code.visualstudio.com/latest/linux-x64/stable' -O vscode.tar.gz
tar -xzf vscode.tar.gz -C /config/Softs/VSCode/ --strip-components=1

cat > /config/Desktop/VSCode.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=VS Code
Comment=Code Editor
Exec=/config/Softs/VSCode/bin/code
Icon=/config/Softs/VSCode/resources/app/resources/linux/code.png
Terminal=false
Categories=Development;IDE;
EOF
chmod +x /config/Desktop/VSCode.desktop
echo "  ✅ VS Code 部署完成"

# ========== RustDesk ==========
echo "[3/4] 部署 RustDesk..."
cd /config/Downloads/PortableDownloads
wget -q 'https://github.com/rustdesk/rustdesk/releases/download/1.4.6/rustdesk-1.4.6-x86_64.AppImage' -O rustdesk.AppImage
chmod +x rustdesk.AppImage
cd /config/Softs/RustDesk
/config/Downloads/PortableDownloads/rustdesk.AppImage --appimage-extract > /dev/null 2>&1
mv squashfs-root rustdesk-portable

cat > /config/Desktop/RustDesk.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=RustDesk
Comment=Remote Desktop
Exec=/config/Softs/RustDesk/rustdesk-portable/AppRun
Icon=/config/Softs/RustDesk/rustdesk-portable/rustdesk.png
Terminal=false
Categories=Network;RemoteAccess;
EOF
chmod +x /config/Desktop/RustDesk.desktop
echo "  ✅ RustDesk 部署完成"

# ========== PyCharm ==========
echo "[4/4] 部署 PyCharm..."
cd /config/Downloads/PortableDownloads
wget -q 'https://download.jetbrains.com/python/pycharm-community-2025.3.3.tar.gz' -O pycharm.tar.gz
tar -xzf pycharm.tar.gz -C /config/Softs/Pycharm/

cat > /config/Desktop/PyCharm.desktop << 'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm
Comment=Python IDE
Exec=/config/Softs/Pycharm/pycharm-community-2025.3.3/bin/pycharm.sh %f
Icon=/config/Softs/Pycharm/pycharm-community-2025.3.3/bin/pycharm.png
Terminal=false
Categories=Development;IDE;
StartupNotify=true
StartupWMClass=jetbrains-pycharm
EOF
chmod +x /config/Desktop/PyCharm.desktop
echo "  ✅ PyCharm 部署完成"

echo ""
echo "========== 部署完成 =========="
echo "桌面图标数量: $(find /config/Desktop -name "*.desktop" | wc -l)"
echo "=============================="

六、常见问题

Q1: AppImage 报错 fuse: device not found

原因:容器内通常没有 FUSE 支持

解决:使用 --appimage-extract 提取后运行 AppRun

./app.AppImage --appimage-extract
./squashfs-root/AppRun

Q2: Edge 无法启动

原因:容器内可能缺少沙箱支持

解决:启动脚本添加 --no-sandbox 参数

Q3: 桌面图标无法点击

原因.desktop 文件没有执行权限

解决

chmod +x ~/Desktop/*.desktop

Q4: 容器重建后软件丢失

原因:软件安装在容器内非持久化目录

解决

  • 所有软件安装到 /config/Softs/ 目录
  • 使用 /config/fix-permissions.sh 修复权限

七、相关脚本

脚本 用途
/config/deploy-portable-apps.sh 一键部署所有应用
/config/fix-permissions.sh 重建后权限修复

收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则