RSSAmplifier

Blog

Home on FarisZR

Recent content in Home on FarisZR

fariszr.comRSS feed ↗40 posts

Latest posts

How I Made My Homelab Fix Itself Using Komodo and OpenClaw

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,…

FYI: 2025 Huawei Matepads can't play 4k youtube videos

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…

Knocker: Skip the VPN for your homelab, Just Knock

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…

How to use the Proxy Protocol with Caddy (Get the Source IP from a TCP proxy)

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…

Gitea Actions, a buggy mess

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,…

Vibecoding with GitHub Copilot: Lessons Learned

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…

Automatically sync files to Mega.io with dockerized mega-cmd

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…

How to add support for Element Call with Docker Compose & Caddy

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…

Selfhosted grammar autocorrect with languagetool and docker compose.

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…

Go Paperless with Paperless-ngx and Ai + Nextcloud Intergration.

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…

Setup Contact and Calendar (dav)sync using Radicale and Docker compose.

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…

Quick Fixes for Flatpak Dark Mode Detection Issues

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…

Using Custom providers like Groq with Zed Ai

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…

How to run Brave Leo LLM locally with ollama and Docker compose

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…

Setup Owncloud infinite scale with docker compose

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…

How to Make Your Linux Home Server Accessible on the Internet Without Port Forwarding

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,…

Redirect URL paths on Cloudflare pages for free

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…

Deploy Projects Securely Using Tailscale SSH and GitHub Actions

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…

Add Missing Linux Packages into WordPress Docker Images Without Rebuilding

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…

Set up scheduled Debian/Ubuntu unattended upgrades

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…

Scheduling Docker jobs without cron

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…

Purge remote media cache in Matrix Synapse

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…

Setup IPv6 properly on docker (Fix Source IPv6 propagation)

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…

setup Squid proxy with docker

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…

How to send a matrix message using CURL and an access token

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":" ",…

setup full text search for Nextcloud on docker

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…

Did the EU ban JSdelivr and other free CDNs?

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…

Free Discourse S3 object storage and CDN with Cloudflare R2

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…

Docker compose Gitops using Github Actions

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…

Enable Video hardware acceleration on Fedora 36+/RHEL/CentOS

(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…

setup a Samba share with network discovery using docker-compose

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…

Setup Cloudflared using Docker without the ZT dashboard

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'…

How to set "Cache-Control" Header for static files in Caddy

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…

How to compress static site to Brotli and Gzip

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…

how to fix screen sharing in Chromium browsers on Wayland

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.…

Archives

(untitled)

About

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.

My Projects

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…

Search