<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deployment on PrintMaster Docs</title><link>https://docs.printmaster.work/deployment/</link><description>Recent content in Deployment on PrintMaster Docs</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://docs.printmaster.work/deployment/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker Deployment</title><link>https://docs.printmaster.work/deployment/docker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.printmaster.work/deployment/docker/</guid><description>&lt;p&gt;Deploy PrintMaster Server using Docker containers with multi-architecture support.&lt;/p&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --name printmaster-server &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; -p 9443:9443 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; -v printmaster-data:/var/lib/printmaster/server &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; -e &lt;span class="nv"&gt;ADMIN_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-secure-password &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; ghcr.io/printmaster-org/printmaster-server:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Access at &lt;code&gt;https://localhost:9443&lt;/code&gt; with username &lt;code&gt;admin&lt;/code&gt;. Standalone mode is HTTPS-only with a self-signed certificate by default; HTTP &lt;code&gt;9090&lt;/code&gt; is a reverse-proxy backend, not the default listener.&lt;/p&gt;
&lt;p&gt;Set a strong bootstrap password before exposing the server. At every startup, &lt;code&gt;ADMIN_USER&lt;/code&gt; (default &lt;code&gt;admin&lt;/code&gt;) is created only if that username is absent. &lt;code&gt;ADMIN_PASSWORD&lt;/code&gt; does not reset an existing account&amp;rsquo;s password or role.&lt;/p&gt;</description></item><item><title>PostgreSQL and TimescaleDB Upgrades</title><link>https://docs.printmaster.work/deployment/database-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.printmaster.work/deployment/database-upgrade/</guid><description>&lt;p&gt;PrintMaster&amp;rsquo;s Compose examples use &lt;code&gt;timescale/timescaledb:latest-pg18&lt;/code&gt; for new
deployments. The server supports PostgreSQL 18 and TimescaleDB through the
standard &lt;code&gt;pgx&lt;/code&gt; driver and TimescaleDB APIs.&lt;/p&gt;
&lt;h2 id="important-warning"&gt;Important warning&lt;/h2&gt;
&lt;p&gt;Changing &lt;code&gt;latest-pg15&lt;/code&gt; to &lt;code&gt;latest-pg18&lt;/code&gt; while keeping the existing
&lt;code&gt;/var/lib/postgresql&lt;/code&gt; volume will not perform a PostgreSQL major upgrade.
PostgreSQL 15 and 18 use incompatible data-directory formats. The container
will normally refuse to start, and deleting the volume would destroy data.&lt;/p&gt;
&lt;p&gt;For PG18, mount the volume at &lt;code&gt;/var/lib/postgresql&lt;/code&gt;, not
&lt;code&gt;/var/lib/postgresql/data&lt;/code&gt;. The PG18 image manages its version-specific data
directory below that root.&lt;/p&gt;</description></item><item><title>Unraid Deployment</title><link>https://docs.printmaster.work/deployment/unraid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.printmaster.work/deployment/unraid/</guid><description>&lt;p&gt;Deploy PrintMaster Server on Unraid using the Docker container.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="installation-methods"&gt;Installation Methods&lt;/h2&gt;
&lt;h3 id="method-1-community-applications-recommended"&gt;Method 1: Community Applications (Recommended)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;strong&gt;Community Applications&lt;/strong&gt; plugin if not already installed&lt;/li&gt;
&lt;li&gt;Search for &amp;ldquo;PrintMaster Server&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configure settings (see below)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Apply&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="method-2-manual-docker-setup"&gt;Method 2: Manual Docker Setup&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Docker&lt;/strong&gt; tab in Unraid&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add Container&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Configure:&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Setting&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Name&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;PrintMaster-Server&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Repository&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;ghcr.io/printmaster-org/printmaster-server:latest&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Network Type&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Bridge&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Port&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;9090&lt;/code&gt; → &lt;code&gt;9090&lt;/code&gt; (TCP)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Volume&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/mnt/user/appdata/printmaster-server/data&lt;/code&gt; → &lt;code&gt;/var/lib/printmaster/server&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Volume&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/mnt/user/appdata/printmaster-server/logs&lt;/code&gt; → &lt;code&gt;/var/log/printmaster/server&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;h3 id="essential-settings"&gt;Essential Settings&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Setting&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;HTTP Port&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;9090&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Web interface and API&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Data Directory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/mnt/user/appdata/printmaster-server/data&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Database storage&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Logs Directory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/mnt/user/appdata/printmaster-server/logs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Application logs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Timezone&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Your timezone (e.g., &lt;code&gt;America/New_York&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;For correct timestamps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="environment-variables"&gt;Environment Variables&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;BIND_ADDRESS&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0.0.0.0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Allow external access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;BEHIND_PROXY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Behind Nginx Proxy Manager?&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;info&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TZ&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;America/New_York&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Your timezone&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;PM_DISABLE_SELFUPDATE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Recommended for Docker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="reverse-proxy-setup"&gt;Reverse Proxy Setup&lt;/h2&gt;
&lt;h3 id="with-nginx-proxy-manager"&gt;With Nginx Proxy Manager&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Set container variables:&lt;/p&gt;</description></item></channel></rss>