3e779be6f3
CI / lint (push) Failing after 13m4s
CI / test (3.11, ubuntu-latest) (push) Failing after 2m4s
CI / test (3.13, ubuntu-latest) (push) Successful in 13m30s
CI / test (3.14, ubuntu-latest) (push) Successful in 17m21s
CI / test (3.12, ubuntu-latest) (push) Successful in 17m55s
CI / discover-apps-ps (push) Successful in 1m56s
CI / test (3.9, ubuntu-latest) (push) Successful in 13m17s
CI / test (3.10, ubuntu-latest) (push) Successful in 26m21s
CI / audit (push) Successful in 13m38s
Deploy site / deploy (push) Has been cancelled
CI / test (3.14, ubuntu-24.04-arm) (push) Has been cancelled
169 lines
14 KiB
HTML
169 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<!-- SPDX-License-Identifier: MIT — winpodx.org/get-started. No trackers. -->
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Get started — WinPodX</title>
|
||
<meta name="description" content="Install WinPodX: one-line curl, or native packages for openSUSE, Fedora, Debian/Ubuntu, RHEL, Arch, NixOS, and AppImage. Requirements + first-time setup.">
|
||
<link rel="icon" type="image/svg+xml" href="assets/winpodx-icon.svg">
|
||
<link rel="canonical" href="https://www.winpodx.org/get-started.html">
|
||
<meta name="theme-color" content="#0d1117">
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body>
|
||
|
||
<svg class="sprite" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
|
||
<symbol id="i-window" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 9h18"/></symbol>
|
||
<symbol id="i-swap" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M17 1l4 4-4 4"/><path d="M3 11V9a4 4 0 0 1 4-4h14"/><path d="M7 23l-4-4 4-4"/><path d="M21 13v2a4 4 0 0 1-4 4H3"/></symbol>
|
||
<symbol id="i-bolt" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9z"/></symbol>
|
||
<symbol id="i-hdd" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="12" x2="2" y2="12"/><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/><line x1="6" y1="16" x2="6.01" y2="16"/><line x1="10" y1="16" x2="10.01" y2="16"/></symbol>
|
||
<symbol id="i-activity" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></symbol>
|
||
<symbol id="i-lock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></symbol>
|
||
<symbol id="i-download" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/></symbol>
|
||
<symbol id="i-grid" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></symbol>
|
||
<symbol id="i-cursor" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.5 18 2.5-7.5L21 11z"/></symbol>
|
||
<symbol id="i-github" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"/></symbol>
|
||
<symbol id="i-globe" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></symbol>
|
||
</svg>
|
||
|
||
|
||
<header class="nav">
|
||
<div class="wrap">
|
||
<a class="brand" href="/" style="color:var(--text)"><img src="assets/winpodx-icon.svg" alt="">WinPodX</a>
|
||
<nav class="links">
|
||
<a href="features.html" data-i18n="nav.features">Features</a>
|
||
<a href="get-started.html" class="active" data-i18n="nav.get_started">Get started</a>
|
||
<a href="faq.html" data-i18n="nav.faq">FAQ</a>
|
||
<a target="_blank" rel="noopener noreferrer" class="gh" href="https://github.com/kernalix7/winpodx"><svg class="isvg" width="16" height="16" viewBox="0 0 24 24"><use href="#i-github"/></svg> GitHub</a>
|
||
<span class="lang-wrap"><svg class="isvg" width="15" height="15" viewBox="0 0 24 24"><use href="#i-globe"/></svg><select id="lang-select" aria-label="Language"></select></span>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
|
||
<main>
|
||
<section class="page-hero wrap">
|
||
<span class="eyebrow" data-i18n="gs.hero.eyebrow">Get started</span>
|
||
<h1 data-i18n="gs.hero.h1">Up and running in one line</h1>
|
||
<p data-i18n-html="gs.hero.sub">The curl installer works on every supported distro and runs setup for you. Or use your native package manager and run <code>winpodx setup</code> once.</p>
|
||
</section>
|
||
|
||
<section class="wrap">
|
||
<h2 data-i18n="gs.install.title">1 · Install</h2>
|
||
<p class="lead" data-i18n="gs.install.lead">The one-liner installs WinPodX, runs setup, and waits for the first Windows boot (~5–10 min).</p>
|
||
<div class="install">
|
||
<div class="label" data-i18n="gs.install.label">Any supported distro</div>
|
||
<div class="code"><button class="copy" data-copy="curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash">Copy</button><span class="prompt">$ </span>curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash</div>
|
||
</div>
|
||
<div class="note" style="border-left-color:var(--blue)" data-i18n-html="gs.install.flags">
|
||
<b>Optional installer flags</b> (download <code>install.sh</code> and pass them, or run it locally): <code>--storage-dir <path></code> puts the Windows VM disk on a roomier partition instead of <code>~/.local/share/winpodx/storage</code>, and <code>--win-iso <path></code> installs from a Windows ISO you already have so it skips the ~5–8 GB download. Both apply to fresh installs.
|
||
</div>
|
||
|
||
<h2 class="subhead" data-i18n="gs.pkg.title">Or via a package manager</h2>
|
||
<div class="dist">
|
||
<div class="item"><h3 data-i18n="gs.pkg.opensuse">openSUSE (Tumbleweed / Leap / Slowroll)</h3>
|
||
<div class="code"><button class="copy" data-copy="sudo zypper addrepo https://download.opensuse.org/repositories/home:/Kernalix7/openSUSE_Tumbleweed/home:Kernalix7.repo
|
||
sudo zypper install winpodx">Copy</button>sudo zypper addrepo …home:Kernalix7.repo
|
||
sudo zypper install winpodx</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.fedora">Fedora 42 / 43 / 44</h3>
|
||
<div class="code"><button class="copy" data-copy="sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/Kernalix7/Fedora_43/home:Kernalix7.repo
|
||
sudo dnf install winpodx">Copy</button>sudo dnf config-manager addrepo --from-repofile=…
|
||
sudo dnf install winpodx</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.arch">Arch / Manjaro</h3>
|
||
<div class="code"><button class="copy" data-copy="yay -S winpodx">Copy</button><span class="prompt">$ </span>yay -S winpodx</div>
|
||
<div class="code"><button class="copy" data-copy="yay -S winpodx-git">Copy</button><span class="prompt">$ </span>yay -S winpodx-git</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.nixos">NixOS</h3>
|
||
<div class="code"><button class="copy" data-copy="nix run github:kernalix7/winpodx">Copy</button><span class="prompt">$ </span>nix run github:kernalix7/winpodx</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.debian">Debian / Ubuntu (.deb)</h3>
|
||
<div class="code"><button class="copy" data-copy="sudo apt install ./winpodx_<version>_all_debian13.deb">Copy</button><span class="prompt">$ </span>sudo apt install ./winpodx_<version>_all_debian13.deb</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.rhel">AlmaLinux / Rocky / RHEL (.rpm)</h3>
|
||
<div class="code"><button class="copy" data-copy="sudo dnf install ./winpodx-<version>-0.noarch.el10.rpm">Copy</button><span class="prompt">$ </span>sudo dnf install ./winpodx-<version>-0.noarch.el10.rpm</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.appimage">AppImage (any distro)</h3>
|
||
<div class="code"><button class="copy" data-copy="chmod +x winpodx-*-x86_64.AppImage
|
||
./winpodx-*-x86_64.AppImage setup">Copy</button>chmod +x winpodx-*-x86_64.AppImage
|
||
./winpodx-*-x86_64.AppImage setup</div></div>
|
||
<div class="item"><h3 data-i18n="gs.pkg.uninstall">Uninstall</h3>
|
||
<div class="code"><button class="copy" data-copy="curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/uninstall.sh | bash -s -- --confirm">Copy</button>curl -fsSL …/uninstall.sh | bash -s -- --confirm</div></div>
|
||
</div>
|
||
<div class="note" style="border-left-color:var(--blue)" data-i18n-html="gs.install.note">
|
||
<b>After a package / AppImage install</b>, run <code>winpodx setup</code> once to generate the
|
||
config + compose and confirm host deps — package installs ship the binary only, so they don't
|
||
kick off a 10-minute Windows download out of the blue. The curl one-liner does this for you.
|
||
</div>
|
||
</section>
|
||
|
||
<section class="alt"><div class="wrap">
|
||
<h2 data-i18n="gs.setup.title">2 · First-time setup</h2>
|
||
<p class="lead" data-i18n="gs.setup.lead">Already used the curl one-liner? It ran setup — skip to launch.</p>
|
||
<div class="dist">
|
||
<div class="item"><h3 data-i18n="gs.setup.auto.title">Auto (host-detected defaults)</h3>
|
||
<div class="code"><button class="copy" data-copy="winpodx setup">Copy</button><span class="prompt">$ </span>winpodx setup</div></div>
|
||
<div class="item"><h3 data-i18n="gs.setup.wizard.title">Interactive wizard</h3>
|
||
<div class="code"><button class="copy" data-copy="winpodx setup --customize">Copy</button><span class="prompt">$ </span>winpodx setup --customize</div></div>
|
||
</div>
|
||
<p class="lead lead-left" data-i18n-html="gs.setup.body">
|
||
Setup writes <code>~/.config/winpodx.toml</code> + <code>compose.yaml</code>, registers the GUI launcher,
|
||
and confirms FreeRDP + Podman/Docker + KVM. The first app launch then provisions the pod and reaches a usable
|
||
RDP session in ~5–10 min.</p>
|
||
<div class="install">
|
||
<div class="label" data-i18n="gs.setup.launch.label">Launch (first run ~5–10 min, then near-instant)</div>
|
||
<div class="code"><button class="copy" data-copy="winpodx app run desktop
|
||
winpodx pod wait-ready --logs">Copy</button>winpodx app run desktop <span class="code-comment" data-i18n="gs.setup.cmt.first"># first launch</span>
|
||
winpodx pod wait-ready --logs <span class="code-comment" data-i18n="gs.setup.cmt.watch"># watch progress</span></div>
|
||
</div>
|
||
</div></section>
|
||
|
||
<section class="wrap">
|
||
<h2 data-i18n="gs.req.title">3 · Requirements</h2>
|
||
<div class="feat">
|
||
<div class="block">
|
||
<h3 data-i18n="gs.req.virt.title">Hardware virtualization</h3>
|
||
<p data-i18n-html="gs.req.virt.body">An x86_64 or aarch64 CPU with virtualization extensions (VT-x / AMD-V / EL2), and access to <code>/dev/kvm</code>. WinPodX runs Windows in a KVM-backed container — without KVM the install completes but Windows never boots.</p>
|
||
</div>
|
||
<div class="block">
|
||
<h3 data-i18n="gs.req.mem.title">Memory & disk</h3>
|
||
<p data-i18n-html="gs.req.mem.body">8 GB+ host RAM (12 GB+ recommended) and ~30 GB free disk for the Windows image. Setup auto-sizes the VM's RAM to your host — a 24 GB+ host now gives the VM 8 GB by default; change it any time with <code>winpodx config set pod.ram_gb 8</code>.</p>
|
||
</div>
|
||
<div class="block">
|
||
<h3 data-i18n="gs.req.rt.title">Container runtime + FreeRDP</h3>
|
||
<p data-i18n-html="gs.req.rt.body">A host container runtime (<code>podman</code> ≥ 4 recommended; <code>docker</code> also supported), a compose provider (the <code>.deb</code> now pulls in <code>podman-compose</code>, and setup fails loudly with the package to install if none is found), and FreeRDP 3+. <code>winpodx setup-host</code> fixes kvm-group + <code>/etc/subuid</code> / <code>subgid</code> via one <code>pkexec</code> prompt; <code>winpodx doctor</code> surfaces anything still missing.</p>
|
||
</div>
|
||
</div>
|
||
<p class="lead cta-lead">
|
||
<a target="_blank" rel="noopener noreferrer" class="btn primary" href="https://github.com/kernalix7/winpodx/blob/main/docs/INSTALL.md" data-i18n="gs.req.docs_btn">Full install docs →</a>
|
||
</p>
|
||
</section>
|
||
</main>
|
||
|
||
<footer>
|
||
<div class="wrap">
|
||
<div class="cols">
|
||
<div><span class="brand" style="font-size:16px;font-weight:700;color:var(--text)">WinPodX</span>
|
||
<div class="footer-tagline" data-i18n="footer.tagline">Windows apps, as native Linux citizens.</div></div>
|
||
<div class="links">
|
||
<a href="features.html">Features</a><a href="get-started.html">Get started</a><a href="faq.html">FAQ</a>
|
||
<a target="_blank" rel="noopener noreferrer" href="https://github.com/kernalix7/winpodx">GitHub</a>
|
||
<a target="_blank" rel="noopener noreferrer" href="https://github.com/kernalix7/winpodx/releases">Releases</a>
|
||
<a target="_blank" rel="noopener noreferrer" href="https://github.com/sponsors/kernalix7">Sponsor</a>
|
||
</div>
|
||
</div>
|
||
<div class="legal" data-i18n-html="footer.legal">MIT licensed — Kim DaeHyun · Powered by
|
||
<a target="_blank" rel="noopener noreferrer" href="https://github.com/dockur/windows">dockur/windows</a> + <a target="_blank" rel="noopener noreferrer" href="https://www.freerdp.com/">FreeRDP</a>.
|
||
Not affiliated with Microsoft.</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<script>
|
||
document.querySelectorAll("button.copy").forEach(function (b) {
|
||
b.addEventListener("click", function () {
|
||
navigator.clipboard.writeText(b.dataset.copy).then(function () {
|
||
var t = b.textContent; b.textContent = "Copied"; setTimeout(function () { b.textContent = t; }, 1500);
|
||
});
|
||
});
|
||
});
|
||
</script>
|
||
<script src="lang/translations.js"></script>
|
||
<script src="i18n.js"></script>
|
||
</body>
|
||
</html>
|