A Juju charm for deploying and managing the Penpot open-source design tool for design and code collaboration in your systems.
This charm simplifies the configuration and maintenance of Penpot across a range of environments, allowing designers to create stunning designs and interactive prototypes, design systems at scale, and make their workflow easy and fast with ready-to-use code.
In this section, we will deploy the Penpot charm.
You’ll need a workstation, e.g., a laptop, with sufficient resources to launch a virtual machine with 4 CPUs, 8 GB RAM, and 50 GB disk space.
You can follow the tutorial here to set up a test environment for Juju with LXD.
From inside the virtual machine, deploy Penpot charm's dependencies using the juju deploy
command.
juju deploy minio --config access-key=minioadmin --config secret-key=minioadmin
juju deploy postgresql-k8s --channel 14/stable --trust
juju deploy redis-k8s --channel latest/edge
juju deploy s3-integrator --config "endpoint=http://minio-endpoints.penpot-test.svc.cluster.local:9000" --config bucket=penpot
juju deploy nginx-ingress-integrator --trust --config service-hostname=penpot.local --config path-routes=/
juju deploy self-signed-certificates
juju integrate self-signed-certificates nginx-ingress-integrator
Configure minio to provide a S3 compatible storage for the Penpot charm.
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin
export AWS_ENDPOINT_URL=http://$(juju status --format=json | jq -r '.applications.minio.units."minio/0".address'):9000
aws s3 mb s3://penpot
juju run s3-integrator/0 sync-s3-credentials --string-args access-key=minioadmin secret-key=minioadmin
Deploy the Penpot charm and integrate the Penpot charm with all its dependencies.
juju deploy penpot --channel latest/edge
juju integrate penpot postgresql-k8s
juju integrate penpot redis-k8s
juju integrate penpot s3-integrator
juju integrate penpot nginx-ingress-integrator
When the Penpot charm has completed deployment and installation, you can access Penpot from a browser.
First, we need to modify the /etc/hosts
file to point the penpot.local
domain to the IP address of the virtual machine.
After that, we can access the Penpot instance in the browser using the address https://penpot.local
.
Note that https
is required for Penpot to function. You may need to bypass the certificate security warning in the browser, as we are using a self-signed certificate.
Inside the virtual machine, run the following command to create a Penpot account, and use the returned credentials to log in with this account.
juju run penpot/0 create-profile --string-args [email protected] fullname="John Doe"
For additional configurations and actions available for the Penpot charm, refer to the charmcraft.yaml
file.
The postgresql
or postgresql-k8s
charm can
provide the PostgreSQL database required for Penpot to run.
The s3-integrator
charm can configure Penpot with S3-compatible storage,
which is necessary for Penpot to run.
The redis-k8s
charm can provide the Redis database required for Penpot to run.
The nginx-ingress-integrator
or
traefik-k8s
charm can provide the ingress service required for Penpot to run.
Penpot mandates HTTPS, so please enable HTTPS on the respective ingress charms.
smtp-integrator
and other charms implementing the smtp
integration can
optionally provide SMTP credentials to enable the Penpot charm to send email notifications and other email-related functionality.
Identity Platform bundle and other charms implementing the oauth
integration can optionally provide OpenID Connect settings for the Penpot charm.
This will disable the user/password login in the Penpot charm and switch to using the OpenID Connect login flow.