diff --git a/README.md b/README.md index 31bc7ee2..2b2d8187 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Proxitok](https://github.com/pablouser1/ProxiTok) - Open source alternative frontend for TikTok made using PHP - [qBittorrent](https://github.com/qbittorrent/qBittorrent) - BitTorrent client - [Radarr](https://github.com/Radarr/Radarr) - Movie collection manager for Usenet and BitTorrent users +- [Rallly](https://github.com/lukevella/rallly) - Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier - [Readarr](https://github.com/Readarr/Readarr) - Book Manager and Automation (Sonarr for Ebooks) - [Resilio Sync](https://github.com/bt-sync) - Fast, reliable, and simple file sync and share solution - [RSS](https://github.com/ssddanbrown/rss) - A simple, opinionated, RSS feed aggregator diff --git a/apps/rallly/config.json b/apps/rallly/config.json new file mode 100644 index 00000000..164b2b88 --- /dev/null +++ b/apps/rallly/config.json @@ -0,0 +1,101 @@ +{ + "$schema": "../schema.json", + "name": "Rallly", + "available": true, + "port": 8208, + "exposable": true, + "id": "rallly", + "description": "Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.", + "tipi_version": 1, + "version": "3.4.2", + "categories": ["utilities"], + "short_desc": "Scheduling and collaboration tool", + "author": "lukevella", + "source": "https://github.com/lukevella/rallly", + "website": "https://rallly.co", + "form_fields": [ + { + "type": "random", + "min": 32, + "max": 32, + "label": "Database Password", + "env_variable": "RALLLY_DB_PASSWORD" + }, + { + "type": "random", + "min": 32, + "max": 32, + "label": "Secret key for User session", + "env_variable": "RALLLY_SECRET_KEY" + }, + { + "type": "email", + "label": "NoReply Email", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_NOREPLY_EMAIL" + }, + { + "type": "email", + "label": "Support Email", + "max": 50, + "min": 3, + "required": true, + "env_variable": "RALLLY_SUPPORT_EMAIL" + }, + { + "type": "text", + "label": "Allowed Emails", + "hint": "Comma separated list of email addresses that are allowed to register and login. You can use wildcard syntax to match a range of email addresses.", + "max": 250, + "min": 3, + "required": false, + "env_variable": "RALLLY_ALLOWED_EMAILS" + }, + { + "type": "text", + "label": "SMTP Host", + "max": 50, + "min": 3, + "required": true, + "env_variable": "RALLLY_SMTP_HOST" + }, + { + "type": "number", + "label": "SMTP Port", + "max": 6, + "min": 3, + "required": true, + "env_variable": "RALLLY_SMTP_PORT" + }, + { + "type": "boolean", + "label": "SMTP Secure", + "required": true, + "env_variable": "RALLLY_SMTP_SECURE" + }, + { + "type": "boolean", + "label": "SMTP Enable TLS", + "required": true, + "env_variable": "RALLLY_SMTP_TLS_ENABLED" + }, + { + "type": "text", + "label": "SMTP User", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_SMTP_USER" + }, + { + "type": "password", + "label": "SMTP Password", + "max": 50, + "min": 3, + "required": false, + "env_variable": "RALLLY_SMTP_PWD" + } + ] +} \ No newline at end of file diff --git a/apps/rallly/docker-compose.yml b/apps/rallly/docker-compose.yml new file mode 100644 index 00000000..e2d8ebbd --- /dev/null +++ b/apps/rallly/docker-compose.yml @@ -0,0 +1,66 @@ +services: + rallly_db: + image: postgres:14 + restart: always + volumes: + - ${APP_DATA_DIR}/data/db:/var/lib/postgresql/data + environment: + - POSTGRES_PASSWORD=${RALLLY_DB_PASSWORD} + - POSTGRES_DB=rallly + - POSTGRES_USER=tipi + networks: + - tipi_main_network + healthcheck: + test: ["CMD-SHELL", "pg_isready -U tipi"] + interval: 5s + timeout: 5s + retries: 5 + + rallly: + image: lukevella/rallly:3.4.2 + restart: always + depends_on: + rallly_db: + condition: service_healthy + ports: + - ${APP_PORT}:3000 + environment: + - DATABASE_URL=postgres://tipi:${RALLLY_DB_PASSWORD}@rallly_db:5432/rallly + - SECRET_PASSWORD=${RALLLY_SECRET_KEY} + - NEXT_PUBLIC_BASE_URL=${APP_PROTOCOL:-http}://${APP_DOMAIN} + - NOREPLY_EMAIL=${RALLLY_NOREPLY_EMAIL} + - SUPPORT_EMAIL=${RALLLY_SUPPORT_EMAIL} + - SMTP_HOST=${RALLLY_SMTP_HOST} + - SMTP_PORT=${RALLLY_SMTP_PORT} + - SMTP_SECURE=${RALLLY_SMTP_SECURE} + - SMTP_USER=${RALLLY_SMTP_USER} + - SMTP_PWD=${RALLLY_SMTP_PWD} + - SMTP_TLS_ENABLED=${RALLLY_SMTP_TLS_ENABLED} + - ALLOWED_EMAILS=${RALLLY_ALLOWED_EMAILS} + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.rallly-web-redirect.redirectscheme.scheme: https + traefik.http.services.rallly.loadbalancer.server.port: 3000 + # Web + traefik.http.routers.rallly-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rallly-insecure.entrypoints: web + traefik.http.routers.rallly-insecure.service: rallly + traefik.http.routers.rallly-insecure.middlewares: rallly-web-redirect + # Websecure + traefik.http.routers.rallly.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rallly.entrypoints: websecure + traefik.http.routers.rallly.service: rallly + traefik.http.routers.rallly.tls.certresolver: myresolver + # Local domain + traefik.http.routers.rallly-local-insecure.rule: Host(`rallly.${LOCAL_DOMAIN}`) + traefik.http.routers.rallly-local-insecure.entrypoints: web + traefik.http.routers.rallly-local-insecure.service: rallly + traefik.http.routers.rallly-local-insecure.middlewares: rallly-web-redirect + # Local domain secure + traefik.http.routers.rallly-local.rule: Host(`rallly.${LOCAL_DOMAIN}`) + traefik.http.routers.rallly-local.entrypoints: websecure + traefik.http.routers.rallly-local.service: rallly + traefik.http.routers.rallly-local.tls: true diff --git a/apps/rallly/metadata/description.md b/apps/rallly/metadata/description.md new file mode 100644 index 00000000..4a202b2c --- /dev/null +++ b/apps/rallly/metadata/description.md @@ -0,0 +1,28 @@ +
+ +Rallly + +
+
+ +Rallly + +## Description +Schedule group meetings with friends, colleagues and teams. Create meeting polls to find the best date and time to organize an event based on your participants' availability. Save time and avoid back-and-forth emails. + +Built with [Next.js](https://github.com/vercel/next.js/), [Prisma](https://github.com/prisma/prisma), [tRPC](https://github.com/trpc/trpc) & [TailwindCSS](https://github.com/tailwindlabs/tailwindcss) + +## Runtipi configuration variables + +| Label | Tipi ENV name | Type | Description | Required | +|-----------------|-------------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------| +| NoReply Email | RALLLY_NOREPLY_EMAIL | email | The email address that will be used to send emails. If not set, SUPPORT_EMAIL will be used instead. | NO | +| Support Email | RALLLY_SUPPORT_EMAIL | email | The email of whoever is managing this instance in case a user needs support. | YES | +| Allowed Emails | RALLLY_ALLOWED_EMAILS | text | Comma separated list of email addresses that are allowed to register and login. You can use wildcard syntax to match a range of email addresses. | NO | +| SMTP Host | RALLLY_SMTP_HOST | text | The host address of your SMTP server | YES | +| SMTP Port | RALLLY_SMTP_PORT | number | The port of your SMTP server | YES | +| SMTP Secure | RALLLY_SMTP_SECURE | boolean | Set to "true" if SSL is enabled for your SMTP connection | - | +| SMTP Enable TLS | RALLLY_SMTP_TLS_ENABLED | boolean | Enable TLS for your SMTP connection | - | +| SMTP User | RALLLY_SMTP_USER | text | The username (if auth is enabled on your SMTP server) | NO | +| SMTP Password | RALLLY_SMTP_PWD | password | The password (if auth is enabled on your SMTP server) | NO | + diff --git a/apps/rallly/metadata/logo.jpg b/apps/rallly/metadata/logo.jpg new file mode 100644 index 00000000..85db1e1f Binary files /dev/null and b/apps/rallly/metadata/logo.jpg differ