Seeking help of passionates of web and self-hosting!


#1

Hello everybody,

I’m the author of https://github.com/DFabric/dppm, a light self-hosting solution, available on Linux PCs and Raspberry-like boards. Services like Nextcloud, Gitea, Transmission and WordPress can be installed in a single command.

Before going deeper in the project details, I’ll explain what features remains to be developed:

  • exposing a web API, to perform system tasks like app install/remove, configurations
  • a web frontend, using this API, to manage the applications

Anyone interested is welcomed to help me on this, even more if you have experience with web technologies and APIs! :smiley:

Update: Job offer posted in https://crystaljobs.org/

Goals

I’ve worked more than 1.5 years, approaching 4 000 LoC for the project, plus another 4 000 LoC including the libraries developed for the purpose.

Even if I might be able, I can’t do everything on my own in a reasonable amount of time - that’s why I’m writing this post here :slight_smile:
I think it’s will be better to focus on my strength (system, back end), and cooperating with other people doing well on the web side.
I don’t live off it, yet, but that’s a goal. In order to earn money, here is a draft plan:

  • (done) having a working CLI product
  • exposing an API
  • developing a web frontend
  • -> Finally providing an on-premise solutions with a free basic, and paid ones (more, better apps, cloud backups, etc)

What’s done

Essentially, the CLI:

  • building/cleaning packages
  • installing and deleting applications
  • configuration of apps through unified CLI vars and CLI commands
  • handling of system services (creation, auto start at boot)
  • dedicated system users for each apps
  • handling of a MySQL-compatible database (auto creation/deletion of DB user)
  • reverse proxy integration with Let’s encrypt (Caddy)

TL;DR the project is here: https://github.com/DFabric/dppm - try yourself :slight_smile:

dppm app add caddy name=caddy -y
dppm app add nextcloud web_server=caddy name=test -y
dppm service start test
dppm service start caddy

You should be done, and access Nextcloud via http://[::1]/test :slight_smile:
You can also try with gitea (you don’t need a reverse proxy, and access it at http://[::1]:3000).

Background

This is a project which can become really huge with lots of features: lots of various apps, system metrics, web apis, database and DNS handling etc.

We can say there are already a bunch of self-hosting solution like YunoHost, Cloudron, Cozy, and others.

No one is satisfying, for several of reasons:

  • only runs on Linux x86 because of Docker (Cloudron)
  • only runs on Debian (YunoHost)
  • unnecessary complex (Cozy, that also use CouchDB)
  • depends on a heavy installation (Nodejs/Python runtime, Docker, DB)
  • all/most of them are blackboxes that must remained installed/running to use our services
  • all/most “reinvents the wheel” (e.g they don’t use filesystem info, system services, UNIX users/groups, host network etc)

So I built a project, dppm, which is a single binary that acts like an installer. Everything is entirely automated, and still compatible with good-old hand-made sysadmin!

Sorry for the annoyance of this long post, thank you!

Julien ‘@j8r


#2

Nice! Just curious, is this like an alternative to https://en.wikipedia.org/wiki/APT_(Debian)?


#3

Not really, it does much more: configuration API (port, host, domain etc), auto setup of database and reverse proxy.
Furthermore, it isn’t tied to Debian, nor Linux if fact. With little change it can be used on any UNIX (BSD, macOS), maybe even Windows we more work.
As said, the goal is not only to use this APIs through a CLI, but also through Internet.


#4

Also, note you can setup multiple applications on the same kind - like having 10 WordPress, with the same or different versions. This is simply not possible with any traditional package manager, that doesn’t even have this “application” concept.


#5

I’ve updated the post: an offer is available at https://crystaljobs.org/ :tada:


#6

I’ll work on this project with @scott , thanks for the support :smile:

This post can eventually be closed.