mirror of
https://github.com/dockur/windows.git
synced 2026-02-03 17:27:21 +00:00
Merge 31b7153275 into 588969ae5f
This commit is contained in:
commit
43132b144b
30
.env.example
Normal file
30
.env.example
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Windows Docker VM Configuration
|
||||||
|
#
|
||||||
|
# Two env files are provided with optimized defaults:
|
||||||
|
# - .env.modern (8G RAM, 4 CPU) - Windows 10/11, Server 2016+
|
||||||
|
# - .env.legacy (2G RAM, 2 CPU) - Windows 7/8, Vista, XP, 2000, Server 2003-2012, Tiny
|
||||||
|
#
|
||||||
|
# Each compose file references the appropriate env file automatically.
|
||||||
|
# Edit .env.modern or .env.legacy to customize settings.
|
||||||
|
#
|
||||||
|
# Available settings:
|
||||||
|
#
|
||||||
|
# RAM_SIZE=8G # Memory allocation
|
||||||
|
# CPU_CORES=4 # CPU cores
|
||||||
|
# DISK_SIZE=128G # Virtual disk size
|
||||||
|
# USERNAME=Docker # Windows username
|
||||||
|
# PASSWORD=admin # Windows password
|
||||||
|
# LANGUAGE=en # Installation language
|
||||||
|
# REGION=en-US # Region setting
|
||||||
|
# KEYBOARD=en-US # Keyboard layout
|
||||||
|
# WIDTH=1280 # Display width
|
||||||
|
# HEIGHT=720 # Display height
|
||||||
|
# DHCP=N # Use DHCP (Y/N)
|
||||||
|
# SAMBA=Y # Enable file sharing (Y/N)
|
||||||
|
# RESTART_POLICY=on-failure # Restart policy (no, on-failure, always, unless-stopped)
|
||||||
|
# DEBUG=N # Debug mode (Y/N)
|
||||||
|
# WINDOWS_IMAGE=dockurr/windows # Docker image (dockurr/windows-arm for ARM64)
|
||||||
|
#
|
||||||
|
# winctl.sh settings (place in .env file):
|
||||||
|
#
|
||||||
|
# AUTO_CACHE=N # Auto-cache ISOs on stop (Y/N)
|
||||||
32
.env.legacy
Normal file
32
.env.legacy
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Legacy Systems Configuration (Windows 7/8, Vista, XP, 2000, Server 2003-2012, Tiny)
|
||||||
|
|
||||||
|
# Resources
|
||||||
|
RAM_SIZE=2G
|
||||||
|
CPU_CORES=2
|
||||||
|
DISK_SIZE=32G
|
||||||
|
|
||||||
|
# User Credentials
|
||||||
|
USERNAME=docker
|
||||||
|
PASSWORD=admin
|
||||||
|
|
||||||
|
# Language & Region
|
||||||
|
LANGUAGE=en
|
||||||
|
REGION=en-US
|
||||||
|
KEYBOARD=en-US
|
||||||
|
|
||||||
|
# Display
|
||||||
|
WIDTH=1280
|
||||||
|
HEIGHT=720
|
||||||
|
|
||||||
|
# Network
|
||||||
|
DHCP=N
|
||||||
|
SAMBA=Y
|
||||||
|
|
||||||
|
# Restart Policy (no, on-failure, always, unless-stopped)
|
||||||
|
RESTART_POLICY=on-failure
|
||||||
|
|
||||||
|
# Docker Image (dockurr/windows for x86, dockurr/windows-arm for ARM64)
|
||||||
|
WINDOWS_IMAGE=dockurr/windows
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
DEBUG=N
|
||||||
32
.env.modern
Normal file
32
.env.modern
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Modern Systems Configuration (Windows 10/11, Server 2016+)
|
||||||
|
|
||||||
|
# Resources
|
||||||
|
RAM_SIZE=8G
|
||||||
|
CPU_CORES=4
|
||||||
|
DISK_SIZE=128G
|
||||||
|
|
||||||
|
# User Credentials
|
||||||
|
USERNAME=docker
|
||||||
|
PASSWORD=admin
|
||||||
|
|
||||||
|
# Language & Region
|
||||||
|
LANGUAGE=en
|
||||||
|
REGION=en-US
|
||||||
|
KEYBOARD=en-US
|
||||||
|
|
||||||
|
# Display
|
||||||
|
WIDTH=1280
|
||||||
|
HEIGHT=720
|
||||||
|
|
||||||
|
# Network
|
||||||
|
DHCP=N
|
||||||
|
SAMBA=Y
|
||||||
|
|
||||||
|
# Restart Policy (no, on-failure, always, unless-stopped)
|
||||||
|
RESTART_POLICY=on-failure
|
||||||
|
|
||||||
|
# Docker Image (dockurr/windows for x86, dockurr/windows-arm for ARM64)
|
||||||
|
WINDOWS_IMAGE=dockurr/windows
|
||||||
|
|
||||||
|
# Debug
|
||||||
|
DEBUG=N
|
||||||
6
.github/workflows/review.yml
vendored
6
.github/workflows/review.yml
vendored
@ -22,6 +22,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
locale: "US"
|
locale: "US"
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
pattern: |
|
pattern: |
|
||||||
*.md
|
*.md
|
||||||
*.sh
|
*.sh
|
||||||
@ -32,6 +33,7 @@ jobs:
|
|||||||
uses: reviewdog/action-hadolint@v1
|
uses: reviewdog/action-hadolint@v1
|
||||||
with:
|
with:
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
reporter: github-pr-review
|
reporter: github-pr-review
|
||||||
hadolint_ignore: DL3006 DL3008
|
hadolint_ignore: DL3006 DL3008
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
@ -40,6 +42,7 @@ jobs:
|
|||||||
uses: reviewdog/action-yamllint@v1
|
uses: reviewdog/action-yamllint@v1
|
||||||
with:
|
with:
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
reporter: github-pr-review
|
reporter: github-pr-review
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
@ -47,6 +50,7 @@ jobs:
|
|||||||
uses: reviewdog/action-actionlint@v1
|
uses: reviewdog/action-actionlint@v1
|
||||||
with:
|
with:
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
reporter: github-pr-review
|
reporter: github-pr-review
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
@ -54,6 +58,7 @@ jobs:
|
|||||||
uses: reviewdog/action-shfmt@v1
|
uses: reviewdog/action-shfmt@v1
|
||||||
with:
|
with:
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
shfmt_flags: "-i 2 -ci -bn"
|
shfmt_flags: "-i 2 -ci -bn"
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
@ -61,6 +66,7 @@ jobs:
|
|||||||
uses: reviewdog/action-shellcheck@v1
|
uses: reviewdog/action-shellcheck@v1
|
||||||
with:
|
with:
|
||||||
level: warning
|
level: warning
|
||||||
|
fail_level: error
|
||||||
reporter: github-pr-review
|
reporter: github-pr-review
|
||||||
shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
|
shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
17
.gitignore
vendored
17
.gitignore
vendored
@ -1 +1,18 @@
|
|||||||
|
# Environment file (contains local settings)
|
||||||
|
.env
|
||||||
|
|
||||||
|
# Ignore data folder contents but keep structure
|
||||||
|
data/*
|
||||||
|
!data/*/
|
||||||
|
data/*/**
|
||||||
|
!data/*/.gitkeep
|
||||||
|
|
||||||
|
# Snapshot contents (generated at runtime)
|
||||||
|
snapshots/*
|
||||||
|
!snapshots/.gitkeep
|
||||||
|
|
||||||
|
# Instance compose files and registry (generated at runtime)
|
||||||
|
instances/
|
||||||
|
|
||||||
|
# ISO cache (cached ISOs for faster instance creation)
|
||||||
|
cache/
|
||||||
|
|||||||
62
CHANGELOG.md
Normal file
62
CHANGELOG.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [1.0.0] - 2026-01-30
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- **winctl.sh**: Management script for Windows Docker containers
|
||||||
|
- 20+ commands: start, stop, restart, status, logs, shell, stats, build, rebuild, list, inspect, monitor, check, refresh, open, pull, disk, snapshot, restore, clean, destroy, instances, cache, help
|
||||||
|
- Interactive menus for version selection
|
||||||
|
- Prerequisites checking (Docker, Compose, KVM, TUN, memory, disk)
|
||||||
|
- Color-coded output with professional table formatting
|
||||||
|
- Safety confirmations for destructive operations
|
||||||
|
- Support for all 22 Windows versions across 4 categories
|
||||||
|
- JSON status cache (`~/.cache/winctl/status.json`) with auto-refresh
|
||||||
|
- **Multi-instance support**: run multiple instances of the same version
|
||||||
|
- `start <version> --new` creates auto-numbered instances with allocated ports
|
||||||
|
- `start <version> --new <name>` creates named instances
|
||||||
|
- `--clone` copies data from the base version
|
||||||
|
- JSON registry (`instances/registry.json`) tracks all instances
|
||||||
|
- `instances` lists all registered instances; `destroy` removes them
|
||||||
|
- **ISO cache**: skip re-downloading ISOs for new instances
|
||||||
|
- `cache download <version>` downloads original ISOs using the container's download logic
|
||||||
|
- `cache save <version>` caches from data directory (skips rebuilt ISOs)
|
||||||
|
- Auto-restore on `start --new` copies cached ISOs before container starts
|
||||||
|
- `cache list` / `cache rm` / `cache flush` for cache management
|
||||||
|
- Rebuilt ISOs (genisoimage output) detected and skipped automatically
|
||||||
|
- **Auto-cache on stop**: `AUTO_CACHE=Y` in `.env` caches unprocessed ISOs when stopping
|
||||||
|
- **Snapshot & restore**: back up and restore VM data directories
|
||||||
|
- **Topic-based help system**: `help [commands|instances|cache|examples|config|all]`
|
||||||
|
- Interactive numbered menu in terminal mode
|
||||||
|
- Auto-disabled in pipes, CI, and batch environments
|
||||||
|
- Aligned columns using `_help_row()` with ANSI-safe formatting
|
||||||
|
- **ARM64 auto-detection**: blocks unsupported versions, shows `[x86 only]` tags
|
||||||
|
- **LAN IP detection** with remote access URLs shown on start
|
||||||
|
- **Port conflict detection** before starting containers
|
||||||
|
- **Disk usage monitoring** with per-VM and snapshot breakdowns
|
||||||
|
- Multi-version compose structure with organized folders (`compose/`)
|
||||||
|
- Environment file configuration (`.env` / `.env.example`)
|
||||||
|
- Two resource profiles: modern (8G RAM, 4 CPU) and legacy (2G RAM, 2 CPU)
|
||||||
|
- Per-version data folders under `data/`
|
||||||
|
- Pre-configured compose files for all Windows versions:
|
||||||
|
- Desktop: Win 11, 10, 8.1, 7 (with Enterprise variants)
|
||||||
|
- Legacy: Vista, XP, 2000
|
||||||
|
- Server: 2003, 2008, 2012, 2016, 2019, 2022, 2025
|
||||||
|
- Tiny: Tiny11, Tiny10
|
||||||
|
- Unique port mappings for each version (no conflicts)
|
||||||
|
- CLAUDE.md for Claude Code guidance
|
||||||
|
- WINCTL_GUIDE.md comprehensive user guide
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Default storage location changed from `./windows` to `./data/`
|
||||||
|
- Compose files now use `env_file` for centralized configuration
|
||||||
|
- Restart policy changed from `always` to `on-failure`
|
||||||
|
- `clean --data` now unregisters instances and removes compose files
|
||||||
|
|
||||||
|
### Resource Profiles
|
||||||
|
|
||||||
|
| Profile | RAM | CPU | Disk | Used By |
|
||||||
|
|---------|-----|-----|------|---------|
|
||||||
|
| Modern | 8G | 4 | 128G | Win 10/11, Server 2016+ |
|
||||||
|
| Legacy | 2G | 2 | 32G | Win 7/8, Vista, XP, 2000, Server 2003-2012, Tiny |
|
||||||
149
CLAUDE.md
Normal file
149
CLAUDE.md
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is **dockur/windows** - a Docker container that runs Windows inside QEMU with KVM acceleration. It provides automatic Windows installation with ISO downloading, VirtIO driver injection, and unattended setup via answer files.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Entry Point & Script Chain
|
||||||
|
|
||||||
|
The container starts via `/run/entry.sh` which sources scripts in sequence:
|
||||||
|
1. `start.sh` → `utils.sh` → `reset.sh` → `server.sh` → `define.sh` → `mido.sh` → `install.sh`
|
||||||
|
2. Then: `disk.sh` → `display.sh` → `network.sh` → `samba.sh` → `boot.sh` → `proc.sh` → `power.sh` → `memory.sh` → `config.sh` → `finish.sh`
|
||||||
|
3. Finally launches `qemu-system-x86_64` with constructed arguments
|
||||||
|
|
||||||
|
### Key Components
|
||||||
|
|
||||||
|
- **src/define.sh**: Version parsing, language mapping, and Windows edition detection. Maps user-friendly version strings (e.g., "11", "10l", "2022") to internal identifiers
|
||||||
|
- **src/mido.sh**: Microsoft ISO downloader - scrapes Microsoft's download portal to get direct ISO links
|
||||||
|
- **src/install.sh**: ISO extraction, image detection, driver injection, answer file customization, and ISO rebuilding using `wimlib-imagex` and `genisoimage`
|
||||||
|
- **src/samba.sh**: Configures Samba for host-guest file sharing (appears as "Shared" folder on desktop)
|
||||||
|
- **assets/*.xml**: Unattended answer files for different Windows versions
|
||||||
|
|
||||||
|
### Build System
|
||||||
|
|
||||||
|
- Base image: `qemux/qemu` (QEMU with web-based VNC viewer)
|
||||||
|
- VirtIO drivers downloaded at build time from `qemus/virtiso-whql`
|
||||||
|
- Multi-arch support: amd64 native, arm64 via `dockur/windows-arm`
|
||||||
|
|
||||||
|
### GitHub Codespaces
|
||||||
|
|
||||||
|
The `.devcontainer/` directory provides GitHub Codespaces configurations — separate from the `compose/` files used by `winctl.sh`.
|
||||||
|
|
||||||
|
- `devcontainer.json` (root): Default config, launches Windows 11 Pro
|
||||||
|
- Numbered subfolders (010–210): Alternative configs for each Windows version
|
||||||
|
- `codespaces.yml`: Shared compose file using `ghcr.io/dockur/windows`
|
||||||
|
- Runs a single VM at a time on ports 8006/3389 (no unique port mapping needed)
|
||||||
|
- Do not sync ports with `compose/` files — they serve different use cases
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Linting & Validation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ShellCheck for all shell scripts
|
||||||
|
shellcheck -x --source-path=src src/*.sh
|
||||||
|
|
||||||
|
# Dockerfile linting
|
||||||
|
hadolint Dockerfile
|
||||||
|
|
||||||
|
# XML validation (answer files)
|
||||||
|
# Uses action-pack/valid-xml in CI
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build Docker image locally
|
||||||
|
docker build -t windows .
|
||||||
|
|
||||||
|
# Build with version argument
|
||||||
|
docker build --build-arg VERSION_ARG=1.0 -t windows .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing Locally
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run container (requires KVM)
|
||||||
|
docker run -it --rm -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD}/storage:/storage" windows
|
||||||
|
|
||||||
|
# Access web viewer at http://localhost:8006
|
||||||
|
```
|
||||||
|
|
||||||
|
## CI/CD
|
||||||
|
|
||||||
|
- **check.yml**: Runs on PRs - ShellCheck, Hadolint, XML/JSON/YAML validation
|
||||||
|
- **build.yml**: Manual trigger - builds multi-arch image, pushes to Docker Hub and GHCR
|
||||||
|
- **test.yml**: Runs check.yml on PRs
|
||||||
|
|
||||||
|
ShellCheck exclusions (from CI): SC1091, SC2001, SC2002, SC2034, SC2064, SC2153, SC2317, SC2028
|
||||||
|
|
||||||
|
## Key Environment Variables
|
||||||
|
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| VERSION | "11" | Windows version (11, 10, 10l, 2022, etc.) or ISO URL |
|
||||||
|
| LANGUAGE | "en" | Installation language |
|
||||||
|
| USERNAME | "Docker" | Windows username |
|
||||||
|
| PASSWORD | "admin" | Windows password |
|
||||||
|
| DISK_SIZE | "64G" | Virtual disk size |
|
||||||
|
| RAM_SIZE | "4G" | RAM allocation |
|
||||||
|
| CPU_CORES | "2" | CPU cores |
|
||||||
|
| MANUAL | "" | Set to "Y" for manual installation |
|
||||||
|
|
||||||
|
## Git Remotes & Pull Requests
|
||||||
|
|
||||||
|
### Remotes
|
||||||
|
|
||||||
|
| Remote | Repository | Purpose |
|
||||||
|
|--------|-----------|---------|
|
||||||
|
| `origin` | `michelabboud/windows` | Personal repo, push directly to `master` |
|
||||||
|
| `fork` | `michelabboud/windows-1` | Fork of `dockur/windows`, used for PRs to upstream |
|
||||||
|
|
||||||
|
### Creating a PR to upstream
|
||||||
|
|
||||||
|
1. Push changes to a feature branch on the fork:
|
||||||
|
```bash
|
||||||
|
git push fork master:<branch-name>
|
||||||
|
```
|
||||||
|
2. Create the PR:
|
||||||
|
```bash
|
||||||
|
gh pr create --repo dockur/windows --head michelabboud:<branch-name> --base master --title "..." --body "..."
|
||||||
|
```
|
||||||
|
3. Create a matching issue:
|
||||||
|
```bash
|
||||||
|
gh issue create --repo dockur/windows --title "..." --body "..."
|
||||||
|
```
|
||||||
|
|
||||||
|
### Updating an existing PR
|
||||||
|
|
||||||
|
Push new commits to the same branch on the fork:
|
||||||
|
```bash
|
||||||
|
git push fork master:<branch-name>
|
||||||
|
```
|
||||||
|
The PR updates automatically. Update the PR description if needed:
|
||||||
|
```bash
|
||||||
|
gh pr edit <pr-number> --repo dockur/windows --body "..."
|
||||||
|
```
|
||||||
|
|
||||||
|
### Updating the GitHub release
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gh release edit <tag> --notes "..."
|
||||||
|
```
|
||||||
|
|
||||||
|
### Active PRs
|
||||||
|
|
||||||
|
| PR | Branch | Issue | Description |
|
||||||
|
|----|--------|-------|-------------|
|
||||||
|
| [#1637](https://github.com/dockur/windows/pull/1637) | `feat/winctl-management-script` | [#1639](https://github.com/dockur/windows/issues/1639) | winctl.sh management script with ARM64 support |
|
||||||
|
| [#1638](https://github.com/dockur/windows/pull/1638) | `fix/reviewdog-fail-level` | [#1640](https://github.com/dockur/windows/issues/1640) | Replace deprecated fail_on_error with fail_level in reviewdog actions |
|
||||||
|
|
||||||
|
## Adding New Windows Versions
|
||||||
|
|
||||||
|
1. Add version aliases in `src/define.sh` `parseVersion()` function
|
||||||
|
2. Create answer file in `assets/` named `{version}.xml`
|
||||||
|
3. Add driver folder mapping in `src/install.sh` `addDriver()` function
|
||||||
1272
WINCTL_GUIDE.md
Normal file
1272
WINCTL_GUIDE.md
Normal file
File diff suppressed because it is too large
Load Diff
12
compose.yml
12
compose.yml
@ -1,9 +1,17 @@
|
|||||||
|
# Default compose file - Windows 11 Pro
|
||||||
|
# For more versions, see compose/ folder
|
||||||
|
# Configure settings in .env file
|
||||||
|
|
||||||
services:
|
services:
|
||||||
windows:
|
windows:
|
||||||
image: dockurr/windows
|
image: dockurr/windows
|
||||||
container_name: windows
|
container_name: windows
|
||||||
|
env_file: .env
|
||||||
environment:
|
environment:
|
||||||
VERSION: "11"
|
VERSION: "11"
|
||||||
|
RAM_SIZE: ${MODERN_RAM_SIZE:-8G}
|
||||||
|
CPU_CORES: ${MODERN_CPU_CORES:-4}
|
||||||
|
DISK_SIZE: ${MODERN_DISK_SIZE:-128G}
|
||||||
devices:
|
devices:
|
||||||
- /dev/kvm
|
- /dev/kvm
|
||||||
- /dev/net/tun
|
- /dev/net/tun
|
||||||
@ -14,6 +22,6 @@ services:
|
|||||||
- 3389:3389/tcp
|
- 3389:3389/tcp
|
||||||
- 3389:3389/udp
|
- 3389:3389/udp
|
||||||
volumes:
|
volumes:
|
||||||
- ./windows:/storage
|
- ./data/win11:/storage
|
||||||
restart: always
|
restart: unless-stopped
|
||||||
stop_grace_period: 2m
|
stop_grace_period: 2m
|
||||||
|
|||||||
6
compose/all.yml
Normal file
6
compose/all.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- desktop.yml
|
||||||
|
- legacy.yml
|
||||||
|
- server.yml
|
||||||
|
- tiny.yml
|
||||||
6
compose/desktop.yml
Normal file
6
compose/desktop.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- desktop/win11.yml
|
||||||
|
- desktop/win10.yml
|
||||||
|
- desktop/win8.yml
|
||||||
|
- desktop/win7.yml
|
||||||
61
compose/desktop/win10.yml
Normal file
61
compose/desktop/win10.yml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win10:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win10
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "10"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8010:8006
|
||||||
|
- 3310:3389/tcp
|
||||||
|
- 3310:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win10:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win10e:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win10e
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "10e"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8014:8006
|
||||||
|
- 3314:3389/tcp
|
||||||
|
- 3314:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win10e:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win10l:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win10l
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "10l"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8015:8006
|
||||||
|
- 3315:3389/tcp
|
||||||
|
- 3315:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win10l:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
61
compose/desktop/win11.yml
Normal file
61
compose/desktop/win11.yml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win11:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win11
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "11"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8011:8006
|
||||||
|
- 3311:3389/tcp
|
||||||
|
- 3311:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win11:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win11e:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win11e
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "11e"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8012:8006
|
||||||
|
- 3312:3389/tcp
|
||||||
|
- 3312:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win11e:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win11l:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win11l
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "11l"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8013:8006
|
||||||
|
- 3313:3389/tcp
|
||||||
|
- 3313:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win11l:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
41
compose/desktop/win7.yml
Normal file
41
compose/desktop/win7.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win7:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win7
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "7u"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8007:8006
|
||||||
|
- 3307:3389/tcp
|
||||||
|
- 3307:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win7:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win7e:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win7e
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "7e"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8071:8006
|
||||||
|
- 3371:3389/tcp
|
||||||
|
- 3371:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win7e:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
41
compose/desktop/win8.yml
Normal file
41
compose/desktop/win8.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win81:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win81
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "8"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8008:8006
|
||||||
|
- 3308:3389/tcp
|
||||||
|
- 3308:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win81:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
|
|
||||||
|
win81e:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win81e
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "8e"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8081:8006
|
||||||
|
- 3381:3389/tcp
|
||||||
|
- 3381:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win81e:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
5
compose/legacy.yml
Normal file
5
compose/legacy.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- legacy/vista.yml
|
||||||
|
- legacy/winxp.yml
|
||||||
|
- legacy/win2k.yml
|
||||||
21
compose/legacy/vista.yml
Normal file
21
compose/legacy/vista.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
vista:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: vista
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "vu"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8006:8006
|
||||||
|
- 3306:3389/tcp
|
||||||
|
- 3306:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/vista:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/legacy/win2k.yml
Normal file
21
compose/legacy/win2k.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2k:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2k
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "2k"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8000:8006
|
||||||
|
- 3300:3389/tcp
|
||||||
|
- 3300:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2k:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/legacy/winxp.yml
Normal file
21
compose/legacy/winxp.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
winxp:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: winxp
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "xp"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8005:8006
|
||||||
|
- 3305:3389/tcp
|
||||||
|
- 3305:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/winxp:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
9
compose/server.yml
Normal file
9
compose/server.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- server/win2025.yml
|
||||||
|
- server/win2022.yml
|
||||||
|
- server/win2019.yml
|
||||||
|
- server/win2016.yml
|
||||||
|
- server/win2012.yml
|
||||||
|
- server/win2008.yml
|
||||||
|
- server/win2003.yml
|
||||||
21
compose/server/win2003.yml
Normal file
21
compose/server/win2003.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2003:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2003
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "2003"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8003:8006
|
||||||
|
- 3303:3389/tcp
|
||||||
|
- 3303:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2003:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2008.yml
Normal file
21
compose/server/win2008.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2008:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2008
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "2008"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8108:8006
|
||||||
|
- 3208:3389/tcp
|
||||||
|
- 3208:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2008:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2012.yml
Normal file
21
compose/server/win2012.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2012:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2012
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "2012"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8112:8006
|
||||||
|
- 3212:3389/tcp
|
||||||
|
- 3212:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2012:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2016.yml
Normal file
21
compose/server/win2016.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2016:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2016
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "2016"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8016:8006
|
||||||
|
- 3316:3389/tcp
|
||||||
|
- 3316:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2016:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2019.yml
Normal file
21
compose/server/win2019.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2019:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2019
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "2019"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8019:8006
|
||||||
|
- 3319:3389/tcp
|
||||||
|
- 3319:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2019:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2022.yml
Normal file
21
compose/server/win2022.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2022:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2022
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "2022"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8022:8006
|
||||||
|
- 3322:3389/tcp
|
||||||
|
- 3322:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2022:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/server/win2025.yml
Normal file
21
compose/server/win2025.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
win2025:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: win2025
|
||||||
|
env_file: ../../.env.modern
|
||||||
|
environment:
|
||||||
|
VERSION: "2025"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8025:8006
|
||||||
|
- 3325:3389/tcp
|
||||||
|
- 3325:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/win2025:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
4
compose/tiny.yml
Normal file
4
compose/tiny.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
include:
|
||||||
|
- tiny/tiny11.yml
|
||||||
|
- tiny/tiny10.yml
|
||||||
21
compose/tiny/tiny10.yml
Normal file
21
compose/tiny/tiny10.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
tiny10:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: tiny10
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "tiny10"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8110:8006
|
||||||
|
- 3110:3389/tcp
|
||||||
|
- 3110:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/tiny10:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
21
compose/tiny/tiny11.yml
Normal file
21
compose/tiny/tiny11.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
services:
|
||||||
|
tiny11:
|
||||||
|
image: ${WINDOWS_IMAGE:-dockurr/windows}
|
||||||
|
container_name: tiny11
|
||||||
|
env_file: ../../.env.legacy
|
||||||
|
environment:
|
||||||
|
VERSION: "tiny11"
|
||||||
|
devices:
|
||||||
|
- /dev/kvm
|
||||||
|
- /dev/net/tun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
ports:
|
||||||
|
- 8111:8006
|
||||||
|
- 3111:3389/tcp
|
||||||
|
- 3111:3389/udp
|
||||||
|
volumes:
|
||||||
|
- ../../data/tiny11:/storage
|
||||||
|
restart: ${RESTART_POLICY:-on-failure}
|
||||||
|
stop_grace_period: 2m
|
||||||
0
data/tiny10/.gitkeep
Normal file
0
data/tiny10/.gitkeep
Normal file
0
data/tiny11/.gitkeep
Normal file
0
data/tiny11/.gitkeep
Normal file
0
data/vista/.gitkeep
Normal file
0
data/vista/.gitkeep
Normal file
0
data/win10/.gitkeep
Normal file
0
data/win10/.gitkeep
Normal file
0
data/win10e/.gitkeep
Normal file
0
data/win10e/.gitkeep
Normal file
0
data/win10l/.gitkeep
Normal file
0
data/win10l/.gitkeep
Normal file
0
data/win11/.gitkeep
Normal file
0
data/win11/.gitkeep
Normal file
0
data/win11e/.gitkeep
Normal file
0
data/win11e/.gitkeep
Normal file
0
data/win11l/.gitkeep
Normal file
0
data/win11l/.gitkeep
Normal file
0
data/win2003/.gitkeep
Normal file
0
data/win2003/.gitkeep
Normal file
0
data/win2008/.gitkeep
Normal file
0
data/win2008/.gitkeep
Normal file
0
data/win2012/.gitkeep
Normal file
0
data/win2012/.gitkeep
Normal file
0
data/win2016/.gitkeep
Normal file
0
data/win2016/.gitkeep
Normal file
0
data/win2019/.gitkeep
Normal file
0
data/win2019/.gitkeep
Normal file
0
data/win2022/.gitkeep
Normal file
0
data/win2022/.gitkeep
Normal file
0
data/win2025/.gitkeep
Normal file
0
data/win2025/.gitkeep
Normal file
0
data/win2k/.gitkeep
Normal file
0
data/win2k/.gitkeep
Normal file
0
data/win7/.gitkeep
Normal file
0
data/win7/.gitkeep
Normal file
0
data/win7e/.gitkeep
Normal file
0
data/win7e/.gitkeep
Normal file
0
data/win81/.gitkeep
Normal file
0
data/win81/.gitkeep
Normal file
0
data/win81e/.gitkeep
Normal file
0
data/win81e/.gitkeep
Normal file
0
data/winxp/.gitkeep
Normal file
0
data/winxp/.gitkeep
Normal file
171
readme.md
171
readme.md
@ -70,6 +70,153 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
|
|||||||
|
|
||||||
[](https://winboat.app)
|
[](https://winboat.app)
|
||||||
|
|
||||||
|
## Multi-Version Setup 🗂️
|
||||||
|
|
||||||
|
This repository includes pre-configured compose files for all Windows versions with optimized resource profiles.
|
||||||
|
|
||||||
|
### Management Script (winctl.sh)
|
||||||
|
|
||||||
|
Use `winctl.sh` for easy container management:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check prerequisites and detected architecture
|
||||||
|
./winctl.sh check
|
||||||
|
|
||||||
|
# Start a container (interactive menu if no version specified)
|
||||||
|
./winctl.sh start win11
|
||||||
|
./winctl.sh start # Shows interactive menu
|
||||||
|
|
||||||
|
# View status of all containers
|
||||||
|
./winctl.sh status
|
||||||
|
|
||||||
|
# Stop containers (with confirmation)
|
||||||
|
./winctl.sh stop win11
|
||||||
|
./winctl.sh stop all # Stop all running
|
||||||
|
|
||||||
|
# View logs
|
||||||
|
./winctl.sh logs win11 -f
|
||||||
|
|
||||||
|
# List all available versions (shows [x86 only] on ARM64)
|
||||||
|
./winctl.sh list
|
||||||
|
./winctl.sh list desktop # Filter by category
|
||||||
|
|
||||||
|
# Real-time monitoring dashboard
|
||||||
|
./winctl.sh monitor
|
||||||
|
|
||||||
|
# Rebuild container (preserves data)
|
||||||
|
./winctl.sh rebuild win11
|
||||||
|
|
||||||
|
# Open web viewer in browser
|
||||||
|
./winctl.sh open win11
|
||||||
|
|
||||||
|
# Pull latest Docker image
|
||||||
|
./winctl.sh pull
|
||||||
|
|
||||||
|
# Show disk usage per VM
|
||||||
|
./winctl.sh disk
|
||||||
|
|
||||||
|
# Snapshot and restore VM data
|
||||||
|
./winctl.sh snapshot win11 before-update
|
||||||
|
./winctl.sh restore win11 before-update
|
||||||
|
|
||||||
|
# Clean up stopped containers
|
||||||
|
./winctl.sh clean
|
||||||
|
|
||||||
|
# Multi-instance support
|
||||||
|
./winctl.sh start winxp --new # Create winxp-1 with auto ports
|
||||||
|
./winctl.sh start winxp --new lab # Create winxp-lab
|
||||||
|
./winctl.sh start winxp --new lab --clone # Clone data from base
|
||||||
|
./winctl.sh instances # List all instances
|
||||||
|
./winctl.sh destroy winxp-lab # Remove instance
|
||||||
|
|
||||||
|
# ISO cache (skip re-downloads for new instances)
|
||||||
|
./winctl.sh cache download winxp # Download original ISO to cache
|
||||||
|
./winctl.sh cache list # Show cached ISOs
|
||||||
|
./winctl.sh start winxp --new # New instance uses cached ISO
|
||||||
|
./winctl.sh cache rm winxp # Remove cached winxp ISO
|
||||||
|
./winctl.sh cache flush # Clear all cached ISOs
|
||||||
|
|
||||||
|
# Full help (includes ARM64 info)
|
||||||
|
./winctl.sh help
|
||||||
|
```
|
||||||
|
|
||||||
|
### Quick Start (Manual)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Run specific version
|
||||||
|
docker compose -f compose/desktop/win11.yml up win11
|
||||||
|
docker compose -f compose/legacy/winxp.yml up winxp
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
Two pre-configured env files with optimized defaults:
|
||||||
|
|
||||||
|
| File | RAM | CPU | Disk | Used By |
|
||||||
|
|------|-----|-----|------|---------|
|
||||||
|
| `.env.modern` | 8G | 4 | 128G | Win 10/11, Server 2016+ |
|
||||||
|
| `.env.legacy` | 2G | 2 | 32G | Win 7/8, Vista, XP, 2000, Server 2003-2012, Tiny |
|
||||||
|
|
||||||
|
Edit these files to customize:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# .env.modern or .env.legacy
|
||||||
|
RAM_SIZE=8G
|
||||||
|
CPU_CORES=4
|
||||||
|
DISK_SIZE=128G
|
||||||
|
USERNAME=docker
|
||||||
|
PASSWORD=admin
|
||||||
|
LANGUAGE=en
|
||||||
|
RESTART_POLICY=on-failure # Options: no, on-failure, always, unless-stopped
|
||||||
|
```
|
||||||
|
|
||||||
|
> 📖 See [WINCTL_GUIDE.md](WINCTL_GUIDE.md) for complete documentation, usage scenarios, and troubleshooting.
|
||||||
|
|
||||||
|
### Folder Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
.env.modern # Modern system defaults (8G RAM)
|
||||||
|
.env.legacy # Legacy system defaults (2G RAM)
|
||||||
|
compose/
|
||||||
|
├── desktop/ # Win 11, 10, 8.1, 7
|
||||||
|
├── legacy/ # Vista, XP, 2000
|
||||||
|
├── server/ # Server 2003-2025
|
||||||
|
└── tiny/ # Tiny10, Tiny11
|
||||||
|
|
||||||
|
instances/ # Generated instance files
|
||||||
|
├── registry.json # Instance registry
|
||||||
|
└── *.yml # Instance compose files
|
||||||
|
|
||||||
|
data/ # VM storage (per-version folders)
|
||||||
|
├── win11/
|
||||||
|
├── winxp/
|
||||||
|
├── winxp-1/ # Instance data
|
||||||
|
└── ...
|
||||||
|
|
||||||
|
snapshots/ # VM data snapshots
|
||||||
|
├── win11/
|
||||||
|
└── ...
|
||||||
|
|
||||||
|
cache/ # ISO cache (skip re-downloads)
|
||||||
|
├── winxp/
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Port Reference
|
||||||
|
|
||||||
|
| Version | Web UI | RDP |
|
||||||
|
|---------|--------|-----|
|
||||||
|
| win11 | 8011 | 3311 |
|
||||||
|
| win10 | 8010 | 3310 |
|
||||||
|
| win81 | 8008 | 3308 |
|
||||||
|
| win7 | 8007 | 3307 |
|
||||||
|
| vista | 8006 | 3306 |
|
||||||
|
| winxp | 8005 | 3305 |
|
||||||
|
| win2k | 8000 | 3300 |
|
||||||
|
| win2025 | 8025 | 3325 |
|
||||||
|
| win2022 | 8022 | 3322 |
|
||||||
|
| tiny11 | 8111 | 3111 |
|
||||||
|
|
||||||
## FAQ 💬
|
## FAQ 💬
|
||||||
|
|
||||||
### How do I use it?
|
### How do I use it?
|
||||||
@ -122,6 +269,30 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
|
|||||||
> [!TIP]
|
> [!TIP]
|
||||||
> To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/).
|
> To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/).
|
||||||
|
|
||||||
|
### How do I run on ARM64?
|
||||||
|
|
||||||
|
The `winctl.sh` script auto-detects your CPU architecture. On ARM64 systems (e.g., Apple Silicon, Ampere), only Windows 10 and 11 variants are supported:
|
||||||
|
|
||||||
|
| **Value** | **Version** |
|
||||||
|
|---|---|
|
||||||
|
| `11` | Windows 11 Pro |
|
||||||
|
| `11l` | Windows 11 LTSC |
|
||||||
|
| `11e` | Windows 11 Enterprise |
|
||||||
|
| `10` | Windows 10 Pro |
|
||||||
|
| `10l` | Windows 10 LTSC |
|
||||||
|
| `10e` | Windows 10 Enterprise |
|
||||||
|
|
||||||
|
To configure, set the ARM64 image in your `.env.modern` or `.env.legacy` file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
WINDOWS_IMAGE=dockurr/windows-arm
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will automatically:
|
||||||
|
- Block unsupported versions with a clear error on `start`
|
||||||
|
- Show `[x86 only]` tags next to unsupported versions on `list`
|
||||||
|
- Display your detected architecture on `check`
|
||||||
|
|
||||||
### How do I change the storage location?
|
### How do I change the storage location?
|
||||||
|
|
||||||
To change the storage location, include the following bind mount in your compose file:
|
To change the storage location, include the following bind mount in your compose file:
|
||||||
|
|||||||
0
snapshots/.gitkeep
Normal file
0
snapshots/.gitkeep
Normal file
Loading…
Reference in New Issue
Block a user