From 6218f605909f8dae11f919529d3f1c543bedb87d Mon Sep 17 00:00:00 2001
From: anima
Date: Mon, 12 Jun 2023 01:39:46 +0200
Subject: [PATCH] inital setup
---
.env.sample | 10 ++++++
.gitignore | 2 ++
README.md | 68 +++++++++++++++++++++++++++++++++++++-
docker-compose.yml | 81 ++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 160 insertions(+), 1 deletion(-)
create mode 100644 .env.sample
create mode 100644 .gitignore
create mode 100644 docker-compose.yml
diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000..b536100
--- /dev/null
+++ b/.env.sample
@@ -0,0 +1,10 @@
+WIKITAG=26
+DBTAG=10.6
+OFFICETAG=6.4
+
+BASEDIR=
+INTRANET=
+
+DB_NAME=
+DB_USER=
+DB_PASS=
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cf073d9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+files/
+.env
\ No newline at end of file
diff --git a/README.md b/README.md
index 05bb78f..a06577b 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,68 @@
-# compose-nextcloud
+# Basic Nextcloud with MariaDB and Onlyoffice docker-compose config
+* can be run on single node setup or in swarm
+## howto
+### single node
+#### start container
+```bash
+docker compose up -d
+```
+
+#### stop container (and remove)
+```bash
+docker compose down
+```
+
+#### view logs
+```bash
+docker compose logs -f
+```
+
+#### reload config
+```bash
+docker compose restart
+```
+
+### swarm
+#### start aka deploy
+hint: drone fails to start until git auth source is created and set in vars
+```bash
+docker stack deploy -c docker-compose.yml cloud
+```
+
+#### stop container aka stack
+```bash
+docker stack rm cloud
+```
+
+#### view logs
+```bash
+docker service logs cloud_cloud -f
+docker service logs cloud_db -f
+docker service logs cloud_office -f
+```
+
+#### reload config (no downtime if replica 2 or more)
+```bash
+docker service update cloud_cloud
+docker service update cloud_db
+docker service update cloud_office
+```
+
+## example caddy config
+```
+cloud.example.com {
+ reverse_proxy cloud:80
+ encode gzip
+
+ # Service discovery via well-known
+ redir /.well-known/carddav /remote.php/carddav 301
+ redir /.well-known/caldav /remote.php/caldav 301
+}
+office.example.com {
+ reverse_proxy office:80
+}
+```
+
+## config onlyoffice in nextcloud
+comming soon
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..37b0c18
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,81 @@
+# https://docs.docker.com/compose/compose-file/compose-file-v3/
+---
+version: "3.9"
+services:
+ cloud:
+ image: nextcloud:${CLOUDTAG:-latest}
+ container_name: cloud
+ restart: unless-stopped
+ depends_on:
+ - db
+ ports:
+ - 80:80
+ deploy:
+ replicas: 1
+ placement:
+ max_replicas_per_node: 1
+ update_config:
+ parallelism: 1
+ delay: 10s
+ volumes:
+ - ${BASEDIR:-.}/files/config/:/var/www/html/config/
+ - ${BASEDIR:-.}/files/apps/:/var/www/html/custom_apps/
+ - ${BASEDIR:-.}/files/data/:/var/www/html/data/
+ - ${BASEDIR:-.}/files/themes/:/var/www/html/themes/
+ - ${BASEDIR:-.}/files/skeleton/:/var/www/html/core/skeleton/
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - MYSQL_RANDOM_ROOT_PASSWORD=yes
+ - MYSQL_DATABASE=${DB_NAME:-nextcloud}
+ - MYSQL_USER=${DB_USER:-nextcloud}
+ - MYSQL_PASSWORD=${DB_PASS:-nextcloudpasswd}
+ networks:
+ - backend
+ - cloudnet
+
+ db:
+ image: mariadb:${DBTAG:-latest}
+ container_name: wikidb
+ restart: unless-stopped
+ deploy:
+ replicas: 1
+ placement:
+ max_replicas_per_node: 1
+ update_config:
+ parallelism: 1
+ delay: 10s
+ volumes:
+ - ${BASEDIR:-.}/files/clouddb/:/var/lib/mysql/
+ environment:
+ - MARIADB_RANDOM_ROOT_PASSWORD=yes
+ - MARIADB_DATABASE=${DB_NAME:-nextcloud}
+ - MARIADB_USER=${DB_USER:-nextcloud}
+ - MARIADB_PASSWORD=${DB_PASS:-nextcloudpasswd}
+ networks:
+ - cloudnet
+
+ office:
+ image: onlyoffice/documentserver:${OFFICETAG:-latest}
+ container_name: office
+ restart: unless-stopped
+ ports:
+ - 80:80
+ deploy:
+ replicas: 1
+ placement:
+ max_replicas_per_node: 1
+ update_config:
+ parallelism: 1
+ delay: 10s
+ volumes:
+ - ${BASEDIR:-.}/files/officedata:/var/www/onlyoffice/Data
+ - ${BASEDIR:-.}/files/officedb:/var/lib/postgresql
+ # - ${BASEDIR:-.}/files/officelog:/var/log/onlyoffice
+ networks:
+ - backend
+ - cloudnet
+
+networks:
+ backend:
+ name: ${INTRANET:-backend}
+ wikinet:
\ No newline at end of file