---
myst:
html_meta:
"description": "Plone deployment server setup"
"property=og:description": "Plone deployment server setup"
"property=og:title": "Plone deployment server setup"
"keywords": "Plone, deployment, server, setup"
---
# Server Setup
The generated codebase contains a {file}`/devops` folder with the tools needed to provision and set up a basic installation of your Plone project using {term}`Ansible` and {term}`Docker`.
## Install Dependencies
Change to the {file}`devops` folder in your project directory.
```shell
cd devops
```
And then install all dependencies.
```shell
source .env_dev
make clean
make setup
```
This will create a new Python 3 virtual environment with Ansible.
## Provisioning the Server
We are using Vagrant in this training, and to create a new Vagrant box, as defined in the {file}`Vagrantfile`, run:
```shell
make provision
```
## Ansible playbook
### Configure SSH key
Edit the `group_vars/all/users.yml` file and replace the line `public_keys: []` with the following.
```{code-block} yaml
public_keys:
- ''
```
### Run playbook
Run the playbook to set up the server by installing base packages, creating `UFW` configuration, and adding users.
```shell
make run-playbook
```
### For Production
Create `.env_prod`, if it does not exist, setting all values defined in `.env_dev`, then run:
```shell
source .env_prod
```
Next add a file `prod.yml` in the folder `inventory` with information about the production server.
Finally, add a file `plone-conference-prod.yml` in the folder `host_vars`.