all repos

olexsmir.xyz @ c3c598c

my site, yes, i like lua
7 files changed, 124 insertions(+), 3 deletions(-)
gopkg: x
Author: olexsmir olexsmir@gmail.com
Committed at: 2025-12-01 14:31:40 +0000
Parent: 5994991
M feed.xml

@@ -4,4 +4,63 @@ <li>Forcing my self to go outside and sleep well.</li>

&lt;li&gt;Enjoying programming.&lt;/li&gt; &lt;li&gt;Hating russia and wanting more of електрохарчування.&lt;/li&gt; &lt;/ul&gt; +</content></entry><entry><title>FreshRSS on fly</title><link href="https://olexsmir.xyz/freshfly"></link><id>https://olexsmir.xyz/freshfly</id><updated>2025-11-10T00:00:00+02:00</updated><content type="html">&lt;h1&gt;The problem.&lt;/h1&gt; +&lt;p&gt;I&#39;m broke, and I like using FreshRSS.&lt;/p&gt; +&lt;h1&gt;The solution.&lt;/h1&gt; +&lt;p&gt;We&#39;ll be using &lt;a href=&quot;https://fly.io&quot;&gt;fly.io&lt;/a&gt; +they have a generous &lt;a href=&quot;https://fly.io/docs/about/pricing&quot;&gt;free allowance&lt;/a&gt;.&lt;/p&gt; +&lt;h2&gt;Setting up&lt;/h2&gt; +&lt;p&gt;First, you have to &lt;a href=&quot;https://fly.io/app/sign-up&quot;&gt;sign up for fly account&lt;/a&gt;. +&lt;a href=&quot;https://fly.io/docs/flyctl/install&quot;&gt;Get their cli&lt;/a&gt;, and login with &lt;code&gt;flyctl auth login&lt;/code&gt;.&lt;/p&gt; +&lt;h2&gt;Deploying FreshRSS&lt;/h2&gt; +&lt;p&gt;Create a directory where you&#39;ll store the &lt;code&gt;fly.toml&lt;/code&gt; file, &lt;code&gt;cd&lt;/code&gt; into this directory, we&#39;ll do our magic.&lt;/p&gt; +&lt;p&gt;Now, we need to create an app on fly.io, using the following command:&lt;/p&gt; +&lt;pre class=&quot;chroma&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;flyctl app create --save +&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After this, you&#39;ll get an auto-generated &lt;code&gt;fly.toml&lt;/code&gt; file. +&lt;br&gt; +Modify it to look like this (&lt;strong&gt;don&#39;t change the app name&lt;/strong&gt;):&lt;/p&gt; +&lt;pre class=&quot;chroma&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;app&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;your-app-name&amp;#39;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# TODO: update me&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;primary_region&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;fra&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;kill_signal&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;SIGINT&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;c&quot;&gt;# Please check what the latest version is at: https://github.com/FreshRSS/FreshRSS&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;c&quot;&gt;# and set it here&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;image&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;docker.io/freshrss/freshrss:1.27.1&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;CRON_MIN&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;*/20&amp;#39;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# update feeds every 20 minutes&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;c&quot;&gt;# you don&amp;#39;t want your account and feeds to be deleted after a restart&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;mounts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;freshrss_data&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;destination&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;/var/www/FreshRSS/data&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;c&quot;&gt;# you probably want this app to be accessible&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;protocol&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;tcp&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;internal_port&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;processes&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;app&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ports&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;port&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;80&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;handlers&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;http&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;force_https&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;ports&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;port&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;443&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;handlers&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;http&amp;#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;p&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;vm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]]&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;size&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&amp;#39;shared-cpu-1x&amp;#39;&lt;/span&gt; +&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Deploy to fly.io by running:&lt;/p&gt; +&lt;pre class=&quot;chroma&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;flyctl launch +&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now open &lt;a href=&quot;https://your-app-name.fly.dev&quot;&gt;your-app-name.fly.dev&lt;/a&gt; +in your browser, and follow the setup wizard. +Chose &lt;strong&gt;sqlite&lt;/strong&gt; as your database, it will be automatically stored in &lt;code&gt;/var/www/FreshRSS/data&lt;/code&gt;.&lt;/p&gt; +&lt;h2&gt;Setting up custom domain (optional)&lt;/h2&gt; +&lt;pre class=&quot;chroma&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;fly certs create rss.your-domain.com +&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output of this command will guide you through the records you need to add to your domain.&lt;/p&gt; +</content></entry><entry><title>Hello, World</title><link href="https://olexsmir.xyz/hello"></link><id>https://olexsmir.xyz/hello</id><updated>2025-09-30T00:00:00+02:00</updated><content type="html">&lt;pre class=&quot;chroma&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;cl&quot;&gt;&lt;span class=&quot;nx&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;Println&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; +&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here I&#39;ll &lt;del&gt;shit&lt;/del&gt;post about tech, and maybe even other stuff I&#39;m interested in.&lt;/p&gt; </content></entry></feed>
A freshfly.html

@@ -0,0 +1,58 @@

+<!DOCTYPE html><html lang="en"><head><title>FreshRSS on fly</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="chroma.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="Blog post titled: FreshRSS on fly" name="description"><meta content="Blog post titled: FreshRSS on fly" property="og:description"><meta content="FreshRSS on fly" property="og:site_name"><meta content="FreshRSS on fly" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><div class="blog-title"><h1>FreshRSS on fly</h1><p><time datetime="2025-11-10">2025-11-10</time></p></div><h1>The problem.</h1> +<p>I'm broke, and I like using FreshRSS.</p> +<h1>The solution.</h1> +<p>We'll be using <a href="https://fly.io">fly.io</a> +they have a generous <a href="https://fly.io/docs/about/pricing">free allowance</a>.</p> +<h2>Setting up</h2> +<p>First, you have to <a href="https://fly.io/app/sign-up">sign up for fly account</a>. +<a href="https://fly.io/docs/flyctl/install">Get their cli</a>, and login with <code>flyctl auth login</code>.</p> +<h2>Deploying FreshRSS</h2> +<p>Create a directory where you'll store the <code>fly.toml</code> file, <code>cd</code> into this directory, we'll do our magic.</p> +<p>Now, we need to create an app on fly.io, using the following command:</p> +<pre class="chroma"><code><span class="line"><span class="cl">flyctl app create --save +</span></span></code></pre><p>After this, you'll get an auto-generated <code>fly.toml</code> file. +<br> +Modify it to look like this (<strong>don't change the app name</strong>):</p> +<pre class="chroma"><code><span class="line"><span class="cl"><span class="nx">app</span> <span class="p">=</span> <span class="s1">&#39;your-app-name&#39;</span> <span class="c"># TODO: update me</span> +</span></span><span class="line"><span class="cl"><span class="nx">primary_region</span> <span class="p">=</span> <span class="s1">&#39;fra&#39;</span> +</span></span><span class="line"><span class="cl"><span class="nx">kill_signal</span> <span class="p">=</span> <span class="s1">&#39;SIGINT&#39;</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">build</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"><span class="c"># Please check what the latest version is at: https://github.com/FreshRSS/FreshRSS</span> +</span></span><span class="line"><span class="cl"><span class="c"># and set it here</span> +</span></span><span class="line"><span class="cl"><span class="nx">image</span> <span class="p">=</span> <span class="s1">&#39;docker.io/freshrss/freshrss:1.27.1&#39;</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">env</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"><span class="nx">CRON_MIN</span> <span class="p">=</span> <span class="s1">&#39;*/20&#39;</span> <span class="c"># update feeds every 20 minutes</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c"># you don&#39;t want your account and feeds to be deleted after a restart</span> +</span></span><span class="line"><span class="cl"><span class="p">[[</span><span class="nx">mounts</span><span class="p">]]</span> +</span></span><span class="line"><span class="cl"><span class="nx">source</span> <span class="p">=</span> <span class="s1">&#39;freshrss_data&#39;</span> +</span></span><span class="line"><span class="cl"><span class="nx">destination</span> <span class="p">=</span> <span class="s1">&#39;/var/www/FreshRSS/data&#39;</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="c"># you probably want this app to be accessible</span> +</span></span><span class="line"><span class="cl"><span class="p">[[</span><span class="nx">services</span><span class="p">]]</span> +</span></span><span class="line"><span class="cl"><span class="nx">protocol</span> <span class="p">=</span> <span class="s1">&#39;tcp&#39;</span> +</span></span><span class="line"><span class="cl"><span class="nx">internal_port</span> <span class="p">=</span> <span class="mi">80</span> +</span></span><span class="line"><span class="cl"><span class="nx">processes</span> <span class="p">=</span> <span class="p">[</span><span class="s1">&#39;app&#39;</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="p">[[</span><span class="nx">services</span><span class="p">.</span><span class="nx">ports</span><span class="p">]]</span> +</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">80</span> +</span></span><span class="line"><span class="cl"><span class="nx">handlers</span> <span class="p">=</span> <span class="p">[</span><span class="s1">&#39;http&#39;</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"><span class="nx">force_https</span> <span class="p">=</span> <span class="kc">true</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="p">[[</span><span class="nx">services</span><span class="p">.</span><span class="nx">ports</span><span class="p">]]</span> +</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">443</span> +</span></span><span class="line"><span class="cl"><span class="nx">handlers</span> <span class="p">=</span> <span class="p">[</span><span class="s1">&#39;tls&#39;</span><span class="p">,</span> <span class="s1">&#39;http&#39;</span><span class="p">]</span> +</span></span><span class="line"><span class="cl"> +</span></span><span class="line"><span class="cl"><span class="p">[[</span><span class="nx">vm</span><span class="p">]]</span> +</span></span><span class="line"><span class="cl"><span class="nx">size</span> <span class="p">=</span> <span class="s1">&#39;shared-cpu-1x&#39;</span> +</span></span></code></pre><p>Deploy to fly.io by running:</p> +<pre class="chroma"><code><span class="line"><span class="cl">flyctl launch +</span></span></code></pre><p>Now open <a href="https://your-app-name.fly.dev">your-app-name.fly.dev</a> +in your browser, and follow the setup wizard. +Chose <strong>sqlite</strong> as your database, it will be automatically stored in <code>/var/www/FreshRSS/data</code>.</p> +<h2>Setting up custom domain (optional)</h2> +<pre class="chroma"><code><span class="line"><span class="cl">fly certs create rss.your-domain.com +</span></span></code></pre><p>The output of this command will guide you through the records you need to add to your domain.</p> +</main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html>
A hello.html

@@ -0,0 +1,3 @@

+<!DOCTYPE html><html lang="en"><head><title>Hello, World</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="chroma.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="Blog post titled: Hello, World" name="description"><meta content="Blog post titled: Hello, World" property="og:description"><meta content="Hello, World" property="og:site_name"><meta content="Hello, World" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><div class="blog-title"><h1>Hello, World</h1><p><time datetime="2025-09-30">2025-09-30</time></p></div><pre class="chroma"><code><span class="line"><span class="cl"><span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;Hello, World!&#34;</span><span class="p">)</span><span class="w"> +</span></span></span></code></pre><p>Here I'll <del>shit</del>post about tech, and maybe even other stuff I'm interested in.</p> +</main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html>
M index.html

@@ -1,1 +1,1 @@

-<!DOCTYPE html><html lang="en"><head><title>olexsmir.xyz</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="olexsmir.xyz home page" name="description"><meta content="olexsmir.xyz home page" property="og:description"><meta content="olexsmir.xyz" property="og:site_name"><meta content="olexsmir.xyz" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><h2>Hi, I'm Olex from Ukraine 🇺🇦</h2><p>Welcome to my corner of the internet. Here I share what I find interesting. Hopefully I will maintain the content on this site, not only it’s code.</p><p>Feel free to scroll through the posts below or subscribe to the <a href="/feed.xml">RSS feed</a> for updates. And if you want to say hi, mail me at <a href="mailto:olexsmir@gmail.com">olexsmir@gmail.com</a> or message me on <a href="https://t.me/olexsmir">telegram</a> if that's your cup of tea.</p><p>If you’re curious what I’m up to, check out <a href="/now">now</a> page, or look through <a href="https://github.com/olexsmir">github</a> or <a href="https://tangled.org/olexsmir.xyz">tangled</a> accounts.</p><div class="recent-posts"><ul class="blog-posts"></ul></div></main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html> +<!DOCTYPE html><html lang="en"><head><title>olexsmir.xyz</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="olexsmir.xyz home page" name="description"><meta content="olexsmir.xyz home page" property="og:description"><meta content="olexsmir.xyz" property="og:site_name"><meta content="olexsmir.xyz" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><h2>Hi, I'm Olex from Ukraine 🇺🇦</h2><p>Welcome to my corner of the internet. Here I share what I find interesting. Hopefully I will maintain the content on this site, not only it’s code.</p><p>Feel free to scroll through the posts below or subscribe to the <a href="/feed.xml">RSS feed</a> for updates. And if you want to say hi, mail me at <a href="mailto:olexsmir@gmail.com">olexsmir@gmail.com</a> or message me on <a href="https://t.me/olexsmir">telegram</a> if that's your cup of tea.</p><p>If you’re curious what I’m up to, check out <a href="/now">now</a> page, or look through <a href="https://github.com/olexsmir">github</a> or <a href="https://tangled.org/olexsmir.xyz">tangled</a> accounts.</p><div class="recent-posts"><ul class="blog-posts"><li><span><i><time datetime="2025-11-10">2025-11-10</time></i></span><a href="freshfly">FreshRSS on fly</a></li><li><span><i><time datetime="2025-09-30">2025-09-30</time></i></span><a href="hello">Hello, World</a></li></ul></div></main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html>
M posts.html

@@ -1,1 +1,1 @@

-<!DOCTYPE html><html lang="en"><head><title>All olexsmir's posts</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="List of all blog posts on the lego." name="description"><meta content="List of all blog posts on the lego." property="og:description"><meta content="All olexsmir's posts" property="og:site_name"><meta content="All olexsmir's posts" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><ul class="blog-posts"></ul></main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html> +<!DOCTYPE html><html lang="en"><head><title>All olexsmir's posts</title><meta charset="utf-8"><meta content="width=device-width, initial-scale=1.0, viewport-fit=cover" name="viewport"><link href="https://olexsmir.xyz/feed.xml" rel="alternate" title="olexsmir's blog feed, also hi rss reader!" type="application/atom+xml"></link><link href="style.css" rel="stylesheet"></link><link href="assets/favicon.svg" rel="icon"></link><meta content="List of all blog posts on the lego." name="description"><meta content="List of all blog posts on the lego." property="og:description"><meta content="All olexsmir's posts" property="og:site_name"><meta content="All olexsmir's posts" property="og:title"><meta content="website" property="og:type"></head><body class="home"><header><nav><p><a class="visual-hidden" href="#main">Skip to content</a><a href="/">home</a><a href="/posts">posts</a><a href="/feed.xml">feed</a><button id="theme-toggle">🌓</button></p></nav></header><main id="main"><ul class="blog-posts"><li><span><i><time datetime="2025-11-10">2025-11-10</time></i></span><a href="freshfly">FreshRSS on fly</a></li><li><span><i><time datetime="2025-09-30">2025-09-30</time></i></span><a href="hello">Hello, World</a></li></ul></main><script>const root = document.documentElement;root.dataset.theme = localStorage.theme || 'dark';document.getElementById('theme-toggle').onclick = () => {root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';localStorage.theme = root.dataset.theme;};</script></body></html>
M sitemap.xml

@@ -1,1 +1,1 @@

-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://olexsmir.xyz</loc><lastmod>2025-11-20T00:00:00+02:00</lastmod><priority>1.0</priority></url><url><loc>https://olexsmir.xyz/now</loc><lastmod>2025-11-20T00:00:00+02:00</lastmod><priority>0.80</priority></url></urlset> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://olexsmir.xyz</loc><lastmod>2025-11-20T00:00:00+02:00</lastmod><priority>1.0</priority></url><url><loc>https://olexsmir.xyz/now</loc><lastmod>2025-11-20T00:00:00+02:00</lastmod><priority>0.80</priority></url><url><loc>https://olexsmir.xyz/freshfly</loc><lastmod>2025-11-10T00:00:00+02:00</lastmod><priority>0.80</priority></url><url><loc>https://olexsmir.xyz/hello</loc><lastmod>2025-09-30T00:00:00+02:00</lastmod><priority>0.80</priority></url></urlset>
A x.html

@@ -0,0 +1,1 @@

+<!DOCTYPE html><html><head><meta content="olexsmir.xyz/x git https://github.com/olexsmir/x" name="go-import"><meta content="olexsmir.xyz/x https://github.com/olexsmir/x https://github.com/olexsmir/x/tree/main{/dir} https://github.com/olexsmir/x/blob/main{/dir}/{file}#L{line}" name="go-source"></head><body><p>Source: <a href="https://github.com/olexsmir/x">https://github.com/olexsmir/x</a></p><code>$ go get olexsmir.xyz/x</code></body></html>