Introducción
Para desplegar este contenedor primero debes tener un servidor con Docker instalado. En mi caso yo tengo un OpenMediaVault sobre un Debian, pero es irrelevante. Lo que si es relevante es tener un Ngnix Proxy Manager funcionando para poder acceder a los datos desde Internet.
Crear contenedor de NextCloud
El Docker compose es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
services:
db:
image: mariadb:10.11
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MARIADB_RANDOM_ROOT_PASSWORD=yes
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
restart: always
ports:
- 8080:80
volumes:
- ${STORAGE_LOCATION}:/var/www/html/data
- nextcloud:/var/www/html
environment:
- VIRTUAL_HOST=${DOMAIN_NAME}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- REDIS_HOST=redis
depends_on:
- db
- redis
networks:
- default
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html:z
entrypoint: /cron.sh
depends_on:
- db
- redis
volumes:
nextcloud:
db:
networks:
proxy-tier:
Las variables de entorno son las siguientes (deberás modificarlas según tu caso):
1
2
3
MYSQL_PASSWORD=<pon aquí tu contraseña>
STORAGE_LOCATION=/srv/dev-disk-by-uuid-7ba5953f-3094-44b9-9875-98f1dac73873/elements1/nextcloud
DOMAIN_NAME=<pon aquí tu dominio aunque creo que no vale para nada>
Con esto ya deberías poder ir al navegador y acceder a través de la IP y el puerto <IP>:8080
, por ejemplo 192.168.1.140:8080
.
El usuario que se utiliza es el www-data
, por lo tanto todo lo que haya en /srv/dev-disk-by-uuid-7ba5953f-3094-44b9-9875-98f1dac73873/elements1/nextcloud/
deberá ser propiedad de dicho usuario.
En mi caso he copiado varios datos a /srv/dev-disk-by-uuid-7ba5953f-3094-44b9-9875-98f1dac73873/elements1/nextcloud/mruizg/files
y para que se vean en la web he tenido que ejecutar el siguiente comando:
1
$docker exec -u www-data <id del contenedor> php occ files:scan --all
Configurar Nginx Proxy Manager
Crear un Proxy Host nuevo.
Habilitar nuevo dominio
En la máquina host debes ir a /var/lib/docker/volumes/nextcloud_nextcloud/_data/config/config.php
y añadir la siguiente línea dentro de la array de trusted_domains
:
1
1 => '<dominio>'
En mi caso queda tal que así:
1
2
3
4
5
'trusted_domains' =>
array (
0 => 'nipogi:8080',
1 => 'nextcloud.chirihop.duckdns.org'
),
Posteriormente se reinicia el contenedor con docker restart <id del contenedor>
. El id del contenedor se saca con docker ps
.