feat(penpot): init Penpot

This commit is contained in:
redbeardymcgee 2025-04-21 19:03:59 -05:00
parent b9f9b8d106
commit 58f428285e
12 changed files with 246 additions and 1 deletions

View file

@ -142,7 +142,7 @@ Navigate to `http://localhost:9000` in your browser.
I'm working on new quadlets every day. This is a list of all of the containers
that I intend to add to this repository. It is still growing, and I welcome
[pull requests](https://github.com/redbeardymcgee/podbox/pulls).
[pull requests](https://git.mcgee.red/redbeardymcgee/podbox/pulls).
- [x] [Actual](https://actualbudget.github.io/docs/)
- [x] [AdGuard](https://adguard.com)
@ -226,6 +226,7 @@ that I intend to add to this repository. It is still growing, and I welcome
- [x] [Snowflake](https://snowflake.torproject.org/)
- [ ] [solidtime](https://docs.solidtime.io/self-hosting/intro)
- [x] [Sonarr](https://sonarr.tv)
- [x] [Speedtest Tracker](https://speedtest-tracker.dev)
- [x] [Stirling PDF](https://stirlingpdf.io)
- [x] [syslog-ng](https://syslog-ng.github.io/)
- [x] [Tandoor](https://github.com/TandoorRecipes/recipes)

View file

@ -0,0 +1,27 @@
[Unit]
Description=Penpot backend
WantedBy=penpot.service
Requires=penpot-postgres.service
Requires=penpot-redis.service
After=penpot-postgres.service
After=penpot-redis.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/penpotapp/backend
ContainerName=penpot-backend
AutoUpdate=registry
Network=penpot.network
HostName=penpot-backend
Volume=penpot-assets:/opt/data/assets
EnvironmentFile=penpot-backend.env
EnvironmentFile=penpot.env

View file

@ -0,0 +1,68 @@
## Penpot SECRET KEY. It serves as a master key from which other keys for subsystems
## (eg http sessions, or invitations) are derived.
##
## If you leave it commented, all created sessions and invitations will
## become invalid on container restart.
##
## If you going to uncomment this, we recommend to use a trully randomly generated
## 512 bits base64 encoded string here. You can generate one with:
##
## python3 -c "import secrets; print(secrets.token_urlsafe(64))"
# PENPOT_SECRET_KEY=my-insecure-key
## The PREPL host. Mainly used for external programatic access to penpot backend
## (example=admin). By default it will listen on `localhost` but if you are going to use
## the `admin`, you will need to uncomment this and set the host to `0.0.0.0`.
PENPOT_PREPL_HOST=0.0.0.0
## Database connection parameters. Don't touch them unless you are using custom
## postgresql connection parameters.
PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
PENPOT_DATABASE_USERNAME=penpot
PENPOT_DATABASE_PASSWORD=penpot
## Redis is used for the websockets notifications. Don't touch unless the redis
## container has different parameters or different name.
PENPOT_REDIS_URI=redis://penpot-redis/0
## Default configuration for assets storage=using filesystem based with all files
## stored in a docker volume.
PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
## Also can be configured to to use a S3 compatible storage
## service like MiniIO. Look below for minio service setup.
# AWS_ACCESS_KEY_ID=<KEY_ID>
# AWS_SECRET_ACCESS_KEY=<ACCESS_KEY>
# PENPOT_ASSETS_STORAGE_BACKEND=assets-s3
# PENPOT_STORAGE_ASSETS_S3_ENDPOINT=http://penpot-minio:9000
# PENPOT_STORAGE_ASSETS_S3_BUCKET=<BUKET_NAME>
## Telemetry. When enabled, a periodical process will send anonymous data about this
## instance. Telemetry data will enable us to learn how the application is used,
## based on real scenarios. If you want to help us, please leave it enabled. You can
## audit what data we send with the code available on github.
PENPOT_TELEMETRY_ENABLED=true
PENPOT_TELEMETRY_REFERER=compose
## Example SMTP/Email configuration. By default, emails are sent to the mailcatch
## service, but for production usage it is recommended to setup a real SMTP
## provider. Emails are used to confirm user registrations & invitations. Look below
## how the mailcatch service is configured.
PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
PENPOT_SMTP_HOST=penpot-mailcatch
PENPOT_SMTP_PORT=1025
PENPOT_SMTP_USERNAME=
PENPOT_SMTP_PASSWORD=
PENPOT_SMTP_TLS=false
PENPOT_SMTP_SSL=false

View file

@ -0,0 +1,22 @@
[Unit]
Description=Penpot exporter
Requires=penpot-redis.service
After=penpot-redis.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/penpotapp/exporter
ContainerName=penpot-exporter
AutoUpdate=registry
Network=penpot.network
HostName=penpot-exporter
EnvironmentFile=penpot.env
Environment=PENPOT_REDIS_URI=redis://penpot-redis/0

View file

@ -0,0 +1,19 @@
[Unit]
Description=Penpot mailcatch
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/sj26/mailcatcher
ContainerName=penpot-mailcatcher
AutoUpdate=registry
Network=penpot.network
HostName=penpot-mailcatcher
PublishPort=1025:1025
PublishPort=1080:1080

View file

@ -0,0 +1,26 @@
[Unit]
Description=Penpot MinIO
WantedBy=penpot-backend.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/minio/minio
ContainerName=penpot-minio
AutoUpdate=registry
Network=penpot.network
HostName=penpot-minio
PublishPort=9000:9000
PublishPort=9001:9001
Volume=penpot-minio:/mnt/data
Environment=MINIO_ROOT_USER=minioadmin
Secret=penpot-minio-root-password,type=env,target=MINIO_ROOT_PASSWORD

View file

@ -0,0 +1,25 @@
[Unit]
Description=Penpot postgres
WantedBy=penpot-backend.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/postgres:15
ContainerName=penpot-postgres
AutoUpdate=registry
Network=penpot.network
HostName=penpot-postgres
Volume=penpot-postgres:/var/lib/postgresql/data
Environment=POSTGRES_INITDB_ARGS=--data-checksums
Environment=POSTGRES_DB=penpot
Environment=POSTGRES_USER=penpot
Environment=POSTGRES_PASSWORD=penpot

View file

@ -0,0 +1,18 @@
[Unit]
Description=Penpot redis
WantedBy=penpot-backend.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/redis:7.2
ContainerName=penpot-redis
AutoUpdate=registry
Network=penpot.network
HostName=penpot-redis

View file

@ -0,0 +1,26 @@
[Unit]
Description=Penpot
Requires=penpot-backend.service
Requires=penpot-exporter.service
After=penpot-backend.service
After=penpot-exporter.service
[Service]
Restart=on-failure
TimeoutStartSec=900
[Install]
WantedBy=default.target
[Container]
Image=docker.io/penpotapp/frontend
ContainerName=penpot
AutoUpdate=registry
Network=penpot.network
HostName=penpot
PublishPort=9001:8080
Volume=penpot-assets:/opt/data/assets
EnvironmentFile=penpot.env

View file

@ -0,0 +1,4 @@
PENPOT_FLAGS=disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
PENPOT_PUBLIC_URI=https://penpot.example.com
PENPOT_HTTP_SERVER_MAX_BODY_SIZE=31457280
PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=367001600

View file

@ -0,0 +1,2 @@
[Network]

View file

@ -0,0 +1,7 @@
[Volume]
VolumeName=penpot-postgres
VolumeName=penpot-assets
#VolumeName=penpot-traefik
#VolumeName=penpot-minio