---
html_meta:
"description": "How to install Plone 6"
"property=og:description": "How to install Plone 6"
"property=og:title": "Installation and Setup of Plone 6"
"keywords": "installation, Plone 6"
---
(installation-label)=
# Installation and Setup of Plone 6
Plone is the combination of a backend (data storage) with a frontend (user interface) into a fully featured CMS.
**Plone 6** is an installation of Plone.
By default it uses Volto for the frontend, based on ReactJS, on top of the `plone.restapi` to interact with the backend.
This combines the stability, maturity, and security of the Plone backend with a modern, mature, user-friendly, and well maintained frontend.
**Plone Classic** is another installation of Plone.
It uses Barceloneta, a customized version of Twitter Bootstrap, for the frontend.
It will stay in place as a frontend option, giving developers and users time to adapt to Volto.
See the [Plone road map](https://plone.org/roadmap) for details.
This training is about Plone 6.
(installation-plone-label)=
## Installing Plone backend
Make sure you have a current and by Plone supported **Python 3** version.
One way to achieve is `pyenv` which lets you manage different Python versions.
It even let's you setup virtual Pythons of the same version for individual projects.
```shell
pyenv install 3.9.5
pyenv virtualenv 3.9.5 plonepy
pyenv activate plonepy
```
This installs and activates a Python 3.9.5. It does not affect your system Python as it is an isolated virtual Python environment.
### Prerequisites
The following instructions are based on Ubuntu and macOS.
If you use a different operating system (OS), please adjust them to fit your OS.
On Ubuntu/Debian, you need to make sure your system is up-to-date:
```shell
sudo apt-get update
sudo apt-get -y upgrade
```
Then, you need to install the following packages:
```shell
sudo apt-get install python3.9-dev python3.9-tk python3.9-venv build-essential libssl-dev libxml2-dev libxslt1-dev libbz2-dev libjpeg62-dev
sudo apt-get install libreadline-dev wv poppler-utils
sudo apt-get install git
```
On MacOS you at least need to install some dependencies with [Homebrew](https://brew.sh/)
```shell
brew install zlib git readline jpeg libpng libyaml
```
```{seealso}
For more information or in case of problems see the [official installation instructions](https://docs.plone.org/manage/installing/installation.html).
```
### Get Plone backend and install
Download Plone from
Follow the instructions. Select option 'standalone' for your first Plone installation.
```{note}
You do not find a Plone 6 to download?
Well it's not released.
We still do a Plone 6 setup: Plone backend plus Plone frontend.
If Plone backend is still a Plone 5, that's OK.
```
```{eval-rst}
.. TODO::
Install necessary helpers for Volto frontend: restapi, folderish contenttypes, dexterity root,…
```
(installation-volto-label)=
## Installing Plone frontend
For a Plone 6 installation by now two installations are needed: Plone backend and Volto frontend.
The former section is describing the options for a Plone backend installation.
This section is about setting up a Volto project.
(installation-volto-prerequisites-label)=
### Installing Prerequisites
First {ref}`plone6docs:frontend-getting-started-install-nvm-label`.
{ref}`Install Yarn (JavaScript package manager) `.
Install `@plone/generator-volto`, the Yeoman Volto App Generator:
```shell
npm install -g yo @plone/generator-volto
```
### Bootstrapping A Project
To create a new Volto project type the following:
```shell
yo @plone/volto
```
Follow the prompts' questions, providing `my-volto-app` as the project name.
It will create a folder called `my-volto-app` inside the current folder with the following structure:
```console
my-volto-app/
├── babel.config.js
├── build
├── create-sentry-release.sh
├── cypress
│ ├── fixtures
│ ├── .gitkeep
│ ├── integration
│ ├── plugins
│ └── support
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── jsconfig.json
├── locales
├── Makefile
├── mrs.developer.json
├── node_modules
├── omelette -> node_modules/@plone/volto/
├── package.json
├── patches
├── public
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── apple-touch-icon.png
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon.ico
│ ├── icon.svg
│ ├── index.html.spa
│ ├── robots.txt
│ └── site.webmanifest
├── razzle.config.js
├── README.md
├── src
│ ├── actions
│ ├── addons
│ ├── client.js
│ ├── components
│ ├── config.js
│ ├── constants
│ ├── customizations
│ ├── helpers
│ ├── index.js
│ ├── reducers
│ ├── routes.js
│ └── theme.js
├── .storybook
├── theme
│ └── theme.config
├── yarn.lock
└── .yarnrc
```
### Running The Project
To run the project you can type:
```shell
cd my-volto-app
yarn start
```
This will start the server on port 3000.
You can change the port and/or hostname for the frontend by specifying `PORT` and/or `HOST`:
```shell
HOST=my_hostname PORT=1234 yarn start
```
If your backend runs on a different port and/or uses a different hostname you can specify the full URL:
```shell
RAZZLE_API_PATH=http://localhost:55001/plone yarn start
```
## Creating a Plone Website
Now that you have a backend and a frontend up and running, you can create your concrete website for a project.
Create a Plone site object **Plone** on
Point your browser to and see that Plone is up and running.
You can stop the Volto app anytime using {kbd}`ctrl + c`.
(installation-hosting-label)=
## Hosting Plone
```{only} not presentation
If you want to host a real live Plone site yourself then running it from your laptop is not a viable option.
```
You can host Plone...
- with one of many professional [hosting providers](https://plone.org/providers)
- on a virtual private server
- on dedicated servers
See all the ways you can [set up Plone](https://plone.org/download)
```{seealso}
Plone Installation Requirements:
```
(installation-prod-deploy-label)=
## Production Deployment
The way we are setting up a Plone site during this class may be adequate for a small site
— or even a large one that's not very busy — but you are likely to want to do much more if you are using Plone for anything demanding.
- Using a production web server like Apache or nginx for URL rewriting, SSL and combining multiple, best-of-breed solutions into a single web site.
- Reverse proxy caching with a tool like Varnish to improve site performance.
- Load balancing to make best use of multiple core CPUs and even multiple servers.
- Optimizing cache headers and Plone's internal caching schemes with plone.app.caching.
And you will need to learn strategies for efficient backup and log file rotation.
All these topics are introduced in [Guide to deploying and installing Plone in production](https://docs.plone.org/manage/deploying/index.html).