Running Cloudron on eMMC – How to Reduce Writes?
-
Hi there!
I decided to install Cloudron on my home mini PC, using the built-in eMMC storage for Ubuntu (to keep my M.2 drives free from the OS). I understand that to preserve the longevity of the eMMC memory, it's important to reduce write operations as much as possible. There are plenty of suggestions online — disabling swap, lowering the swappiness value, tweaking or disabling system logging, etc.
But my main question is: how can I minimize Cloudron's impact on system disk wear?
I realize it would be much easier to just dedicate one of the M.2 SSDs for the OS and Cloudron, but at this point, it’s become more of a curiosity project
-
It is a bit to tinker, but you can see all locations Cloudron mostly writes to at https://docs.cloudron.io/storage/#default-data-directory and you could relocate those to the M.2 drive then (see relocate section in the docs page)
Further for swap you may also just add the swapfile onto the M.2 drive.
-
It is a bit to tinker, but you can see all locations Cloudron mostly writes to at https://docs.cloudron.io/storage/#default-data-directory and you could relocate those to the M.2 drive then (see relocate section in the docs page)
Further for swap you may also just add the swapfile onto the M.2 drive.
@nebulon said in Running Cloudron on eMMC – How to Reduce Writes?:
see relocate section in the docs page
Thank you! I managed to move everything except the swap. I'm still not entirely sure about the correct steps for that. As for the Docker images — I haven’t moved them yet, since they don’t take up enough space to be a problem at this point.
-
Great. For swap you can follow the docs at https://docs.cloudron.io/storage/#swap just make sure the swapfile is located within the other disk.
@nebulon said in Running Cloudron on eMMC – How to Reduce Writes?:
make sure the swapfile is located within the other disk
Great, everything’s working now. Thanks again!
-
@nebulon said in Running Cloudron on eMMC – How to Reduce Writes?:
see relocate section in the docs page
Thank you! I managed to move everything except the swap. I'm still not entirely sure about the correct steps for that. As for the Docker images — I haven’t moved them yet, since they don’t take up enough space to be a problem at this point.
said in Running Cloudron on eMMC – How to Reduce Writes?:
As for the Docker images — I haven’t moved them yet, since they don’t take up enough space to be a problem at this point.
So, I finally decided to move Docker images to my main SSD.
Unfortunately, after completing the steps, Cloudron didn’t fully start up. I could access the dashboard, but only a few services were running — cloudron, docker, unbound, and nginx. The logs were also filled with errors.
2025-10-14T14:19:49.974Z box:platform onActivated: starting post activation services 2025-10-14T14:19:49.974Z box:platform startInfra: checking infrastructure 2025-10-14T14:19:49.975Z box:platform startInfra: updating infrastructure from 49.8.1 to 49.8.0 2025-10-14T14:19:49.975Z box:platform markApps: reconfiguring apps 2025-10-14T14:19:49.975Z box:reverseproxy removeAppConfigs: removing app nginx configs 2025-10-14T14:19:50.030Z box:platform removeAllContainers: removing all containers for infra upgrade 2025-10-14T14:19:50.030Z box:shell platform: docker ps -qa --filter label=isCloudronManaged 2025-10-14T14:19:50.046Z box:platform createDockerNetwork: recreating docker network 2025-10-14T14:19:50.046Z box:shell platform: docker network rm -f cloudron 2025-10-14T14:19:50.326Z box:shell platform: docker network create --subnet=172.18.0.0/16 --ip-range=172.18.0.0/20 --gateway=172.18.0.1 --ipv6 --subnet=fd00:c107:d509::/64 cloudron 2025-10-14T14:19:50.514Z box:services startServices: 49.8.1 -> 49.8.0. starting all services 2025-10-14T14:19:50.514Z box:mailserver startMail: starting 2025-10-14T14:19:50.518Z box:mailserver restart: restarting mail container with mailFqdn:my.DOMAIN.ru mailDomain:lvcloud.ru 2025-10-14T14:19:50.522Z box:locks write: current locks: {"mail_restart":null} 2025-10-14T14:19:50.523Z box:locks acquire: mail_restart 2025-10-14T14:19:50.530Z box:mailserver configureMail: stopping and deleting previous mail container 2025-10-14T14:19:50.548Z box:mailserver createMailConfig: generating mail config with my.DOMAIN.ru 2025-10-14T14:19:50.553Z box:mailserver configureMail: starting mail container 2025-10-14T14:19:50.553Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=8341aa4f76f95c159da68e7b42a2eebccdf3030911053500489402bae83441cb74cafabe0be38274ea1a9fbfdcce53bb60e7ae94a5ffdd134b1eeaabe832334c397b4c93824a0fe51ef1a22b6ae3877be5c930814128680bac06dc410afbf4301791f07dce29fae3d0323e95d247e3ba74ff1229823f4711c0abdee014d414f1 -e CLOUDRON_RELAY_TOKEN=f40b99d36cb9ad072aafdecd52fabb44c7fb9464e2dc573e9468105143f3d2f2f6efc191cbe8b93b8fea50cb54318081f316464c6abb2d9d82f53a2e9f82b024b74ca69efbef550f7706368ec8c38cb0f6a5980d7883ca95e30eaab3b4dc6476b3305bd87bc9c55fdca16d4d8169500eb2cf4e5bacd54ca7ace2d646fff8f551 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 2025-10-14T14:20:40.637Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=8341aa4f76f95c159da68e7b42a2eebccdf3030911053500489402bae83441cb74cafabe0be38274ea1a9fbfdcce53bb60e7ae94a5ffdd134b1eeaabe832334c397b4c93824a0fe51ef1a22b6ae3877be5c930814128680bac06dc410afbf4301791f07dce29fae3d0323e95d247e3ba74ff1229823f4711c0abdee014d414f1 -e CLOUDRON_RELAY_TOKEN=f40b99d36cb9ad072aafdecd52fabb44c7fb9464e2dc573e9468105143f3d2f2f6efc191cbe8b93b8fea50cb54318081f316464c6abb2d9d82f53a2e9f82b024b74ca69efbef550f7706368ec8c38cb0f6a5980d7883ca95e30eaab3b4dc6476b3305bd87bc9c55fdca16d4d8169500eb2cf4e5bacd54ca7ace2d646fff8f551 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 errored BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:54808->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null } 2025-10-14T14:20:40.644Z box:locks write: current locks: {} 2025-10-14T14:20:40.644Z box:locks release: mail_restart 2025-10-14T14:20:40.644Z box:platform startInfra: Failed to start services. retry=false (attempt 0): /bin/bash exited with code 125 signal null 2025-10-14T14:20:40.644Z box:platform BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) 2025-10-14T14:21:30.394Z box:shell system: swapon --noheadings --raw --bytes --show=type,size,used,name 2025-10-14T14:21:30.843Z box:shell services: grep -q avx /proc/cpuinfo 2025-10-14T14:21:30.883Z box:shell services: systemctl is-active unbound 2025-10-14T14:21:30.907Z box:shell services: systemctl is-active nginx 2025-10-14T14:21:36.375Z box:mailserver restart: restarting mail container with mailFqdn:my.DOMAIN.ru mailDomain:lvcloud.ru 2025-10-14T14:21:36.378Z box:locks write: current locks: {"mail_restart":null} 2025-10-14T14:21:36.378Z box:locks acquire: mail_restart 2025-10-14T14:21:36.382Z box:mailserver configureMail: stopping and deleting previous mail container 2025-10-14T14:21:36.386Z box:mailserver createMailConfig: generating mail config with my.DOMAIN.ru 2025-10-14T14:21:36.388Z box:mailserver configureMail: starting mail container 2025-10-14T14:21:36.388Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=2e511179a006de6797e4f4aaeb1b26d5bcd61591fa4719d22117f0f26e5e90869e0d06b6fbac980cf9d6b71454e4e77a8ea1b8027ea5de876d3d79c95e7a06a7a6477f9347995d527f32ef1fdcda8dfbbc95a448f672423c679b3debe7f65b2c9c460d5b996044ca0fdc4449242982b7f52989f622a6b9308f97298c167ad7a0 -e CLOUDRON_RELAY_TOKEN=2b059b06940699c69a0039ad98bd6f6b1fae80e5a5793c97a73efa92517f38707d8d0f5a6ebfa2da41c7a60b0aeebdca285dbfa9b200af1202bf3a0418076dc7bce27dd343eb0f6c8560595806729a9009e53bf9260d155e912e68f2512368bdbc728d8248d962c68b390a903aec7bfde0484e579cfc0812199e4fa079069167 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 2025-10-14T14:22:26.468Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=2e511179a006de6797e4f4aaeb1b26d5bcd61591fa4719d22117f0f26e5e90869e0d06b6fbac980cf9d6b71454e4e77a8ea1b8027ea5de876d3d79c95e7a06a7a6477f9347995d527f32ef1fdcda8dfbbc95a448f672423c679b3debe7f65b2c9c460d5b996044ca0fdc4449242982b7f52989f622a6b9308f97298c167ad7a0 -e CLOUDRON_RELAY_TOKEN=2b059b06940699c69a0039ad98bd6f6b1fae80e5a5793c97a73efa92517f38707d8d0f5a6ebfa2da41c7a60b0aeebdca285dbfa9b200af1202bf3a0418076dc7bce27dd343eb0f6c8560595806729a9009e53bf9260d155e912e68f2512368bdbc728d8248d962c68b390a903aec7bfde0484e579cfc0812199e4fa079069167 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 errored BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null } 2025-10-14T14:22:26.474Z box:locks write: current locks: {} 2025-10-14T14:22:26.474Z box:locks release: mail_restart HttpError: /bin/bash exited with code 125 signal null at BoxError.toHttpError (/home/yellowtent/box/src/boxerror.js:109:16) at restart (/home/yellowtent/box/src/routes/services.js:125:37) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { status: 500, internalError: BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null }, details: {} }
I reverted everything back for now, and Cloudron is working again. Just wondering — is this section of the documentation still valid for the current Cloudron versions, or could this issue be something specific to my setup?
-
said in Running Cloudron on eMMC – How to Reduce Writes?:
As for the Docker images — I haven’t moved them yet, since they don’t take up enough space to be a problem at this point.
So, I finally decided to move Docker images to my main SSD.
Unfortunately, after completing the steps, Cloudron didn’t fully start up. I could access the dashboard, but only a few services were running — cloudron, docker, unbound, and nginx. The logs were also filled with errors.
2025-10-14T14:19:49.974Z box:platform onActivated: starting post activation services 2025-10-14T14:19:49.974Z box:platform startInfra: checking infrastructure 2025-10-14T14:19:49.975Z box:platform startInfra: updating infrastructure from 49.8.1 to 49.8.0 2025-10-14T14:19:49.975Z box:platform markApps: reconfiguring apps 2025-10-14T14:19:49.975Z box:reverseproxy removeAppConfigs: removing app nginx configs 2025-10-14T14:19:50.030Z box:platform removeAllContainers: removing all containers for infra upgrade 2025-10-14T14:19:50.030Z box:shell platform: docker ps -qa --filter label=isCloudronManaged 2025-10-14T14:19:50.046Z box:platform createDockerNetwork: recreating docker network 2025-10-14T14:19:50.046Z box:shell platform: docker network rm -f cloudron 2025-10-14T14:19:50.326Z box:shell platform: docker network create --subnet=172.18.0.0/16 --ip-range=172.18.0.0/20 --gateway=172.18.0.1 --ipv6 --subnet=fd00:c107:d509::/64 cloudron 2025-10-14T14:19:50.514Z box:services startServices: 49.8.1 -> 49.8.0. starting all services 2025-10-14T14:19:50.514Z box:mailserver startMail: starting 2025-10-14T14:19:50.518Z box:mailserver restart: restarting mail container with mailFqdn:my.DOMAIN.ru mailDomain:lvcloud.ru 2025-10-14T14:19:50.522Z box:locks write: current locks: {"mail_restart":null} 2025-10-14T14:19:50.523Z box:locks acquire: mail_restart 2025-10-14T14:19:50.530Z box:mailserver configureMail: stopping and deleting previous mail container 2025-10-14T14:19:50.548Z box:mailserver createMailConfig: generating mail config with my.DOMAIN.ru 2025-10-14T14:19:50.553Z box:mailserver configureMail: starting mail container 2025-10-14T14:19:50.553Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=8341aa4f76f95c159da68e7b42a2eebccdf3030911053500489402bae83441cb74cafabe0be38274ea1a9fbfdcce53bb60e7ae94a5ffdd134b1eeaabe832334c397b4c93824a0fe51ef1a22b6ae3877be5c930814128680bac06dc410afbf4301791f07dce29fae3d0323e95d247e3ba74ff1229823f4711c0abdee014d414f1 -e CLOUDRON_RELAY_TOKEN=f40b99d36cb9ad072aafdecd52fabb44c7fb9464e2dc573e9468105143f3d2f2f6efc191cbe8b93b8fea50cb54318081f316464c6abb2d9d82f53a2e9f82b024b74ca69efbef550f7706368ec8c38cb0f6a5980d7883ca95e30eaab3b4dc6476b3305bd87bc9c55fdca16d4d8169500eb2cf4e5bacd54ca7ace2d646fff8f551 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 2025-10-14T14:20:40.637Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=8341aa4f76f95c159da68e7b42a2eebccdf3030911053500489402bae83441cb74cafabe0be38274ea1a9fbfdcce53bb60e7ae94a5ffdd134b1eeaabe832334c397b4c93824a0fe51ef1a22b6ae3877be5c930814128680bac06dc410afbf4301791f07dce29fae3d0323e95d247e3ba74ff1229823f4711c0abdee014d414f1 -e CLOUDRON_RELAY_TOKEN=f40b99d36cb9ad072aafdecd52fabb44c7fb9464e2dc573e9468105143f3d2f2f6efc191cbe8b93b8fea50cb54318081f316464c6abb2d9d82f53a2e9f82b024b74ca69efbef550f7706368ec8c38cb0f6a5980d7883ca95e30eaab3b4dc6476b3305bd87bc9c55fdca16d4d8169500eb2cf4e5bacd54ca7ace2d646fff8f551 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 errored BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:54808->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null } 2025-10-14T14:20:40.644Z box:locks write: current locks: {} 2025-10-14T14:20:40.644Z box:locks release: mail_restart 2025-10-14T14:20:40.644Z box:platform startInfra: Failed to start services. retry=false (attempt 0): /bin/bash exited with code 125 signal null 2025-10-14T14:20:40.644Z box:platform BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) 2025-10-14T14:21:30.394Z box:shell system: swapon --noheadings --raw --bytes --show=type,size,used,name 2025-10-14T14:21:30.843Z box:shell services: grep -q avx /proc/cpuinfo 2025-10-14T14:21:30.883Z box:shell services: systemctl is-active unbound 2025-10-14T14:21:30.907Z box:shell services: systemctl is-active nginx 2025-10-14T14:21:36.375Z box:mailserver restart: restarting mail container with mailFqdn:my.DOMAIN.ru mailDomain:lvcloud.ru 2025-10-14T14:21:36.378Z box:locks write: current locks: {"mail_restart":null} 2025-10-14T14:21:36.378Z box:locks acquire: mail_restart 2025-10-14T14:21:36.382Z box:mailserver configureMail: stopping and deleting previous mail container 2025-10-14T14:21:36.386Z box:mailserver createMailConfig: generating mail config with my.DOMAIN.ru 2025-10-14T14:21:36.388Z box:mailserver configureMail: starting mail container 2025-10-14T14:21:36.388Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=2e511179a006de6797e4f4aaeb1b26d5bcd61591fa4719d22117f0f26e5e90869e0d06b6fbac980cf9d6b71454e4e77a8ea1b8027ea5de876d3d79c95e7a06a7a6477f9347995d527f32ef1fdcda8dfbbc95a448f672423c679b3debe7f65b2c9c460d5b996044ca0fdc4449242982b7f52989f622a6b9308f97298c167ad7a0 -e CLOUDRON_RELAY_TOKEN=2b059b06940699c69a0039ad98bd6f6b1fae80e5a5793c97a73efa92517f38707d8d0f5a6ebfa2da41c7a60b0aeebdca285dbfa9b200af1202bf3a0418076dc7bce27dd343eb0f6c8560595806729a9009e53bf9260d155e912e68f2512368bdbc728d8248d962c68b390a903aec7bfde0484e579cfc0812199e4fa079069167 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 2025-10-14T14:22:26.468Z box:shell mailserver: /bin/bash -c docker run --restart=always -d --name=mail --net cloudron --net-alias mail --log-driver syslog --log-opt syslog-address=unix:///home/yellowtent/platformdata/logs/syslog.sock --log-opt syslog-format=rfc5424 --log-opt tag=mail -m 3221225472 --memory-swap -1 --dns 172.18.0.1 --dns-search=. --ip 172.18.30.4 -e CLOUDRON_MAIL_TOKEN=2e511179a006de6797e4f4aaeb1b26d5bcd61591fa4719d22117f0f26e5e90869e0d06b6fbac980cf9d6b71454e4e77a8ea1b8027ea5de876d3d79c95e7a06a7a6477f9347995d527f32ef1fdcda8dfbbc95a448f672423c679b3debe7f65b2c9c460d5b996044ca0fdc4449242982b7f52989f622a6b9308f97298c167ad7a0 -e CLOUDRON_RELAY_TOKEN=2b059b06940699c69a0039ad98bd6f6b1fae80e5a5793c97a73efa92517f38707d8d0f5a6ebfa2da41c7a60b0aeebdca285dbfa9b200af1202bf3a0418076dc7bce27dd343eb0f6c8560595806729a9009e53bf9260d155e912e68f2512368bdbc728d8248d962c68b390a903aec7bfde0484e579cfc0812199e4fa079069167 -e LOGLEVEL=info -v /home/yellowtent/boxdata/mail:/app/data -v /home/yellowtent/platformdata/addons/mail:/etc/mail:ro -p 587:2587 -p 993:9993 -p 4190:4190 -p 25:2587 -p 465:2465 -p 995:9995 --label isCloudronManaged=true --read-only -v /run -v /tmp registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536 errored BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null } 2025-10-14T14:22:26.474Z box:locks write: current locks: {} 2025-10-14T14:22:26.474Z box:locks release: mail_restart HttpError: /bin/bash exited with code 125 signal null at BoxError.toHttpError (/home/yellowtent/box/src/boxerror.js:109:16) at restart (/home/yellowtent/box/src/routes/services.js:125:37) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { status: 500, internalError: BoxError: /bin/bash exited with code 125 signal null at ChildProcess.<anonymous> (/home/yellowtent/box/src/shell.js:72:23) at ChildProcess.emit (node:events:519:28) at maybeClose (node:internal/child_process:1105:16) at ChildProcess._handle.onexit (node:internal/child_process:305:5) { reason: 'Shell Error', details: {}, stdout: '', stdoutLineCount: 0, stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' + "See 'docker run --help'.\n", stderrLineCount: 3, code: 125, signal: null }, details: {} }
I reverted everything back for now, and Cloudron is working again. Just wondering — is this section of the documentation still valid for the current Cloudron versions, or could this issue be something specific to my setup?
@WiseMetalhead said in Running Cloudron on eMMC – How to Reduce Writes?:
stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' +
The error seems to indicate that it cannot pull down the docker images. Does
cloudron-support --troubleshoot
work (this verifies the DNS etc) ? -
@WiseMetalhead said in Running Cloudron on eMMC – How to Reduce Writes?:
stderr: "Unable to find image 'registry.docker.com/cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536' locally\n" + 'docker: Error response from daemon: Get "https://registry.docker.com/v2/": dial tcp: lookup registry.docker.com on 127.0.0.53:53: read udp 127.0.0.1:51654->127.0.0.53:53: i/o timeout.\n' +
The error seems to indicate that it cannot pull down the docker images. Does
cloudron-support --troubleshoot
work (this verifies the DNS etc) ?Right now
cloudron-support --troubleshoot
works and shows the following:Vendor: AZW Product: ME mini Linux: 6.14.0-33-generic Ubuntu: noble 24.04 Processor: Intel(R) N150 BIOS Intel(R) N150 To Be Filled By O.E.M. CPU @ 2.8GHz x 4 RAM: 12001804KB Disk: /dev/mmcblk0p2 24G [OK] node version is correct [OK] IPv6 is enabled in kernel. No public IPv6 address [OK] docker is running [OK] docker version is correct [OK] MySQL is running [OK] nginx is running [OK] dashboard cert is valid [OK] dashboard is reachable via loopback [OK] box v8.3.2 is running [OK] netplan is good [OK] DNS is resolving via systemd-resolved [OK] Dashboard is reachable via domain name [WARN] Domain ***.ru expiry check skipped because whois does not have this information [OK] unbound is running
It’s strange that the Docker images couldn’t be pulled, because updates and new app installations work for me without any issues.
-
Hello @WiseMetalhead
Can you please run the following commands for me and give me the output?docker run --rm hello-world
and
dig A registry.docker.com
@james said in Running Cloudron on eMMC – How to Reduce Writes?:
docker run --rm hello-world
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 17eec7bbc9d7: Pull complete Digest: sha256:6dc565aa630927052111f823c303948cf83670a3903ffa3849f1488ab517f891 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
@james said in Running Cloudron on eMMC – How to Reduce Writes?:
dig A registry.docker.com
; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> A registry.docker.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4191 ;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;registry.docker.com. IN A ;; ANSWER SECTION: registry.docker.com. 60 IN A 34.197.251.18 registry.docker.com. 60 IN A 18.206.23.233 registry.docker.com. 60 IN A 98.86.59.233 registry.docker.com. 60 IN A 52.22.88.186 registry.docker.com. 60 IN A 34.225.208.41 registry.docker.com. 60 IN A 34.237.110.211 registry.docker.com. 60 IN A 54.165.148.211 registry.docker.com. 60 IN A 34.232.216.124 ;; Query time: 60 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP) ;; WHEN: Wed Oct 15 08:52:27 UTC 2025 ;; MSG SIZE rcvd: 176
-
Hello @WiseMetalhead
So the pull of the hello-world image worked.
So maybe now the pull of thecloudron/mail:3.15.0
image works as well?
Can you please try to pull the image manually?docker pull cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536
If this works manually, there might be an issue in the box startup.
@WiseMetalhead Since you censored your domain in the latest post in the output of
cloudron-support --troubleshoot
I take the liberty to also censor your domain from thebox.log
you have posted above. -
Hello @WiseMetalhead
So the pull of the hello-world image worked.
So maybe now the pull of thecloudron/mail:3.15.0
image works as well?
Can you please try to pull the image manually?docker pull cloudron/mail:3.15.0@sha256:c93b5a83fc4e775bda4e05010bd19e5a658936e7a09cf7e51281e3696fde4536
If this works manually, there might be an issue in the box startup.
@WiseMetalhead Since you censored your domain in the latest post in the output of
cloudron-support --troubleshoot
I take the liberty to also censor your domain from thebox.log
you have posted above.@james said in Running Cloudron on eMMC – How to Reduce Writes?:
Can you please try to pull the image manually?
Thanks a lot for your help and suggestions. I was able to resolve my issue.
My Cloudron had AdGuard Home installed and connected to the router. Even though I set the server’s traffic to go through the provider’s DNS, I probably messed something up in the configuration.
Since AdGuard Home wasn’t working, there was no DNS resolution, and therefore no connection
After I temporarily changed the DNS on the router, everything started working fine. The Docker images are slowly restoring now.
-
Hello @WiseMetalhead
Good to read!
Also, back to main topic of reducing writes to the eMMC.Logs!
Since logs get written all the time this might also be good to move somewhere away from the eMMC.
If you don't care about logs and have enough memory, you could even create a Ramdisk and have all logs just be in RAM.I have put my download folder into a Ramdisk since I used to never clean up my downloads and now each reboot deletes everything.
Also, nice side effect, since I know my downloads folder is not persistent, I have to sort documents into a correct location. Less messy file system.
And, since its RAM, the read-write rates super high, also improving the download speed. -
@james
Fortunately, I took care of this issue almost right after installing Ubuntu, but thanks a lot for sharing another interesting approach. -
This post is deleted!
-
W WiseMetalhead referenced this topic
-
N nebulon marked this topic as a question
-
N nebulon has marked this topic as solved