Skip to content

canonical/penpot-operator

Repository files navigation

Penpot Charm

CharmHub Badge Publish to edge Promote charm Discourse Status

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.

Get started

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.

Set up

You can follow the tutorial here to set up a test environment for Juju with LXD.

Deploy

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

Basic operations

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.

Integrations

postgresql integration

The postgresql or postgresql-k8s charm can provide the PostgreSQL database required for Penpot to run.

s3 integration

The s3-integrator charm can configure Penpot with S3-compatible storage, which is necessary for Penpot to run.

redis integration

The redis-k8s charm can provide the Redis database required for Penpot to run.

ingress integration

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 integration

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.

oauth

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.

Learn more

Project and community