Servidor Nextcloud + Collabora Online: diferència entre les revisions

De FFAWiki
(Es crea la pàgina amb «= Instal·lació de Nextcloud + Collabora amb Docker Compose = == 1. Preparar el projecte == <pre> mkdir ~/nextcloud-docker cd ~/nextcloud-docker </pre> == 2. Crear fitxer docker-compose.yml == <pre> version: "3.8" services: traefik: image: traefik:v3.0 container_name: traefik restart: unless-stopped command: - "--providers.docker=true" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--cer...».)
 
Cap resum de modificació
 
(Hi ha 6 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
= Passos Previs =
== Crear una base de dades i usuari MySQL per Nextcloud (en cas de no utilitzar un contenirdor com a base de dades) ==
== 1. Accedir a MySQL com a root ==
<pre>
sudo mysql
</pre>
== 2. Crear la base de dades ==
<pre>
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
</pre>
* Substitueix `nextcloud` pel nom que vulguis per la base de dades.
== 3. Crear un usuari amb contrasenya ==
<pre>
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'supersecret';
</pre>
* Substitueix `nextclouduser` i `supersecret` per l’usuari i contrasenya que vulguis.
== 4. Concedir tots els permisos sobre aquesta base de dades ==
<pre>
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
</pre>
== 5. Aplicar els canvis ==
<pre>
FLUSH PRIVILEGES;
</pre>
== 6. Comprovar ==
<pre>
SHOW DATABASES;
SELECT User, Host FROM mysql.user;
</pre>
== Notes ==
* Aquest usuari tindrà permisos només sobre la base de dades `nextcloud`.
* No necessita permisos globals de root, augmentant la seguretat.
= Instal·lació de Nextcloud + Collabora amb Docker Compose =
= Instal·lació de Nextcloud + Collabora amb Docker Compose =


Línia 94: Línia 135:
# Instal·lar l'app Collabora Online des del Nextcloud App Store.   
# Instal·lar l'app Collabora Online des del Nextcloud App Store.   
# Configurar l’URL de Collabora: https://office.tudomini.com
# Configurar l’URL de Collabora: https://office.tudomini.com
= Nextcloud + Collabora sense domini =
== 1. Accés mitjançant IP ==
* Pots accedir a Nextcloud i Collabora utilitzant l'adreça IP pública o privada del servidor.
* Exemple: http://192.168.1.100:8080
* No podràs obtenir certificats SSL de Let's Encrypt sense un domini.
== 2. Fitxer docker-compose.yml sense domini ==
<pre>
version: "3.8"
services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: supersecretroot
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: supersecret
    volumes:
      - db_data:/var/lib/mysql
  nextcloud:
    image: nextcloud:27
    container_name: nextcloud-app
    restart: unless-stopped
    environment:
      MYSQL_PASSWORD: supersecret
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_HOST: db
    volumes:
      - nextcloud_data:/var/www/html
    ports:
      - "8080:80"
    depends_on:
      - db
  collabora:
    image: collabora/code
    container_name: collabora
    restart: unless-stopped
    environment:
      - domain=192\\.168\\.1\\.100
      - username=admin
      - password=supersecret
      - extra_params=--o:ssl.enable=false
    ports:
      - "9980:9980"
volumes:
  db_data:
  nextcloud_data:
</pre>

Revisió de 10:05, 14 ago 2025

Passos Previs

Crear una base de dades i usuari MySQL per Nextcloud (en cas de no utilitzar un contenirdor com a base de dades)

1. Accedir a MySQL com a root

sudo mysql

2. Crear la base de dades

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • Substitueix `nextcloud` pel nom que vulguis per la base de dades.

3. Crear un usuari amb contrasenya

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'supersecret';
  • Substitueix `nextclouduser` i `supersecret` per l’usuari i contrasenya que vulguis.

4. Concedir tots els permisos sobre aquesta base de dades

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';

5. Aplicar els canvis

FLUSH PRIVILEGES;

6. Comprovar

SHOW DATABASES;
SELECT User, Host FROM mysql.user;

Notes

  • Aquest usuari tindrà permisos només sobre la base de dades `nextcloud`.
  • No necessita permisos globals de root, augmentant la seguretat.


Instal·lació de Nextcloud + Collabora amb Docker Compose

1. Preparar el projecte

mkdir ~/nextcloud-docker
cd ~/nextcloud-docker

2. Crear fitxer docker-compose.yml

version: "3.8"

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    restart: unless-stopped
    command:
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=tuemail@domini.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "traefik_letsencrypt:/letsencrypt"

  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: supersecretroot
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: supersecret
    volumes:
      - db_data:/var/lib/mysql

  nextcloud:
    image: nextcloud:27
    container_name: nextcloud-app
    restart: unless-stopped
    environment:
      MYSQL_PASSWORD: supersecret
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_HOST: db
    volumes:
      - nextcloud_data:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.nextcloud.rule=Host(`cloud.tudomini.com`)"
      - "traefik.http.routers.nextcloud.entrypoints=websecure"
      - "traefik.http.routers.nextcloud.tls.certresolver=myresolver"
      - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
    depends_on:
      - db

  collabora:
    image: collabora/code
    container_name: collabora
    restart: unless-stopped
    environment:
      - domain=cloud\\.tudomini\\.com
      - username=admin
      - password=supersecret
      - extra_params=--o:ssl.enable=false
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.collabora.rule=Host(`office.tudomini.com`)"
      - "traefik.http.routers.collabora.entrypoints=websecure"
      - "traefik.http.routers.collabora.tls.certresolver=myresolver"
      - "traefik.http.services.collabora.loadbalancer.server.port=9980"

volumes:
  db_data:
  nextcloud_data:
  traefik_letsencrypt:

3. Llençar els serveis

docker compose up -d

4. Configurar Nextcloud per Collabora

  1. Accedir a Nextcloud: https://cloud.tudomini.com
  2. Instal·lar l'app Collabora Online des del Nextcloud App Store.
  3. Configurar l’URL de Collabora: https://office.tudomini.com

Nextcloud + Collabora sense domini

1. Accés mitjançant IP

  • Pots accedir a Nextcloud i Collabora utilitzant l'adreça IP pública o privada del servidor.
  • Exemple: http://192.168.1.100:8080
  • No podràs obtenir certificats SSL de Let's Encrypt sense un domini.

2. Fitxer docker-compose.yml sense domini

version: "3.8"

services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: supersecretroot
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: supersecret
    volumes:
      - db_data:/var/lib/mysql

  nextcloud:
    image: nextcloud:27
    container_name: nextcloud-app
    restart: unless-stopped
    environment:
      MYSQL_PASSWORD: supersecret
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_HOST: db
    volumes:
      - nextcloud_data:/var/www/html
    ports:
      - "8080:80"
    depends_on:
      - db

  collabora:
    image: collabora/code
    container_name: collabora
    restart: unless-stopped
    environment:
      - domain=192\\.168\\.1\\.100
      - username=admin
      - password=supersecret
      - extra_params=--o:ssl.enable=false
    ports:
      - "9980:9980"

volumes:
  db_data:
  nextcloud_data: