No description
Find a file
2025-08-02 15:57:33 +02:00
apps Update apps and app links 2025-08-02 15:57:33 +02:00
infrastructure infrastructure/sources/vikunja: fix oci url 2025-07-30 21:09:04 +02:00
overrides Update apps and app links 2025-08-02 15:57:33 +02:00
util Create util folder and add flux bootstrap 2024-04-20 18:30:06 +03:00
.gitignore Fix name 2022-03-31 16:51:08 +02:00
install.sh install: prune installation steps 2025-05-19 21:38:12 +02:00
README.md README: Update Toolset Overview 2025-07-30 20:47:19 +02:00

Stackspin Outwards Stackspout 🚀

This repository extends Stackspin with extra applications and overrides focused on business use. Once stabilized, the aim is to contribute as much upstream as possible.

Stackspout is used in day-to-day business with a double-digit user number, so all experiments happen carefully. Still, it is an experimental offering ⚠


Customizations ⚙

Overrides 🔧

  • Adds many Nextcloud extensions and some configuration
  • Allow iFraming of applications into Nextcloud

New Applications

Following are the applications Stackspout adds beyond Stackspin. Unlike Stackspin, there is currently no mechanism to add those individually — they come in one package with the repository.

Below list is formatted as:

subdomain: Service (helmrepo, if not by the application authors themselves)


Stackspin included Tools 🧰

  • dashboard: Toolübersicht von Stackspin
  • files: Nextcloud Tools Hub, Dokumentation, Filesharing, Kalender, Kontakte 📁
  • chat: Zulip Kommunikation und Arbeitsdokumentation 💬
  • note: Hedgedoc Lebende, kollaborative Dokumente 📝

Stable including OpenID Connect Single Sign-On 🔐

  • forge: Forgejo Code Repositories
  • do: Vikunja Projektmanagement
  • status: Gatus (minicloudlabs) Status-Überwachung Monitor

No Single Sign-On 🔓

LDAP Support

  • ninja: InvoiceNinja Rechnungsstellung, Angebote, ggf. Zeiterfassung 💰 (requires 30$ per year for whitelabeling)
  • support: Zammad Kundensupport & Login-Codes 🧾 (updates pending)

Paid Plan required for SSO


Coming Soon 🔜

  • sign: Docuseal / Documenso Signaturen 🔏
  • design: Penpot Design-Tool 🎨
  • stirling: PDF Manipulation Hub / Toolbox

Planned 📌


Ideas 💡

  • wiki/know: Wiki evtl. Wiki.js, preferred Integration with Nextcloud + Markdown/Orgdown?
  • call: Jitsi Meet / OpenTalk / Element Call
  • link: URL Shortener 🔗
  • connect: Bonfire Social & Community Tools

Stale 💤

  • people: SuiteCRM (bitnami repo)
  • time: Kimai (robjuz repo)

Configuration Tasks ☐

  • Nextcloud too slow - add Redis?
  • Preconfigure user settings in Nextcloud, Vikunja and more

Setup Instructions 🧭

Warning: This toolset is in active experimentation! Data loss can happen!

First install Stackspin. Then apply the configuration to your cluster:

./install.sh

Done! Note that the added applications are currently only toggled via repository changes and integration with Stackspin mechanisms is very rudimentary. To list the central resource related to this repo:

kubectl get gitrepositories -A
kubectl get kustomization -A -o=jsonpath='{.items[?(@.spec.sourceRef.name=="stackspout")].metadata.name}'
kubectl -n stackspout get helmreleases
kubectl -n stackspout get pods

But there are also ConfigMaps, Secrets, StatefulSets, PVCs, Helmrepos and more...

Tools

Useful tools for administration:

Guide: Creating OAuth Credentials for an external service

  • push an OAuth2Client definition like for the apps, adjusting metadata.name and spec.secretName as well as spec.redirectUris

  • obtain the generated client_secret for your application from kubernetes:

    kubectl get secret -n flux-system stackspin-APP-oauth-variables --template '{{.data.client_secret}}' | base64 -d
    

    with client_id:

    kubectl get secret -n flux-system stackspin-APP-oauth-variables --template '{{.data.client_id}}{{"\n"}}{{.data.client_secret}}{{"\n"}}' | while read in; do echo $in | base64 -d; echo; done
    

Explanation - Typical App Deployment in Stackspout with Flux on Kubernetes

The diagram illustrates generically how continuous app deployment works in our Kubernetes cluster from Infrastructure-as-Code using flux. Not every app has database, backend and frontend, but in the end the deployments all work very similarly so there is no point showing it for each individual app. Except for the Single-Sign On, apps also do not really depend on each other.

Explanations:

  • deploy :: creates a resource on the cluster from a file in the GitRepository
  • create :: creates a resource on the cluster using Kubernetes logic
  • ... all :: creates multiple independent resources

All Flux Kustomizations refer to a directory in the GitRepository, but for clarity I omitted it beyond the initial one.

Clouds are created not via Flux GitOps, but through one-time scripts.

Flux Diagram

See also https://about.ftt.gmbh/projects/polygon.html#state-of-stackspout-2022