r/SelfHosting

cronstable: highly-available cron with a web UI, durable state, DAGs, clustering, MCP server, and way more
▲ 14 r/SelfHosting+3 crossposts

cronstable: highly-available cron with a web UI, durable state, DAGs, clustering, MCP server, and way more

cronstable is a cron replacement that runs as a single foreground daemon that I've spent an inordinate amount of time on. It will run on basically anything because its been precompiled for basically any compute architecture that people still use. If there's a feature that another cron has that you need, I want to know about it. Beginner friendly, expert friendly. Container friendly, production ready, highly available. You get it.

From orchestrating web-scrapes, data processing, and storage to coordinating Minecraft server snapshots and upgrades. Possibilities are literally endless.

  • Scheduling: modern jobs defined in YAML; classic crontab files run unmodified; per-job timezone; optional second-level granularity
  • Failure handling: define what failed means to you; retries with exponential backoff; reports to Slack-compatible webhooks, email, Sentry, or a shell command.
  • Web dashboard (opt-in): one self-contained page served by the daemon, with live log tailing, run history, DAG graphs, cluster and fleet views, a TV wallboard, and a command palette. A REST API alongside. not sure if I'm competing with other cron solutions or DataDog at this point. But at least you don't need to SSH in to see what's going on.
  • Observability (opt-in): native Prometheus metrics; opt-in per-job CPU and peak-memory monitoring.
  • Durable state (opt-in): run history, retries, and missed-run catch-up survive restarts; job commands get key/value, cursors, fleet-wide locks, idempotency keys, artifacts, and run-scoped secrets through the CLI.
  • DAGs (opt-in): task dependencies, data hand-off between tasks, dynamic fan-out, sensors, human approval gates, backfill, crash-resume.
  • Clustering (opt-in): leader election via gossip over mutual TLS for best effort attempts at gating your jobs. Your self hosted replicas in one network can also bridge to speak to another set of self hosted replicas. Go one step further and harden it via any shared filesystem, a Kubernetes Lease, or etcd, so replicas can share one config without double-running jobs with absolute guarantee. Each job picks its own point on the liveness-vs-duplication trade-off with clusterPolicy: Leader (default) runs on the elected leader and fails closed. No quorum? Nobody runs. For jobs where a duplicate is worse than a skip (like billing, or outbound email); PreferLeader is never-skip and runs anyway when the cluster can't agree. You accept a possible double-run, for idempotent jobs that matter; EveryNode runs everywhere, for genuinely per-node work like local log rotation. No option is true exactly-once. Leader may skip, PreferLeader may double-run. But hey, at least you get to pick which way it breaks. By default the leader runs every job, but distribution: spread assigns each job to an owner by rendezvous hashing so the work fans out and can be more load balanced.
  • MCP server (opt-in): AI agents (Claude, Cursor, Copilot) can inspect jobs, DAGs, the cluster, and metrics; read-only by default, control only if enabled.
  • Packaging: pip/pipx/Homebrew; multi-arch Docker images on GHCR and Docker Hub in eight distro variants; standalone binaries for Linux, macOS, and Windows. Runs non-root with a read-only root filesystem and all capabilities dropped.

Live demo of the control panel UI with a stubbed backend (pretty cool I promise - if anything at least play with the logo cuz I spent a lot of time on it): https://html-preview.github.io/?url=https://github.com/ptweezy/cronstable/blob/develop/docs/demo/index.html ^(you might need to change the theme on your screen because on one of my screens the default theme is just way too dark. Will fix this soon. by play with the logo I mean swipe your mouse across it) 🙂

Feature Comparison chart: https://github.com/ptweezy/cronstable/blob/develop/docs/comparison.md

Source: https://github.com/ptweezy/cronstable

This is under active development, would appreciate any and all feedback. Thanks y'all!

github.com
u/ptweezy — 3 days ago

Built a 1-click script to turn old Android phones into a headless NAS & Media Server (Jellyfin, FileBrowser, Syncthing) via Termux

​

Got tired of old phones sitting in drawers while cloud storage subscriptions keep getting more expensive. Android phones have decent multi-core ARM64 silicon, built-in battery backup (UPS), and low idle power consumption, so I automated the whole self-hosted stack deployment into a single bash routine.

Repo: https://github.com/huzefdev/pocket-cloud

  1. FileBrowser (:8080) - Lightweight web UI to upload, stream, and manage internal phone storage directly like Google Drive.

  2. Syncthing (:8384) - Background continuous folder syncing between PC/phone nodes.

  3. Jellyfin (:8096) - Media streaming server running inside an isolated Ubuntu PRoot environment with FFmpeg codecs configured for hardware playback.

Running Jellyfin natively on Termux hits nasty dependency walls and broken shared library links (especially with curl/ffmpeg codecs). Instead of fighting Android bionic libc quirks for hours, the installer spins up an isolated Ubuntu container inside PRoot for the media engine, while keeping FileBrowser and Syncthing running directly on Termux bare-metal for maximum IO throughput.

Also handles Android wake-locks so the OS scheduler doesn't kill the server daemons 5 minutes after locking the screen.

curl -sL https://raw.githubusercontent.com/huzefdev/pocket-cloud/main/install.sh | bash

The script is non-destructive, checks existing mount points before binding storage, and lets you choose which modules you want to deploy interactively.

Code is completely open-source. Looking for feedback on process management and memory footprint on low-RAM devices

u/Qodequeststudio — 5 days ago

Sellrika: a self-hosted point of sale + online store

Hi all. I am the developer of Sellrika. It is a point of sale and an online store in one app, for shops, cafés and restaurants. I just put the code on GitHub, so you can host it yourself.

What it does

  • Sell at the counter (POS) and online, from the same products and stock
  • Stock, orders, customers, discount codes, reports
  • Email marketing (campaigns, abandoned-cart emails)
  • REST API and an MCP server
  • Extensions and store themes you can write yourself
  • English, German and Thai

Self-hosting

  • One Docker container. No Redis, no queue, no extra services.
  • SQLite by default. Set `DB_CONNECTION=postgres` if you want Postgres.
  • Two volumes: one for the database, one for uploads. That is all you back up.
  • The `docker-compose.yml` runs it behind Traefik and gets the SSL certificates, also for a shop's own domain.

There is also a paid hosted version at https://sellrika.com. It runs the same code. The self-hosted app has no plan limits.

Links

I would like to hear what is missing or unclear in the setup. Feedback on the self-hosting guide helps a lot.

u/aj-zinkyaw — 5 days ago

Is there a way to put sites onto the web (excluding funnel)

I want to make it work on mobile data as I want to host a invidious instance that can be accessed why not tailscale funnel? cause they only support 3 ports and I already used all three sites

Any help would be appriciated

Edit: Also Id prefer free ones but im ok with one time payments

reddit.com
u/jonas8273 — 13 days ago

openplate - MIT licensed calorie/food tracker with photo scan (local LLM support), MIT licensed, no paywalled features

Hey everyone,

so I was kinda surprised to see how expensive the popular calorie/food logging apps still are. Given that the individual API calls to identify foods from an image are really cheap at the moment I decided to build an open source alternative to Yazio and CalAI.

I asked family and friends as to what they would like and what the most important features were to them and came up with a set of features for the first version of a food tracking/logging app.

Feature list:

  • id foods from the photo of a plate (multiple at once)
  • be able to input a plate as text or voice, as if you're chatting with someone
  • cross check the foods with a reliable database of nutritional facts so hallucinations are kept low
  • easy to use
  • recipe recommendations for a list of ingredients, photo of the fridge

What the self-hoster in me wanted:

  • No reliance on the appstores, but a great UX (Progressive Web App)
  • Easy to self-host
  • Easy to replace upstream inference provider, also the possibility to use a local LLM
  • Stay in control of my data
  • Be able to invite my family to an instance I manage, so they dont have to signup to openrouter etc.

I had a first demo of this running quite fast and then met a research assistant for an obesity center and learned about their issues with patients and food logging. Obviously the existing solutions solve most of these, but they are paid and institutions can't host them on their own infra. So this led me down the path of splitting up the app into three distinct services.

The client app, can be run as a PWA within your network, you can add your key (BYOK) for any openai compatible API. The data stays in the browser, can be exported or synced through an encryption key with a sync server.

The core app, this app started off as a sync server for client apps, but turned into something like a gateway. You can run this in different modes, one of which is a managed gateway mode, for example to set up an instance for your family. The thought here is you have this running on your own network, configure an API key once and can then invite your friends to use (tailnet or whatever frontdoor youre using), they install the PWA and have an almost-native like app experience.

The inference runtime, if you want to self-host the inference and image recognition, I've setup a service for that too. This uses llama.cpp under the hood and does some pre-procesing for more accurate image identification. Ony my really crappy hardware ryzen 9 and 64gb this took around 180s per image, so you definitely need the hardware for this to make sense.

Once all of these were wired together and I had a better understanding of what the product needs to support, I developed a more polished version and invited family and friends to try this out and report bugs. This was basically the last 4 weeks. I now feel comfortable to open this up to everyone.

There is a project website that explains the stack in more detail and hosts the docs outside of github via https://openplate.de

The repository contains installation instructions and everything else you need via: https://github.com/LowCarbCheck/openplate (includes the compose or quadlet files).

Tech stack:

  • React Router, Vite, Tailwind + Shadcn
  • PostgreSQL
  • Docker/Podman
  • llama.cpp for local inference

Disclaimer: There is a hosted/paid version with a free trial that is linked to from the project website, but that's totally optional, no paywalled features and self-hosting should be easy enough (requires an API key or a local LLM though).

Looking forward to feedback on the app itself and how setting it up goes for everyone. Here to help if you're facing issues running this, also happy to accept PRs on GitHub!

u/telasch — 13 days ago

Docker backup system

Hi all,
about a year ago i opened this thread:

https://www.reddit.com/r/selfhosted/comments/1r1vsc4/docker_backups/

After not finding an adequate solution, i decided to pick up the glove and build a backup system myself.

The core design decision: API-based exports per service, not blind DB/volume dumps. Each worker talks to the service's own REST/GraphQL API (or its official CLI, like Vaultwarden for example) — never the underlying database directly.
No DB credentials anywhere, no docker.sock mounted, no docker exec into other containers.
It also means the backups are just JSON/Markdown you can actually open and read, not an opaque pg_dump you're hoping restores cleanly someday.

Runs on a schedule (daily at a configurable time, or every N hours) with configurable retention — defaults to keeping 30 days locally and the last 3 uploads on Google Drive, all editable from the GUI.

Currently supports:

- Vaultwarden (encrypted vault export via the bw CLI)

- Wiki.js

- Snipe-IT

- Bar Assistant

- KitchenOwl

- Linkwarden

- n8n

- Karakeep

- Spoolman

- Immich (metadata only — albums/people/tags/EXIF, not the media files themselves)

- Nginx Proxy Manager

- AdGuard Home

  • Optional upload to Google Drive after each successful run.
  • The system does not restore from backup

Repo: https://github.com/alws34/DockerBackups

Setup instructions for each service are linked from the README so it doesn't turn into a wall of text.

please feel free to open a PR with your suggestions, or file issues/requests for services you want supported.

* All code written with the help of AI.

reddit.com
u/alws3344 — 14 days ago

Beginner looking to self host a Notion alternative for collaborative use

Hello everyone! I'm here to ask for advice regarding self-hosting. As the title suggests, I want to self host a Notion alternative, after Buildin AI introduced the atrocious feature where if you have more than 2 workspace members, the hard limit is 1000 blocks. I'm not interested in paying, so I'm looking to build one myself and join this wonderful community.

I researched a bunch of Notion alternatives but I'm starting to lose it when it comes to licenses. AppFlowy seemed like a wonderful solution until I found out that they apparently demand money from you EVEN if you self host, the concept of which is bonkers for me. I'm looking for a service which:

- can be self hosted entirely for free with no limit on members and isn't attached to any other cloud

- has blocks, various types of blocks, text formatting, embeds, and databases with various types (the ones I use most are regular table view and gallery, don't really need anything else)

- allows for real-time collaboration and sync on multiple devices

- (very desirable but I suppose not a requirement) has a good mobile app that also supports connecting to a custom VDS.

The intended uses are: planning stories, writing scripts (basically, writing in general); songwriting; writing and planning courses, lectures and labworks; literature analysis; planning and writing videogame scripts, decision graphs and tech documentation.

If anyone here can recommend any such services, and any practices when it comes to self hosting, I'd be elated. Thank you!

reddit.com
u/StaminaOverlook — 13 days ago