Self-Hosted Alternatives to Popular Services

223 readers
2 users here now

A place to share, discuss, discover, assist with, gain assistance for, and critique self-hosted alternatives to our favorite web apps, web...

founded 2 years ago
MODERATORS
1626
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/Retiary_Lime on 2025-02-26 21:59:09+00:00.

1627
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/helbette on 2025-02-26 21:35:19+00:00.


Hey everyone,

As some of you might have seen, I recently built and open-sourced an email verifier, which I also serve for free, thanks to /u/colordreamm he created this reddit post and I joined to this great subreddit.

I want to keep the momentum going and build more free and open-source might be AI-driven free & opensource tools.

And before you ask… What’s the catch? 😄

There is none. I’m not collecting data, running a paid service, or monetizing anything (except for a small Buy Me a Coffee link if people want to support my work). Everything I build is 100% open source and free to use.

Why am I doing this? I’m a seasoned engineer who has worked on all kinds of various projects/jobs, but building for the community is another delight for me. I see this as a great way to learn, experiment with new tech (e.g. AI), and create genuinely useful tools for the community. Plus, I love developing in my spare time!

I guess my imagination is not that great about ideas unfortunatelly, that's why I wanted write up this post.

Honestly no boundaries, could be any pain point, interesting ideas, you are also curios about? I'd love to hear your ideas and see if I can build something valuable for everyone.

Looking forward to your thoughts! 🙏

1628
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/MikeoFree on 2025-02-26 21:25:09+00:00.

1629
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/SolNac on 2025-02-26 19:12:59+00:00.


Hi r/selfhosted community,

I've been working on a self-hosted e-mail organizer as a hobby project for some time and I would like to share it with you. This post is self-promotion, and the service itself is free (both gratis and libre). It has been running on my home lab for months now and I hope that some of you will give it a try and find it useful.

It's called Plauna, and you can find the source code here and the Docker image for it here. Plauna helps you organize your e-mails according to the categorizes you define. I started working on this project after moving away from Gmail. I like how Gmail labeled my e-mails automatically but I didn't want to Google read my e-mails. Also, the Gmail labels did not 100% fit my needs. I wanted to have something more flexible.

It works like this: You create the categories you want, and Plauna creates the corresponding folders on your e-mail servers. You categorize the first few e-mails manually, then train the models on your data. Everything happens and stays on your machine. Afterwards, the incoming e-mails are categorized and moved to their respective folders. You can correct any miscategorized e-mails and re-train the models, so Plauna gets more precise the more you use it. You can also use it to connect to more than one e-mail server if you have multiple personal e-mail accounts, like I do.

Plauna is still under heavy development. The service itself is usable but it still needs a lot of polish (especially the UI). I am happy to answer your questions and support you set it up if you need any help. I'm also interested in hearing your feedback.

1630
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/kyle_the_mage99 on 2025-02-26 15:45:17+00:00.

1631
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/Magnus919 on 2025-02-26 14:23:55+00:00.

1632
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/shol-ly on 2025-02-26 12:43:18+00:00.


Hey, r/selfhosted! selfh.st/apps is a directory of 1,000+ self-hosted apps built to to accompany This Week in Self-Hosted. It features various options for filtering (tags, alternatives) and sorting (stars, activity, alphabetical, etc.).

Launched early last year, I recently implemented several new features I thought might be worth sharing with the community.

Bookmarks

Initially implemented last year as 'Favorites', 'Bookmarks' allow users to keep a tab on projects they'd like to explore at a later time. Each tile features a bookmark icon in the upper right for easy tagging that can then be easily viewed using the 'Bookmarks' option in the 'Tags' dropdown.

To keep things simple, bookmarks rely on local browser storage for tracking. They will not follow users from device-to-device and will be lost when a user wipes their browsing data.

Custom Share Links

Custom share links are a brand new feature added this week that allows users to easily capture their current bookmarks as a custom view to share with others.

Built to accommodate up to 50 bookmarks, the directory utilizes a new vanity URL (slfh.st) to generate custom short links that store a user's current bookmarked applications. After generating, the URL is copied to a user's clipboard for easy sharing.

When a user views a shared link, the view is filtered by the apps stored in the URL but are not automatically added to that user's bookmarks.

Here are some examples:

A few notes:

  • Rate limits have been applied to both logged in and guest users to prevent abuse
  • It relies on non-identifying cookies and other security features to ensure it cannot be abused by malicious actors (too many privacy-conscious browser add-ons may break the functionality for some)
  • Custom URLs will be deleted after significant periods of inactivity (intended to be more of a short-term sharing feature)
  • The view captured by the short link will not include new bookmarks selected after the URL was generated
  • No more than 50 bookmarks can be shared in a custom view

Note: This functionality was suggested by a selfh.st reader and tested by some members of the community. Thanks to all who contributed!

New Sort Methods

Two new sorting methods were recently added as additional ways to help users discover new software:

  • Age (Ascending)
  • Age (Descending)

Future Planned Features

  • SSO Tags: I'm currently making my way through the directory and tagging all SSO-capable software for easy filtering

Final Thoughts

I'm grateful to the community and all who have contributed to this project. While I plan to add more features in the future, the focus will remain on keeping things simple and not limiting features to users with registered accounts.

While there may be a few things I can do to make some of the functionality a bit more obvious, I've chosen a minimal approach so as to not overwhelm users just looking to explore software.

As usual, feel free to reach out with feedback!

1633
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/remoteguy11 on 2025-02-26 08:09:03+00:00.


European selfhosting people, hello!

Wondering what's your choice when it comes to VPS and why, so that I can find the best deals and performance out there.

So far I have tried:

I have ditched Vultr, Digitalocean and AWS due to prices and currently only use Hetzner.cloud and Cloudblast.io.

My usage is basically hosting sites and mobile apps backends or runners.

What are your choices instead?

1634
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/iGermanProd on 2025-02-26 01:43:16+00:00.


Better formatting and future updates (if I care enough) be in the gist

DIY Private Filtered DNS

Create your own secure DNS server with filtering capabilities

NextDNS, eat your heart out

This tutorial will guide you through setting up a private DNS server using Caddy and AdGuard Home. You'll create a secure, encrypted personal DNS endpoint with content filtering and authorization that you can use from anywhere in the world.

What you'll get

  • A personal DNS server that blocks ads and unwanted content
  • Encrypted DNS connections for privacy
  • Access from any modern device that supports DNS-over-HTTPS (DoH)
  • Authentication to prevent unauthorized access

Prerequisites

  1. A server (even a free Oracle Cloud instance is sufficient)
  2. A domain or subdomain pointed to your server (important: no Cloudflare proxying)
  3. Basic command line and Caddy comfort (or a friend who can help)

Step 1: Install required software

  1. Install Caddy web server (this tutorial assumes the default systemd installation)
  2. Install AdGuard Home using their Docker image (recommended)
  3. Make sure Docker and Docker Compose are installed

Step 2: Configure Docker for AdGuard Home

Create a docker-compose.yml file with the following content:

version: "3.3"
services:
  adguardhome:
    container_name: adguardhome
    restart: unless-stopped
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf
      - /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/example.org:/certs
      # ⚠️ IMPORTANT! Replace "example.org" with your actual domain
      # Make sure this directory exists and contains .crt and .key files
    ports:
      - 1234:80/tcp   # Dashboard access
      - 5678:443/tcp  # DNS over HTTPS
      - 5678:443/udp  # DNS over HTTPS
      - 9012:3000/tcp # Initial configuration page
    image: adguard/adguardhome

Step 3: Initial AdGuard Home setup

  1. Start Docker Compose:docker compose up -d
  2. Access the initial setup page at http://your-server-ip:9012/
  3. Complete the setup wizard, creating an admin account and selecting your preferred filtering options

Step 4: Configure AdGuard Home

  1. Edit the conf/AdGuardHome.yaml file to add trusted proxies (for correct client IP display):dns: trusted_proxies: - 172.16.0.0/12 # Add this line for Docker subnet - 127.0.0.0/8- ::1/128
  2. In the AdGuard Home dashboard, configure encryption settings:
    • Set server name to your domain (e.g., example.org)
    • Set the certificate paths to:
      • /certs/example.org.crt
      • /certs/example.org.key
    • You can keep the default HTTPS port (443) or change it (update your Docker Compose file if you do)
    • Clear any DNS-over-TLS and QUIC port settings if present
    • Save the settings

Step 5: Configure Caddy as a reverse proxy

Create or edit your Caddyfile:

https://example.org/ {
    # DNS-over-HTTPS format: example.org/your_auth_token/dns-query/[optional_device_id]
    # Example: https://example.org/qwerty1234/dns-query/my-iphone

    vars {
        # Generate a secure token with: openssl rand -hex 32
        auth_token 1611709b3d87afec72b914e8c95e26d3644419d62687567e274ade41456afb02
    }

    u/auth_token path /{http.vars.auth_token}*

    handle @auth_token {
        uri strip_prefix /{http.vars.auth_token}
        handle /dns-query* {
            reverse_proxy https://127.0.0.1:5678/ {
                transport http {
                    tls_insecure_skip_verify
                }

                # For proper client IP tracking:
                header_up Host {upstream_hostport}
                header_up X-Real-IP {http.request.remote.host}
            }
        }

        handle {
            # Requests with valid token but invalid path
            respond "Invalid request" 400
        }
    }

    handle {
        # Unauthorized requests (including homepage)
        respond "Hello." 403
    }
}

Step 6: Activate your configuration

  1. Reload Caddy to apply the configuration:sudo systemctl reload caddy
  2. Restart AdGuard Home:docker compose restart adguardhome

Step 7: Using your private DNS

On your devices, configure DNS-over-HTTPS with the following URL:

https://example.org/your_auth_token/dns-query

Where:

  • example.org is your domain
  • your_auth_token is the token you set in your Caddyfile
  • You can optionally add a device ID at the end: /dns-query/my-phone

Troubleshooting

  • If AdGuard can't access the certificates, check the folder permissions. I run such smaller stuff with Dockge, which runs containers as root
  • If DNS isn't working, verify the ports in your Docker Compose file match the ones in your Caddyfile
  • Check your domain's DNS settings to make sure it points directly to your server

Now you have your own private, secure, and filtered DNS service that you control completely!

1635
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/m4nz on 2025-02-26 04:44:26+00:00.


TL;DR :

I stumbled across docmost this week and was mind-blown by how good it is for a fairly new open source app. I really like that we can easily embed Excalidraw diagrams (and edit it in the same page!!), how the image embedding is done is really great as well!

If you are looking for documentation software that is not just Markdown, check it out. (Yes you can export it to Markdown as well)

1636
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/Terrible_Actuator_83 on 2025-02-25 16:55:32+00:00.


Hi, r/selfhosted!

I'm new to this sub, but someone from r/python thought it'd be good to post my project here!

I'd like to share the project I've been working on during the last few weekends.

  • Code:
  • Video tutorial:

What My Project Does

SanitAI is a proxy that intercepts calls to OpenAI's API and removes sensitive data. You can add, and update rules via an AI agent that asks a few questions, and then defines and tests the rule for you.

For example, you might add a rule to remove credit card numbers and phones. Then, when your users send:

Hello, my card number is 4111-1111-1111-1111. Call me at (123) 456-7890

The proxy will remove the sensitive data and send this instead:

Hello, my card number is . Call me at

Target Audience

Engineers using the OpenAI at work that want to prevent sensitive data from leaking.

Comparison

There are several libraries to remove sensitive data from text, however, you still need to do the integration with OpenAI, this project automates adding, and maitaining the rules, and provides a transparent integration with OpenAI. No need to change your existing code.

1637
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/ZeroNoPro on 2025-02-25 17:41:37+00:00.


I am releasing the first beta test of my Asset management system.

First this is not a production ready system yet. However, I wanted to get some feed back since most of the core features are ready:

  • QR Scanner which lead the user to item, which is meant to be used with a label printer.
  • Location, Tag and Categories
  • Team system and team invite by mail only. // Hoping to make a shareable link in the future
  • Kit system that user can add assets to make a kit.
  • Status system for both Kit and Assets.

My next steps are to finish making a usable dashboard and upgrading the ui/ux. I also want to improve the docker image and fully automate the deployment since it's only semi automated.

I might not be able to make fast changes since I am in my last year to get my CS degree.

How to install:

IMPORTANT: you will have to do a manual migrate after installing or it will not work aka you will get an error when registering/login "500 SERVER ERROR". Command is under the docker compose code block

I have made a docker compose to make it easier to run:

Make sure to change it and remove comments.

services:
  db:
    image: 'postgres:17'
    container_name: ASSET-DB
    hostname: asset-db
    security_opt:
      - 'no-new-privileges:true'
    healthcheck:
      test:
        - CMD
        - pg_isready
        - '-q'
        - '-d'
        - asset
        - '-U'
        - assetuser
      timeout: 45s
      interval: 10s
      retries: 10
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: asset 
      POSTGRES_USER: assetuser // change this
      POSTGRES_PASSWORD: assetpass // change this
    restart: 'on-failure:5'
  asset:
    image: 'zurielbax/asset-rpo:latest'
    container_name: asset
    ports:
      - "80:80"
    volumes:
      - './asset/data:/data:rw'
      - './asset/conf:/conf:rw'
    environment:
      PHP_TZ: America/New_York
      TIMEZONE: America/New_York
      PUID: 1000
      PGID: 1000
      APP_NAME: Asset RPO
      APP_KEY: 'base64:PqkYgeKqq3hdHZTvL6ENXdhgyyoCDZYj9wofOcw0l4o=' // change this/create your own
      APP_ENV: production
      APP_DEBUG: false
      APP_URL: 'https://rpo.com/' // change this to your domain
      ASSET_URL: 'https://rpo.com/' // change this to your domain
      DB_CONNECTION: pgsql
      DB_HOST: db
      DB_PORT: 5432
      DB_DATABASE: asset
      DB_USERNAME: assetuser // change this to what you set to POSTGRES_USER
      DB_PASSWORD: assetpass // change this to what you set to POSTGRES_PASSWORD
      DB_PASSWORD_FILE: rootpass // change this
      CACHE_STORE: file
      SESSION_DRIVER: file
      SESSION_LIFETIME: 240
      SESSION_ENCRYPT: true
      SESSION_PATH: /
      SESSION_DOMAIN: 'rpo.com' // change this to your domain
      SANCTUM_STATEFUL_DOMAINS: 'rpo.com' // change this to your domain
      STARTUP_DELAY: 5
      TRUSTED_PROXIES: '*'
      MAIL_MAILER: smtp // change this to your mail provider to be able to add user to team and reset password
      MAIL_HOST: '${MAIL_HOST:-smtp.mailtrap.io}'
      MAIL_PORT: '${MAIL_PORT:-2525}'
      MAIL_USERNAME: '${MAIL_USERNAME}'
      MAIL_PASSWORD: '${MAIL_PASSWORD}'
      MAIL_ENCRYPTION: '${MAIL_ENCRYPTION:-tls}'
      MAIL_FROM_ADDRESS: '${MAIL_FROM_ADDRESS:-noreply@rpo.com}'
      MAIL_FROM_NAME: '${MAIL_FROM_NAME:-"Asset RPO"}'
    restart: 'on-failure:5'
    depends_on:
      db:
        condition: service_healthy

Manually do migrate

docker exec your_container_name php artisan migrate

or if in the container already

php artisan migrate

More Background Story:

buymeacoffee.com/zbax/i-created-asset-management-system-like-shelf-nu-i-wanted-self-hosted

for any updates look at the links below

EDIT: updated image on label example

1638
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/theSchlauch on 2025-02-25 18:18:03+00:00.


As of this Blog Post:

Plex will be removing Watch Together from the Apps and only keep it as legacy support in the App for now.

Is there any alternatives for this? I've read that Jellyfin has a watch party solution but that is 3rd party and doesn't get any updates.

1639
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/smithy1abc on 2025-02-25 16:10:13+00:00.

1640
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/horrorente on 2025-02-25 17:08:28+00:00.

1641
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/orkutmuratyilmaz on 2025-02-25 12:41:10+00:00.


Hello everyone,

Does anyone here know an alternative for n8n, with a free software license, such as GPL, AGPL, Apache, MIT?

n8n's self hosted version is super cool, but the license model can be a pain in the ass, in the not too distant future.

I'm currently reviewing Kestra now, but I'm not sure if it can be used instead.

Do you have any suggestions?

Best,

Orkut

1642
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/eljojors on 2025-02-25 01:37:39+00:00.

1643
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/pepastach on 2025-02-24 18:03:58+00:00.


Hi everyone! I host the typical set of apps (Home Assistant, Immich, Paperless, Jellyfin, ...) and I use them both from the local network as well as over the Internet using Cloudflare tunnels. I also use most of the apps both via web browser and from a native iOS app.

I recently setup Google authentication for Immich using Google Auth Platform so I can log in using my Gmail account and access the app. Now my question is what's the best practice for securing all the apps this way. Do I need to create a new Google Cloud project for each of them and repeat the process? It seems so because OAuth uses authorized domains which is app specific.

I couldn't find any comprehensive guide to secure the whole homelab. Just individual howtos which I already went through. Thanks in advance for any hints.

1644
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/DarkstormB801 on 2025-02-25 01:22:41+00:00.


Basically title. I’m thinking of buying a domain, and looking at various TLDs, however I am noticing the “New” and “Renew” sections. Question is simple, if I’m only paying for one year, and I’m only paying 5 dollars, would I only spend 5 dollars?

1645
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/PerfectReflection155 on 2025-02-24 18:47:39+00:00.

1646
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/chripede on 2025-02-24 22:27:13+00:00.


I see a lot of questions about self-hosting email. I recently switched from Gmail to self-hosting and wrote this guide on how to do it, or at least how I did it: It uses Stalwart and optionally hides everything but port 25 behind a Tailscale network.

1647
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/Dry_Tea9805 on 2025-02-24 22:09:07+00:00.

1648
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/StephanStS on 2025-02-24 20:48:02+00:00.


DietPi is a lightweight Debian based Linux distribution for SBCs and server systems, with the option to install desktop environments, too. It ships as minimal image but allows to install complete and ready-to-use software stacks with a set of console based shell dialogs and scripts.

The source code is hosted on GitHub: 

The main website can be found at: 

Wikipedia: 

The project released the new version DietPi v9.11 on February 23rd, 2025.

The highlights of this version are:

  • Pi-hole: Support for Pi-hole v6 added. This was the relevant change to issue the v9.11 release quick after the v9.10
  • Initial boot / Firstboot: Fixes for Quartz64/Star64/VisionFive 2 and WiFi connected hardware
  • Fixes for Fail2Ban

The full release notes can be found at: https://dietpi.com/docs/releases/v9/_11/

1649
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/bozodev on 2025-02-24 16:04:33+00:00.


Posteria is a web-based media poster management system that allows you to organize and store custom posters for your movies, TV shows, seasons, and collections. It provides an elegant interface for uploading, managing, and accessing your media artwork.

This is a project that I put together to solve a "problem" that I had. I like to keep my custom posters for Plex/Jellyfin backed up in case I lose everything. I keep regular backups of my Plex/Jellyfin setup, but I still like having a fallback.

I used to keep the custom posters that I had collected in a directory on my server that.

I decided to build a GUI around that structure.

Posteria was born. It is a very simple PHP application that gives a nice interface for the way I store my custom posters. It doesn't have any automations or anything. That was never the intent.

I have dockerized it so that anyone can self host it if they find it useful.

Check it out here:

1650
 
 
This is an automated archive made by the Lemmit Bot.

The original was posted on /r/selfhosted by /u/zipsm15 on 2025-02-24 14:18:42+00:00.


One year ago, I was a high school student with an idea, a passion for adventure, and a vision to build a self-hosted adventure tracking app—something I felt was missing. I remember clicking the post button on Reddit, sharing my project with the world, and hoping for the best. I will never forget that day, the excitement, the uncertainty, and the thrill of putting my work out there. Fast forward to today, now in college, and that idea has become a reality. AdventureLog has officially hit 100,000 downloads just six months after launch!

In case you are new, AdventureLog is a travel tracker and trip planner that allows users to log their adventures, create custom itineraries, and share their experiences with others.

I've learned so much along this journey—from tackling unfamiliar programming languages like Python and TypeScript, to diving into modern frameworks such as Svelte, and most importantly, from building a community around a project I truly believe in. Here, I want to share my experiences and key lessons learned, hoping to help others who are just starting out or looking to build their own projects.

Key Lessons Learned

1. Find Your Niche

Instead of building another clone, I spotted a gap in the market—a need for a self-hosted adventure tracking app that I would use myself. Focusing on a niche I was passionate about made every feature more meaningful and authentic.

2. Listen to Community Feedback and Requests

AdventureLog wouldn't be where it is today without the incredible community that has formed around it. By actively listening to feedback and feature requests, I've been able to shape the app to better serve its users.

3. Think Scalability from Day One

Anticipating growth early on was crucial. By planning for scalability and refactoring code to be flexible, AdventureLog can handle the increasing number of users without a hitch.

Looking Ahead

I'm thrilled about what the future holds for AdventureLog. Upcoming features include AdventureLog Discover—a public template repository for seamless trip planning—and a mobile client for on-the-go adventure tracking. More integrations are on the horizon, aiming to make the app even more powerful for adventurers everywhere.

Thank You!

I want to express my deepest gratitude to everyone who has downloaded, contributed, or provided feedback. Your support is the driving force behind AdventureLog's growth. Developers, feel free to share your own experiences and lessons learned in the comments below!

view more: ‹ prev next ›