====== JDownloader — Updates, Restart & Troubleshooting ======
JDownloader runs directly on Ubuntu as a **systemd service**. It is **not a Docker container**.
Permanent installation directory:
/opt/jdownloader
Systemd service:
jdownloader.service
The established JDownloader configuration is stored under:
/opt/jdownloader/cfg
===== Normal Update Procedure =====
It is okay to initiate a JDownloader update through **MyJDownloader / the web interface**.
JDownloader may stop and restart itself while applying an update. Give it a couple of minutes to complete before intervening.
After an update, verify that the service came back:
systemctl is-active jdownloader
Normal result:
active
For more detail:
sudo systemctl status jdownloader --no-pager
The running process can also be checked with:
pgrep -af 'java.*JDownloader'
A healthy installation should show Java running:
/opt/jdownloader/JDownloader.jar
For example:
/usr/bin/java -Djava.awt.headless=true -jar /opt/jdownloader/JDownloader.jar
===== Starting and Stopping JDownloader =====
Start JDownloader:
sudo systemctl start jdownloader
Stop JDownloader:
sudo systemctl stop jdownloader
Restart JDownloader:
sudo systemctl restart jdownloader
Check whether it is running:
systemctl is-active jdownloader
Detailed status:
sudo systemctl status jdownloader --no-pager
===== If JDownloader Does Not Restart =====
First check its status:
sudo systemctl status jdownloader --no-pager
If the service is simply stopped, try starting it:
sudo systemctl start jdownloader
Then verify:
systemctl is-active jdownloader
If the service fails again, **do not immediately reinstall JDownloader, delete files, or replace the configuration**.
Check that the main application files still exist:
ls -lh /opt/jdownloader/JDownloader.jar /opt/jdownloader/Core.jar
Check whether another JDownloader Java process is already running:
pgrep -af 'java.*JDownloader'
If ''JDownloader.jar'' is missing or the service still will not start, stop here and investigate the updater logs before changing the installation.
===== Configuration =====
The established JDownloader configuration is stored under:
/opt/jdownloader/cfg
This directory contains the settings used by the established installation.
**Preserve this directory during troubleshooting or recovery.**
Do not replace it with the configuration from a newly created or temporary JDownloader installation.
===== .jd_home Warning =====
During an update failure, troubleshooting, or recovery, another JDownloader installation may appear under:
/home/mike/.jd_home
Do **not** assume this is the permanent installation.
The systemd-managed installation is:
/opt/jdownloader
A ''.jd_home'' installation may contain newly downloaded JDownloader application files while having a new or default configuration.
In particular, do **not** replace:
/opt/jdownloader/cfg
with:
/home/mike/.jd_home/cfg
unless there is a specific, verified reason to do so.
The presence of newer ''JDownloader.jar'' or ''Core.jar'' files under ''.jd_home'' does not by itself mean that JDownloader should be moved there.
===== Logs =====
Show the most recent systemd log entries:
journalctl -u jdownloader -n 100 --no-pager
Follow the service log live:
journalctl -u jdownloader -f
Press ''Ctrl+C'' to stop following the log.
JDownloader's own logs are stored under:
/opt/jdownloader/logs
These logs can be useful when diagnosing an update or restart failure.
===== September 21, 2026 Update Failure =====
On September 21, 2026, an update initiated through JDownloader resulted in the service becoming unavailable.
Investigation established that JDownloader was operating from the correct installation:
/opt/jdownloader
At approximately 13:28, JDownloader deliberately initiated its normal update/restart process and launched itself with:
JDownloader.jar -forceupdate
The updater continued to operate against the correct ''/opt/jdownloader'' installation.
Its updater self-test used:
/opt/jdownloader/tmp/update/self/JDU/JDownloader.jar
and reported:
Validate: OK
SelfTest Results: OK
Self Update successful
JDownloader subsequently performed a normal shutdown. At 13:31:59, systemd recorded:
jdownloader.service: Deactivated successfully.
However, by the next attempt to start the service at 13:32:55:
/opt/jdownloader/JDownloader.jar
was no longer available.
Systemd therefore reported:
Error: Unable to access jarfile /opt/jdownloader/JDownloader.jar
and subsequent automatic restart attempts failed for the same reason.
The exact reason the updater failed to leave a usable replacement ''JDownloader.jar'' in ''/opt/jdownloader'' was not established.
The investigation **did not find evidence that initiating the update through MyJDownloader was incorrect**, nor did it establish systemd's ''Restart=on-failure'' setting as the cause.
A separate fresh JDownloader installation was discovered under:
/home/mike/.jd_home
It contained newer application files, but its ''cfg'' directory contained only a small/default configuration.
The established configuration under:
/opt/jdownloader/cfg
was therefore preserved.
For this specific recovery, fresh copies of ''JDownloader.jar'' and ''Core.jar'' were restored to ''/opt/jdownloader'' while retaining the existing ''cfg'' directory.
After recovery:
systemctl is-active jdownloader
returned:
active
and the running Java process again used:
/opt/jdownloader/JDownloader.jar
MyJDownloader also reconnected using the existing configuration.
**Important:** Copying application files from ''.jd_home'' was an incident-specific recovery procedure. It should not be treated as the normal JDownloader update procedure.
===== Quick Post-Update Check =====
After initiating a JDownloader update or restart, wait a couple of minutes and run:
systemctl is-active jdownloader
ls -lh /opt/jdownloader/JDownloader.jar
cat /opt/jdownloader/JDownloader.pid
pgrep -af 'java.*JDownloader'
Normal results should show:
* ''jdownloader'' is ''active''
* ''/opt/jdownloader/JDownloader.jar'' exists
* ''JDownloader.pid'' contains a process ID
* the same process ID is running Java with ''/opt/jdownloader/JDownloader.jar''
If ''JDownloader.jar'' is missing, **do not repeatedly restart the service, reinstall JDownloader, or replace ''/opt/jdownloader/cfg''**.
Stop the service first:
sudo systemctl stop jdownloader
Then investigate the updater state before restoring any files.