From 1c8b6553c7e3b33b82a3b5940c4c46860b310883 Mon Sep 17 00:00:00 2001 From: laiah Date: Sat, 4 Feb 2023 15:16:59 +0100 Subject: [PATCH 1/3] Add Monica --- apps/monica/config.json | 29 ++++++++++++++ apps/monica/docker-compose.yml | 39 +++++++++++++++++++ apps/monica/metadata/description.md | 57 ++++++++++++++++++++++++++++ apps/monica/metadata/logo.jpg | Bin 0 -> 29889 bytes 4 files changed, 125 insertions(+) create mode 100644 apps/monica/config.json create mode 100644 apps/monica/docker-compose.yml create mode 100644 apps/monica/metadata/description.md create mode 100644 apps/monica/metadata/logo.jpg diff --git a/apps/monica/config.json b/apps/monica/config.json new file mode 100644 index 00000000..75a54d23 --- /dev/null +++ b/apps/monica/config.json @@ -0,0 +1,29 @@ +{ + "name": "Monica", + "available": true, + "exposable": true, + "port": 3291, + "id": "monica", + "tipi_version": 1, + "version": "4.0.0", + "categories": [ + "data", + "social" + ], + "description": "Monica is an open-source web application to organize and record your interactions with your loved ones. We call it a PRM, or Personal Relationship Management. Think of it as a CRM (a popular tool used by sales teams in the corporate world) for your friends or family.", + "short_desc": "A Personal Relationship Management tool to help you document your social life.", + "author": "monicahq", + "source": "https://github.com/monicahq/monica", + "uid": 1000, + "gid": 1000, + "form_fields": [ + { + "type": "random", + "label": "Database password", + "required": false, + "min": 30, + "max": 30, + "env_variable": "MONICA_DB_PASS" + } + ] +} diff --git a/apps/monica/docker-compose.yml b/apps/monica/docker-compose.yml new file mode 100644 index 00000000..85f03766 --- /dev/null +++ b/apps/monica/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.7" +services: + monica: + image: monica + depends_on: + - monica-db + ports: + - ${APP_PORT}:80 + environment: + - APP_KEY=f38f25083b2e64e2a673ade27d682359 + - DB_HOST=monica-db + - DB_USERNAME=usermonica + - DB_PASSWORD=${MONICA_DB_PASS} + volumes: + - ${APP_DATA_DIR}/data:/var/www/html/storage + restart: unless-stopped + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.monica.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.monica.entrypoints: websecure + traefik.http.routers.monica.service: monica + traefik.http.routers.monica.tls.certresolver: myresolver + traefik.http.services.monica.loadbalancer.server.port: 80 + + monica-db: + image: mysql:5.7 + environment: + - TZ=${TZ} + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=monica + - MYSQL_USER=usermonica + - MYSQL_PASSWORD=${MONICA_DB_PASS} + volumes: + - ${APP_DATA_DIR}/mysql:/var/lib/mysql + restart: unless-stopped + networks: + - tipi_main_network diff --git a/apps/monica/metadata/description.md b/apps/monica/metadata/description.md new file mode 100644 index 00000000..41ddde7b --- /dev/null +++ b/apps/monica/metadata/description.md @@ -0,0 +1,57 @@ +# Personal Relationship Manager + +**Monica** is an open-source web application to organize and record your interactions with your loved ones. We call it a PRM, or Personal Relationship Management. Think of it as a [CRM](https://en.wikipedia.org/wiki/Customer_relationship_management) (a popular tool used by sales teams in the corporate world) for your friends or family. This is what it currently looks like: + +

+ +![Screenshot of the application](https://github.com/monicahq/monica/blob/main/docs/images/main-app.png?raw=true![img.png](img.png)) + +

+ +### Purpose + +Monica allows people to keep track of everything that’s important about their friends and family. Like the activities with them. When you last called someone and what you talked about. It will help you remember the name and the age of their kids. It can also remind you to call someone you haven’t talked to in a while. + +### Features + +* Add and manage contacts +* Define relationships between contacts +* Reminders +* Automatic reminders for birthdays +* Stay in touch with a contact by sending reminders at a given interval +* Management of debts +* Ability to add notes to a contact +* Ability to record how you met someone +* Management of activities with a contact +* Management of tasks +* Management of gifts given and received and ideas for gifts +* Management of addresses and all the different ways to contact someone +* Management of contact field types +* Management of a contact’s pets +* Basic journal +* Ability to record how your day went +* Upload documents and photos +* Export and import of data +* Export contacts as vCards +* Ability to define custom genders +* Ability to define custom activity types +* Ability to favorite contacts +* Track conversations on social media or SMS +* Multiple users +* Tags to organize contacts +* Ability to define what section should appear on the contact sheet +* Multiple currencies +* Multiple languages +* An API that covers most of the data + +### Who is it for? + +This project is **for people who have difficulty remembering details about other people’s lives** – especially those they care about. Yes, you can still use Facebook to achieve this, but you will only be able to see what people do and post, and not add your own notes about them. + +We’ve also received lots of positive feedback from users who suffer from Asperger syndrome, Alzheimer’s disease, or simply introverts who use this application on a daily basis. + +### What Monica isn’t + +* Monica is not a social network and **it never will be**. It’s not meant to be social. It’s designed to be the opposite: it’s for your eyes only. +* Monica is not a smart assistant. It won’t guess what you want to do. It’s actually pretty dumb: it will only send you emails for the things you asked to be reminded of. +* Monica is not a tool that will scan your data and do nasty things with it. It’s your data, your server, do whatever you want with it. You’re in control of your data. diff --git a/apps/monica/metadata/logo.jpg b/apps/monica/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96e7acdd174b62fcf1b4dbd5da664690f4764b89 GIT binary patch literal 29889 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 Z-y+hacmK2K;on8?!L<8N*Czff{~wa5vOxd< literal 0 HcmV?d00001 From 1a57765b9022c7b8e5bac4c0501156c1360b3fcf Mon Sep 17 00:00:00 2001 From: mcmeel Date: Mon, 30 Jan 2023 21:22:47 -0800 Subject: [PATCH 2/3] Update Plex docker tag to 1.30.2 (#180) --- apps/plex/config.json | 4 ++-- apps/plex/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/plex/config.json b/apps/plex/config.json index b613f463..7396b724 100644 --- a/apps/plex/config.json +++ b/apps/plex/config.json @@ -5,8 +5,8 @@ "exposable": true, "port": 32400, "id": "plex", - "tipi_version": 8, - "version": "1.30.1", + "tipi_version": 9, + "version": "1.30.2", "url_suffix": "/web", "categories": [ "media" diff --git a/apps/plex/docker-compose.yml b/apps/plex/docker-compose.yml index cda213a7..ac8ead1f 100644 --- a/apps/plex/docker-compose.yml +++ b/apps/plex/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: plex: - image: lscr.io/linuxserver/plex:1.30.1 + image: lscr.io/linuxserver/plex:1.30.2 container_name: plex network_mode: host environment: From 30da923cbb38f63cdbe95d4592323793b34dcda9 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Sun, 5 Feb 2023 11:10:49 +0100 Subject: [PATCH 3/3] refactor: adapt config to support arm64 and make app key generated --- apps/monica/config.json | 15 +++++++++++++-- apps/monica/docker-compose.yml | 16 +++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/apps/monica/config.json b/apps/monica/config.json index 75a54d23..96136269 100644 --- a/apps/monica/config.json +++ b/apps/monica/config.json @@ -1,4 +1,5 @@ { + "$schema": "../schema.json", "name": "Monica", "available": true, "exposable": true, @@ -10,12 +11,14 @@ "data", "social" ], + "supported_architectures": [ + "amd64", + "arm64" + ] "description": "Monica is an open-source web application to organize and record your interactions with your loved ones. We call it a PRM, or Personal Relationship Management. Think of it as a CRM (a popular tool used by sales teams in the corporate world) for your friends or family.", "short_desc": "A Personal Relationship Management tool to help you document your social life.", "author": "monicahq", "source": "https://github.com/monicahq/monica", - "uid": 1000, - "gid": 1000, "form_fields": [ { "type": "random", @@ -24,6 +27,14 @@ "min": 30, "max": 30, "env_variable": "MONICA_DB_PASS" + }, + { + "type": "random", + "label": "Application key", + "required": false, + "min": 32, + "max": 32, + "env_variable": "MONICA_APP_KEY" } ] } diff --git a/apps/monica/docker-compose.yml b/apps/monica/docker-compose.yml index 85f03766..aa7e1f34 100644 --- a/apps/monica/docker-compose.yml +++ b/apps/monica/docker-compose.yml @@ -1,13 +1,14 @@ version: "3.7" services: monica: - image: monica + image: monica:4.0.0 + container_name: monica depends_on: - monica-db ports: - ${APP_PORT}:80 environment: - - APP_KEY=f38f25083b2e64e2a673ade27d682359 + - APP_KEY=${MONICA_APP_KEY} - DB_HOST=monica-db - DB_USERNAME=usermonica - DB_PASSWORD=${MONICA_DB_PASS} @@ -25,13 +26,14 @@ services: traefik.http.services.monica.loadbalancer.server.port: 80 monica-db: - image: mysql:5.7 + image: mariadb:10.6.11 + container_name: monica-db environment: - TZ=${TZ} - - MYSQL_RANDOM_ROOT_PASSWORD=true - - MYSQL_DATABASE=monica - - MYSQL_USER=usermonica - - MYSQL_PASSWORD=${MONICA_DB_PASS} + - MARIADB_RANDOM_ROOT_PASSWORD=true + - MARIADB_DATABASE=monica + - MARIADB_USER=usermonica + - MARIADB_PASSWORD=${MONICA_DB_PASS} volumes: - ${APP_DATA_DIR}/mysql:/var/lib/mysql restart: unless-stopped