From 76b0b4d5822751f9e835c9fd9d7eadc8787efe96 Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Thu, 6 May 2021 08:48:19 +0700 Subject: [PATCH] Add Papercups (#421) * wip: add Papercups * chore: add missing papercups env vars * chore: fix papercups image tag --- public/v4/apps/papercups.yml | 157 ++++++++++++++++++++++++++++++++++ public/v4/logos/papercups.png | Bin 0 -> 2589 bytes 2 files changed, 157 insertions(+) create mode 100644 public/v4/apps/papercups.yml create mode 100644 public/v4/logos/papercups.png diff --git a/public/v4/apps/papercups.yml b/public/v4/apps/papercups.yml new file mode 100644 index 0000000..7aa7ff6 --- /dev/null +++ b/public/v4/apps/papercups.yml @@ -0,0 +1,157 @@ +captainVersion: 4 + +services: + $$cap_appname: + depends_on: + - $$cap_appname-db + environment: + DATABASE_URL: 'ecto://postgres:$$cap_postgres_password@srv-captain--$$cap_appname-db/postgres' + SECRET_KEY_BASE: $$cap_secret_key + BACKEND_URL: $$cap_appname.$$cap_root_domain + MIX_ENV: $$cap_mix_env + REACT_APP_URL: $$cap_appname.$$cap_root_domain + FROM_ADDRESS: $$cap_email_from_address + MAILGUN_API_KEY: $$cap_mailgun_api_key + DOMAIN: $$cap_email_from_domain + SLACK_BOT_ACCESS_TOKEN: $$cap_slack_bot_access_token + PAPERCUPS_SLACK_CLIENT_ID: $$cap_slack_client_id + PAPERCUPS_SLACK_CLIENT_SECRET: $$cap_slack_client_secret + SENTRY_DSN: $$cap_sentry_dsn + PAPERCUPS_STRIPE_SECRET: $$cap_stripe_secret + REACT_APP_GOOGLE_ANALYTICS_ID: $$cap_react_google_analytics_id + REACT_APP_SLACK_CLIENT_ID: $$cap_react_slack_client_id + REACT_APP_SENTRY_DSN: $$cap_react_sentry_dsn + REACT_APP_LOGROCKET_ID: $$cap_react_logrocket_id + REACT_APP_STRIPE_PUBLIC_KEY: $$cap_react_stripe_public_id + REACT_APP_FILE_UPLOADS_ENABLED: $$cap_upload_enabled + CUSTOMER_IO_SITE_ID: $$cap_customer_io_site_id + CUSTOMER_IO_API_KEY: $$cap_customer_io_api_key + AWS_ACCESS_KEY_ID: $$cap_aws_access_key_id + AWS_SECRET_ACCESS_KEY: $$cap_aws_secret_key + BUCKET_NAME: $$cap_aws_bucket + AWS_REGION: $$cap_aws_region + REQUIRE_DB_SSL: $$cap_db_require_ssl + + caproverExtra: + containerHttpPort: '4000' + dockerfileLines: + - FROM papercups/papercups:$$cap_papercups_tag + - ENTRYPOINT sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && echo 'running' && /entrypoint.sh run" + + $$cap_appname-db: + image: postgres:$$cap_postgres_tag + volume: + - '$$cap_appname-db-data:/var/lib/postgresql/data' + environment: + POSTGRES_PASSWORD: $$cap_postgres_password + caproverExtra: + notExposeAsWebApp: true + +caproverOneClickApp: + variables: + - id: $$cap_papercups_tag + label: Papercups Tag + defaultValue: 1.1.0 + description: 'Check out their docker page for the valid tags https://hub.docker.com/r/papercups/papercups/tags' + - id: $$cap_postgres_tag + label: Postgres Tag + defaultValue: 9.6-alpine + description: 'Check out their docker page for the valid tags https://hub.docker.com/_/postgres?tab=tags' + - id: $$cap_postgres_password + label: Postgres Password + defaultValue: $$cap_gen_random_hex(16) + - id: $$cap_secret_key + label: Papercups Secret Key + defaultValue: $$cap_gen_random_hex(64) + validRegex: /.{64,}/ + description: 'Must be at least 64 bytes' + - id: $$cap_mix_env + label: Mix Env + defaultValue: prod + description: 'Learn more at https://hexdocs.pm/mix/Mix.html#module-environments' + - id: $$cap_upload_enabled + label: Enable Papercups Upload + defaultValue: 1 + - id: $$cap_email_from_address + label: Email From Address + defaultValue: 'noreply@mail.papercups.io' + - id: $$cap_mailgun_api_key + label: Mailgun API Key + defaultValue: '' + - id: $$cap_email_from_domain + label: Email From Domain + defaultValue: '$$cap_appname.$$cap_root_domain' + - id: $$cap_slack_bot_access_token + label: Slack Bot Access Token + defaultValue: '' + - id: $$cap_slack_client_id + label: Slack Bot Client ID + defaultValue: '' + - id: $$cap_slack_client_secret + label: Slack Bot Client Secret + defaultValue: '' + - id: $$cap_sentry_dsn + label: Sentry DSN + defaultValue: '' + - id: $$cap_stripe_secret + label: Stripe Secret + defaultValue: '' + - id: $$cap_react_google_analytics_id + label: Google Analytics ID + defaultValue: '' + - id: $$cap_react_slack_client_id + label: Papercups's React Slack Client ID + defaultValue: '' + - id: $$cap_react_sentry_dsn + label: Papercups's React Sentry DSN + defaultValue: '' + - id: $$cap_react_logrocket_id + label: Papercups's React LogRocket ID + defaultValue: '' + - id: $$cap_react_stripe_public_id + label: Papercups's React Stripe Public ID + defaultValue: '' + - id: $$cap_customer_io_site_id + label: Customer.io Site ID + defaultValue: '' + - id: $$cap_customer_io_api_key + label: Customer.io API Key + defaultValue: '' + - id: $$cap_aws_access_key_id + label: AWS Access Key ID + defaultValue: '' + - id: $$cap_aws_secret_key + label: AWS Secret Key ID + defaultValue: '' + - id: $$cap_aws_bucket + label: AWS Bucket + defaultValue: '' + - id: $$cap_aws_region + label: AWS Region + defaultValue: '' + - id: $$cap_db_require_ssl + label: DB Require SSL + defaultValue: 'false' + instructions: + start: >- + Papercups is an open source live customer chat web app written in Elixir. + For more info visit https://papercups.io/ + end: |- + Papercups has been successfully deployed! + + -------------------------------------------- + + Before you proceed, you must: + 1. Enable HTTPS + 2. Enable Websocket Support + + -------------------------------------------- + + App is available as http://$$cap_appname.$$cap_root_domain + displayName: Papercups + isOfficial: false + description: >- + Papercups is an open source live customer chat web app written in Elixir. + documentation: >- + This docker-compose is taken from https://github.com/papercups-io/papercups/blob/master/docker-compose.prod.yml + Papercups's example environment https://github.com/papercups-io/papercups/blob/master/.env.example diff --git a/public/v4/logos/papercups.png b/public/v4/logos/papercups.png new file mode 100644 index 0000000000000000000000000000000000000000..2c67ed1e8d62138692132671c16d34810349f038 GIT binary patch literal 2589 zcmY*bX*|^H`?iFTl*5c&*^(JE)io zlI5ToOxBd0H0Ds2XlzG^e&0Fo{x6>ES?>F~?(4Zf&x_~5CFk=}5{eQ60s>O@7wp`? zIS(9z2Sq`Y=-^ce2#C+y+u68BO)O8xhUILku-0$ZY&c&>PcB%#lbpoVGMb3Z`8Uv0 zE65P40sD7+kfOSeh@c~~E&v9g&rL2wJ7c57n}f&iKSUdb$cyGmiG_9VSyc`v4`XdA zP%q9}|J*xk)9x7)op8EsfiiF+x`b;T)o<~tO}Vg8qo?-YG>dR{_4uq3508od<636) z*uw4@we`v?n&&>%QciMBX_HXSDIOPJOW$ps+Qc>Q?l;$%Y5NV4);sVq&YeBiS-Dl# z1y`EYbhB|$X63C7Czafz5IVuM)w@ zUS{+k^FYb+SlXHkE;O~J&YOqO(IWFI0%b&jSeP2Bo>dB5^-8eZxf=I^FQ|Kd-TaXnW3DvGff z+asR|oAqbEWg(`{R0p^C6heI24iwE-IQ>pC4wZTVu)0>$ebmf^Qw_wWBMMs=p z)_t9ZeOxhO5#S`4aaD!AC9EW^ednWhe+pR#tPbVbD0dAUsCOg3>v-lgk z)7M=Vb>#EpR&#>Jx~^zAPFsB_zvqwH!o@k|lp$|3OY;baNNg*5+DVy@!F@BkNEIPY zZ61enUZ$R#{XNd-d^h9QV!`(dUb2{aj`0r+VYL zyEa!b_PS@Pl|DNfPO!_PxY~rD?@uywrq1n+Fa4M>rF%9GL@bHr=# zn&%!T;1s+Xs~i@Lsu6dGa#j}m2E0+kMteA z=6Hd`R!k&kAvmqS>Lz54a%y`m-Z?%t{g-hy%qPV042gYKbyfcF6{E?*8ZA|3aFv{` z^wQmxiw!BA04?&%Q!~S020PmSPJ!N#KH{g;ZeKi4cWX-j>bKe0um|_?s1Avy5sBUj z3GfB^H5}*!)H!tm*Yd!|PUm{ddv!(a?6+h4#(?qMOY&YDW>%r1K>Sr6ufeVZQ19*h zkq}-qzMrpmSD$`iGIog7w?eDaI?R-d|7|HtDxP2Z)DI&EW%Lr#<@hN05s!rMbeVyn#U zsvWTpi$g`}zyAO>?#8Yvb(jAkwp!G3kBYLyJ(2mp@NRsGSEcZ_?aeI}z-5hMx5pdQ zj1g7?q&HN6%uN*_+L`(nKHl!Pw6(hyAPJPW1+s^P()gAd7>MhJ;3NvEkyKqtaE zX%^<mCagii6VnH6}`%1~CEA9dr|roQ4ETV4s&6@G0i}qJmazke87ef_j9{dJt08 z177#f=Nqzy;B5zwg@Ud>abkcByz7pT@dHH;l|ksTbPB@AnvdF6@nt4gsj2cTP$E1j zmhZ6)qgMH!SBhCH3+PUPxCUZm8@7hEF<|RbzVcmSRCE7Rs?xihY{^7nE#kJUOBJB0 zz3aGVprqjsNhnyh!EQtznhI7>#53+4r!2E}v-Xs`mGxZ&y z<20>Hv*2guM^-RewL(CqreI<7;`Sj0=p)J!$MxvTp432$F|}-8iMJ;FHIYQTukuL^ zu^#vsKg2k^5*)yWH|ZD)Wn|uSsBhImhdtGUrr$5|y_SE3B^SVfH(fA}a189*A&pr& zB4njz)EtH4{HXel2zjY5dQE|X;n_NUxy18(<`s2i40@hUKbd#|I`P6C9eXJRlT|mo zsgL?*aE^@4#f-Q|YC`-AICB={u-EfKubyh`b~63ctP2?Ozixg{K&v0@Fw1Z;Ecp9Dqk*`#wLlxYvv#WWw<$stNNpz#EOyGa!8a1_e8CGDLpgYX}UZKulO1c_E+@L@2x5#O%<2uMO%gWD8I zZ)3Q>Yh4m*NC<+G^p@58|C^!2&u>H^7fry^8Gl0Ua(bx>L&vjPHp)opw@>8Xz;B;` MJ<8dRe%3$vf8dz#