# Customizing Environments

Katacoda provides a number of pre-configured environments that capture a number of use-cases out of the box without any changes required. However, to expand and go beyond our foundations, there are a number of ways these environments can be extended.

# Installing Additional Packages

Within all the environments on Katacoda, users have the correct permissions to install additional packages via Apt/Yum/NPM depending on the requirements.

# Running Docker Containers

For Ubuntu and CentOS based environment, Docker is pre-installed and available. Users have access to pull down additional Docker Images from the Docker Hub allowing them to use a rich array of technologies and versions without requiring additional Customizations from Katacoda.

# Background Scripts

Commands can be run automatically in the foreground and background when a scenario starts and when a step loads.

Running commands in the background can create a cleaner user experience by hiding noisy and confusing console output from the users. As they are running in the background, the scripts shouldn't prompt the user for input, such as confirmation when installing packages.

Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/run-commands-automatically

# Foreground Scripts

As with Background Scripts, scripts can be run automatically in the foreground allowing users to see the output. This can be useful for displaying progress about the environment configuration and blocking the user before they can continue successfully. For an improved user experience, scripts with a lot of output should be piped to /dev/null or be run in the background.

Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/run-commands-automatically

# Displaying Progress of Background Scripts

To provide the user with feedback on the progress of background scripts, we highly recommend the use of a progress script to provide the user with feedback that something is happening. An example can be found in the scenario at https://katacoda.com/scenario-examples/scenarios/displaying-progress-spinner.

These progress scripts can be run automatically in the foreground

# Uploading Files

Katacoda supports automatically uploading assets to scenarios. This is designed for configuration and short scripts.

Learn how to implement this in the scenario at https://katacoda.com/scenario-examples/scenarios/upload-assets