# How to Set up a Local Parachain Testnet
Set up a local parachain testnet to test and debug various XCM scenarios.
## parachain-launch
- [Introducation](#introduction)
- [Options](#options)
- [Global Usage](#global-usage)
- [Local Usage](#local-usage)
- [Start relaychain and parachain](#start-relaychain-and-parachain)
- [Additional Docker Commands](#additional-docker-commands)
- [Resetting all data](#resetting-all-data)
### Introduction
parachain-launch is a script that generates a docker compose file allowing you to launch a testnet of multiple blockchain nodes.
#### Options
The following options are supported by the generate script.
| Option | Description |Required | Default |
| ------------- |----------------------------|:------------------:|--------------|
| --config | Path to config file. | No | ./config.yml |
| --output | Path to output dir. | No | ./output |
| --yes | Overwrite generated files? | No | false |
#### Global Usage
1. Install the package globally:
```sh
yarn global add @open-web3/parachain-launch
```
2. Download the [example config](https://github.com/open-web3-stack/parachain-launch/blob/master/config.yml) file and edit as necessary.
3. Run the generate script:
```sh
parahain-launch generate --config=/path/to/config.yml [--yes] [--output=/path/to/output]
```
This will generate the docker files a folder called `output` in your current working directory or in the directory provided to the `--output` option.
#### Local Usage
1. Install the package locally:
```sh
yarn add @open-web3/parachain-launch
```
2. Download the [example config](https://github.com/open-web3-stack/parachain-launch/blob/master/config.yml) file and edit as necessary.
3. Run the service from within the local directory:
```sh
node_modules/.bin/parahain-launch generate --config=/path/to/config.yml [--yes] [--output=/path/to/output]
```
This will generate the docker files a folder called `output` in your current working directory or in the directory provided to the `--output` option.
#### Start relaychain and parachain
To start the nodes, navigate to the output folder that you generated the scripts in and build the docker container:
```sh
cd ./output # OR custom output directory
docker-compose up -d --build
```
NOTE: If you regenerate the output directory then you will need to rebuild the docker images.
#### Additional Docker Commands
List all of the containers:
```sh
docker ps -a
```
Track container logs:
```sh
docker logs -f [container_id/container_name]
```
Stop all of the containers:
```sh
docker-compose stop
```
Remove all of the containers:
```sh
docker-compose rm
```
#### Resetting all data
If you want to clear the data and restart the you will need to clear the volumes.
Remove volume:
```sh
docker volume ls
docker volume rm [volume_name]
```
Prune all volumes:
```sh
docker volume prune
```
## XCM Related Links
[XCM Fee Implementation V0](https://hackmd.io/0IOe4sRdRDGJc3nI8mVEFg)
[Shawn's Polkadot Messaging Guide](https://hackmd.io/S4TZc1uTQH-vxEWv-QFapg)