Skip to content

Installation ​

Plume Compose ​

For a long-term installation we provide Plume Compose as a quick and easy way of getting up and running with a pre-configured Docker Compose configuration.

  1. Clone the repository to a location of your choosing

    console
    git clone https://github.com/PHLAK/plume-compose.git /path/to/plume
  2. Switch to your installation directory and initialize the configuration files

    console
    cd /path/to/plume
    make init
  3. Modify the environment variables in .env for your installation

  4. Run docker compose config to validate and confirm your configuration

  5. Run docker compose up -d to start the containers

Docker Compose ​

Requirements

If you prefer a manual Docker Compose installation you may create a directory for your Plume app and, in that directory, add a docker-compose.yaml file and a folder (e.g. data) to contain your data.

text
/path/to/plume
├── data
│   └── [your data will go here]
└── docker-compose.yaml
yaml
services:

  plume:
    image: phlak/plume:latest
    environment:
      SITE_TITLE: My Amazing Blog
      # See configuration docs for additional variables
    ports:
      - <host_port>:80
    volumes:
      - ./data:/var/www/html/data
      - ./themes:/var/www/html/themes
      - plume-cache:/var/www/html/cache/app
    user: www-data
    restart: unless-stopped

volumes:
  plume-cache: {}

IMPORTANT

Replace <host_port> with the port on which you would like the application to be exposed.

TIP

See Environment Variables for a full list of the available environment variables.

Once created, start the container by running docker compose up -d from the same directory as the docker-compose.yaml file.

Docker Run ​

Requirements

You may use docker run to launch a stand-alone Docker container from the official Docker image. This is a good way to test Plume for the first time but is not recommended for long-term use. Instead we recommend using either the Plume Compose or Docker Compose installation method instead.

console
docker run --detach --publish <host_port>:80 \
    [--env ENVIRONMENT_VARIABLE=value] \
    --volume ./data:/var/www/html/data \
    phlak/plume:latest

IMPORTANT

Replace <host_port> with the port on which you would like the application to be exposed.

TIP

You may pass multiple environment variables by repeating the --env flag.

Manual Installation ​

Requirements

If you prefer to run Plume without Docker you may install it manually from source.

  1. Clone the repository to a location of your choosing

    console
    git clone https://github.com/PHLAK/Plume.git /path/to/plume
  2. Switch to your installation directory and install the PHP dependencies

    console
    cd /path/to/plume
    composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
  3. Install the front-end dependencies and build the assets

    console
    npm install --no-audit --no-fund
    npm run build
  4. Copy the example .env file and modify the environment variables for your installation

    console
    cp .env.example .env

    TIP

    See Environment Variables for a full list of the available environment variables.

  5. Ensure the data and cache directories are writable by your web server

    console
    chown --recursive www-data:www-data data cache

    IMPORTANT

    The web server user varies by platform (e.g. www-data on Debian/Ubuntu, apache on Fedora/RHEL). Replace it in the example above accordingly.

Once configured you may test your installation by serving the application with PHP's built-in web server. Run composer serve from your installation directory, then browse to http://localhost:8080.

TIP

Posts and pages must be published from the command line by running php plume publish from your installation directory. See Getting Started for more information.

Reverse Proxy ​

It's recommended to run Plume behind a reverse proxy. The following examples assume Plume is accessible on the host at 127.0.0.1:8076.

TIP

Replace 8076 with the port you configured for your Plume installation.

NGINX ​

nginx
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8076;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Apache ​

apache
<VirtualHost *:80>
    ServerName example.com

    ProxyPass / http://127.0.0.1:8076/
    ProxyPassReverse / http://127.0.0.1:8076/
</VirtualHost>

Caddy ​

caddyfile
example.com

reverse_proxy 127.0.0.1:8076