+Skip this section if you already have Helm installed in your system. +
+ +You can install Helm by following the official guide. +There are different ways to install Helm, depending on your infrastructure and operating +system. + + +### Add Penpot repository + +To add the Penpot Helm repository, run the following command: + +```bash +helm repo add penpot http://helm.penpot.app +``` + +This will add the Penpot repository to your Helm configuration, so you can install all +the Penpot charts stored there. + + +### Install Penpot Chart + +To install the chart with the release name `my-release`: + +```bash +helm install my-release penpot/penpot +``` + +You can customize the installation specify each parameter using the `--set key=value[,key=value]` +argument to helm install. For example, + +```bash +helm install my-release \ + --set global.postgresqlEnabled=true \ + --set global.redisEnabled=true \ + --set persistence.assets.enabled=true \ + penpot/penpot +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be +provided while installing the chart. For example, + +```bash +helm install my-release -f values.yaml penpot/penpot +``` + + +### Configure Penpot with Helm Chart + +In the previous section we have shown how to configure penpot during installation by +using parameters or by using a yaml file. + +The default values are defined in the +`values.yml` +file itself, which you can use as a basis for creating your own settings. + +You can also consult the list of parameters on the +ArtifactHub page of the project. + + +### Upgrade Penpot + +When a new version of Penpot's chart is released, or when you want to change the +configuration of your release, you can use the helm upgrade command. + +```bash +helm upgrade my-release -f values.yaml penpot/penpot +``` + +An upgrade takes an existing release and upgrades it according to the information you +provide. Because Kubernetes charts can be large and complex, Helm tries to perform the +least invasive upgrade. It will only update things that have changed since the last +release. + +After each upgrade, a new *revision* will be generated. You can check the revision +history of a release with `helm history my-release` and go back to the previous revision +if something went wrong with `helm rollback my-release 1` (`1` is the revision number of +the previous release revision). + + +### Backup Penpot + +The Penpot's Helm Chart uses different Persistent Volumes to store all persistent data. +This allows you to delete and recreate the instance whenever you want without losing +information. + +You back up data from a Persistent Volume via snapshots, so you will want to ensure that +your container storage interface (CSI) supports volume snapshots. There are a couple of +different options for the CSI driver that you choose. All of the major cloud providers +have their respective CSI drivers. + +At last, there are two Persistent Volumes used: one for the Postgres database and another +one for the assets uploaded by your users (images and svg clips). There may be more +volumes if you enable other features, as explained in the file itself. + +You have to back up your custom settings too (the yaml file or the list of parameters you +are using during you setup). + + ## Unofficial self-host options There are some other options, **NOT SUPPORTED BY PENPOT**: @@ -263,7 +399,7 @@ There are some other options, **NOT SUPPORTED BY PENPOT**: * Install with Podman instead of Docker. * Try the under development Penpot Desktop app. * Try a simple Kubernetes Deployment option penpot-kubernetes. -* Or try a fully manual installation if you have really special needs. For help, you can look at the [Architecture][2] section and the Docker configuration files. +* Or try a fully manual installation if you have a really specific use case.. For help, you can look at the [Architecture][2] section and the Docker configuration files. [1]: /technical-guide/configuration/ [2]: /technical-guide/developer/architecture diff --git a/frontend/src/app/main/data/modal.cljs b/frontend/src/app/main/data/modal.cljs index 1055014c28..8b88a813f2 100644 --- a/frontend/src/app/main/data/modal.cljs +++ b/frontend/src/app/main/data/modal.cljs @@ -10,6 +10,7 @@ [app.common.uuid :as uuid] [app.main.data.events :as ev] [app.main.store :as st] + [beicon.v2.core :as rx] [cljs.core :as c] [potok.v2.core :as ptk])) @@ -30,6 +31,12 @@ (dissoc :type) (assoc :name type))) + ptk/WatchEvent + (watch [_ _ _] + (rx/of (ptk/event + ::ev/event + {::ev/name "show-modal" :type type}))) + ptk/UpdateEvent (update [_ state] (assoc state ::modal {:id id diff --git a/frontend/src/app/main/data/workspace/interactions.cljs b/frontend/src/app/main/data/workspace/interactions.cljs index e8dfd12537..ef62306921 100644 --- a/frontend/src/app/main/data/workspace/interactions.cljs +++ b/frontend/src/app/main/data/workspace/interactions.cljs @@ -206,14 +206,16 @@ (watch [_ _ _] (let [interactions (ctsi/update-interaction (:interactions shape) index update-fn) interaction (nth interactions index)] - (rx/of (dwsh/update-shapes - [(:id shape)] - (fn [shape] - (assoc shape :interactions interactions)) - options) + (rx/of + (dwsh/update-shapes + [(:id shape)] + (fn [shape] + (-> shape + (update :interactions ctsi/update-interaction index update-fn))) + options) - (when (some? (:destination interaction)) - (dwsh/update-shapes [(:destination interaction)] cls/show-in-viewer options)))))))) + (when (some? (:destination interaction)) + (dwsh/update-shapes [(:destination interaction)] cls/show-in-viewer options)))))))) (defn remove-all-interactions-nav-to "Remove all interactions that navigate to the given frame."