<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[🚀 vLLM: community package now available]]></title><description><![CDATA[<blockquote>
<p dir="auto"><strong>TL;DR:</strong> vLLM is the inference server with the most widely supported OpenAI-compatible API in the self-hosted world. It is now packaged for Cloudron: one install serves one model at <code>https://&lt;location&gt;/v1</code> behind a generated API key. CPU inference, honestly framed. Built and tested on Cloudron 10; unofficial and community-maintained.</p>
</blockquote>
<h3>Links</h3>
<ul>
<li>
<p dir="auto"><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3e0.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--house" style="height:23px;width:auto;vertical-align:middle" title="🏠" alt="🏠" /> Project homepage: <a href="https://docs.vllm.ai" target="_blank" rel="noopener noreferrer nofollow ugc">https://docs.vllm.ai</a></p>
</li>
<li>
<p dir="auto"><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e6.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--package" style="height:23px;width:auto;vertical-align:middle" title="📦" alt="📦" /> Upstream repo: <a href="https://github.com/vllm-project/vllm" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/vllm-project/vllm</a></p>
</li>
<li>
<p dir="auto">🧱 Cloudron package repo: <a href="https://github.com/OrcVole/vllm-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/vllm-cloudron</a></p>
</li>
<li>
<p dir="auto"><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f5c2.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--card_index_dividers" style="height:23px;width:auto;vertical-align:middle" title="🗂" alt="🗂" />️ Also listed in the Community App Store: <a href="https://ca.cloudron.io/" target="_blank" rel="noopener noreferrer nofollow ugc">https://ca.cloudron.io/</a></p>
</li>
</ul>
<p dir="auto">There is no web UI beyond a small landing page: this is an API server whose clients are your other apps (OpenWebUI, LibreChat, gateways, editors, scripts).</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e5.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--inbox_tray" style="height:23px;width:auto;vertical-align:middle" title="📥" alt="📥" /> How to install</h3>
<p dir="auto">The easiest way is the dashboard: click the <strong>Add custom app</strong> dropdown (top right in the App Store) and choose <strong>Community app</strong>, then paste this URL into the box. Apps installed this way receive automatic updates.</p>
<p dir="auto"><img src="/assets/uploads/files/1782552307466-community-package.jpeg" alt="community-package.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1782552321764-cloudronversions.jpeg" alt="cloudronversions.jpeg" class=" img-fluid img-markdown" /></p>
<pre><code>https://raw.githubusercontent.com/OrcVole/vllm-cloudron/main/CloudronVersions.json
</code></pre>
<p dir="auto">Or with the CLI:</p>
<pre><code class="language-bash">cloudron install \
  --versions-url https://raw.githubusercontent.com/OrcVole/vllm-cloudron/main/CloudronVersions.json \
  --location vllm.example.com
</code></pre>
<p dir="auto"><strong>Minimums:</strong> a 10 GB memory limit (measured, not guessed: the default model idles at around 7.4 GB because its cache is preallocated) and the localstorage addon only. The README lists the CPU requirements. First boot downloads the default model (Qwen3 0.6B, about 1.5 GB) before the API answers; the app reports healthy immediately and <code>/ready</code> returns 200 once the model is loaded.</p>
<p dir="auto"><strong>First run:</strong> no login, no SSO. A single API key is generated on first boot; open a Terminal for the app and run <code>cat /app/data/.secrets/keys.env</code>. Send it as <code>Authorization: Bearer &lt;key&gt;</code> to everything under <code>/v1</code>. Change the model by setting <code>LLM_MODEL</code> in the app's Environment.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f464.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--bust_in_silhouette" style="height:23px;width:auto;vertical-align:middle" title="👤" alt="👤" /> For users</h3>
<p dir="auto"><strong>Why try it:</strong> a fully self-hosted OpenAI endpoint on the server you already run, for integrations, automations, and private processing of text that must not leave your box.</p>
<p dir="auto">What you get: <code>/v1/chat/completions</code>, <code>/v1/completions</code>, <code>/v1/models</code>, Prometheus metrics, streaming that works through the platform proxy, and model weights cached outside your backups, so a large model never bloats a nightly backup.</p>
<p dir="auto"><strong>Speed Expectations on CPU:</strong> Cloudron supports CPU inference, and it is deliberate rather than fast. Expect on the order of a token per second on the small default model; the README carries measured figures and tuning guidance. Always use <code>"stream": true</code>, because a long non-streamed completion will hit the platform's 60 second proxy timeout by design.</p>
<p dir="auto">Good fit if you want a private OpenAI-compatible backend for your Cloudron AI stack. Probably not the right choice if you want fast interactive chat; pair a chat frontend with GPU inference elsewhere for that.</p>
<h3>🧰 For packagers: what we learned</h3>
<p dir="auto"><strong>What helped:</strong> upstream ships prebuilt CPU wheels attached to GitHub releases, pinnable by exact URL, plus an official CPU Docker image; sibling packages for embeddings and reranking provided the whole shape (generated key, an nginx immediate-health front end, the model cache layout).</p>
<p dir="auto"><strong>What was tricky:</strong> vLLM binds its HTTP port only after the model loads, so first boot needs an nginx shim answering <code>/health</code> immediately or the install grace window kills the app. A model's declared context length can exceed the cache budget and abort engine start, so the package caps context explicitly. <code>VLLM_*</code> is upstream's reserved environment namespace, so package settings use an <code>LLM_</code> prefix. And uv cannot resolve the release wheel's exact setuptools pin against the PyTorch CPU index, so that one step uses pip.</p>
<p dir="auto"><strong>Still rough:</strong> the versions-channel update path from 0.1.0 to a future release has not run yet (a single entry so far), and multi-model serving is one instance per model by upstream design.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6e0.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--hammer_and_wrench" style="height:23px;width:auto;vertical-align:middle" title="🛠" alt="🛠" />️ For the Cloudron team</h3>
<p dir="auto"><strong>Maintenance burden:</strong> upstream releases roughly fortnightly; the package tracks minor releases monthly and says so. The package is thin: a venv of the pinned wheel on cloudron/base, nginx, and a start script.</p>
<p dir="auto"><strong>Why it suits the App Store:</strong> vLLM is the backend that third-party AI tools document first, and it completes the platform's AI story alongside the official Ollama and OpenWebUI apps.</p>
<p dir="auto"><strong>Friction worth knowing:</strong> GPU passthrough remains the platform gap for every AI package; Docker has shipped the Container Device Interface natively since 25.x and Cloudron already runs 28.x, so the historical patched-runtime objection no longer applies, and topic 12401 has a concrete community proposal waiting. A backup-exclusion primitive for reproducible multi-gigabyte caches would also help every AI package; persistentDirs works but is all-or-nothing per path. And the 60 second proxy timeout against non-streamed LLM responses is a recurring integration trap worth a docs note.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4bb.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--computer" style="height:23px;width:auto;vertical-align:middle" title="💻" alt="💻" /> For vLLM's developers</h3>
<p dir="auto">Three small things would make packaging even easier: a documented liveness endpoint that answers before model load (the current <code>/health</code> conflates liveness and readiness, forcing packagers to front the server); official CPU performance expectations and memory guidance for small models, so self-hosters can size before installing; and a stated policy on the <code>VLLM_*</code> environment namespace, since the boot-time warning for unknown variables surprises anyone wrapping the server.</p>
<p dir="auto">Package source and PRs welcome: <a href="https://github.com/OrcVole/vllm-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/vllm-cloudron</a>. Happy to co-maintain.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f513.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--unlock" style="height:23px;width:auto;vertical-align:middle" title="🔓" alt="🔓" /> Unlocks / <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--link" style="height:23px;width:auto;vertical-align:middle" title="🔗" alt="🔗" /> Synergies</h3>
<p dir="auto">Now you can point any OpenAI-compatible client at your own box.</p>
<p dir="auto"><strong>vLLM + OpenWebUI:</strong> add an OpenAI connection with base URL <code>https://vllm.example.com/v1</code> and the key; a private chat backend with no external calls.</p>
<p dir="auto"><strong>vLLM + an AI gateway:</strong> one governed endpoint and one key for every client, with vLLM as a named backend; verified working with agentgateway, including streamed completions.</p>
<p dir="auto"><strong>vLLM + TEI + Qdrant:</strong> generation, embeddings, and vector storage, all self-hosted on one Cloudron.</p>
<p dir="auto">Feedback, bug reports, and "works on my install" confirmations are all welcome below. <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f64f.png?v=1938083678c" class="not-responsive emoji emoji-android emoji--pray" style="height:23px;width:auto;vertical-align:middle" title="🙏" alt="🙏" /></p>
]]></description><link>https://forum.cloudron.io/topic/15757/vllm-community-package-now-available</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 20:50:18 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/15757.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Jul 2026 18:00:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 🚀 vLLM: community package now available on Thu, 30 Jul 2026 18:01:24 GMT]]></title><description><![CDATA[<p dir="auto">If this post is a bit long, please let us know!</p>
]]></description><link>https://forum.cloudron.io/post/127498</link><guid isPermaLink="true">https://forum.cloudron.io/post/127498</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Thu, 30 Jul 2026 18:01:24 GMT</pubDate></item></channel></rss>