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 @@ +