From 69258dbf1f24743151e37f5c42be4ef3f7074d81 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Tue, 5 Nov 2024 17:04:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=20Windows=20=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- .github/README.md | 1 + README.md | 1 + apps/windows/4.00/data.yml | 197 +++++++++++++++++++++++++ apps/windows/4.00/docker-compose.yml | 37 +++++ apps/windows/4.00/scripts/init.sh | 15 ++ apps/windows/4.00/scripts/uninstall.sh | 10 ++ apps/windows/4.00/scripts/upgrade.sh | 15 ++ apps/windows/README.md | 75 ++++++++++ apps/windows/data.yml | 14 ++ apps/windows/logo.png | Bin 0 -> 15096 bytes 10 files changed, 365 insertions(+) create mode 100644 apps/windows/4.00/data.yml create mode 100644 apps/windows/4.00/docker-compose.yml create mode 100644 apps/windows/4.00/scripts/init.sh create mode 100644 apps/windows/4.00/scripts/uninstall.sh create mode 100644 apps/windows/4.00/scripts/upgrade.sh create mode 100644 apps/windows/README.md create mode 100644 apps/windows/data.yml create mode 100644 apps/windows/logo.png diff --git a/.github/README.md b/.github/README.md index 3ec6bc0ee..4722a50c6 100644 --- a/.github/README.md +++ b/.github/README.md @@ -165,6 +165,7 @@ | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | | 🟢 | | 路由设备监控 | https://github.com/aceberg/WatchYourLAN/ | 轻量级网络 IP 扫描器 | | +| 🟢 | | Windows 系统 | https://www.microsoft.com/ | Docker 容器内的 Windows | | | 🟢 | | WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | | | 🟢 | | 悟空IM | https://githubim.com/ | 让信息传递更简单 | | | 🟢 | | 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | | diff --git a/README.md b/README.md index 6a34b5541..b924d8285 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ | 🟢 | | Uptime Kuma | https://uptime.kuma.pet/ | 自托管监控工具 | | | 🟢 | | Umami | https://umami.is/ | 为速度和效率而构建的网站分析 | | | 🟢 | | 路由设备监控 | https://github.com/aceberg/WatchYourLAN/ | 轻量级网络 IP 扫描器 | | +| 🟢 | | Windows 系统 | https://www.microsoft.com/ | Docker 容器内的 Windows | | | 🟢 | | WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | | | 🟢 | | 悟空IM | https://githubim.com/ | 让信息传递更简单 | | | 🟢 | | 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | | diff --git a/apps/windows/4.00/data.yml b/apps/windows/4.00/data.yml new file mode 100644 index 000000000..df4f18437 --- /dev/null +++ b/apps/windows/4.00/data.yml @@ -0,0 +1,197 @@ +additionalProperties: + formFields: + - default: "/home/windows" + edit: true + envKey: WINDOWS_STORAGE_ROOT_PATH + labelZh: Windows 存储目录 + labelEn: Windows Storage Path + required: true + type: text + - default: "/home/windows" + edit: true + envKey: WINDOWS_SHARE_ROOT_PATH + labelZh: Windows 网上邻居共享目录 + labelEn: Windows Share Path + required: true + type: text + - default: "/home/windows" + edit: true + envKey: WINDOWS_OEM_ROOT_PATH + labelZh: Windows OEM 目录 + labelEn: Windows OEM Path + required: true + type: text + - default: 8006 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 3389 + edit: true + envKey: PANEL_APP_PORT_REMOTE + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "win11" + edit: true + envKey: VERSION + labelZh: Windows 版本 + labelEn: Windows Version + required: true + type: select + values: + - label: Windows 11 Pro (5.4GB) + value: "win11" + - label: Windows 11 LTSC (4.2GB) + value: "ltsc11" + - label: Windows 11 Enterprise (5.8GB) + value: "win11e" + - label: Windows 10 Pro (5.7GB) + value: "win10" + - label: Windows 10 LTSC (4.6GB) + value: "ltsc10" + - label: Windows 10 Enterprise (5.2GB) + value: "win10e" + - label: Windows 8.1 Pro (4.0GB) + value: "win8" + - label: Windows 8.1 Enterprise (3.7GB) + value: "win8e" + - label: Windows 7 Enterprise (3.0GB) + value: "win7" + - label: Windows Vista Enterprise (3.0GB) + value: "vista" + - label: Windows XP Professional (0.6GB) + value: "winxp" + - label: Windows Server 2025 (5.0GB) + value: "2025" + - label: Windows Server 2022 (4.7GB) + value: "2022" + - label: Windows Server 2019 (5.3GB) + value: "2019" + - label: Windows Server 2016 (6.5GB) + value: "2016" + - label: Windows Server 2012 (4.3GB) + value: "2012" + - label: Windows Server 2008 (3.0GB) + value: "2008" + - label: Windows Server 2003 (0.6GB) + value: "2003" + - default: "Administrator" + edit: true + envKey: USERNAME + labelZh: 用户名 + labelEn: Username + required: true + type: text + - default: "" + edit: true + envKey: PASSWORD + labelZh: 密码 + labelEn: Password + required: true + type: password + - default: "N" + edit: true + envKey: MANUAL + labelZh: 安装模式选择 + labelEn: Manual Mode + required: true + type: select + values: + - label: 自动化安装 + value: "N" + - label: 手动安装 + value: "Y" + - default: "8G" + edit: true + envKey: RAM_SIZE + labelZh: 内存大小 + labelEn: RAM Size + required: true + type: text + - default: 4 + edit: true + envKey: CPU_CORES + labelZh: CPU 核心数 + labelEn: CPU Cores + required: true + type: number + - default: "CN" + edit: true + envKey: LANGUAGE + labelZh: Windows 语言 + labelEn: Windows Language + required: true + type: select + values: + - label: 阿拉伯语 + value: "AE" + - label: 保加利亚语 + value: "BG" + - label: 简体中文 + value: "CN" + - label: 克罗地亚语 + value: "HR" + - label: 捷克语 + value: "CZ" + - label: 丹麦语 + value: "DK" + - label: 荷兰语 + value: "NL" + - label: 英语 + value: "GB" + - label: 爱沙尼亚语 + value: "EE" + - label: 芬兰语 + value: "FI" + - label: 法语 + value: "FR" + - label: 德语 + value: "DE" + - label: 希腊语 + value: "GR" + - label: 希伯来语 + value: "IL" + - label: 匈牙利语 + value: "HU" + - label: 意大利语 + value: "IT" + - label: 日语 + value: "JP" + - label: 韩语 + value: "KR" + - label: 拉脱维亚语 + value: "LV" + - label: 立陶宛语 + value: "LT" + - label: 挪威语 + value: "NO" + - label: 波兰语 + value: "PL" + - label: 葡萄牙语 + value: "PT" + - label: 罗马尼亚语 + value: "RO" + - label: 俄语 + value: "RU" + - label: 塞尔维亚语 + value: "RS" + - label: 斯洛伐克语 + value: "SK" + - label: 斯洛文尼亚语 + value: "SI" + - label: 西班牙语 + value: "ES" + - label: 瑞典语 + value: "SE" + - label: 泰语 + value: "TH" + - label: 土耳其语 + value: "TR" + - label: 乌克兰语 + value: "UA" diff --git a/apps/windows/4.00/docker-compose.yml b/apps/windows/4.00/docker-compose.yml new file mode 100644 index 000000000..b3120448b --- /dev/null +++ b/apps/windows/4.00/docker-compose.yml @@ -0,0 +1,37 @@ +networks: + 1panel-network: + external: true + +services: + windows: + image: dockurr/windows:4.00 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8006 + - ${PANEL_APP_PORT_REMOTE}:3389/tcp + - ${PANEL_APP_PORT_REMOTE}:3389/udp + devices: + - /dev/kvm:/dev/kvm + - /dev/dri:/dev/dri + # - /dev/nvidia0:/dev/nvidia0 + # - /dev/nvidiactl:/dev/nvidiactl + # - /dev/nvidia-modeset:/dev/nvidia-modeset + # - /dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl + # - /dev/nvidia-uvm:/dev/nvidia-uvm + # - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools + # - /dev/video11:/dev/video11 + env_file: + - /etc/1panel/envs/global.env + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${WINDOWS_STORAGE_ROOT_PATH}/storage:/storage + - ${WINDOWS_SHARE_ROOT_PATH}/share:/data + - ${WINDOWS_OEM_ROOT_PATH}/oem:/oem + environment: + - REGION=en-US + - KEYBOARD=en-US diff --git a/apps/windows/4.00/scripts/init.sh b/apps/windows/4.00/scripts/init.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/windows/4.00/scripts/init.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/windows/4.00/scripts/uninstall.sh b/apps/windows/4.00/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/windows/4.00/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/windows/4.00/scripts/upgrade.sh b/apps/windows/4.00/scripts/upgrade.sh new file mode 100644 index 000000000..77b849120 --- /dev/null +++ b/apps/windows/4.00/scripts/upgrade.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/windows/README.md b/apps/windows/README.md new file mode 100644 index 000000000..0b957967b --- /dev/null +++ b/apps/windows/README.md @@ -0,0 +1,75 @@ +# Windows 系统 + +Docker 容器内的 Windows + +![Windows](https://file.lifebus.top/imgs/windows_cover.jpg) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +Microsoft Windows,或称Windows操作系统,是微软以图形用户界面为主推出的一系列专有商业软件操作系统。 +它于1985年问世,起初为运行于MS-DOS之下的桌面环境,其后续版本逐渐发展成为主要为个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统的垄断地位。 + +## 特性 + ++ 国际标准下载器 ++ KVM 加速 ++ 网络浏览器 + +## 安装说明 + +由于需要下载系统镜像,安装过程的快慢取决于您的网络,请耐心等待。 + +## 常见问题 + +### kvm 模块加载失败 + +请检查是否开启了虚拟化功能,或者在 BIOS 中开启虚拟化功能。 + +### 挂载更多磁盘 + +请修改 docker-compose.yml 参数配置 + +```yml +environment: + DISK2_SIZE: "32G" + DISK3_SIZE: "64G" +volumes: + - /home/example:/storage2 + - /mnt/data/example:/storage3 +``` + +### 如何直通磁盘 + +请修改 docker-compose.yml 参数配置 + +```yml +devices: + - /dev/sdb:/disk1 + - /dev/sdc:/disk2 +``` + +### 如何通过 USB 设备进行数据传输 + +请修改 docker-compose.yml 参数配置 + +```yml +environment: + ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234" +devices: + - /dev/bus/usb +``` + +### 如何使用 RDP 进行连接 + +通过网页访问,一般情况下适用于系统安装过程中使用,因为其画质较低,且没有音频或剪贴板等功能。 + +您可以使用任何 Microsoft 远程桌面客户端连接到容器的 IP 地址,使用用户名 Docker ,并且密码留空。 + +安卓设备可以从应用商店下载 RDP 客户端,iOS 设备则可在苹果商店找到对应的客户端。Linux 用户可以使用 FreeRDP,而 Windows +用户只需在搜索框中输入 mstsc 即可。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/windows/data.yml b/apps/windows/data.yml new file mode 100644 index 000000000..929111279 --- /dev/null +++ b/apps/windows/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: windows + name: Windows 系统 + tags: + - WebSite + - Local + shortDescZh: Docker 容器内的 Windows + shortDescEn: Windows in Docker container + type: website + crossVersionUpdate: true + limit: 0 + website: https://www.microsoft.com/ + github: https://github.com/dockur/windows/ + document: https://www.microsoft.com/ diff --git a/apps/windows/logo.png b/apps/windows/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..084b2ec375f4acbe9cc39a5c25cbf6540ca69300 GIT binary patch literal 15096 zcmVeh4bY)!^&fNe2AOJ~3K~#90?A>{c zx3;zd002+0?m=Gw002CAvKRmWWHA5$$YKBh zh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1 z004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98 z$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG z0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ zECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG1 z0EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_ zVgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#G zfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A z1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBh zh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1 z004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98 z$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG z0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ zECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG1 z0EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_ zVgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#G zfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A 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 zfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A z1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBh zh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1 z004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98 z$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG z0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ zECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG1 z0EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_ zVgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#G zfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A z1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBh zh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1 z004+A1^|G_VgLY$ECv98$YKBhh%5#GfXHG10EjFG0D#D1004+A1^|G_VgLY$ECv98 aB>xZdDivM1ihbk&0000