Penpot Infrastructure Setup

This repository contains the infrastructure configuration to run Penpot via Docker Compose.

Step-by-Step Deployment Guide

Step A: Clone the Repository

First, bring the repository to your local server and navigate into the directory.

git clone http://git.amiirkhl.ir/interanet/penpot-deployment.git
cd penpot-deployment

Step B: SSL/TLS Certificate Configuration

Caddy handles the reverse proxy and SSL routing. Since the actual certificate files are ignored in version control for security, you must provide them manually before starting the containers.

Navigate to the certificates directory:

cd config/certs

You will see sample files (fullchain.pem.sample and private.key.sample). You need to place your actual SSL certificates here and name them exactly as follows:

  • fullchain.pem (Your combined certificate file)
  • private.key (Your private key file)

You can create these files and paste your certificate contents into them:

nano fullchain.pem
nano private.key

Ensure the permissions on these files allow Docker to read them (e.g., chmod 644).

Step C: Environment Variables and Dynamic Access

Return to the root of the project and set up your environment variables.

cd ../../
cp .env.example .env
nano .env 

Inside your .env file, alongside your secret keys, passwords, and SMTP details, you must define your Caddy routing variables. You can dynamically toggle between Domain-only access and Domain+IP access without changing the Caddyfile.

For Domain-only access (Standard):

CADDY_SITE_ADDRESS=https://design.amiirkhl.ir
CADDY_HTTP_ADDRESSES=http://caddy

For Domain and Direct IP access (Useful for DNS troubleshooting):

CADDY_SITE_ADDRESS=https://design.amiirkhl.ir
CADDY_HTTP_ADDRESSES=http://YOUR_SERVER_IP, http://caddy

(Whenever you change these variables in the future to toggle IP access, simply run docker compose up -d caddy to apply the changes).

Step D: Start the Services

Once your certificates are in place and your .env is configured, launch the stack in detached mode.

docker compose up -d

Step E: Create the First Admin User

Once the containers are running and the database has initialized, you need to create your main admin account via the command line.

docker exec -it penpot-backend ./manage.sh create-profile
Description
No description provided
Readme 35 KiB
Languages
Shell 100%