The most annoying thing about homelabbing is the upkeep. Keeping things running, handling breaking updates, fixing stuff as it breaks instead of letting everything slowly decay. It’s kinda embarrassing telling people how cool your Homelab is, only for things to break constantly. Luckily AI agents have gotten good enough that you can use them for the upkeep of your homelab. Until now though,…
I got my hands on a 2025 Huawei Matepad pro 12.2, with a gorgeous display. I was kinda stocked to use it as my media power house, that’s where the weirdness started. The device can’t play 4k videos on YouTube for some reason, and to make it worse, it’s a known issue, but it isn’t something that gets mentioned in reviews. It can play 1080p vp9 videos just fine, and you can…
I have a homelab, but accessing it from outside my home network was always a pain. I didn’t want to deal with the hassle of setting up VPNs on every device just to watch something on Jellyfin, so I built Knocker! It’s a knock-based access control service for your homelab that actually works with mobile apps, with clients on most platforms used by homelabbers. Your browser doesn't…
My Homelab often has peering issues when connecting from another ISP. The solution to this is just to pass the connection through a proxy, which has better speed than a direct connection. But if I want to do this without MITMing the connection, it can’t be a classic reverse proxy sandwich. That’s where tools like rathole come in, they are TCP proxies that allow you to forward any TCP…
My team uses Jenkins for CI/CD, and we want to migrate away from it due to its insanely complex and hard to understand scripts. We use Gitea as our git hosting platform, the direct CI/CD offer for it is Gitea Actions, it’s already there, integrated into Gitea and gives us access to the huge community Ecosystem around GitHub Actions. Gitea says everything works apart from a few limitations,…
Over the past few weeks, I’ve been vibecoding a new app with GitHub Copilot. I know it’s not meant for that, but here’s what I learned anyway: 200 requests are actually a lot The GitHub Copilot pro sub includes 200 premium requests and unlimited gpt4.1 and gpt-4o requests. It’s genuinely a lot, especially considering o4-mini’s 0.33x multiplier. It’s great for…
I self-host my own private cloud, but sometimes I have to make files available on external clouds like Mega. In this post I will explain how to create a dockerized mega-cmd with an entrypoint script that will automatically sync files and watch for changes. dockerfile To make it easier to build the image, i embedded the entrypoint script inside the dockerfile. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…
If you have been getting MISSING_MATRIX_RTC_FOCUS on Element X recently when starting calls, the reason is that Element has stopped their free relay for Matrix RTC, AKA Element Call. It was there just to speed up initial Element X adoption. Luckily, adding it isn’t that hard. The tricky part is the reverse proxy and updating the well-known files for the clients, but don’t worry, I…
Self-hosted grammar autocorrect with LanguageTool and Docker Compose. LanguageTool is a great extension for correcting typos and grammar errors, it’s basically a more advanced and useful version of autocorrect. However, LanguageTool watches everything you type in real time, so it’s a real privacy risk. Fortunately, LanguageTool is open source, at least the core of it, and you can…
Having a scanner is the first step of going paperless, however with time you realize that keeping stuff in order and finding documents quickly becomes a challenge, even when using full text search in the cloud. Thats why document management Systems like Paperless-ngx exist. And in this post I’m going to setup paperless-ngx with Nextcloud Integration, automated AI tagging and more accurate…
I have been looking for a solution to sync my contacts across devices. Etesync seemed great for this, but it seems the IOS app is no longer maintained. And then I found Radicale, a lightweight and easy to setup server for Caldav/Cardav syncing, and in true FarisZR fashion, I’m going to install it with docker compose. Now radicale doesn’t seem to have an official docker image, but…
Flatpak is the most popular universal distribution format on Linux, but I still face issues with dark mode detection in some apps. Luckily I found some workarounds to fix this. Make sure dark mode themes are installed for flatpak updates Technically, flatpak should automatically detect the theme you’re using and install it, but if for some reason it doesn’t, you can manually install…
Zed is a new open source code editor on the block, which has a top-notch Ai integration, aiming to compete with Cursor. You can use Zed Ai for free , it will use Claude 3.5 sonnet with strict rate limits, and it also may use your Inputs for training. However you can also run Zed AI using openAI LLMs or even any other LLM running on an openai api-compatible provider like groq! settings.json…
Brave recently introduced the ability to bring your own model to use with LEO using other third party providers or a local model using Ollama! This is a quick guide to hosting Ollama with docker and integrating it with Leo. I’m doing this with docker because it’s much easier for AMD GPUs, because you don’t need any drivers to make it work. Ollama setup CPU 1 2 3 4 5 6 7 services…
ownCloud infinite scale is a complete rewrite of the classic ownCloud/Nextcloud server in go, it’s much faster and much more efficient, to the point it doesn’t even need a database! I found their docs to be a bit confusing, but I managed to figure it out and wrote this guide to save you the hassle! Setup plan ownCloud infinite scale is, as the name says, very scalable, you could deploy…
If you want to make your home server accessible on the Internet but can’t use port forwarding (if you are behind CGNAT for example) or just aren’t comfortable having your home IP public, there are a few ways to do it. You could just use Cloudflared, it is free, easy to set up and gives you some security protection through Cloudflare’s WAF. However, Cloudflare is a reverse proxy,…
If you need to do an HTTP redirect for anything while using Cloudflare the first idea that comes to mind will be just to use Redirect Rules, however, if your goal is to redirect a path, like /old/* to /new/* , you actually can’t do that in the free plan, as regex_replace requires at least a PRO subscription. Luckily this blog is hosted on Cloudflare pages, which has its own redirect…
If you want to deploy your project to a server without exposing it or manually managing ssh keys, you can use Tailscale SSH! Here is a quick guide to using my Github action tailscale-ssh-deploy to deploy files to a server using Tailscale SSH (not normal ssh). Deploying a static site For example, we will deploy a Hugo static site using this action 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…
If you use WordPress in docker, sometimes you may have some plugins complaining about missing libraries / packages, like for example EWWW image optimizer, that was complaining about missing image libraries. You could of course just rebuild the image, but if you want to avoid that, you could modify the command that runs at start to install the packages you need, and then start the WordPress…
When you run a server that relies on containers for almost everything, keeping the system up to date has almost zero chance of breaking anything. So here is a quick guide to setting up automatic updates on a fixed schedule + automatic reboots for kernel updates (optional) installing unattended-upgrades 1 2 sudo apt update sudo apt install unattended-upgrades Configuring Unattended-upgrades…
Sometimes you need to automate some things in Docker containers, run a script or check a result online, and I honestly dread dealing with cron to do it. That’s where Ofelia comes in! It’s a modern scheduler built from the ground up for Docker, and it interacts directly with the Docker socket to run a container, run a script in a specific container, or even on the host! Usage with…
Using the Purge Remote Media API, we can send a POST request to delete all cached remote media before a certain time: Your account must be a server admin for this command to work . 1 curl -X POST -H 'Authorization: Bearer $ADMIN_ACCESS_TOKEN ' 'https://matrix.org/_synapse/admin/v1/purge_media_cache?before_ts=1672527600000' before_ts takes time in UNIX epoch milliseconds, the one in the template is…
If you’re wondering why there are a lot of connections coming from your docker gateway right after you enabled IPv6 for your services, you’ve come to the right place. Unfortunately, setting up IPv6 support for Docker isn’t as simple as setting up a DNS record and exposing the container to all interfaces. If you just expose the container to an IPv6 connection without any…
I use proxies very often as a way to do split tunneling on Linux, as easy split-tunneling with WireGuard or OpenVPN isn’t there yet. The quickest way to set up anything IMO is with docker, and here is a quick guide for squid proxy setup using the official Ubuntu-squid image, which seems to be the only up-to-date docker image on Docker hub. docker-compose.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14…
Here is a how you can send a simple matrix message with CURL: curl 'https://matrix.org/_matrix/client/r0/rooms/!xxxxxx:example.com/send/m.room.message/?access_token=xxxxxxxx' -X PUT --data '{"msgtype":"m.text","body":"hello world"}' generate an access token if you don’t have an access token, you can generate one using curl too: curl -XPOST \ -d '{"type":"m.login.password", "user":" ",…
Setting up Nextcloud full-text search isn’t very clear, especially with Docker, so in this post I’ll explain how to set up full-text search with Elasticsearch and Tesseract using Nextcloud’s official Docker images. add new tesseract to your Nextcloud container Normally we would need to create a custom image for this, but fortunately modzilla99 and Schw3pps have found a way to add…
So while I was updating my website, I was thinking about using JSdelivr for my blogs images, the slowest part of my website since it’s hosted on a VPS and not on Cloudflare Pages to avoid further internet centralization. But I remembered that a court in Germany recently ruled that using Google Fonts is illegal, does this affect JSdelivr and other public CDNs? Apparently it does. I’m…
In the official discourse S3-compatible object storage setup guide , it mentions that Cloudflare R2 is not supported, because it doesn’t handle gzipped files correctly. But Cloudflare fixed this in the 2023-03-16 update, and I tested it, and it works great on discourse.aosus.org . Even old broken gzip handling tests work now, so it looks like the problem is solved! EDIT: Discourse…
So you have heard about how good GitOps is, and how much better it is than having to manage your containers by hand. But almost every time GitOps is mentioned, it means using K8S. But what about the rest of us mere mortals who are still using Docker Compose? That’s why I started working on docker-compose-gitops-action , a GitHub action to do GitOps with Docker compose!, it should cover most…
(This only affects MESA, so only people using open source drivers) Shortly before Fedora 37 release, Fedora dropped support for closed Codecs like H264, HEVC, VC1, this also includes other Red Hat distros like RHEL and CentOS stream, and probably clones like Rocky and Almalinux. The reason is mainly to avoid Closed source software patents , Not every Distribution is affected though, as it depends…
I am going to show you how to quickly set up a discoverable SMB share, it’s much easier than you think! Massive thanks to crazymax for his awesome docker containers that make this possible. set up the SMB share we’re going to use crazymax’s smb container, pretty easy to setup and docker native. its recommended to use host networking for it. docker-compose.yml 1 2 3 4 5 6 7 8 9 10…
I wanted to set up Cloudflared, but I couldn’t find anything about setting it up in docker, especially without the Zero Trust dashboard (because it kept refusing my credit card for some reason). So here it is! I am aiming to set up one tunnel per container, which I think is better and easier to manage than multiple tunnels in one Cloudflared instance. docker-compose.yaml version: '3.1'…
If you are seeing the “Serve static assets with an efficient cache policy” notice in PageSpeed, you need to add the Cache-Control header to your website. Here is how to do it if you are using Caddy. Cache-Control To set a Cache-Control header only for your static files like, .js, .jpg, and others, just add this to the relevant part of your Caddyfile(under the site block if the…
If you deploy your static site to a Web server like Caddy , you might need to pre-compress it, especially if you want to use Brotli with Caddy as it’s only supported for pre-compressed assets. Brotli find www.new -type f \( -name '*.html' -o -name '*.js' -o -name '*.css' -o -name '*.xml' -o -name '*.svg' \) \ -exec /bin/sh -c 'brotli -q 11 -o "$1.br" "$1"' /bin/sh {} \; Gzip find www.new…
If you use a distro with Wayland, you might have noticed, that screen sharing might not work, it will probably show a black screen, instead of your display Why This is because Wayland doesn’t give the permission for a program to capture the screen the same way X.ORG does. Since your distro/Desktop environment uses Wayland, it probably uses Pipwire too, we will use it to share our screen.…
Hi, I am Faris, passionate about Free and Open source software, and Cloud computing. I work on the Aosus Community , the biggest Arabic community for FOSS, and I created ARhackintosh , a place where you found anything hackintosh related in Arabic. I spend my time experimenting with FOSS and cloud computing as I like to learn by doing.
The Aosus Community Aosus is the biggest Arabic community for FOSS, we want to spread Free and open source software in the Arab world, and spread the culture around contributing to FOSS. I Joined Aosus in 2021 to work on a new re-launch for the project, first by merging it with another Linux telegram chat group that had more than 3000 members. Then I worked on redesigned the community page, and…