From ff43d335acff995c56757410deca0fb91e0d3937 Mon Sep 17 00:00:00 2001 From: nerdlicht Date: Thu, 24 Apr 2025 14:56:36 +0200 Subject: [PATCH] Add all the containers (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sönke Domröse Reviewed-on: https://git.home.domroese.eu/nerdlicht/docker-container/pulls/3 --- .idea/.gitignore | 13 ++ .idea/encodings.xml | 4 + .idea/indexLayout.xml | 8 + .idea/vcs.xml | 7 + actualBudget/docker-compose.yml | 29 ++++ budibase/.env | 31 ++++ budibase/docker-compose.yml | 120 ++++++++++++++ caddy/Caddyfile | 49 ++++++ erugo/docker-compose.yml | 22 +++ excalidraw/docker-compose.yml | 23 +++ homarr/docker-compose.yml | 12 ++ homepage/docker-compose.yml | 11 ++ mealie/docker-compose.yml | 60 +++++++ omniTools/docker-compose.yml | 7 + penpot/docker-compose.yaml | 281 ++++++++++++++++++++++++++++++++ shiori/docker-compose.yml | 8 + startall.sh | 5 + wallos/docker-compose.yml | 13 ++ 18 files changed, 703 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/indexLayout.xml create mode 100644 .idea/vcs.xml create mode 100644 actualBudget/docker-compose.yml create mode 100644 budibase/.env create mode 100644 budibase/docker-compose.yml create mode 100644 erugo/docker-compose.yml create mode 100644 excalidraw/docker-compose.yml create mode 100644 homarr/docker-compose.yml create mode 100644 homepage/docker-compose.yml create mode 100644 mealie/docker-compose.yml create mode 100644 omniTools/docker-compose.yml create mode 100644 penpot/docker-compose.yaml create mode 100644 shiori/docker-compose.yml create mode 100644 startall.sh create mode 100644 wallos/docker-compose.yml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..2df4ef1 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/modules.xml +/.idea.docker-container.iml +/projectSettingsUpdater.xml +/contentModel.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/indexLayout.xml b/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..8306744 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/actualBudget/docker-compose.yml b/actualBudget/docker-compose.yml new file mode 100644 index 0000000..832969d --- /dev/null +++ b/actualBudget/docker-compose.yml @@ -0,0 +1,29 @@ +services: + actual_server: + image: docker.io/actualbudget/actual-server:latest + ports: + # This line makes Actual available at port 5006 of the device you run the server on, + # i.e. http://localhost:5006. You can change the first number to change the port, if you want. + - '5006:5006' + environment: + # Uncomment any of the lines below to set configuration options. + # - ACTUAL_HTTPS_KEY=/data/selfhost.key + # - ACTUAL_HTTPS_CERT=/data/selfhost.crt + # - ACTUAL_PORT=5006 + # - ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20 + # - ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50 + # - ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20 + # See all options and more details at https://actualbudget.github.io/docs/Installing/Configuration + # !! If you are not using any of these options, remove the 'environment:' tag entirely. + volumes: + # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server. + # '/data' is the path Actual will look for its files in by default, so leave that as-is. + - /home/soenke/docker-data/actualBudget/data:/data + healthcheck: + # Enable health check for the instance + test: ['CMD-SHELL', 'node src/scripts/health-check.js'] + interval: 60s + timeout: 10s + retries: 3 + start_period: 20s + restart: unless-stopped \ No newline at end of file diff --git a/budibase/.env b/budibase/.env new file mode 100644 index 0000000..a75e8a2 --- /dev/null +++ b/budibase/.env @@ -0,0 +1,31 @@ +# Use the main port in the builder for your self hosting URL, e.g. localhost:10000 +MAIN_PORT=10000 + +# This section contains all secrets pertaining to the system +# These should be updated +API_ENCRYPTION_KEY="r*6V&XX#Nc@KhkB7" +JWT_SECRET="4hXZmFIvjmb$!jIp" +MINIO_ACCESS_KEY="*PG2M5^6WByh!uT1" +MINIO_SECRET_KEY="I238Lt@TqB#eTtG%" +COUCH_DB_PASSWORD="OgDcjjIA^Q6i0*VN" +COUCH_DB_USER=budibase +REDIS_PASSWORD="wfU2ufV*4#pxSyr&" +INTERNAL_API_KEY="pWCxHj8*A6bfEzTB" + +# This section contains variables that do not need to be altered under normal circumstances +APP_PORT=4002 +WORKER_PORT=4003 +MINIO_PORT=4004 +COUCH_DB_PORT=4005 +COUCH_DB_SQS_PORT=4006 +REDIS_PORT=6379 +BUDIBASE_ENVIRONMENT=PRODUCTION +SQL_MAX_ROWS= + +# An admin user can be automatically created initially if these are set +BB_ADMIN_USER_EMAIL=soenke@domroese.eu +BB_ADMIN_USER_PASSWORD="$$3ljjnr6#nGO3pP" + +# A path that is watched for plugin bundles. Any bundles found are imported automatically/ +PLUGINS_DIR= +ROLLING_LOG_MAX_SIZE= diff --git a/budibase/docker-compose.yml b/budibase/docker-compose.yml new file mode 100644 index 0000000..f83ddd0 --- /dev/null +++ b/budibase/docker-compose.yml @@ -0,0 +1,120 @@ +version: "3" + +# optional ports are specified throughout for more advanced use cases. + +services: + app-service: + restart: unless-stopped + image: budibase/apps + container_name: bbapps + environment: + SELF_HOSTED: 1 + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + WORKER_URL: http://worker-service:4003 + MINIO_URL: http://minio-service:9000 + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT} + PORT: 4002 + API_ENCRYPTION_KEY: ${API_ENCRYPTION_KEY} + JWT_SECRET: ${JWT_SECRET} + LOG_LEVEL: info + ENABLE_ANALYTICS: "true" + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + BB_ADMIN_USER_EMAIL: ${BB_ADMIN_USER_EMAIL} + BB_ADMIN_USER_PASSWORD: ${BB_ADMIN_USER_PASSWORD} + PLUGINS_DIR: ${PLUGINS_DIR} + OFFLINE_MODE: ${OFFLINE_MODE:-} + depends_on: + - worker-service + - redis-service + volumes: + - /home/soenke/docker-data/budibase/plugins:/plugins + + worker-service: + restart: unless-stopped + image: budibase/worker + container_name: bbworker + environment: + SELF_HOSTED: 1 + PORT: 4003 + CLUSTER_PORT: ${MAIN_PORT} + API_ENCRYPTION_KEY: ${API_ENCRYPTION_KEY} + JWT_SECRET: ${JWT_SECRET} + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_URL: http://minio-service:9000 + APPS_URL: http://app-service:4002 + COUCH_DB_USERNAME: ${COUCH_DB_USER} + COUCH_DB_PASSWORD: ${COUCH_DB_PASSWORD} + COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984 + INTERNAL_API_KEY: ${INTERNAL_API_KEY} + REDIS_URL: redis-service:6379 + REDIS_PASSWORD: ${REDIS_PASSWORD} + OFFLINE_MODE: ${OFFLINE_MODE:-} + depends_on: + - redis-service + - minio-service + + minio-service: + restart: unless-stopped + image: minio/minio + volumes: + - minio_data:/data + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + MINIO_BROWSER: "off" + command: server /data --console-address ":9001" + healthcheck: + test: "timeout 5s bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1" + interval: 30s + timeout: 20s + retries: 3 + + proxy-service: + restart: unless-stopped + ports: + - "${MAIN_PORT}:10000" + container_name: bbproxy + image: budibase/proxy + environment: + - PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND=10 + - PROXY_RATE_LIMIT_API_PER_SECOND=20 + - APPS_UPSTREAM_URL=http://app-service:4002 + - WORKER_UPSTREAM_URL=http://worker-service:4003 + - MINIO_UPSTREAM_URL=http://minio-service:9000 + - COUCHDB_UPSTREAM_URL=http://couchdb-service:5984 + - RESOLVER=127.0.0.11 + depends_on: + - minio-service + - worker-service + - app-service + - couchdb-service + + couchdb-service: + restart: unless-stopped + image: budibase/couchdb:v3.3.3-sqs-v2.1.1 + environment: + - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD} + - COUCHDB_USER=${COUCH_DB_USER} + - TARGETBUILD=docker-compose + volumes: + - couchdb3_data:/opt/couchdb/data + + redis-service: + restart: unless-stopped + image: redis + command: redis-server --requirepass "${REDIS_PASSWORD}" + volumes: + - redis_data:/data + +volumes: + couchdb3_data: + driver: local + minio_data: + driver: local + redis_data: + driver: local diff --git a/caddy/Caddyfile b/caddy/Caddyfile index de6285e..03e72ed 100644 --- a/caddy/Caddyfile +++ b/caddy/Caddyfile @@ -60,6 +60,55 @@ chat.home.domroese.eu:443 { tls soenke@domroese.eu reverse_proxy 192.168.1.65:1180 } +budibase.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:4002 +} + +erugo.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:9997 +} + +excalidraw.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:8267 +} + +homarr.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:7575 +} + +homepage.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:3891 +} + +mealie.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:9925 +} + +omnitools.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:8579 +} + +shiori.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:2661 +} + +wallos.home.domroese.eu:443 { + tls soenke@domroese.eu + reverse_proxy 192.168.1.65:8282 +} + + + + + nas.home.domroese.eu { tls soenke@domroese.eu { diff --git a/erugo/docker-compose.yml b/erugo/docker-compose.yml new file mode 100644 index 0000000..8ddb924 --- /dev/null +++ b/erugo/docker-compose.yml @@ -0,0 +1,22 @@ +services: + erugo: + image: wardy784/erugo:latest + user: 0:0 + container_name: Erugo + healthcheck: + test: ["CMD-SHELL", "nc -z 127.0.0.1 80 || exit 1"] + interval: 10s + timeout: 5s + retries: 3 + start_period: 90s + environment: + VITE_API_URL: https://erugo.yourname.synology.me + JWT_SECRET: dLB%7V$YJ5cPPmeuZCc%0O2E0HMV9Ock!J0dU@mzgYp4IaCR4XVuUn%0i!e@sMUq + APP_KEY: h$@H$BdK8ywbKmwkt^B8TH^mjDQ$w*AideHPhOLTHt$qH2eQvqSWJpxsARKVRxXM + APP_DEBUG: true + APP_TIMEZONE: Europe/Berlin + volumes: + - /home/soenke/docker-data/erugo/data:/var/www/html/storage:rw + ports: + - 9997:80 + restart: on-failure:5 \ No newline at end of file diff --git a/excalidraw/docker-compose.yml b/excalidraw/docker-compose.yml new file mode 100644 index 0000000..128a3b2 --- /dev/null +++ b/excalidraw/docker-compose.yml @@ -0,0 +1,23 @@ +services: + excalidraw: + build: + context: . + args: + - NODE_ENV=development + container_name: excalidraw + ports: + - "8267:80" + restart: on-failure + stdin_open: true + healthcheck: + disable: true + environment: + - NODE_ENV=development + volumes: + - /home/soenke/docker-data/excalidraw/data:/opt/node_app/app:delegated + - /home/soenke/docker-data/excalidraw/package.json:/opt/node_app/package.json + - /home/soenke/docker-data/excalidraw/yarn.lock:/opt/node_app/yarn.lock + - notused:/opt/node_app/app/node_modules + +volumes: + notused: \ No newline at end of file diff --git a/homarr/docker-compose.yml b/homarr/docker-compose.yml new file mode 100644 index 0000000..7403464 --- /dev/null +++ b/homarr/docker-compose.yml @@ -0,0 +1,12 @@ +services: + homarr: + container_name: homarr + image: ghcr.io/homarr-labs/homarr:latest + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration + - /home/soenke/docker-data/homarr/appdata:/appdata + environment: + - SECRET_ENCRYPTION_KEY=c99349e72b4267a0ba7a19fa2de53cfdbd73708974338d2abe36f1379fe8ba7c + ports: + - '7575:7575' \ No newline at end of file diff --git a/homepage/docker-compose.yml b/homepage/docker-compose.yml new file mode 100644 index 0000000..01c103c --- /dev/null +++ b/homepage/docker-compose.yml @@ -0,0 +1,11 @@ +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + ports: + - 3891:3000 + volumes: + - /home/soenke/docker-data/homepage/config:/app/config # Make sure your local config directory exists + - /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations + environment: + HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev,homepage.home.domroese.eu # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts \ No newline at end of file diff --git a/mealie/docker-compose.yml b/mealie/docker-compose.yml new file mode 100644 index 0000000..35c8151 --- /dev/null +++ b/mealie/docker-compose.yml @@ -0,0 +1,60 @@ +services: + db: + image: postgres:16 + container_name: Mealie-DB + hostname: mealie-db + mem_limit: 1g + cpu_shares: 768 + security_opt: + - no-new-privileges:true + healthcheck: + test: ["CMD", "pg_isready", "-q", "-d", "mealie", "-U", "mealieuser"] + timeout: 45s + interval: 10s + retries: 10 + volumes: + - /home/soenke/docker-data/mealie/db:/var/lib/postgresql/data:rw + environment: + POSTGRES_DB: mealie + POSTGRES_USER: mealie + POSTGRES_PASSWORD: $hYx%uyO$IAUX3EhXvUtP$GMe4TLgoiLrBTN9nrXh&q8C0TWqp&ku%dEOUPT4GMZ + restart: on-failure:5 + + mealie: + image: ghcr.io/mealie-recipes/mealie:latest + container_name: Mealie + hostname: mealie + mem_limit: 2g + cpu_shares: 1024 + security_opt: + - no-new-privileges:true + read_only: false + ports: + - 9925:9000 + volumes: + - /home/soenke/docker-data/mealie/data:/app/data/:rw + environment: + TZ: Europe/Berlin + PUID: 1026 + PGID: 100 + MAX_WORKERS: 1 + WEB_CONCURRENCY: 1 + ALLOW_SIGNUP: true + BASE_URL: https://mealie.home.domroese.eu + DB_ENGINE: postgres + POSTGRES_USER: mealie + POSTGRES_PASSWORD: $hYx%uyO$IAUX3EhXvUtP$GMe4TLgoiLrBTN9nrXh&q8C0TWqp&ku%dEOUPT4GMZ + POSTGRES_SERVER: mealie-db + POSTGRES_PORT: 5432 + POSTGRES_DB: mealie + SMTP_HOST: smtp.gmail.com + SMTP_PORT: 587 + SMTP_FROM_NAME: Mealie + SMTP_AUTH_STRATEGY: TLS # Options: TLS, SSL, NONE + SMTP_FROM_EMAIL: Your-own-gmail-address + SMTP_USER: Your-own-gmail-address + SMTP_PASSWORD: Your-own-app-password + restart: on-failure:5 + depends_on: + db: + condition: service_healthy \ No newline at end of file diff --git a/omniTools/docker-compose.yml b/omniTools/docker-compose.yml new file mode 100644 index 0000000..de302c4 --- /dev/null +++ b/omniTools/docker-compose.yml @@ -0,0 +1,7 @@ +services: + omni-tools: + image: iib0011/omni-tools:latest + container_name: omni-tools + restart: unless-stopped + ports: + - "8579:80" \ No newline at end of file diff --git a/penpot/docker-compose.yaml b/penpot/docker-compose.yaml new file mode 100644 index 0000000..206342f --- /dev/null +++ b/penpot/docker-compose.yaml @@ -0,0 +1,281 @@ +## Common flags: +# demo-users +# email-verification +# log-emails +# log-invitation-tokens +# login-with-github +# login-with-gitlab +# login-with-google +# login-with-ldap +# login-with-oidc +# login-with-password +# prepl-server +# registration +# secure-session-cookies +# smtp +# smtp-debug +# telemetry +# webhooks +## +## You can read more about all available flags and other +## environment variables here: +## https://help.penpot.app/technical-guide/configuration/#advanced-configuration +# +# WARNING: if you're exposing Penpot to the internet, you should remove the flags +# 'disable-secure-session-cookies' and 'disable-email-verification' +x-flags: &penpot-flags + PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies + +x-uri: &penpot-public-uri + PENPOT_PUBLIC_URI: http://penpot.home.domroese.eu + +x-body-size: &penpot-http-body-size + # Max body size (30MiB); Used for plain requests, should never be + # greater than multi-part size + PENPOT_HTTP_SERVER_MAX_BODY_SIZE: 31457280 + + # Max multipart body size (350MiB) + PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE: 367001600 + + +networks: + penpot: + +volumes: + penpot_postgres_v15: + penpot_assets: + # penpot_traefik: + # penpot_minio: + +services: + ## Traefik service declaration example. Consider using it if you are going to expose + ## penpot to the internet, or a different host than `localhost`. + + # traefik: + # image: traefik:v3.3 + # networks: + # - penpot + # command: + # - "--api.insecure=true" + # - "--entryPoints.web.address=:80" + # - "--providers.docker=true" + # - "--providers.docker.exposedbydefault=false" + # - "--entryPoints.websecure.address=:443" + # - "--certificatesresolvers.letsencrypt.acme.tlschallenge=true" + # - "--certificatesresolvers.letsencrypt.acme.email=" + # - "--certificatesresolvers.letsencrypt.acme.storage=/traefik/acme.json" + # volumes: + # - "penpot_traefik:/traefik" + # - "/var/run/docker.sock:/var/run/docker.sock" + # ports: + # - "80:80" + # - "443:443" + + penpot-frontend: + image: "penpotapp/frontend:${PENPOT_VERSION:-latest}" + restart: always + ports: + - 9574:8080 + + volumes: + - penpot_assets:/opt/data/assets + + depends_on: + - penpot-backend + - penpot-exporter + + networks: + - penpot + + # labels: + # - "traefik.enable=true" + + # ## HTTPS: example of labels for the case where penpot will be exposed to the + # ## internet with HTTPS using traefik. + + # - "traefik.http.routers.penpot-https.rule=Host(``)" + # - "traefik.http.routers.penpot-https.entrypoints=websecure" + # - "traefik.http.routers.penpot-https.tls.certresolver=letsencrypt" + # - "traefik.http.routers.penpot-https.tls=true" + + environment: + << : [*penpot-flags, *penpot-http-body-size] + + penpot-backend: + image: "penpotapp/backend:${PENPOT_VERSION:-latest}" + restart: always + + volumes: + - penpot_assets:/opt/data/assets + + depends_on: + penpot-postgres: + condition: service_healthy + penpot-redis: + condition: service_healthy + + networks: + - penpot + + ## Configuration envronment variables for the backend container. + + environment: + << : [*penpot-flags, *penpot-public-uri, *penpot-http-body-size] + + ## 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: + # AWS_SECRET_ACCESS_KEY: + # PENPOT_ASSETS_STORAGE_BACKEND: assets-s3 + # PENPOT_STORAGE_ASSETS_S3_ENDPOINT: http://penpot-minio:9000 + # PENPOT_STORAGE_ASSETS_S3_BUCKET: + + ## 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 + + penpot-exporter: + image: "penpotapp/exporter:${PENPOT_VERSION:-latest}" + restart: always + + depends_on: + penpot-redis: + condition: service_healthy + + networks: + - penpot + + environment: + # Don't touch it; this uses an internal docker network to + # communicate with the frontend. + PENPOT_PUBLIC_URI: http://penpot-frontend:8080 + + ## Redis is used for the websockets notifications. + PENPOT_REDIS_URI: redis://penpot-redis/0 + + penpot-postgres: + image: "postgres:15" + restart: always + stop_signal: SIGINT + + healthcheck: + test: ["CMD-SHELL", "pg_isready -U penpot"] + interval: 2s + timeout: 10s + retries: 5 + start_period: 2s + + volumes: + - penpot_postgres_v15:/var/lib/postgresql/data + + networks: + - penpot + + environment: + - POSTGRES_INITDB_ARGS=--data-checksums + - POSTGRES_DB=penpot + - POSTGRES_USER=penpot + - POSTGRES_PASSWORD=penpot + + penpot-redis: + image: redis:7.2 + restart: always + + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + interval: 1s + timeout: 3s + retries: 5 + start_period: 3s + + networks: + - penpot + + ## A mailcatch service, used as temporal SMTP server. You can access via HTTP to the + ## port 1080 for read all emails the penpot platform has sent. Should be only used as a + ## temporal solution while no real SMTP provider is configured. + + penpot-mailcatch: + image: sj26/mailcatcher:latest + restart: always + expose: + - '1025' + ports: + - "1080:1080" + networks: + - penpot + + ## Example configuration of MiniIO (S3 compatible object storage service); If you don't + ## have preference, then just use filesystem, this is here just for the completeness. + + # minio: + # image: "minio/minio:latest" + # command: minio server /mnt/data --console-address ":9001" + # restart: always + # + # volumes: + # - "penpot_minio:/mnt/data" + # + # environment: + # - MINIO_ROOT_USER=minioadmin + # - MINIO_ROOT_PASSWORD=minioadmin + # + # ports: + # - 9000:9000 + # - 9001:9001 diff --git a/shiori/docker-compose.yml b/shiori/docker-compose.yml new file mode 100644 index 0000000..c56d87c --- /dev/null +++ b/shiori/docker-compose.yml @@ -0,0 +1,8 @@ +services: + go-shiori: + image: ghcr.io/go-shiori/shiori + volumes: + - '/home/soenke/docker-data/shiori:/shiori' + ports: + - '2661:8080' + container_name: shiori \ No newline at end of file diff --git a/startall.sh b/startall.sh new file mode 100644 index 0000000..87fad6a --- /dev/null +++ b/startall.sh @@ -0,0 +1,5 @@ +for dir in *; do + if [ -d "$dir" ]; then # or: if test -d "$dir"; then + ( cd "$dir" && docker-compose up -d ) + fi +done diff --git a/wallos/docker-compose.yml b/wallos/docker-compose.yml new file mode 100644 index 0000000..e2cde53 --- /dev/null +++ b/wallos/docker-compose.yml @@ -0,0 +1,13 @@ +services: + wallos: + container_name: wallos + image: bellamy/wallos:latest + ports: + - "8282:80/tcp" + environment: + TZ: 'Europe/Berlin' + # Volumes store your data between container upgrades + volumes: + - '/home/soenke/docker-data/wallos/db:/var/www/html/db' + - '/home/soenke/docker-data/wallos/logos:/var/www/html/images/uploads/logos' + restart: unless-stopped \ No newline at end of file