This repository contains the infrastructure configuration to run Penpot via Docker Compose.
First, bring the repository to your local server and navigate into the directory.
git clone https://github.com/Quera-Education/interanet-penpot-deployment.git
cd penpot-deploymentCaddy 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/certsYou 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.keyEnsure the permissions on these files allow Docker to read them (e.g., chmod 644).
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.quera.org
CADDY_HTTP_ADDRESSES=http://caddyFor Domain and Direct IP access (Useful for DNS troubleshooting):
CADDY_SITE_ADDRESS=https://design.quera.org
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).
Once your certificates are in place and your .env is configured, launch the stack in detached mode.
docker compose up -dOnce 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