From 58b5a02b3dba89a201c6431d3bc7054408cb7bf3 Mon Sep 17 00:00:00 2001 From: DrMxrcy Date: Wed, 1 Mar 2023 08:58:29 -0500 Subject: [PATCH] Add OwnCloud --- README.md | 1 + apps/owncloud/config.json | 40 ++++++++++++++ apps/owncloud/docker-compose.yml | 76 ++++++++++++++++++++++++++ apps/owncloud/metadata/description.md | 48 ++++++++++++++++ apps/owncloud/metadata/logo.jpg | Bin 0 -> 26983 bytes 5 files changed, 165 insertions(+) create mode 100644 apps/owncloud/config.json create mode 100644 apps/owncloud/docker-compose.yml create mode 100644 apps/owncloud/metadata/description.md create mode 100644 apps/owncloud/metadata/logo.jpg diff --git a/README.md b/README.md index 91f89f1d..6a61ad76 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ This is the official repository for the Tipi App Store. It contains all the apps - [Nextcloud](https://github.com/nextcloud/server) - A safe home for all your data - [Nitter](https://github.com/zedeus/nitter) - Alternative Twitter front-end - [Node-RED](https://github.com/node-red/node-red) - Low-code programming for event-driven applications +- [Owncloud](https://github.com/owncloud/core) - A personal cloud which runs on your own server. - [Overseerr](https://github.com/sct/overseerr) - Request management and media discovery tool for the Plex ecosystem - [Photoprism](https://github.com/photoprism/photoprism) - AI-Powered Photos App for the Decentralized Web. We are on a mission to protect your freedom and privacy. - [Pihole](https://github.com/pi-hole/pi-hole) - A black hole for Internet advertisements diff --git a/apps/owncloud/config.json b/apps/owncloud/config.json new file mode 100644 index 00000000..dc3612b9 --- /dev/null +++ b/apps/owncloud/config.json @@ -0,0 +1,40 @@ +{ + "$schema": "../schema.json", + "name": "Owncloud", + "port": 8151, + "available": true, + "exposable": true, + "id": "owncloud", + "tipi_version": 1, + "version": "10.11.0", + "categories": ["data"], + "description": "ownCloud gives you freedom and control over your own data. A personal cloud which runs on your own server. ", + "short_desc": "A personal cloud which runs on your own server. ", + "author": "https://github.com/owncloud", + "source": "https://github.com/owncloud/core", + "website": "https://owncloud.com/", + "form_fields": [ + { + "type": "random", + "label": "MYSQL_PASSWORD", + "min": 32, + "env_variable": "MYSQL_PASSWORD" + }, + { + "type": "text", + "label": "Owncloud Admin Username", + "max": 50, + "min": 3, + "required": true, + "env_variable": "ADMIN_USERNAME" + }, + { + "type": "password", + "label": "Owncloud Admin Password", + "max": 50, + "min": 3, + "required": true, + "env_variable": "OWNCLOUD_ADMIN_PASSWORD" + } + ] +} diff --git a/apps/owncloud/docker-compose.yml b/apps/owncloud/docker-compose.yml new file mode 100644 index 00000000..2212da07 --- /dev/null +++ b/apps/owncloud/docker-compose.yml @@ -0,0 +1,76 @@ +version: "3" + +services: + owncloud: + image: owncloud/server:10.11.0 + container_name: owncloud + restart: unless-stopped + ports: + - ${APP_PORT}:8080 + depends_on: + - mariadb + - redis + environment: + - OWNCLOUD_DOMAIN=${APP_DOMAIN} + - OWNCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN} + - OWNCLOUD_DB_TYPE=mysql + - OWNCLOUD_DB_NAME=owncloud + - OWNCLOUD_DB_USERNAME=tipi + - OWNCLOUD_DB_PASSWORD=${MYSQL_PASSWORD} + - OWNCLOUD_DB_HOST=owncloud_mariadb + - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME} + - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD} + - OWNCLOUD_MYSQL_UTF8MB4=true + - OWNCLOUD_REDIS_ENABLED=true + - OWNCLOUD_REDIS_HOST=owncloud_redis + healthcheck: + test: ["CMD", "/usr/bin/healthcheck"] + interval: 30s + timeout: 10s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/owncloud:/mnt/data + networks: + - tipi_main_network + labels: + traefik.enable: ${APP_EXPOSED} + traefik.http.routers.owncloud.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.owncloud.entrypoints: websecure + traefik.http.routers.owncloud.service: owncloud + traefik.http.routers.owncloud.tls.certresolver: myresolver + traefik.http.services.owncloud.loadbalancer.server.port: 8080 + + owncloud_mariadb: + image: mariadb:10.6 # minimum required ownCloud version is 10.9 + container_name: owncloud_mariadb + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_USER=tipi + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=owncloud + command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"] + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=${MYSQL_PASSWORD}"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/mysql:/var/lib/mysql + networks: + - tipi_main_network + + owncloud_redis: + image: redis:6 + container_name: owncloud_redis + restart: unless-stopped + command: ["--databases", "1"] + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + volumes: + - ${APP_DATA_DIR}/data/redis:/data + networks: + - tipi_main_network diff --git a/apps/owncloud/metadata/description.md b/apps/owncloud/metadata/description.md new file mode 100644 index 00000000..e1464c1c --- /dev/null +++ b/apps/owncloud/metadata/description.md @@ -0,0 +1,48 @@ +# ownCloud Core + +[![Build Status](https://camo.githubusercontent.com/97e0aae46cdd7a08fd19eede0343cbe079b0aa974a5385a79e9223f956bfac69/68747470733a2f2f64726f6e652e6f776e636c6f75642e636f6d2f6170692f6261646765732f6f776e636c6f75642f636f72652f7374617475732e7376673f6272616e63683d6d6173746572)](https://drone.owncloud.com/owncloud/core) [![Quality Gate Status](https://camo.githubusercontent.com/23ee60eecab2581d251cf0541ab3cb41a82fd06a574b216898156ea7be95491d/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6f776e636c6f75645f636f7265266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/dashboard?id=owncloud_core) [![Security Rating](https://camo.githubusercontent.com/938a4d116800c9c690e25c45a7543d8ebdffd3ce2c7058b6e5013858b075ff09/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6f776e636c6f75645f636f7265266d65747269633d73656375726974795f726174696e67)](https://sonarcloud.io/dashboard?id=owncloud_core) [![Coverage](https://camo.githubusercontent.com/220dcace7a545cef54f6a1c29df832d38ad41e6d5affa0a48dbf2eb7c29e1d9a/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6f776e636c6f75645f636f7265266d65747269633d636f766572616765)](https://sonarcloud.io/dashboard?id=owncloud_core) [![Design](https://camo.githubusercontent.com/4bc6b8df75c52b6dc7c83a1cf8ec4645f697e17e4a74e94dec2a1c1d7bb29311/68747470733a2f2f636f6e747269627574652e64657369676e2f6170692f736869656c642f6f776e636c6f75642f636f7265)](https://contribute.design/owncloud/core) + +**[ownCloud](http://ownCloud.com) gives you freedom and control over your own data. A personal cloud which runs on your own server.** + +[![](https://github.com/owncloud/screenshots/raw/master/files/sidebar_1.png)](https://github.com/owncloud/screenshots/blob/master/files/sidebar_1.png) + +## [](https://github.com/owncloud/core/blob/master/README.md#why-is-this-so-awesome)Why Is This so Awesome? + +- 📁 **Access your Data** You can store your files, contacts, calendars and more on a server of your choosing. +- 📦 **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices. +- 🔄 **Share your Data** You share your data with others, and give them access to your latest photo galleries, your calendar or anything else you want them to see. +- 🚀 **Expandable with dozens of Apps** ...like Calendar, Contacts, Mail or News. +- ☁️ **All Benefits of the Cloud** ...on your own Server. +- 🔒 **Encryption** You can encrypt data in transit with secure https connections. You can enable the encryption app to encrypt data on storage for improved security and privacy. +- ... + +## [](https://github.com/owncloud/core/blob/master/README.md#installation-instructions)Installation Instructions + +For installing ownCloud, see the official [ownCloud 10](https://doc.owncloud.com/server/latest/admin_manual/installation/) installation manual. + +## [](https://github.com/owncloud/core/blob/master/README.md#development-build-prerequisites)Development Build Prerequisites + +Note that when doing a local development build, you need to have **Composer v2** installed. If your OS provides a lower version than v2, you can install Composer v2 manually. As an example, which may be valid for other releases/distros too, see [How to install Composer on Ubuntu 22.04 | 20.04 LTS](https://www.how2shout.com/linux/how-to-install-composer-on-ubuntu-22-04-20-04-lts/). + +You also must have installed `yarn` and `node` (v14 or higher). + +## [](https://github.com/owncloud/core/blob/master/README.md#contribution-guidelines)Contribution Guidelines + +[https://owncloud.com/contribute/](https://owncloud.com/contribute/) + +## [](https://github.com/owncloud/core/blob/master/README.md#support)Support + +Learn about the different ways you can get support for ownCloud: [https://owncloud.com/support/](https://owncloud.com/support/) + +## [](https://github.com/owncloud/core/blob/master/README.md#get-in-touch)Get in Touch + +- 📋 [Forum](https://central.owncloud.org) +- #️⃣ [IRC channel](https://web.libera.chat/?channels=#owncloud) +- 👥 [Facebook](https://facebook.com/ownclouders) +- 🐣 [Twitter](https://twitter.com/ownCloud) + +## [](https://github.com/owncloud/core/blob/master/README.md#important-notice-on-translations)Important Notice on Translations + +Please submit translations via Transifex: [https://explore.transifex.com/owncloud-org/](https://explore.transifex.com/owncloud-org/) + +See the detailed information about [translations](https://doc.owncloud.com/server/latest/developer_manual/core/translation.html) here. \ No newline at end of file diff --git a/apps/owncloud/metadata/logo.jpg b/apps/owncloud/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89abc6f6f7829945da045476c0198cb06798e2da GIT binary patch literal 26983 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