mysite/public-clearnet/index.html

37 lines
No EOL
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en dir=auto><head><meta name=generator content="Hugo 0.146.0"><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="noindex, nofollow"><title>AlipourIm journeys</title>
<meta name=description content><meta name=author content="Iman Alipour"><link rel=canonical href=https://blog.alipour.eu/><link crossorigin=anonymous href=/assets/css/stylesheet.31b150d909186c48d6dbbf653acc2489945fa9ac2c8f8cd3fe8448e89e40fccf.css integrity="sha256-MbFQ2QkYbEjW279lOswkiZRfqawsj4zT/oRI6J5A/M8=" rel="preload stylesheet" as=style><link rel=icon href=https://blog.alipour.eu/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://blog.alipour.eu/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://blog.alipour.eu/favicon-32x32.png><link rel=apple-touch-icon href=https://blog.alipour.eu/apple-touch-icon.png><link rel=mask-icon href=https://blog.alipour.eu/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://blog.alipour.eu/index.xml><link rel=alternate type=application/json href=https://blog.alipour.eu/index.json><link rel=alternate hreflang=en href=https://blog.alipour.eu/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><script>(function(){window.goatcounter={endpoint:"/count"};const e=document.createElement("script");e.async=!0,e.src="/js/count.js",document.head.appendChild(e)})()</script><script>(function(){const s="",t=new Intl.NumberFormat,o="visit",i="visits";function a(e){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(e,0):document.addEventListener("DOMContentLoaded",e)}function r(){try{return window.goatcounter&&window.goatcounter.get_data?window.goatcounter.get_data().p:location.pathname}catch{return location.pathname}}async function e(e,t){try{const o=new URLSearchParams({t:String(Date.now())});t&&o.set("start",t);const a=`${s}/counter/${encodeURIComponent(e)}.json?${o}`,n=await fetch(a,{credentials:"omit"});if(n.status===404)return 0;if(!n.ok)throw 0;const r=await n.json(),i=Number(String(r.count).replace(/,/g,""));return Number.isFinite(i)?i:0}catch{return null}}const n=e=>e===null?"—":`${t.format(e)} ${e===1?o:i}`;a(async function(){const s=document.querySelector(".post-single");if(s){const t=s.querySelector(".post-header .post-meta, .post-header .entry-meta, .post-meta"),o=await e(r());if(t){let e=t.querySelector(".post-views");e||(e=document.createElement("span"),e.className="post-views",t.appendChild(e)),e.textContent=n(o??0)}}const i=document.querySelectorAll("article.post-entry");await Promise.all(Array.from(i).map(async t=>{const s=t.querySelector(".entry-footer, .post-meta"),o=t.querySelector("a.entry-link, h2 a, .entry-title a");if(!s||!o)return;try{const i=new URL(o.getAttribute("href"),location.origin);if(i.origin!==location.origin)return;let t=s.querySelector(".post-views");t||(t=document.createElement("span"),t.className="post-views",s.appendChild(t)),t.textContent=n(await e(i.pathname)??0)}catch{}}));const o=document.getElementById("gc_site_visitors_week");if(o){const n=await e("TOTAL","week");o.textContent=n===null?"—":t.format(n)}})})()</script></head><body class=list id=top><script>localStorage.getItem("pref-theme")==="dark"?document.body.classList.add("dark"):localStorage.getItem("pref-theme")==="light"?document.body.classList.remove("dark"):window.matchMedia("(prefers-color-scheme: dark)").matches&&document.body.classList.add("dark")</script><header class=header><nav class=nav><div class=logo><a href=https://blog.alipour.eu/ accesskey=h title="AlipourIm journeys (Alt + H)">AlipourIm journeys</a><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme"><svg id="moon" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg><svg id="sun" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://blog.alipour.eu/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://blog.alipour.eu/phd_journey/ title=PhD_journey><span>PhD_journey</span></a></li><li><a href=https://blog.alipour.eu/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Self-hosting mail the hard way (Postfix + Dovecot + PostfixAdmin + Roundcube, and zero Mailcow)</h2></header><div class=entry-content><p>If you came here scared of mail servers: good. That means youre paying attention. This post is for you. I assume you can SSH into a Linux box and copy-paste carefully. I do not assume you already know what an MX record is, why port 587 exists, or why Cloudflares orange cloud and SMTP should never meet at a party.
I wanted real email on my own machine — mail.alipourimjourneys.ir — without buying a “smart” appliance and without installing one of those giant all-in-one stacks. Mailcow is excellent. Stalwart is excellent. I still said no. Sometimes the point is to feel each moving part with your own hands, even if that means spending an evening arguing with nginx about whether a certificate belongs to mail or to Matrix. (Spoiler: when in doubt on this box, it was Matrix.)
...</p></div><footer class=entry-footer><span title='2026-07-24 00:00:00 +0000 UTC'>July 24, 2026</span>&nbsp;·&nbsp;17 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/self_hosting_mail/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to Self-hosting mail the hard way (Postfix + Dovecot + PostfixAdmin + Roundcube, and zero Mailcow)" href=https://blog.alipour.eu/posts/self_hosting_mail/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>June 2026</h2></header><div class=entry-content><p>Ok, its been so so so long! I havent been writing, once again, because Ive been too busy with fixing my life. Let me summerize these past many months:
I finished my coursework for my prep phase I was added to a colleagues project and we submited it to IMC I submitted a poster to TMA, and I will be present it at the end of this month (June) I branched my main project, IP over anything, into application layer, added steganography to it, and made it ready to be submited to S&amp;P, but due to some complications, we decided to skip this deadline and aim for USENIX at the end of Augsust. I am a tutor at data networks, and I think Im doing a pretty good job :) at least I hope so! I realized how much I love teaching, and interacting and explaining things to students. Downloads: Markdown · Signature (.asc) ...</p></div><footer class=entry-footer><span title='2026-06-23 20:00:07 +0000 UTC'>June 23, 2026</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/phd_journey/june_2026/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to June 2026" href=https://blog.alipour.eu/phd_journey/june_2026/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>A TU Wien CTF where Sysops Klaus left the keys in the cron job</h2></header><div class=entry-content><p>LFI on a meme gallery, a localhost-only password reset service, a world-writable cron script, and way too many rabbit holes — plus a bonus on the intended log poisoning path I griefed myself out of.</p></div><footer class=entry-footer><span title='2026-06-05 12:00:00 +0000 UTC'>June 5, 2026</span>&nbsp;·&nbsp;10 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/g00_tuw_measurement_ctf/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to A TU Wien CTF where Sysops Klaus left the keys in the cron job" href=https://blog.alipour.eu/posts/g00_tuw_measurement_ctf/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>April '26</h2></header><div class=entry-content><p>I know, I know. Ive been lacking updates. Im so so sorry. I will try to summerize what Ive been up tp in the past few months.
Up until the middle of March, Ive been taking care of the last bits of coursework I had to do during my prep phase. And now Im done with that all together.
I took ML in cysec which was very much aligned to the type of research I do. They try to get around IDS, and I try to get around censorship setup which is pretty much the same idea. I learned so so incredibly much from the course. It was awesome! I then had a block seminar called Routerlab in which I just did very well. It was fun in the sense that we got to touch and use real hardware. We also did so much that I didnt know much about. Though no mail server for me unfortunately.
...</p></div><footer class=entry-footer><span title='2026-05-03 03:26:09 +0000 UTC'>May 3, 2026</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/phd_journey/april_2026/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to April '26" href=https://blog.alipour.eu/phd_journey/april_2026/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>H3ll0 Fr1end</h2></header><div class=entry-content><p>Hello friends. Im back. Its been… lets say, a shit show. My beloved country was attacked by two extremely strong foreign armies in the midst of a revolution. A revolution I deemed i woulld succeed, but now Im so so confused. The royalists, the radical fascist rights, gathered behind the former King of Iran. A fucking ruthless dictator. Someone who created the scariest of spider webs in Iran, the effect of which layed its shadow over the country for decades. Its funny how his father (Im talking about the grandfather of this guy) was a traitor, and a ruthless dictator of his own. The difference was that he actually loved the country and although ruled with an iron fist, he actually tried to make the country great. Now let me be honest, the guy was an idiot for many many reasons, siding with the allies by providing them infrastructure at the cost of his own peoples lives, and then selling peoples food to make money off of England was just utterly messed up. But this guy (the son of the former King) is probably the most incompetence creature on this world. So badly incompetence that no mentally sane foreign leader even sees the guy. With all of the money given to him throughout the years, its not clean what the fuck his been up to. His eyes blinded be revenge, and his head dreaming of ruling a country that he clearly does not “own” makes him the best candidate for exploitation. And he has shown this very well.
...</p></div><footer class=entry-footer><span title='2026-05-02 16:17:02 +0000 UTC'>May 2, 2026</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/h3ll0_fr1end/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to H3ll0 Fr1end" href=https://blog.alipour.eu/posts/h3ll0_fr1end/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Nextcloud on a Raspberry Pi, Fronted by a Tiny VPS — Nginx Reverse Proxy, Trusted Proxies, and Basic Auth for Jellyfin</h2></header><div class=entry-content><p>I didnt “move Nextcloud to the cloud”.
I moved the front door to a VPS… and kept the house on my Raspberry Pi. 😄
This post documents the setup I ended up with:
A public VPS (host: funbox) running Nginx + Lets Encrypt A private Raspberry Pi (host: iot-hub) running Docker services (Nextcloud, Jellyfin, …) A private backhaul using Tailscale (the 100.x.y.z network) A correct Nextcloud reverse-proxy configuration (trusted_domains, trusted_proxies, and overwrite values) A pragmatic security layer for media: Basic Auth at Nginx for Jellyfin
(in addition to Jellyfins own login) Im writing this as a “future me” note and a “copy-paste friendly” guide.
...</p></div><footer class=entry-footer><span title='2026-02-02 00:00:00 +0000 UTC'>February 2, 2026</span>&nbsp;·&nbsp;6 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/pi_service_touchup/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to Nextcloud on a Raspberry Pi, Fronted by a Tiny VPS — Nginx Reverse Proxy, Trusted Proxies, and Basic Auth for Jellyfin" href=https://blog.alipour.eu/posts/pi_service_touchup/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Blackout</h2></header><div class=entry-content><p>Ever since the latest Internet/communication blackout in Iran, Ive been trying to get access to my box inside of the network. I went so far as to beg people to ssh into my box and deploy something that would give me a backdoor to my box, but little to no luck came out of it. Although Arvancloud opened their panel briefly, giving me access to do some digging, I got stuck at putting some sort of binary client on my box from their online panel. I tried to b64 the binary file and copypaste it via clipboard, and this caused their panel to crash (or it was just bad timing) — they havent opened it again.
...</p></div><footer class=entry-footer><span title='2026-01-26 07:21:51 +0000 UTC'>January 26, 2026</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/blackout/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to Blackout" href=https://blog.alipour.eu/posts/blackout/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>2025 Highlight</h2></header><div class=entry-content><p>I just experienced my best two weeks of this cursed year. I went to 39c3 first, did 31.25h of Engel work, got to meet a bunch of extremely cool people, met the people I had made friends with from last year, and made new friends. No new contacts though. :) Not only I got to see a lot of cool people, computers, projects, but also I attended many many cool talks and learned a lot. I also participated in a challenge that after solving I got a T-Shirt for. I also got myself a T-Shirt for my Engel work.
...</p></div><footer class=entry-footer><span title='2026-01-05 18:53:54 +0000 UTC'>January 5, 2026</span>&nbsp;·&nbsp;3 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/2025_highlight/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to 2025 Highlight" href=https://blog.alipour.eu/posts/2025_highlight/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Seeing the "Light"</h2></header><div class=entry-content><p>I have a strong hunch that I made it. I beat my MDD. Im finally happy! Im happy for being single, for being who I am, for doing what I do. I can cherish every moment of my life now.
Currently Im sitting in Hamburgs CCH, being an Angel in disguise. ;D
I could not land myself any shifts before 1600, so I have to sit around and wait, and blog.
...</p></div><footer class=entry-footer><span title='2025-12-25 11:26:04 +0000 UTC'>December 25, 2025</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/seeing_the_light/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label='post link to Seeing the "Light"' href=https://blog.alipour.eu/posts/seeing_the_light/></a></article><article class=post-entry><header class=entry-header><h2 class=entry-hint-parent>Movie Night Over the Internet: Jellyfin + Tailscale on a Raspberry Pi 4</h2></header><div class=entry-content><p>Ok. Let me tell you the why first. So…. I was turning from one side to the other on my bed, going through YouTube. The thing that I used to silence my pain, to let the time pass, and to forget. But it didnt hit the same anymore. I was bored. Eternal boredom. Then the loneliness came back. Its funny how you can be in the middle of dozens of people, i.e., not alone, but still feel lonely. Anyway. I though to myself “lett message one of my two best friends”, We eventually went into a google meet, talked and talked, and decided to watch a movie together at the same time. I told him I still have my Raspberry Pi lying around, let me put it to good use. Few hours passed, and I was ready. Here is what happened in those few hours.
...</p></div><footer class=entry-footer><span title='2025-12-21 09:30:00 +0100 +0100'>December 21, 2025</span>&nbsp;·&nbsp;9 min&nbsp;·&nbsp;Iman Alipour
<span class=post-meta-item><a href=https://blog.alipour.eu/posts/boredom/#isso-thread class=isso-comments-link>Comments</a></span></footer><a class=entry-link aria-label="post link to Movie Night Over the Internet: Jellyfin + Tailscale on a Raspberry Pi 4" href=https://blog.alipour.eu/posts/boredom/></a></article><footer class=page-footer><nav class=pagination><a class=next href=https://blog.alipour.eu/page/2/>Next&nbsp;&nbsp;»</a></nav></footer></main><footer class=footer><span>&copy; 2026 <a href=https://blog.alipour.eu/>AlipourIm journeys</a></span> ·
<span>Powered by
<a href=https://gohugo.io/ rel="noopener noreferrer" target=_blank>Hugo</a> &
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel=noopener target=_blank>PaperMod</a></span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentcolor"><path d="M12 6H0l6-6z"/></svg>
</a><script src=/isso/js/count.min.js data-isso=/isso async></script><div class=site-meta-row style=display:flex;align-items:center;gap:.75rem;flex-wrap:wrap><a href=/index.xml rel=alternate type=application/rss+xml title=RSS class=rss-link style=display:inline-flex;align-items:center;gap:.35rem><svg viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg>
<span>RSS</span>
</a><span aria-hidden=true>·</span>
<span>Visitors this week: <span id=gc_site_visitors_week></span></span></div><script>let menu=document.getElementById("menu");menu&&(menu.scrollLeft=localStorage.getItem("menu-scroll-position"),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}),document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{document.body.className.includes("dark")?(document.body.classList.remove("dark"),localStorage.setItem("pref-theme","light")):(document.body.classList.add("dark"),localStorage.setItem("pref-theme","dark"))})</script></body></html>