When you self-host immich behind an nginx reverse proxy, be aware that the nginx default configuration blocks uploads of big files!
I fell into that trap!
https://discussion.scottibyte.com/t/immich-how-to-bust-the-upload-limits/475

When you self-host immich behind an nginx reverse proxy, be aware that the nginx default configuration blocks uploads of big files!
I fell into that trap!
https://discussion.scottibyte.com/t/immich-how-to-bust-the-upload-limits/475
@negative12dollarbill #nginx keeps popping up in my findings, i may start with it
#NoAi #nginx #network #networking #apache #webdev
Yet another AI bot to block:
ChatBot for WordPress with AI – WPBot
https://wordpress.org/plugins/chatbot/
Sample request with UA
34.222.202.101 - - [09/Apr/2025:02:35:32 +0200] "GET / HTTP/2.0" 403 107 "-" "Mozilla/5.0 (compatible; wpbot/1.3; +https://forms.gle/ajBaxygz9jSR8p8G9)"
I'm having lots of fun researching about #HLS, as I develop a video platform as a side quest and try to keep things on a budget, my plan is to have #nginx proxying to #minio but using subrequest auth to serve the streams. Will use #ffmpeg to encode the videos for adaptive streaming and encryption. I think everything I have cooking in my head should work, now down to implement the missing parts before gluing everything together. Oh, and I'm thinking on hosting on an OVH dedicated server.
Just released: #swad v0.2
SWAD is the "Simple Web Authentication Daemon", meant to add #cookie #authentication with a simple #login form and configurable credential checker modules to a reverse #proxy supporting to delegate authentication to a backend service, like e.g. #nginx' "auth_request". It's a very small piece of software written in pure #C with as little external dependencies as possible. It requires some #POSIX (or "almost POSIX", like #Linux, #FreeBSD, ...) environment, OpenSSL (or LibreSSL) for TLS and zlib for response compression.
Currently, the only credential checker module available offers #PAM authentication, more modules will come in later releases.
swad 0.2 brings a few bugfixes and improvements, especially helping with security by rate-limiting the creation of new sessions as well as failed login attempts. Read details and grab it here:
Released: #swad v0.1
Looking for a simple way to add #authentication to your #nginx reverse proxy? Then swad *could* be for you!
swad is the "Simple Web Authentication Daemon", written in pure #C (+ #POSIX) with almost no external dependencies. #TLS support requires #OpenSSL (or #LibreSSL). It's designed to work with nginx' "auth_request" module and offers authentication using a #cookie and a login form.
Well, this is a first release and you can tell by the version number it isn't "complete" yet. Most notably, only one single credentials checker is implemented: #PAM. But as pam already allows pretty flexible configuration, I already consider this pretty useful
If you want to know more, read here:
https://github.com/Zirias/swad
I thought I was joking when I started writing that. But.. trivial extra overhead, fortune's ready to apt-get install. My little web service front-end is #nginx + #FastAPI in #Python.
It'd be nothing to make a reject filter for bad URIs that aren't valid for this system and return subprocess.getoutput() and write what's returned back to the curious caller.
Some of the code calling is surely logging weird replies it gets. That'd be fun.
Not high priority fun, but on the list.
DId lots of smaller improvements to #swad ... but first, I had to hunt down a crash . Finally found it was caused by my #poser lib (to be fixed later): A connection there can resolve the hostname of a remote end and does so in a thread job to avoid blocking. If the connection dies meanwhile, the job is canceled. Seems my canceling mechanism relying on a signal to the thread is, well, not reliable (the signal can arrive delayed). Ok, for now just disabled name resolution to sidestep that.
Now, integration with #nginx is much better. I intrdoduced (optional) custom headers to transport the authentication realm and the redirect URI, plus state management in the session, so these can be passed to the "auth" endpoint. This requires to make sure nginx always passes the session #cookie, Unfortunately, I still need a "hacky" redirect configuration for login in nginx. If auth_request could just pass the response body, this would be unnecessary ....
The nginx configuration shows #swad running on "files" and another nginx running on "wwwint" serving #poudriere output there. This nginx instance helpfully adds cache hints, which I have to override, so a redirect works as expected when for example the swad session times out.
I've set up my new #inkscape website AI bot trap. It works by giving everyone a chance to not fall into it.
An anchor link that says "I am a bot" and links to /P3W-451/{datetime}/ it's got a fixed position at top -100px so should never be seen
The robots.txt says "Disallow: /P3W-451/" so if you were reading the robots, you'd know.
Then #nginx logs the requests to a log of their ip-addresses and browser strings and sends them a 301 redirect to google.com
1/2
First "production test" successful ... after band-aid "deployment" (IOW, scp binaries to the prod jail).
#swad integrates with #nginx exactly as I planned it. And #PAM authentication using a child process running as root also just works (while the main process dropped privileges).
So, I guess I can say goodbye to #AI #bots hammering my poor DSL connection just to download poudriere build logs.
Still a lot to do for #swad: Make it nicer. So many ideas. Best start would probably be to implement more credentials checking modules besides PAM.
Upgrading Nginx-Ingress did not go smoothly today
It worked, but I had to deviate from the recommended steps - without really having time to figure out why.
My Notes here
https://tangiblebytes.co.uk/2025/kubernetes-nginx-ingress-cve-2025-1974/
I finally poked at my nginx logs, because generally nothing happens on my servers
202.155.137.157 - - [30/Mar/2025:00:53:00 +0100] "GET /mirrors-JapanMapTranslate-github/patch/bin/kanaconv/HiraganaConverterImpl.class?id=c1c09efe21a09ecbd6f95641c8a0086ec538ae39 HTTP/1.1" 200 663 "-" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3"
yeah... yeah... ok... this bitch is accessing ONE specific file as Power PC Mac OS X ???
get the fuck outta here.
% Information related to '202.155.137.0/24AS212238'
route: 202.155.137.0/24
origin: AS212238
descr: CV. Rumahweb Indonesia
Jl. Arimbi No. 482
Kel. Banguntapan, Kec. Banguntapan
mnt-by: MAINT-CRI-ID
last-modified: 2025-02-25T00:03:14Z
source: APNIC
Latest issue of my curated #cybersecurity and #infosec list of resources for week #13/2025 is out!
It includes the following and much more:
➝ DNA of 15 Million People for Sale in #23andMe Bankruptcy,
➝ #Trump administration accidentally texted a journalist its war plans,
➝ Critical Ingress #NGINX controller vulnerability allows RCE without authentication,
➝ #Cyberattack hits Ukraine's state railway,
➝ Troy Hunt's Mailchimp account was successfully phished,
➝ #OpenAI Offering $100K Bounties for Critical #Vulnerabilities,
➝ #Meta AI is now available in #WhatsApp for users in 41 European countries... and cannot be turned off
Subscribe to the #infosecMASHUP newsletter to have it piping hot in your inbox every week-end
https://infosec-mashup.santolaria.net/p/infosec-mashup-13-2025
Trying to come up with my own little self-hosted #http #authentication #daemon to work with #nginx' "authentication request" facility ... first step done!
Now I have a subset of HTTP 1.x implemented in #C, together with a dummy handler showing nothing but a static hello-world root document.
I know it's kind of stubborn doing that in C, but hey, #coding it is great fun
Motivated by Samuel Reichör, I took another try for Craft CMS + Coolify. But I can't get the nginx conf quite right Thx for any hints!
Source code Docker Compose:
- https://github.com/mandrasch/ddev-craftcms-vite/blob/coolify-test/docker-compose.yml
- https://github.com/mandrasch/ddev-craftcms-vite/blob/coolify-test/Dockerfile
- https://github.com/mandrasch/ddev-craftcms-vite/blob/coolify-test/nginx.conf
Coolify Discord question: https://discord.com/channels/459365938081431553/1355504172920864911
@bagder Wow. For a few months, I was wondering why I suddenly have bandwidth issues when activating my camera in MS Teams meetings, so others can't understand me any more.
A look into my #nginx logs seems to clarify. Bots are eagerly fetching my (partially pretty large) #poudriere build logs. (#AI "watching shit scroll by"?)
I see GPTBot at least occassionally requests robots.txt, which I don't have so far. Other bots don't seem to be interested. Especially PetalBot is hammering my server. And there are others (bytedance, google, ...)
Now what? Robots.txt would actually *help* well-behaved bots here (I assume build logs aren't valuable for anything). The most pragmatic thing here would be to add some http basic auth in the reverse proxy for all poudriere stuff. It's currently only public because there's no reason to keep it private....
Have to admit I feel inclined to try one of the tarpitting/poisoning approaches, too.
Das ActivityPub-Plugin für WordPress erfordert, dass bestimmte URLs funktionieren. Das trifft insbesondere auf Multisite-Instanzen mit Unterverzeichnissen zu. Erfahre, wie du deinen nginx konfigurieren musst, damit es funktioniert.
https://epiph.yt/blog/2025/activitypub-in-nginx-multisite-mit-unterverzeichnissen/
After a lot of tinkering, we finally made it to the latest release of the #nginx ingress controller on the https://mstdn.dk cluster. The latest release addresses no less than FOUR #CVE records. Critical configuration areas had changed, the GeoIP database had to be cached to avoid rate limiting and the #LUA engine needed some tweaks before it could handle the relative large number of TLS certificates we're using in the cluster, but we finally made it. Sorry about the hick-ups. We're trying to keep expenses from going through the roof, so we've skipped the test setup in favor of gently tweaking things in production. Usually that goes well, but there is the rare exception.
Somewhat related, the #KubeCon / #KubeConEU #Kubernetes conference is next week, which means I'll be in #London for the first time for an entire week. Any suggestions for things worth visiting for a bunch of #nerds? :D