# Launching the **trains-server** Docker in Linux or macOS For Linux or macOS, use our pre-built Docker image for easy deployment. The latest Docker images can be found [here](https://hub.docker.com/r/allegroai/trains). For Linux users: * You must be logged in as a user with sudo privileges. * Use `bash` for all command-line instructions in this installation. To launch **trains-server** on Linux or macOS: 1. Install Docker. * Linux - see [Docker for Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/). * macOS - see [Docker for macOS](https://docs.docker.com/docker-for-mac/install/). 1. Verify the Docker CE installation. Execute the command: sudo docker run hello-world The expected is output is: 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. 1. For Linux only, install `docker-compose`. Execute the following commands (for more information, see [Install Docker Compose](https://docs.docker.com/compose/install/) in the Docker documentation): sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose 1. Increase `vm.max_map_count` for ElasticSearch docker. Linux: echo "vm.max_map_count=262144" > /tmp/99-trains.conf sudo mv /tmp/99-trains.conf /etc/sysctl.d/99-trains.conf sudo sysctl -w vm.max_map_count=262144 sudo service docker restart macOS: screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty sysctl -w vm.max_map_count=262144 1. Remove any previous installation of **trains-server**. **WARNING**: This clears all existing **Trains** databases. sudo rm -R /opt/trains/ 1. Create local directories for the databases and storage. sudo mkdir -p /opt/trains/data/elastic sudo mkdir -p /opt/trains/data/mongo/db sudo mkdir -p /opt/trains/data/mongo/configdb sudo mkdir -p /opt/trains/data/redis sudo mkdir -p /opt/trains/logs sudo mkdir -p /opt/trains/config sudo mkdir -p /opt/trains/data/fileserver 1. For macOS only, open the Docker app, select **Preferences**, and then on the **File Sharing** tab, add `/opt/trains`. 1. Grant access to the Dockers. Linux: sudo chown -R 1000:1000 /opt/trains macOS: sudo chown -R $(whoami):staff /opt/trains 1. Download the **trains-server** docker-compose YAML file. cd /opt/trains curl https://raw.githubusercontent.com/allegroai/trains-server/master/docker-compose.yml -o docker-compose.yml 1. Run `docker-compose` with the downloaded configuration file. sudo docker-compose -f docker-compose.yml up Your server is now running on [http://localhost:8080](http://localhost:8080) and the following ports are available: * Web server on port `8080` * API server on port `8008` * File server on port `8081` ## Next Step Configure the [Trains client for trains-server](https://github.com/allegroai/trains/blob/master/README.md#configuration).