Linux
Minimum system requirements
Section titled “Minimum system requirements”- At least 3GB free space for the Neurodesktop base image.
- Docker requirements (see Docker install docs).
Quickstart
Section titled “Quickstart”Install Docker or Podman
Section titled “Install Docker or Podman”Install Docker from the Docker install docs. Additional information is available below. Alternatively, Neurodesk also works with Podman.
To set up Neurodesk on Ubuntu, ensure both the Podman client and server are installed. Follow the Podman installation instructions for server setup.
Run Neurodesktop
Section titled “Run Neurodesktop”Before the first run, create a local folder where the downloaded applications will be stored, e.g. mkdir ~/neurodesktop-storage.
Choose how you want to run Neurodesktop:
See the Neurodesk App instructions for installing and using the app.
-
If the Linux machine is remote (e.g. in the cloud), connect to the machine with port forwarding first:
Terminal window ssh -L 8888:127.0.0.1:8888 USER@IP -
Then start Neurodesktop:
Terminal window docker volume create neurodesk-home &&sudo docker run \--shm-size=1gb -it --security-opt apparmor=neurodeskapp --privileged --user=root --name neurodesktop \-v ~/neurodesktop-storage:/neurodesktop-storage \--mount source=neurodesk-home,target=/home/jovyan \--add-host=host.docker.internal:host-gateway \-e OLLAMA_HOST="http://host.docker.internal:11434" \-e NB_UID="$(id -u)" -e NB_GID="$(id -g)" \-p 8888:8888 \-e NEURODESKTOP_VERSION=2026-04-28 vnmd/neurodesktop:2026-04-28Or use the GitHub container registry (in case Docker Hub is down or blocked in your firewall):
Terminal window docker volume create neurodesk-home &&sudo docker run \--shm-size=1gb -it --security-opt apparmor=neurodeskapp --privileged --user=root --name neurodesktop \-v ~/neurodesktop-storage:/neurodesktop-storage \--mount source=neurodesk-home,target=/home/jovyan \--add-host=host.docker.internal:host-gateway \-e OLLAMA_HOST="http://host.docker.internal:11434" \-e NB_UID="$(id -u)" -e NB_GID="$(id -g)" \-p 8888:8888 \-e NEURODESKTOP_VERSION=2026-04-28 ghcr.io/neurodesk/neurodesktop/neurodesktop:2026-04-28Or for Podman:
Terminal window podman volume create neurodesk-home &&sudo podman run \--shm-size=1gb -it --privileged --user=root --name neurodesktop \-v ~/neurodesktop-storage:/neurodesktop-storage \--mount type=volume,source=neurodesk-home,target=/home/jovyan \-e NB_UID="$(id -u)" -e NB_GID="$(id -g)" \-p 8888:8888 \-e NEURODESKTOP_VERSION=2026-04-28 docker://vnmd/neurodesktop:2026-04-28 -
Once Neurodesktop is downloaded, leave the terminal open and check which server Neurodesktop is running on (avoid pressing Ctrl+C). Look for the URL containing
?token=...:[I 2025-04-10 01:49:14.301 ServerApp] Serving notebooks from local directory: /home/jovyan [I 2025-04-10 01:49:14.301 ServerApp] Jupyter Server 2.15.0 is running at: [I 2025-04-10 01:49:14.301 ServerApp] http://localhost:8888/lab?token=90b9a934f6a76e87e88a9718aada4c6520984694ff853cf2 To access the server, open this file in a browser: file:///home/jovyan/.local/share/jupyter/runtime/jpserver-69-open.html Or copy and paste one of these URLs: http://localhost:8888/lab?token=90b9a934f6a76e87e88a9718aada4c6520984694ff853cf2 http://127.0.0.1:8888/lab?token=90b9a934f6a76e87e88a9718aada4c6520984694ff853cf2 -
To access Neurodesktop, open your web browser and type in one of the provided URLs in your terminal (e.g.
http://127.0.0.1:8888/lab?token=your_unique_token). -
Press on “Desktop Auto-Resolution” under “ALL CONNECTIONS”.
-
If it is the first time you have used Neurodesktop, wait until the desktop appears (it may take a few seconds). Otherwise, it should appear instantaneously.
-
Neurodesk is now ready to use. See the tutorials page for advice on how to use Neurodesk.
-
For an optimal experience, switch your browser to full-screen mode by following the instructions for your browser.
Deleting Neurodesktop
Section titled “Deleting Neurodesktop”When done processing your data it is important to stop and remove the container, otherwise the next start or container update will give an error (”… The container name ‘/neurodesktop’ is already in use…”).
-
Click on the terminal from which you ran Neurodesktop.
-
Press
Ctrl+C. -
Run:
Terminal window docker stop neurodesktop -
Run:
Terminal window docker rm neurodesktop
Installing Docker
Section titled “Installing Docker”For general installation instructions, refer to the Docker install docs.
RHEL / CentOS (yum-based)
Section titled “RHEL / CentOS (yum-based)”Refer to Docker on CentOS.
One example to install Docker in a yum-based distribution could look like this:
sudo dnf install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo dnf install docker-ce docker-ce-cli containerd.io# or if dnf not found: sudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl enable dockersudo systemctl start dockersudo docker versionsudo docker infosudo groupadd dockersudo usermod -aG docker $USERsudo chown root:docker /var/run/docker.socknewgrp dockerUbuntu / Debian (apt-based)
Section titled “Ubuntu / Debian (apt-based)”Refer to Docker on Ubuntu.
One example to install Docker in an apt-based distribution could look like this:
sudo apt-get updatesudo apt-get install ca-certificates curl gnupgsudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpgecho \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updateGPU support
Section titled “GPU support”RHEL / CentOS (yum-based)
Section titled “RHEL / CentOS (yum-based)”sudo yum install nvidia-container-toolkit -yUbuntu / Debian (apt-based)
Section titled “Ubuntu / Debian (apt-based)”sudo apt install nvidia-container-toolkit -yRunning the Neurodesktop container with GPU
Section titled “Running the Neurodesktop container with GPU”sudo docker run \ --shm-size=1gb -it --privileged --user=root --name neurodesktop \ -v ~/neurodesktop-storage:/neurodesktop-storage \ -e NB_UID="$(id -u)" -e NB_GID="$(id -g)" \ --gpus all \ -p 8888:8888 -e NEURODESKTOP_VERSION=2026-04-28 \ vnmd/neurodesktop:2026-04-28Running TensorFlow (with GPU)
Section titled “Running TensorFlow (with GPU)”Using TensorFlow (Python)
Section titled “Using TensorFlow (Python)”mamba install tensorflow-gpupythonimport tensorflow as tfprint("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))If TensorFlow can see your GPU, you should see output similar to:
>>> import tensorflow as tf
>>> print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
2024-01-15 14:22:31.452: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
2024-01-15 14:22:31.821: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 22308 MB memory: -> device: 0, name: NVIDIA GeForce RTX 4090, pci bus id: 0000:01:00.0, compute capability: 8.9
Num GPUs Available: 1Using TensorFlow (singularity container in Neurodesktop)
Section titled “Using TensorFlow (singularity container in Neurodesktop)”singularity pull docker://tensorflow/tensorflow:latest-gpusingularity run --nv tensorflow_latest-gpu.sifpythonimport tensorflow as tfprint("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))If the Singularity container can see your GPU, you should see output similar to:
>>> import tensorflow as tf
>>> print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
2024-01-15 14:25:08.117: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:937] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2024-01-15 14:25:08.184: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1639] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 22308 MB memory: -> device: 0, name: NVIDIA GeForce RTX 4090, pci bus id: 0000:01:00.0, compute capability: 8.9
Num GPUs Available: 1