From b95586e74be086bfc0e74b25d74a1850d1387779 Mon Sep 17 00:00:00 2001 From: Paul Payne Date: Fri, 19 Jun 2026 21:29:14 +0000 Subject: [PATCH] Adds akaunting app. --- akaunting/app.yaml | 5 ++ akaunting/versions/3/README.md | 40 +++++++++ akaunting/versions/3/db-init-job.yaml | 64 +++++++++++++ akaunting/versions/3/deployment.yaml | 114 ++++++++++++++++++++++++ akaunting/versions/3/ingress.yaml | 26 ++++++ akaunting/versions/3/kustomization.yaml | 16 ++++ akaunting/versions/3/manifest.yaml | 31 +++++++ akaunting/versions/3/namespace.yaml | 4 + akaunting/versions/3/pvc.yaml | 11 +++ akaunting/versions/3/service.yaml | 13 +++ 10 files changed, 324 insertions(+) create mode 100644 akaunting/app.yaml create mode 100644 akaunting/versions/3/README.md create mode 100644 akaunting/versions/3/db-init-job.yaml create mode 100644 akaunting/versions/3/deployment.yaml create mode 100644 akaunting/versions/3/ingress.yaml create mode 100644 akaunting/versions/3/kustomization.yaml create mode 100644 akaunting/versions/3/manifest.yaml create mode 100644 akaunting/versions/3/namespace.yaml create mode 100644 akaunting/versions/3/pvc.yaml create mode 100644 akaunting/versions/3/service.yaml diff --git a/akaunting/app.yaml b/akaunting/app.yaml new file mode 100644 index 0000000..7cfcb95 --- /dev/null +++ b/akaunting/app.yaml @@ -0,0 +1,5 @@ +name: akaunting +is: akaunting +description: Akaunting is a free, open-source, and online accounting software for small businesses and freelancers. +icon: https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/akaunting.svg +latest: "3" diff --git a/akaunting/versions/3/README.md b/akaunting/versions/3/README.md new file mode 100644 index 0000000..4658f61 --- /dev/null +++ b/akaunting/versions/3/README.md @@ -0,0 +1,40 @@ +# Akaunting + +Akaunting is an open-source accounting software for small businesses and freelancers. + +## Dependencies + +- **MySQL** - Database for storing accounting data +- **SMTP** - For sending invoices and notifications + +## Configuration + +Key settings in `config.yaml`: + +- **domain** - Where Akaunting will be accessible +- **storage** - Persistent volume size (default: `2Gi`) +- **companyName** - Your company name (default: `My Company`) +- **companyEmail** - Company contact email (defaults to your operator email) +- **adminEmail** - Admin account email (defaults to your operator email) +- **locale** - Language/locale setting (default: `en-US`) +- **smtp** - Email settings inherited from your Wild Cloud SMTP service + +## First-Time Setup + +1. Add and deploy the app: + ```bash + wild app add akaunting + wild app deploy akaunting + ``` + +2. Log in with: + - **Email**: value of `adminEmail` in your config + - **Password**: value of `adminPassword` in your `secrets.yaml` + +3. Set up your company details, chart of accounts, and start recording income and expenses. + +## Notes + +- Akaunting supports multiple companies in a single installation — additional companies can be added after login +- The `dbPrefix` config (`aka_`) prefixes all database table names to avoid conflicts +- Invoices, payments, and reports can be exported as PDF diff --git a/akaunting/versions/3/db-init-job.yaml b/akaunting/versions/3/db-init-job.yaml new file mode 100644 index 0000000..cf185bc --- /dev/null +++ b/akaunting/versions/3/db-init-job.yaml @@ -0,0 +1,64 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: akaunting-db-init + labels: + component: db-init +spec: + template: + metadata: + labels: + component: db-init + spec: + restartPolicy: OnFailure + securityContext: + runAsNonRoot: true + runAsUser: 999 + runAsGroup: 999 + seccompProfile: + type: RuntimeDefault + containers: + - name: mysql-init + image: mysql:9.1.0 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: akaunting-secrets + key: mysql.rootPassword + - name: DB_HOSTNAME + value: {{ .db.host }} + - name: DB_PORT + value: "{{ .db.port }}" + - name: DB_DATABASE_NAME + value: {{ .db.name }} + - name: DB_USERNAME + value: {{ .db.user }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: akaunting-secrets + key: dbPassword + command: + - /bin/bash + - -c + - | + set -e + until mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} -e "SELECT 1" 2>/dev/null; do + echo "Waiting for MySQL..." + sleep 2 + done + mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} <