server-up/apps/invoiceninja/template.json
Ramon c9b73d8b69
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 2m31s
v0.8.10-beta - Vervangers voor big tech, en sleutels in het juiste formaat
- Sjablonen kunnen nu secret_format ("hex" of "laravel") en secret_bytes
  opgeven. De generator maakte altijd url-veilige base64, en dat is precies wat
  Laravel, Homarr en LibreChat weigeren
- Daarmee kwamen twee fouten uit v0.8.00 aan het licht: Homarr en LibreChat
  kregen sleutels die hun containers niet accepteren. Rechtgezet
- Snipe-IT en Invoice Ninja alsnog toegevoegd; die vielen vorige ronde af omdat
  hun APP_KEY niet te genereren was
- 19 vervangers voor big tech erbij, van 197 naar 218 apps:
  Baikal en Radicale (Google Agenda/Contacten), LibreTranslate (Translate),
  CryptPad, Collabora en ONLYOFFICE (Google Docs), Formbricks (Forms),
  Jitsi Meet (Meet/Zoom), PeerTube, Invidious en Tube Archivist (YouTube),
  Owncast (Twitch), Mastodon (X), Pixelfed (Instagram), Lemmy (Reddit),
  Cal.com (Calendly), Rallly (Doodle), DocuSeal (DocuSign), Penpot (Figma)
- Communicatie van 12 naar 16 apps, productiviteit van 21 naar 31
- Nieuwe JS-test voor de sleutelformaten; alle 242 images in de catalogus
  opnieuw tegen hun registry gecontroleerd

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
2026-08-01 03:49:10 +02:00

115 lines
2.8 KiB
JSON

{
"kind": "compose",
"metadata": {
"name": "Invoice Ninja",
"description": "Facturen, offertes en urenregistratie voor zzp'ers en kleine bedrijven, met online betalen en herinneringen.",
"tags": [
"facturen",
"boekhouding",
"zzp"
],
"icon": {
"provider": "selfhst",
"id": "invoiceninja"
},
"version": {
"name": "latest"
},
"categories": [
"zakelijk",
"financien"
]
},
"variables": [
{
"title": "Algemeen",
"items": [
{
"name": "service_name",
"type": "str",
"title": "Servicenaam",
"default": "invoiceninja",
"required": true
},
{
"name": "port",
"type": "int",
"title": "Webinterface",
"default": 8179,
"required": true,
"description": "Standaard 80; hier verplaatst omdat die poort al bezet is"
},
{
"name": "appdata_dir",
"type": "str",
"title": "Appdata-map",
"default": "/opt/serverup/appdata",
"required": true,
"description": "Basismap voor de gegevens van deze app"
},
{
"name": "timezone",
"type": "str",
"title": "Tijdzone",
"default": "Europe/Amsterdam",
"required": true
}
]
},
{
"title": "Instellingen",
"items": [
{
"name": "app_url",
"type": "str",
"title": "Publiek adres",
"default": "http://localhost:8179",
"required": true
},
{
"name": "admin_email",
"type": "str",
"title": "E-mailadres beheerder",
"default": "admin@example.com",
"required": true
}
]
},
{
"title": "Toegang",
"items": [
{
"name": "db_password",
"type": "str",
"title": "Databasewachtwoord",
"default": "",
"required": true,
"secret": true,
"generate": "auto",
"description": "Wordt automatisch ingevuld en in .env bewaard"
},
{
"name": "app_key",
"type": "str",
"title": "Applicatiesleutel",
"default": "",
"required": true,
"secret": true,
"generate": "auto",
"secret_format": "laravel",
"secret_bytes": 32,
"description": "Laravel-formaat; wordt automatisch in de juiste vorm gemaakt"
},
{
"name": "admin_password",
"type": "str",
"title": "Beheerderswachtwoord",
"default": "",
"required": true,
"secret": true,
"eigen_invoer": true
}
]
}
]
}