From 58ff4246b2c02e6f426749fe0cdebc121e163edd Mon Sep 17 00:00:00 2001 From: maximumultraist Date: Wed, 12 Nov 2025 16:51:32 -0500 Subject: [PATCH 1/4] Fix DB connection --- compose.yml | 4 ++++ docker-entrypoint.sh | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/compose.yml b/compose.yml index 1f0485c..0535235 100644 --- a/compose.yml +++ b/compose.yml @@ -4,6 +4,7 @@ services: image: docker.io/akaunting/akaunting:latest networks: - proxy + - backend environment: - APP_URL=https://${DOMAIN} - DB_HOST=akaunting-db @@ -50,6 +51,8 @@ services: akaunting-db: image: mariadb:12 + networks: + - backend volumes: - akaunting-db:/var/lib/mysql deploy: @@ -76,6 +79,7 @@ secrets: name: ${STACK_NAME}_admin_password_${SECRET_ADMIN_PASSWORD_VERSION} networks: + backend: proxy: external: true diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 07f5dbf..30a2c35 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,8 @@ #!/bin/bash -export DB_PASSWORD=$(cat /run/secrets/mysql_password) -export ADMIN_PASSWORD=$(cat /run/secrets/admin_password) +DB_PASSWORD=$(cat /run/secrets/mysql_password) +export DB_PASSWORD +ADMIN_PASSWORD=$(cat /run/secrets/admin_password) +export ADMIN_PASSWORD /usr/local/bin/akaunting.sh --start From a1597c7b46c0d60db1cafe67c721fc55c295482f Mon Sep 17 00:00:00 2001 From: maximumultraist Date: Thu, 13 Nov 2025 16:36:14 -0500 Subject: [PATCH 2/4] Clean up env vars --- .env.sample | 2 +- compose.yml | 8 ++++---- docker-entrypoint.sh | 2 -- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.env.sample b/.env.sample index c663322..0958678 100644 --- a/.env.sample +++ b/.env.sample @@ -27,4 +27,4 @@ COMPANY_EMAIL=my@company.com ADMIN_EMAIL=me@company.com SECRET_MYSQL_PASSWORD_VERSION=v1 -SECRET_ADMIN_PASSWORD_VERSION=v1 \ No newline at end of file +SECRET_MYSQL_ROOT_PASSWORD_VERSION=v1 \ No newline at end of file diff --git a/compose.yml b/compose.yml index 0535235..ed0611e 100644 --- a/compose.yml +++ b/compose.yml @@ -41,7 +41,6 @@ services: - akaunting-data:/var/www/html secrets: - mysql_password - - admin_password configs: - source: app_entrypoint target: /docker-entrypoint.sh @@ -62,9 +61,10 @@ services: - MYSQL_DATABASE=akaunting - MYSQL_USER=admin - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password - - MYSQL_RANDOM_ROOT_PASSWORD=yes + - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_root_password secrets: - mysql_password + - mysql_root_password volumes: akaunting-db: @@ -74,9 +74,9 @@ secrets: mysql_password: external: true name: ${STACK_NAME}_mysql_password_${SECRET_MYSQL_PASSWORD_VERSION} - admin_password: + mysql_root_password: external: true - name: ${STACK_NAME}_admin_password_${SECRET_ADMIN_PASSWORD_VERSION} + name: ${STACK_NAME}_mysql_root_password_${SECRET_MYSQL_ROOT_PASSWORD_VERSION} networks: backend: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 30a2c35..22634fd 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,7 +2,5 @@ DB_PASSWORD=$(cat /run/secrets/mysql_password) export DB_PASSWORD -ADMIN_PASSWORD=$(cat /run/secrets/admin_password) -export ADMIN_PASSWORD /usr/local/bin/akaunting.sh --start From 5adfdf75b46e2c4eb2fce51023adb69beb57f7b9 Mon Sep 17 00:00:00 2001 From: maximumultraist Date: Fri, 14 Nov 2025 22:23:19 -0500 Subject: [PATCH 3/4] Add initial backup support --- compose.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compose.yml b/compose.yml index ed0611e..895d830 100644 --- a/compose.yml +++ b/compose.yml @@ -11,7 +11,7 @@ services: - DB_PORT=3306 - DB_NAME=akaunting - DB_USERNAME=admin - - DB_PREFIX=asd_ + - DB_PREFIX=akt_ deploy: restart_policy: condition: on-failure @@ -65,6 +65,11 @@ services: secrets: - mysql_password - mysql_root_password + labels: + backupbot.backup: "${ENABLE_BACKUPS:-true}" + backupbot.backup.pre-hook: "mariadb-dump --single-transaction -u root -p\"$$(cat /run/secrets/mysql_root_password)\" akaunting | gzip > /var/lib/mysql/dump.sql.gz" + backupbot.backup.volumes.akaunting-db.path: "dump.sql.gz" + backupbot.restore.post-hook: "gzip -d /var/lib/mysql/dump.sql.gz && mariadb -u root -p\"$$(cat /run/secrets/mysql_root_password)\" akaunting < /var/lib/mysql/dump.sql && rm -f /var/lib/mysql/dump.sql" volumes: akaunting-db: From d362421a80d5c556adf858b9b43c29dc0f4e325b Mon Sep 17 00:00:00 2001 From: marlon Date: Fri, 14 Nov 2025 22:37:54 -0500 Subject: [PATCH 4/4] api-fix --- .env.sample | 7 ++++- abra.sh | 1 + api-fix.patch | 63 +++++++++++++++++++++++++++++++++++++++ compose.api-fix.yml | 12 ++++++++ compose.yml | 4 ++- docker-entrypoint.sh | 6 ---- docker-entrypoint.sh.tmpl | 11 +++++++ 7 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 api-fix.patch create mode 100644 compose.api-fix.yml delete mode 100644 docker-entrypoint.sh create mode 100644 docker-entrypoint.sh.tmpl diff --git a/.env.sample b/.env.sample index 0958678..a2b8f30 100644 --- a/.env.sample +++ b/.env.sample @@ -27,4 +27,9 @@ COMPANY_EMAIL=my@company.com ADMIN_EMAIL=me@company.com SECRET_MYSQL_PASSWORD_VERSION=v1 -SECRET_MYSQL_ROOT_PASSWORD_VERSION=v1 \ No newline at end of file +SECRET_MYSQL_ROOT_PASSWORD_VERSION=v1 +SECRET_ADMIN_PASSWORD_VERSION=v1 + +## Enable API Fix to support offline use (without an API key) +# COMPOSE_FILE="$COMPOSE_FILE:compose.api-fix.yml" +# API_FIX=apply diff --git a/abra.sh b/abra.sh index d020851..c91e502 100755 --- a/abra.sh +++ b/abra.sh @@ -1,3 +1,4 @@ # Set any config versions here # Docs: https://docs.coopcloud.tech/maintainers/handbook/#manage-configs export APP_ENTRYPOINT_VERSION=v1 +export API_FIX_VERSION=v1 \ No newline at end of file diff --git a/api-fix.patch b/api-fix.patch new file mode 100644 index 0000000..0299081 --- /dev/null +++ b/api-fix.patch @@ -0,0 +1,63 @@ +From f0bf18d4124aa480a0650eed771c57dfd85b7f6c Mon Sep 17 00:00:00 2001 +From: MIR +Date: Wed, 12 Nov 2025 17:36:37 -0500 +Subject: [PATCH] Fix errors when API key unavailable + +--- + app/Traits/Modules.php | 2 +- + app/Traits/Plans.php | 26 ++++---------------------- + 2 files changed, 5 insertions(+), 23 deletions(-) + +diff --git a/app/Traits/Modules.php b/app/Traits/Modules.php +index 8382b19e6..e91b33b2d 100644 +--- a/app/Traits/Modules.php ++++ b/app/Traits/Modules.php +@@ -26,7 +26,7 @@ trait Modules + + $result = json_decode($response->getBody()); + +- return $result->success ? true : false; ++ return true; + } + + // Get All Modules +diff --git a/app/Traits/Plans.php b/app/Traits/Plans.php +index 02ce4d575..b0501138d 100644 +--- a/app/Traits/Plans.php ++++ b/app/Traits/Plans.php +@@ -58,29 +58,11 @@ trait Plans + + public function getPlanLimitByType($type): object + { +- if (! config('app.installed') || running_in_test()) { +- $limit = new \stdClass(); +- +- $limit->action_status = true; +- $limit->view_status = true; +- $limit->message = "Success"; +- +- return $limit; +- } +- +- if (! $data = $this->getPlanLimits()) { +- $limit = new \stdClass(); +- +- $limit->action_status = false; +- $limit->view_status = false; +- $limit->message = "Not able to create a new $type."; +- +- return $limit; +- } +- +- $limit = $data->$type; ++ $limit = new \stdClass(); + +- $limit->message = str_replace('{company_id}', company_id(), $limit->message); ++ $limit->action_status = true; ++ $limit->view_status = true; ++ $limit->message = "Success"; + + return $limit; + } +-- +2.43.0 diff --git a/compose.api-fix.yml b/compose.api-fix.yml new file mode 100644 index 0000000..63d1cff --- /dev/null +++ b/compose.api-fix.yml @@ -0,0 +1,12 @@ +--- +services: + app: + configs: + - source: api_fix + target: /var/www/html/api-fix.patch + mode: 0644 + +configs: + api_fix: + name: ${STACK_NAME}_api_fix_${API_FIX_VERSION} + file: api-fix.patch \ No newline at end of file diff --git a/compose.yml b/compose.yml index 895d830..d274f5a 100644 --- a/compose.yml +++ b/compose.yml @@ -87,8 +87,10 @@ networks: backend: proxy: external: true + internal: configs: app_entrypoint: name: ${STACK_NAME}_app_entrypoint_${APP_ENTRYPOINT_VERSION} - file: docker-entrypoint.sh \ No newline at end of file + file: docker-entrypoint.sh.tmpl + template_driver: golang \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100644 index 22634fd..0000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -DB_PASSWORD=$(cat /run/secrets/mysql_password) -export DB_PASSWORD - -/usr/local/bin/akaunting.sh --start diff --git a/docker-entrypoint.sh.tmpl b/docker-entrypoint.sh.tmpl new file mode 100644 index 0000000..8ccd470 --- /dev/null +++ b/docker-entrypoint.sh.tmpl @@ -0,0 +1,11 @@ +#!/bin/bash + +export DB_PASSWORD=$(cat /run/secrets/mysql_password) +export ADMIN_PASSWORD=$(cat /run/secrets/admin_password) + +{{ if eq (env "API_FIX") "apply" }} +cd /var/www/html +patch --batch --forward -p1 < ./api-fix.patch +{{ end }} + +/usr/local/bin/akaunting.sh --start \ No newline at end of file