inital setup

This commit is contained in:
2023-06-12 01:39:46 +02:00
parent 223b613927
commit 6218f60590
4 changed files with 160 additions and 1 deletions

10
.env.sample Normal file
View File

@@ -0,0 +1,10 @@
WIKITAG=26
DBTAG=10.6
OFFICETAG=6.4
BASEDIR=
INTRANET=
DB_NAME=
DB_USER=
DB_PASS=

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
files/
.env

View File

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

81
docker-compose.yml Normal file
View File

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