DirectAdmin v1.640 has been released


Staff member
Aug 30, 2021
Hi everyone!

We are happy to announce we have released DirectAdmin 1.640.

With this release we are changing DirectAdmin version structure. We are joining the last two version components making this release a change from 1.63.9 to 1.640. It more closely reflects the release cycles we had for the last ~20 releases.

Key change with this release is moving dataskq execution away from cron into the main directadmin web server. Interval for controlling how often dataskq runs is now managed in directadmin.conf field dataskq_run_interval.

Release Change log can can be found here:

DirectAdmin 1.640

The update should be automatically available for all installations subscribed to the current release channel.

We appreciate all the feedback on forums and issues reported in the ticketing system.

I would like someone to explain why this has been implemented in version 1.640 !

Support for local evolution translations evolution removed​

Starting this release Evolution will come with a pre-built list of translations pulled from our translations repository.

With this change we would like to consolidate all the localization efforts and avoid each DirectAdmin user managing its own set of translations.

Does that mean that we cannot have a personalized set of translations anymore ? I mean one that won't be useful for the rest of the world ?

The translation to french that I have done since day 1 of the evolution skin is now inaccessible, and I cannot mask anymore translations that my customers do not need, like arab, swedish, etc...

Really, a very bad move !
The translation to french that I have done since day 1 of the evolution skin is now inaccessible,
Pity, but why dont you share it by uploading the FR language in the DA translate portal so others can benefit ?
hi @webmaster-hub, we have released an upgrade with more languages. It will contain latest translations from the weblate repository.

Please note that it is still possible to replace the language files by replacing Evolution assets file, example:

mkdir /usr/local/directadmin/data/skins/evolution/assets/translations/custom
cp /usr/local/directadmin/data/skins/evolution/assets/translations/fr.json /usr/local/directadmin/data/skins/evolution/assets/translations/custom/
# edit /usr/local/directadmin/data/skins/evolution/assets/translations/custom/fr.json

In the mean time we are working on an extended Evolution customization support, we hope to have it in DA 1.641 or 1.642. It will allow us to make customization from the Evolution GUI rather than uploading files to the server. We are planning to re-introduce the ability of having custom translations using the new customizations engine. However we would really like to encourage everyone to collaborate on a single higher quality translation source rather than maintaining local translation alone.
Pity, but why dont you share it by uploading the FR language in the DA translate portal so others can benefit ?
I have been using Poedit to translate de files, and updated the translation for every new issue of Directadmin.
I simply do not want to use the interface of the site

If you put a translation on that site, everybody could update it and add translation errors or approximations.
I definitely prefer to keep my translation untouched by the world.

That's why the custom subdir suggested by fln suits me well !

Under the hood Evolution still uses gettext PO format for translations. Conversion to JSON is only performed at the last stage to make it easier to access from the JavaScript code.

The online translation system running on is also working with PO files, for example you can always get all the translations in PO/POT format by just cloning the translations repo with git clone

@webmaster-hub if you would be willing to take care of providing a high quality French translations we could reconfigure translate system to treat you as French language maintainer. Meaning you would be able to edit translations directly, while everyone else would be only allowed to make suggestions for you.

Anyway, we really appreciate any contributions to the DirectAdmin translations. If you would be willing to share your latest translations in PO file format I could import them to system. This would benefit all French speaking DA users.
What does the dataskq changes do in regards to the --custombuild option and reading options from task.queue.cb

Usage of dataskq:
-conf string
Set custom conf location (default "/usr/local/directadmin/conf/directadmin.conf")
run task.queue.cb file only
-linked-ips int
Print linked ips. Options:
1: human readable
2: apache
3: nginx-vhosts.conf
4: /usr/local/lsws/conf/httpd-vhosts.conf

A feature that might also be nice, would be able to specify a specific task.queue file to read.

I used the --custombuild option to avoid some race conditions for when I specifically wanted to queue account restores or suspensions, but I didn't want the /usr/local/directadmin/data/task.queue file to be processed while I was still queuing items.

ACTUALLY... if you really want to get specific, I copied and hex edited /usr/local/directadmin/dataskq to allow for custom task queue files. I could only create task queue files with different cb characters, because I could adjust the file size of the file.

But I could have a /usr/local/directadmin/dataskq-cc that would read /usr/local/directadmin/data/ when you added --custombuild to it on the command line.

If /usr/local/directadmin/dataskq would support passing a --taskqueuefile parameter that points to the task queue file to read, that would alleviate the need for this.
  • Like
Reactions: fln
@sparek really good point (y). We also discussed similar issue internally -custombuild is kind of odd extension making a special treatment for a single file. Our plan is to introduce new dataskq CLI command by adding a new command to the main directadmin binary. Using the new da alias it would be available via da taskq ...{params}....

Adding new command would allow us to provide more uniform and fine grained parameters support without breaking any of the legacy systems. Calling binary with dataskq would use old command syntax while calling it da taskq would use new one. We expect new syntax to be available with DA 1.641.
Hello. If now our translations with which we want to replace should be placed in a json file, then we need to transform the po translation into json. How to do it right?
@splby you can use gettext-compile and jq tools from the easygettext npm package. Example of converting French .po file to .json:

npm install -g easygettext
gettext-compile fr.po | grep -v '^\[gettext\]' | jq .[] > fr.json

By default gettext-compile produces a single file from multiple languages, however Evolution uses separate files for each language. That is why jq is needed in addition to gettext-compile, it just removes root element with the language name.

An alternative way is to make DA perform the conversion for you:

curl -s 'https://{username}:{password}' > fr.json

This is the old way how Evolution used to get its JSON encoded translations. Sending this request forces backend to perform PO -> JSON translation live.
This is an automated message notifying you that the DirectAdmin software has been successfully updated but upgrade scripts registered some warnings.
v1.640 (d3e09db) to v1.640 (a9db78f)
Output from update scripts:
2022/05/10 21:40:20 fatal executing cli command error=setting directadmin file permissions: chmod /usr/local/directadmin/scripts/custom/ no such file or directory
To view what has changed, please visit:
@Active8 starting DA 1.640 upgrade procedure will now report any stray output or errors from the scripts/ and scripts/custom/ (if script exists).

From the output it seems that the error was generated from the scripts/ line directadmin p. This command makes sure files in /usr/local/directadmin has correct permissions and file ownership. For files inside scripts it tries to ensure that all files has 0700 permissions and are owned by diradmin user.

Try running da p or /usr/local/directadmin/directadmin p manually to see if you get the same error. It is safe to run this command multiple times. It is strange that it reports that file scripts/custom/ does not exist. Such error could be caused if someone removed that file at exact moment when da p command was traversing the directory and fixing permissions. If file is no longer present on the system this would confirm this hypothesis. If that is the case it is safe to ignore this error.
da p
2022/05/10 23:38:05 fatal executing cli command error=setting directadmin file permissions: chmod /usr/local/directadmin/scripts/custom/ no such file or directory

@fln Problem persist, its weird, other servers don't have this error.
scripts/custom/ does not exist. either, what can I do ?
Hmm interesting. Could you please open a ticket in our ticketing system at This would allow us to safely request access to the server to investigate it further.
I have found an file with that name but I cant open it, I have deleted that file and the error is gone
But is that file mandatory ? i have checked other servers and that file was not even there !
Should I leave it as is ?

Lookslike that file is an symlink to /usr/local/directadmin/plugins/backup-utility/scripts/
But i dont have an plugins/backup-utlity directory at all !
Last edited:
This file is not part of DirectAdmin. It is safe to delete it if you are not using it. It is a custom hook that is executed after making a backup. By default there is no such file and its contents are entirely up to the server admin if he wants to execute extra stuff after backups are done.

Glad you found the root cause. Maybe file had exotic permissions causing an error for da p and for you trying to open it from the shell.

I didn't like the new translation system either.
The process of creating the "custom" folder (/usr/local/directadmin/data/skins/evolution/assets/translations/custom) does not receive the new translation. I don't know what I'm doing wrong.

The pt_BR translation is bad and incomplete. How can I contribute to my .po file? It has been translated since 2020 and has all the fields translated correctly.

Hi @paulonichio would you be willing to share translation file with community? If you would send me the PO file I would import it to our community translation system at If you would create account there you could also update the outdated translations yourself as well.

If you want to use your old translations without sharing you need to create a new file at data/skins/evolution/assets/translations/custom/pt_BR.json.

Using DA to convert it from JSON you can achieve it with curl -k -s "$(da root-auth-url)/CMD_JSON_LANG?json=yes&lang=pt_BR" > /usr/local/directadmin/data/skins/evolution/assets/translations/custom/pt_BR.json
A new build for DA 1.640 is published, it includes a fix to the data/templates/redirect_virtual_host.conf template, issue caused by Apache 1.x support removal.