<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Stashix</title><link>https://stashix.net/</link><description>Recent content on Stashix</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 04 Nov 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://stashix.net/index.xml" rel="self" type="application/rss+xml"/><item><title>Configuration</title><link>https://stashix.net/docs/reference/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stashix.net/docs/reference/configuration/</guid><description>&lt;p&gt;Stashix is configured with environment variables. With Docker Compose they&#10;live in the &lt;code&gt;.env&lt;/code&gt; file next to &lt;code&gt;docker-compose.yml&lt;/code&gt;. See&#10;&lt;a href="https://stashix.net/docs/get-started/installation/"&gt;Installation&lt;/a&gt; for a first setup.&lt;/p&gt;&#10;&lt;h2 id="required"&gt;Required&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Variable&lt;/th&gt;&#10; &lt;th scope="col"&gt;Default&lt;/th&gt;&#10; &lt;th scope="col"&gt;What it does&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;SECRET_KEY_BASE&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;none&lt;/td&gt;&#10; &lt;td&gt;Encrypts and signs sessions and cookies. Generate with &lt;code&gt;openssl rand -base64 48&lt;/code&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;JWT_SECRET&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;none&lt;/td&gt;&#10; &lt;td&gt;Signs login tokens. Use a different value from &lt;code&gt;SECRET_KEY_BASE&lt;/code&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;STASHIX_ENCRYPTION_KEY&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;none&lt;/td&gt;&#10; &lt;td&gt;Base64 32-byte key that encrypts stored metadata source credentials. Generate with &lt;code&gt;openssl rand -base64 32&lt;/code&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;DATABASE_URL&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;postgresql://stashix:stashix@db/stashix&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;PostgreSQL connection, as &lt;code&gt;ecto://user:password@host/database&lt;/code&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;LIBRARIES_PATH&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;./libraries&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Your media folder &lt;strong&gt;on the host&lt;/strong&gt;, not a path inside the container. Compose mounts it read-write at &lt;code&gt;/libraries&lt;/code&gt;, and each library in Stashix points at a folder under that, such as &lt;code&gt;/libraries/comics&lt;/code&gt;. Read-write so metadata can be saved to your files; see &lt;a href="https://stashix.net/docs/get-started/installation/#metadata-write-back"&gt;Metadata in your files&lt;/a&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;&lt;code&gt;LIBRARIES_PATH&lt;/code&gt; is used only by Docker Compose to mount the folder; Stashix&#10;itself never reads it. It used to be called &lt;code&gt;LIBRARY_PATH&lt;/code&gt;, and &lt;code&gt;.env&lt;/code&gt; files&#10;with the old name keep working.&lt;/p&gt;</description></item><item><title>How the Scanner Works</title><link>https://stashix.net/docs/admin-guide/scanner/how-it-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stashix.net/docs/admin-guide/scanner/how-it-works/</guid><description>&lt;h2 id="supported-formats"&gt;Supported formats&#10;&lt;/h2&gt;&#10;&lt;p&gt;Stashix reads the following file types:&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Format&lt;/th&gt;&#10; &lt;th scope="col"&gt;Extension&lt;/th&gt;&#10; &lt;th scope="col"&gt;Notes&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Comic Book ZIP&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.cbz&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Most common; ZIP archive of images&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Comic Book RAR&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.cbr&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;RAR archive of images&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Comic Book 7-Zip&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.cb7&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;7-Zip archive of images&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;EPUB&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.epub&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Image-based EPUBs, such as manga (see below)&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;PDF&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.pdf&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Comics and books as PDF&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;All other extensions are silently ignored. Files are matched case-insensitively (&lt;code&gt;.CBZ&lt;/code&gt; and &lt;code&gt;.cbz&lt;/code&gt; are equivalent).&lt;/p&gt;</description></item><item><title>Installation</title><link>https://stashix.net/docs/get-started/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stashix.net/docs/get-started/installation/</guid><description>&lt;p&gt;This guide runs Stashix and its PostgreSQL database with Docker Compose. Check&#10;&lt;a href="https://stashix.net/docs/get-started/#requirements"&gt;what you need before installing&lt;/a&gt; first.&lt;/p&gt;&#10;&lt;h2 id="install"&gt;Install&#10;&lt;/h2&gt;&#10;&lt;ol class="steps"&gt;&#10;&lt;li&gt;&#10;&lt;h3 id="download"&gt;Download the Compose files&#10;&lt;/h3&gt;&#10;&lt;p&gt;Make a folder for Stashix and fetch the Compose file and the example&#10;settings into it:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-991cd0f4-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-991cd0f4-fence-0-viewport" data-td-code-viewport&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;mkdir stashix &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; stashix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSLO https://raw.githubusercontent.com/aroy-art/stashix/main/docker-compose.yml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL -o .env https://raw.githubusercontent.com/aroy-art/stashix/main/.env.example&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h3 id="secrets"&gt;Fill in the secrets&#10;&lt;/h3&gt;&#10;&lt;p&gt;Stashix needs three random secrets and a database password. Paste these&#10;lines into your terminal, in the &lt;code&gt;stashix&lt;/code&gt; folder, to generate them and&#10;write them into &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-991cd0f4-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="7"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-991cd0f4-fence-1-viewport" data-td-code-viewport&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;set_env&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; sed -i &lt;span class="s2"&gt;&amp;#34;s|^&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;=.*|&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;&lt;span class="s2"&gt;|&amp;#34;&lt;/span&gt; .env&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;openssl rand -hex 24&lt;span class="k"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set_env SECRET_KEY_BASE &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;openssl rand -base64 48&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set_env JWT_SECRET &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;openssl rand -base64 48&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set_env STASHIX_ENCRYPTION_KEY &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;openssl rand -base64 32&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set_env POSTGRES_PASSWORD &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$DB_PASSWORD&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set_env DATABASE_URL &lt;span class="s2"&gt;&amp;#34;ecto://stashix:&lt;/span&gt;&lt;span class="nv"&gt;$DB_PASSWORD&lt;/span&gt;&lt;span class="s2"&gt;@db/stashix&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Run them once, before the first start. On macOS, change &lt;code&gt;sed -i&lt;/code&gt; to&#10;&lt;code&gt;sed -i ''&lt;/code&gt; in the first line.&lt;/p&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;Warning&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;Back up &lt;code&gt;.env&lt;/code&gt;. If &lt;code&gt;STASHIX_ENCRYPTION_KEY&lt;/code&gt; is lost or changed, the&#10;metadata source credentials Stashix has stored can&amp;rsquo;t be read anymore.&#10;Upgrading an install that ran without this key? See&#10;&lt;a href="https://stashix.net/docs/reference/configuration/#encryption-key-upgrade"&gt;Adding the key to an older install&lt;/a&gt;.&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;details&gt;&#10;&#9;&lt;summary&gt;Prefer to fill them in by hand?&lt;/summary&gt;&#10;&#9;&lt;p&gt;Open &lt;code&gt;.env&lt;/code&gt; and set each value to the output of its command:&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Setting&lt;/th&gt;&#10; &lt;th scope="col"&gt;Command&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;SECRET_KEY_BASE&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;openssl rand -base64 48&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;JWT_SECRET&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;openssl rand -base64 48&lt;/code&gt; (run it again for a different value)&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;STASHIX_ENCRYPTION_KEY&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;openssl rand -base64 32&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;POSTGRES_PASSWORD&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Any password made of letters and numbers&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;DATABASE_URL&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;ecto://stashix:&amp;lt;password&amp;gt;@db/stashix&lt;/code&gt;, with the same password&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;/details&gt;&#10;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h3 id="configure"&gt;Point Stashix at your library&#10;&lt;/h3&gt;&#10;&lt;p&gt;Open &lt;code&gt;.env&lt;/code&gt; and set the values only you know:&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;Setting&lt;/th&gt;&#10; &lt;th scope="col"&gt;Set it to&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;LIBRARIES_PATH&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;Your media folder &lt;strong&gt;on this machine&lt;/strong&gt; (the host), such as &lt;code&gt;/srv/media&lt;/code&gt;. Not a path inside the container or in Stashix.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;PHX_HOST&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;The hostname you&amp;rsquo;ll use to reach Stashix, such as &lt;code&gt;stashix.home.lan&lt;/code&gt;.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;PUID&lt;/code&gt; / &lt;code&gt;PGID&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;A user and group that can read and write &lt;code&gt;LIBRARIES_PATH&lt;/code&gt;. &lt;code&gt;id -u&lt;/code&gt; and &lt;code&gt;id -g&lt;/code&gt; print yours.&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Compose makes &lt;code&gt;LIBRARIES_PATH&lt;/code&gt; appear inside the container as &lt;code&gt;/libraries&lt;/code&gt;.&#10;Stashix only sees that side, so the folders you add as libraries later start&#10;with &lt;code&gt;/libraries&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-991cd0f4-fence-2" data-td-code data-td-code-auto-id&#10; data-td-language="text" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-991cd0f4-fence-2-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;On this machine Inside Stashix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/srv/media -&amp;gt; /libraries&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/srv/media/comics -&amp;gt; /libraries/comics &amp;lt;- add as a library&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/srv/media/manga -&amp;gt; /libraries/manga &amp;lt;- add as a library&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h3 id="start"&gt;Start Stashix&#10;&lt;/h3&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-991cd0f4-fence-3" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-991cd0f4-fence-3-viewport" data-td-code-viewport&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 compose up -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The first start pulls the images and creates the database, which can take a&#10;minute. The Stashix image comes from the GitHub Container Registry as&#10;&lt;code&gt;ghcr.io/aroy-art/stashix&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h3 id="setup"&gt;Finish setup in the browser&#10;&lt;/h3&gt;&#10;&lt;p&gt;Open &lt;code&gt;http://&amp;lt;your-server&amp;gt;:4000&lt;/code&gt;. A setup wizard asks you to create the&#10;admin account. Then add a library. Enter its folder as Stashix sees it,&#10;under &lt;code&gt;/libraries&lt;/code&gt; (for example &lt;code&gt;/libraries/comics&lt;/code&gt;), not the path on&#10;your machine.&lt;/p&gt;&#10;&lt;p&gt;Stashix scans it straight away. Watch the progress under&#10;&lt;strong&gt;Admin → Libraries&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>File Structure</title><link>https://stashix.net/docs/admin-guide/scanner/file-structure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stashix.net/docs/admin-guide/scanner/file-structure/</guid><description>&lt;p&gt;The scanner uses &lt;strong&gt;folder structure&lt;/strong&gt; as its primary grouping signal — a subfolder becomes a series, the files inside become its issues. Metadata embedded in the files or their names enriches that grouping but does not override it.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="the-two-patterns"&gt;The two patterns&#10;&lt;/h2&gt;&#10;&lt;h3 id="series-in-a-subfolder-recommended"&gt;Series in a subfolder (recommended)&#10;&lt;/h3&gt;&#10;&lt;p&gt;Place all issues of a series in one folder named after the series. The folder name becomes the series name.&lt;/p&gt;</description></item><item><title>Introducing Stashix</title><link>https://stashix.net/blog/post/introducing-stashix/</link><pubDate>Wed, 04 Nov 2026 00:00:00 +0000</pubDate><guid>https://stashix.net/blog/post/introducing-stashix/</guid><description>&lt;p&gt;Stashix is a self-hosted library for comics and ebooks. You point it at the&#10;folders where your files already live, and it turns them into a shelf you can&#10;browse, search and read from any browser on your network.&lt;/p&gt;&#10;&lt;p&gt;This site is its new home: documentation, guides and release notes in one&#10;place.&lt;/p&gt;&#10;&lt;h2 id="why-stashix"&gt;Why Stashix&#10;&lt;/h2&gt;&#10;&lt;p&gt;Most collections start as a folder of &lt;code&gt;.cbz&lt;/code&gt; files and grow into something&#10;nobody can find their way around. Stashix keeps your files where they are and&#10;builds a library on top of them:&lt;/p&gt;</description></item><item><title>Stashix 0.0.1</title><link>https://stashix.net/blog/release/0.0.1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stashix.net/blog/release/0.0.1/</guid><description>First public release.</description></item></channel></rss>