SelfHosting Updates - May 2025
Ive been following closely this awsome newsletter from: https://selfh.st/icons/
And these apps have taken my attention lately:
aGPL | A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search
A replacement for raindrop….
MIT | A real-time app for conducting a remote sprint retrospective meeting
Having retrospectives is really important when working Agile…
Apache v2 | Developer-first, open source Typeform alternative (formerly known as Blocks.md)
An interesting alternative also to formbricks
As I recently had some trouble with my phone…
Filebrowser alternative!
BYOD, I mean bring your own music https://github.com/swingmx/swingmusic
Cap is a lightweight, modern open-source CAPTCHA alternative designed using SHA-256 proof-of-work
- Wordpres…but static sites? https://github.com/nityam2007/StaticPress-Docker
New SelfH Apps
I had a look to https://github.com/localtunnel/server, just that still, cloudflared is the go to option for me when exposing homelab containers.
New apps always come with new tricks: generating secrets automatically with CLI
openssl rand -base64 12 #for secrets
openssl rand -hex 32 #for apikeys
Termix
Termix, not termux, its being great to get all my servers at one place:
MIT | Clientless web-based SSH terminal emulator that stores and manages your connection details
This is how termix UI looks:
You can create user on termix like so:
Now I can have one tab for each home selfhost related device:
- http://192.168.1.11:9000/ the x300
- .1.13 this x13 laptop…
- A distant Pi and connect via tailscale to see its temperature…
udo apt update && sudo apt upgrade -y
vcgencmd measure_temp
Or the health statistics of distant containers:
docker stats $(docker-compose ps -q)
Termix reminded me about Tabby.
Tabby is a terminal for the modern age
You can use Termix to manage devices on the same local network:
#arp -a
arp -a | grep "192.168.1" #filtered to avoid containers
#ip neigh
#nmap -sP 192.168.1.1/24 | grep "scan"
But also the ones via tailscale, even if they are outside your home network:
sudo tailscale status | grep -v "offline"
You can measure the temp of a distant Pi:
vcgencmd measure_temp pmic
#docker system prune -a #or clean its unused container space
CheckMate
aGPL | Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations.
Publiteme
UserTour
For product people in the room:
Agpl v3 | Usertour is an open-source user onboarding platform designed for developers. It allows you to create in-app product tours, checklists, and launchers in minutesâeffortlessly and with full control.The open-source alternative to Userflow and Appcues
Recap from Spring 2025
I was covering recently nextcloud…
found out about
Apache v2 | This is the main repository of the OpenCloud server. It contains the golang codebase for the backend services.
- Using ProtonDrive with rclone
Which I could not resist to try: https://github.com/JAlcocerT/Docker/tree/main/Backups#rclone
AI Apps Im SelfHosting
I decided to add this section: https://github.com/JAlcocerT/Docker/tree/main/SelfH
To get in a quick look what Im selfhosting lately.
- Now the MultiChat project I’ve been tinkering on, now supports also the Youtube Groq Summaries:
Get your AI API KEYS:
https://platform.openai.com/playground/prompts?models=gpt-4.1
https://platform.openai.com/logs
- OpenAI API Keys - https://platform.openai.com/api-keys
Anthropic - https://console.anthropic.com/settings/keys
For Ollama, you need this setup
MIT | The terminal client for Ollama
sudo snap install astral-uv --classic #got it working with python 3.13.2
#astral-uv 0.7.2 from Alex Lowe (lengau) installed
uvx oterm #https://ggozad.github.io/oterm/installation/#installation
- I got working a local research assistant the searches the web for you and summarizes the content via Ollama (I added OpenAI as well and groq is WIP).
It uses LangGraph under the hood!
I needed recently…
Speedtest CLI from OoklaÂŽ:
As seen on the benchmarking post:
sudo apt-get install speedtest-cli
See that the speedtest app is running with:
curl 192.168.1.11:8065/api/healthcheck
Conclusions
From now on, I will include docker-compose stacks linked to this kind of recap Selfhosting posts:
docker builder prune
#docker system prune -a
docker volume prune
docker image prune -a
Recently I saw a really cool podcast from DOAC:
And one of the messages I got was:
- 70% more of the same
- 20% better
- 10% new
With Selfhosting I feel im balancing a lot towards the new, which makes me operate away from my bests, yet I learn a lot.
For example
Lately I got to know about couple of ’new’ VectorDBs:
Milvus is a high-performance, cloud-native vector database built for scalable vector ANN search
Milvus can have Attu as UI companion:
Open-source vector similarity search for Postgres
- https://github.com/hollowpnt92/docker-port-viewer?ref=selfh.st https://github.com/hollowpnt92/docker-port-viewer/blob/main/docker-compose.yml
docker run -d --name docker-socket-proxy -e CONTAINERS=1 -e POST=0 -e PUT=0 -e DELETE=0 -v /var/run/docker.sock:/var/run/docker.sock:ro tecnativa/docker-socket-proxy && docker run -d --name docker-port-viewer --link docker-socket-proxy -p 3003:80 hollowpnt/docker-port-viewer:latest
Better WebAnalytics
It’s always great to see new options appearing on the web analytics space.
I saw a cool post about Umami and how
Yet, lately I tried littlyx: which I discovered few months back


Powerful Analytics Solution. Setup in 30 seconds. Display all your data on a Simple, AI-powered dashboard. Fully self-hostable and GDPR compliant. Alternative to Google Analytics, MixPanel, Plausible, Umami & Matomo.
Automated Projects Docs
Wouldnt it be great to have a project documentation/on boarding guide automatically (and AI) generated?
It’s all about using what we know already, LLMs with appropiate context:
- OpenAI API Keys - https://platform.openai.com/api-keys
- Anthropic - https://console.anthropic.com/settings/keys
- Groq - https://console.groq.com/keys
- For Ollama, you need this setup
- RepoReader
git clone https://github.com/JAlcocerT/RepoReader
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
source .env
python3 app.py
#An error occurred: The model `text-davinci-003` has been deprecated, learn more here: https://platform.openai.com/docs/deprecations
But…it used davinci model which was deprecated: https://platform.openai.com/docs/deprecations#instructgpt-models
So I had to vibe code a little bit with codex to fix it:
But…I feel its already superseeded few times by other tools.
- Scrapping with FireCrawl + OpenAI
I also tried with Firecrawl and OpenAI to give me some readme/ sample posts about a given project:
- LangChain Web content embedd (to ChromaDB) + ask on that context:
In the meantime I discovered that it is also possible to ask questions about a Web’s content with LangChain, for example, a repository’s readme info:
###Change these parameters and lets go###
ollama_url = "http://192.168.1.5:11434" # Replace with your Ollama server URL if different
embedding_model = "all-minilm"
llm_model = "llama3.2:1b"
#user_question = "what it is this offer about?"
user_question = "what it is this repository about?"
#target_website = "https://justjoin.it/job-offer/link-group-product-manager-warszawa-ai"
target_website = "https://github.com/JAlcocerT/Streamlit-MultiChat"
#content_area_class = "MuiBox-root css-rcazos" # Use the same class as in the example
content_area_class = "markdown-body entry-content container-lg"
Its possible to use few LLMs to get the reply, tried with local models via Ollama, OpenAI and Groq APIs.
LangChail.LLM
: Ollama, OpenAI…It provides real and accurate information | Sample with gpt-4.1-nano đ
Based on the provided context, this repository is about creating a Streamlit Web App that allows users to chat with multiple large language models (LLMs) simultaneously, including OpenAI, Anthropic, Ollama, and Groq.
The repository is called Streamlit-MultiChat
and it features support for several LLMs, including:
- OpenAI (GPT 3.5, GPT4, GPT4o, GPT4o-mini)
- Anthropic (Claude 3, Claude 3.5)
- Ollama (Open Source Models)
- Groq API (LlaMa models using quick LPU inference)
The repository also includes documentation on how to get started, including:
- Cloning the repository and running the Streamlit Web App with API keys
- Exploring the project’s features, such as SliDev presentations, ScrapeGraph, DaLLe, Streamlit Auth, and OpenAI as Custom Agents
- Deploying the project using Docker and Portainer
The repository is designed to be used with Python venvs, and it includes instructions on how to set up a venv, install dependencies, and run the Streamlit Web App.
To set up the project, you can follow these steps:
- Clone the repository using
git clone https://github.com/JAlcocerT/Streamlit-MultiChat
- Create a new Python venv using
python3 -m venv multichat_venv
(for Linux) orpython -m venv multichat_venv
(for Windows) - Activate the venv using
source multichat_venv/bin/activate
(for Linux) ormultichat_venv\Scripts\activate
(for Windows) - Install the dependencies using
pip install -r requirements.txt
- Copy the API keys to the
.streamlit/secrets.toml
file - Run the Streamlit Web App using
streamlit run Z_multichat.py
Alternatively, you can use the Docker image by running docker pull ghcr.io/jalcocert/streamlit-multichat:latest
and then running the container using `docker run -p 8501:8501 ghcr.io/jalcocert/streamlit-multichat:latest
The problem with this approach is that the context is limited to one file only, the readme.md
and also subject that class changes on the repository website will require a class review for bs4 to work.
We are missing for example the technologies split of the project, which are at content_area_class = "BorderGrid about-margin"
Once embedded, it will reply with both context provided:
Whatever API you are using, remember that you can see the available models:
Once embedded, it will reply with both context provided:
Local Deep Researcher
- Some kind of LangGraph workflow to iteratively explore the code, instead of searching the web?
https://jalcocert.github.io/JAlcocerT/understanding-langgraph-local-deep-researcher
In many of these AI projects you will see UV as package manager
Vibe Coded Project Docs
- Simply Cloning a project repo and just vibe coding…
Codex with o4-mini as default model to write Astro powered docs?
Having in mind that astro can embed mermaidJS diagrams as per https://astro-digital-garden.stereobooster.com/recipes/mermaid-diagrams-in-markdown/
Using starlight theme:
#npm i -g @openai/codex
npm create astro@latest -- --template starlight
# cd docs
# npm run dev
cd docs && npm run dev
Once finished, we can see locally the theme: localhost:4321
These docs could be plugged directly to Github Pages
Now, we need to prompt codex:
codex
Are you able to generate documentation of the local-deep-researcher project, which files are located at ./src/ollama_deep_researcher and have it outputed to the astro theme template that it is loaded at ./docs/src?
Iterating on the prompts for Codex:
Codex AI Docs Prompt Astro | v1.0 đ
You are an AI documentation generator. Your task is to create technical documentation for the local-deep-researcher project.
1. Project Files:
Inspect the content of the files located in the ./src/ollama_deep_researcher
directory. Please process the content of these files to understand the project’s structure, modules, functions, classes, and overall functionality.
2. Documentation Requirements:
The generated documentation should aim to cover the following aspects (please be as comprehensive as possible based on the code):
- Project Overview: A high-level summary of the local-deep-researcher project’s purpose and main features.
- Module Descriptions: For each Python file (or identified module), provide a description of its functionality and key components.
- Function and Class Documentation: For each function and class, include:
- A concise description of its purpose.
- Its signature (parameters, return type).
- Explanations of the parameters and return values.
- (If possible and relevant) Short examples of usage.
- Key Concepts and Algorithms: If the code implements any significant algorithms or concepts, explain them in a clear and understandable way.
- Dependencies: List any external libraries or dependencies used by the project.
- (Optional, if discernible) Configuration: If the code involves configuration files or settings, document their purpose and how to modify them.
3. Output Format (Astro Theme Template):
The final documentation should be formatted to be easily integrated with the Astro theme located at ./docs/src
. Please consider the following:
- Markdown Output: Generate the documentation in Markdown format (
.md
files) as this is the primary format for Astro content. - Frontmatter: Respect the Astro frontmatter at the beginning of each Markdown file (e.g.,
title
,description
,sidebar
)as per the sample posts 4. Input:
I will now provide you with the content of each file in the ./src/ollama_deep_researcher
directory. Please process them one by one.
5. Output Instructions:
Output the generated documentation in Markdown format, ready to be placed within the ./docs/src
directory of my Astro project.
The agent placed them at the wrong place, just following my incorrect orders:
So I moved the files and it required to tweak the frontmatter, which I will specify on the next prompt iteration.
This is the result:
Codex AI Docs Prompt Astro | v1.1 đ
You are an AI documentation generator. Your task is to create technical documentation for the Claper cloned project.
1. Project Files:
Inspect the content of the files located in the ./
directory. Please process the content of these files to understand the project’s structure, modules, functions, classes, and overall functionality.
2. Documentation Requirements:
The generated documentation should aim to cover the following aspects (please be as comprehensive as possible based on the code):
- Project Overview: A high-level summary of the local-deep-researcher project’s purpose and main features.
- Module Descriptions: For each Python file (or identified module), provide a description of its functionality and key components.
- Function and Class Documentation: For each function and class, include:
- A concise description of its purpose.
- Its signature (parameters, return type).
- Explanations of the parameters and return values.
- (If possible and relevant) Short examples of usage.
- Key Concepts and Algorithms: If the code implements any significant algorithms or concepts, explain them in a clear and understandable way.
- Dependencies: List any external libraries or dependencies used by the project.
- Create one
index.md
with the high level overview: description of the project, key features, modules, dependencies, configuration and environment, also Static code analysis (languages, structure, dependencies). - For each mdule that you consider important to understand the project way of working, create a separated markdown post file
- If the project have guidelines on how t run it or deploy, lets create a
deploy.md
post with such info. Else, lets try to guess it based on the technlogies. - (Optional, if discernible) Configuration: If the code involves configuration files or settings, document their purpose and how to modify them.
3. Output Format (Astro Theme Template):
The final documentation should be formatted to be easily integrated with the Astro theme located at ./docs/src/content/docs/reference
. Please consider the following:
- Markdown Output: Generate the documentation in Markdown format (
.md
files) as this is the primary format for Astro content. - Frontmatter: Respect the following Astro frontmatter at the beginning of each Markdown file (e.g.,
title
,description
)
4. Input:
See the content of each file in the ./
directory. Please process them one by one and get an idea of how the all work together.
5. Output Instructions:
Output the generated documentation in Markdown format, ready to be placed within the ./docs/src
directory of my Astro project.
Automating this a little bit more, the astro setup can be done with:
#!/usr/bin/expect -f
spawn npm create astro@latest -- --template starlight
# Increase timeout and add debugging after expect
expect -timeout 20 "*Where should we create your new project?*" {
send "./documentaition\r"
puts "Sent project directory."
} timeout {
puts "Timeout occurred while waiting for project directory prompt."
exit 1
}
expect -timeout 20 "*Install dependencies?*" {
send "y\r"
puts "Sent 'yes' for dependencies."
} timeout {
puts "Timeout occurred while waiting for install dependencies prompt."
exit 1
}
expect -timeout 20 "*Initialize a new git repository?*" {
send "n\r"
puts "Sent 'no' for Git initialization."
} timeout {
puts "Timeout occurred while waiting for Git init prompt."
exit 1
}
expect eof
I also added the following fllow ups:
- Write the files
- Can you inspect the git code changes on a highlevel and describe on a different post the versions and associated changes?
So now I need to:
#Clone the repo
git clone https://github.com/JAlcocerT/qatrackplus
#git show HEAD #q
#sudo apt install expect
nano create-starlight.sh #use the script above
chmod +x create-starlight.sh
./create-starlight.sh
cd documentaition && npm install && npm run dev
codex
#codex "$ai_docs_prompt"
#codex --approval-mode full-auto "create the fanciest todo-list app"
#codex --approval-mode full-auto "$ai_docs_prompt"
Codex AI Docs Prompt Astro | v1.2 đ
You are an AI documentation generator. Your task is to create technical documentation for the QATrackPlus cloned project and write the post as markdown files where specified.
1. Project Files:
Inspect the content of the files located in the ./
directory. Please process the content of these files to understand the project’s structure, modules, functions, classes, and overall functionality.
2. Documentation Requirements:
The generated documentation should aim to cover the following aspects (please be as comprehensive as possible based on the code):
- Project Overview: A high-level summary of the local-deep-researcher project’s purpose and main features.
- Module Descriptions: For each Python file (or identified module), provide a description of its functionality and key components.
- Function and Class Documentation: For each function and class, include:
- A concise description of its purpose.
- Its signature (parameters, return type).
- Explanations of the parameters and return values.
- (If possible and relevant) Short examples of usage.
- Key Concepts and Algorithms: If the code implements any significant algorithms or concepts, explain them in a clear and understandable way.
- Dependencies: List any external libraries or dependencies used by the project.
- Create one
index.md
with the high level overview: description of the project, key features, modules, dependencies, configuration and environment, also Static code analysis (languages, structure, dependencies). - For each mdule that you consider important to understand the project way of working, create a separated markdown post file
- If the project have guidelines on how t run it or deploy, lets create a
deploy.md
post with such info. Else, lets try to guess it based on the technlogies. - Inspect the git code changes on a highlevel and describe on a different post the versions and associated changes into a
releases.md
post. - (Optional, if discernible) Configuration: If the code involves configuration files or settings, document their purpose and how to modify them.
3. Output Format (Astro Theme Template):
The final documentation should be formatted to be easily integrated with the Astro theme located at ./documentaition/src/content/docs/reference
. Please consider the following:
- Markdown Output: Generate the documentation in Markdown format (
.md
files) as this is the primary format for Astro content. - Frontmatter: Respect the following Astro frontmatter at the beginning of each Markdown file (e.g.,
title
,description
)
4. Input:
See the content of each file in the ./
directory. Please process them one by one and get an idea of how the all work together.
5. Output Instructions:
Output the generated documentation in Markdown format, ready to be placed within the ./documentaition/src
directory of my Astro project.
And this was applied also to big repos, like signoz with ~380mb in it or…remotion, with 4GB size!
du -sh . #see repo size
I could not resist to
- follow up with a: can you create an additional post on how to deploy this app with docker containers?
- leave aut mode…
#codex --approval-mode full-auto "theawsomeprompt"--provider ollama
codex --approval-mode full-auto < input.txt #--provider ollama
As input.txt
is the prompt we have tinkered with.
Codex AI Docs Prompt Astro | v1.3 đ
You are an AI documentation generator. Your task is to create technical documentation for the LibreChat cloned project and write the post as markdown files where specified.
1. Project Files:
Inspect the content of the files located in the ./
directory. Please process the content of these files to understand the project’s structure, modules, functions, classes, and overall functionality.
2. Documentation Requirements:
The generated documentation should aim to cover the following aspects (please be as comprehensive as possible based on the code):
- Project Overview: A high-level summary of the local-deep-researcher project’s purpose and main features.
- Module Descriptions: For each Python file (or identified module), provide a description of its functionality and key components.
- Function and Class Documentation: For each function and class, include:
- A concise description of its purpose.
- Its signature (parameters, return type).
- Explanations of the parameters and return values.
- (If possible and relevant) Short examples of usage.
- Key Concepts and Algorithms: If the code implements any significant algorithms or concepts, explain them in a clear and understandable way.
- Dependencies: List any external libraries or dependencies used by the project.
- Create one
index.md
with the high level overview: description of the project, key features, modules, dependencies, configuration and environment, also Static code analysis (languages, structure, dependencies). - For each mdule that you consider important to understand the project way of working, create a separated markdown post file
- If the project have guidelines on how t run it or deploy, lets create a
deploy.md
post with such info. Else, lets try to guess it based on the technlogies. - Inspect the git code changes on a highlevel and describe on a different post the versions and associated changes into a
releases.md
post. - Create an additional post on how to deploy this app with docker containers into
container.md
- (Optional, if discernible) Configuration: If the code involves configuration files or settings, document their purpose and how to modify them.
3. Output Format (Astro Theme Template):
The final documentation should be formatted to be easily integrated with the Astro theme located at ./documentaition/src/content/docs/reference
. Please consider the following:
- Markdown Output: Generate the documentation in Markdown format (
.md
files) as this is the primary format for Astro content. - Frontmatter: Respect the following Astro frontmatter at the beginning of each Markdown file (e.g.,
title
,description
)
4. Input:
See the content of each file in the ./
directory. Please process them one by one and get an idea of how the all work together.
5. Output Instructions:
Output the generated documentation in Markdown format, ready to be placed within the ./documentaition/src
directory of my Astro project.
- Windsurf/Cline/Aider IDE’s - As seen on the vibe coding post
Windsurf, which is a vscode forked, recently adquired by openai…
Tested with:
https://github.com/airbytehq/airbyte https://github.com/SigNoz/signoz https://github.com/syncthing/syncthing https://github.com/grafana/grafana