(This is a repost of this reddit post https://www.reddit.com/r/selfhosted/comments/1fbv41n/what_are_the_things_that_makes_a_selfhostable/, I wanna ask this here just in case folks in this community also have some thoughts about it)

What are the things that makes a selfhostable app/project project good? Maybe another way to phrase this question is, what are the things that makes a project easier to self-host?

I have been developing an application that focuses on being easy to selfhost. I have been looking around for existing and already good project such as paperless-ngx, Immich, etc.

From what I gather the most important thing are:

  • Good docs, this is probably the most important. The developer must document how to self-host
  • Less runtime dependency–I’m not sure about this one, but the less it depends on other services the better
  • Optional OIDC–I’m even less sure about this one, and I’m also not sure about implementing this feature on my own app as it’s difficult to develop. It seems that after reading this subreddit/community, I concluded that lots of people here prefer to separate identity/user pool and app service. This means running a separate service for authentication and authorization.

What do you think? Another question is, are there any more good project that can be used as a good example of selfhostable app?

Thank you


Some redditors responded on the post:

  • easy to install, try, and configure with sane defaults
  • availabiity of image on dockerhub
  • screenshots
  • good GUI

I also came across this comment from Hacker News lately, and I think about it a lot

https://news.ycombinator.com/item?id=40523806

This is what self-hosted software should be. An app, self-contained, (essentially) a single file with minimal dependencies.

Not something so complex that it requires docker. Not something that requires you to install a separate database. Not something that depends on redis and other external services.

I’ve turned down many self-hosted options due to the complexity of the setup and maintenance.

Do you agree with this?

  • emon@masto.top
    link
    fedilink
    arrow-up
    15
    ·
    1 day ago

    @hono4kami To me, good documentation is the number one thing that makes a selfhostable application good.
    Second would be “is it dockerized ?”

    • conciselyverbose
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 day ago

      Yep, documentation and a good base level default installation configuration/guide with minimal friction.

      I’m perfectly willing to play around once I know at the basic level that the core flow is going to work for me. If it takes me digging through a stack of documentation (especially if it’s bad) to even get something to experiment with on my own system? I won’t bother.

    • hono4kami@slrpnk.netOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      To me, good documentation is the number one thing that makes a selfhostable application good.

      I agree. If you don’t mind: what are your qualifications for good documentation? Do you have some good examples of good docs?

      • tuhriel@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        6
        ·
        edit-2
        1 day ago

        What helps a lot for apps with multiple config files:

        • if you tell the user to “add code xy to the config file” : tell me which file. is it the main config file? the one of the reverse proxy etc.?
        • provide a sensible example library of the config structure. For example: duting the implementation of an importer for beancount I was struggling with what goes where. The example structure was really, really helpful.
        • also, if you have configurations which allow different options: TELL ME THE OPTIONS! If I get an error during startup, that for config.foo the value “bar” is not allowed, I need a list of options somehwere, so many hours lost to find out what I can write to config.foo
      • Jumuta
        link
        fedilink
        English
        arrow-up
        2
        ·
        21 hours ago

        including examples for everything in the docs is the best way to explain imo