Assignatura: Implantació d'Aplicacions Web · ASIX 2n curs
Resultat d'Aprenentatge: RA4 — Gestiona aplicacions d'ofimàtica web
Sessió: Dia 1 (introducció + pràctica 1)
L'ofimàtica web engloba les aplicacions que permeten crear, editar, emmagatzemar i compartir documents (textos, fulls de càlcul, presentacions, fitxers en general) directament des d'un navegador web, sense instal·lar programari al client.
Des del punt de vista d'un administrador de sistemes, l'element clau no és l'usuari final sinó on s'executa i qui controla el servei:
| Model | Exemples | Control de dades | Cost |
|---|---|---|---|
| SaaS públic | Google Workspace, Microsoft 365 | Proveïdor extern | Subscripció |
| Self-hosted | Nextcloud, OnlyOffice, FileBrowser | L'organització | Infraestructura pròpia |
| Híbrid | Nextcloud + Microsoft 365 | Mixt | Mixt |
En entorns corporatius i educatius, el model self-hosted és molt rellevant per raons de:
Suite ofimàtica col·laborativa completa
Editor de documents en línia
.docx/.xlsx/.pptx. S'integra amb Nextcloud, Confluence, etc. via API.Gestió de fitxers web
Microserveis de conversió
Prerequisit: ja heu treballat amb Docker a la VM. Aquí ampliem cap a composicions de múltiples contenidors.
Imatge (read-only)
└── Contenidor (instància en execució, read-write layer)
└── Volum (dades persistents, fora del contenidor)
Quan esborreu un contenidor, les dades del seu sistema de fitxers desapareixen. Els volums garanteixen persistència.
docker compose: per què és necessariEn una instal·lació típica de Nextcloud calen com a mínim dos serveis:
Gestionar-los manualment amb docker run és possible però fràgil: cal crear xarxes manualment, passar variables d'entorn correctament, garantir l'ordre d'arrencada...
docker compose resol això amb un fitxer compose.yaml:
# Estructura conceptual d'un compose.yaml
services:
servei_a: # nom del servei (nom DNS intern)
image: ...
environment: ...
volumes: ...
networks: ...
servei_b:
image: ...
depends_on:
- servei_a # espera que servei_a estigui healthy
networks:
xarxa_interna: # xarxa privada entre contenidors
volumes:
dades_a: # volum named persistent
Concepte clau: en un compose.yaml, els serveis de la mateixa xarxa es comuniquen entre ells pel nom del servei (DNS intern de Docker). Cap port necessita estar exposat a l'amfitrió per a la comunicació interna.
[Navegador de l'alumne]
|
port 8080 (amfitrió)
|
[contenidor: nextcloud] ← xarxa interna → [contenidor: db]
(port 3306, NO exposat)
En aquest esquema:
nextcloud pot accedir a db via db:3306 (nom de servei + port intern)nextcloud via http://localhost:8080Això és una pràctica de seguretat fonamental: mai exposar la base de dades directament a la xarxa exterior.
depends_on i healthcheckservices:
app:
depends_on:
db:
condition: service_healthy # espera fins que db és healthy
db:
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect"]
interval: 10s
retries: 5
Sense healthcheck, depends_on només garanteix que el contenidor ha arrencat, no que el servei dins estigui llest (MariaDB pot trigar uns segons a acceptar connexions).
┌─────────────────────────────────────────────┐
│ Nextcloud (contenidor) │
│ │
│ Apache + mod_php + PHP 8.x │
│ Codi Nextcloud (/var/www/html) │
│ Fitxers d'usuari (/var/www/html/data) │
└───────────────────┬─────────────────────────┘
│ PDO / MySQL driver
┌───────────────────▼─────────────────────────┐
│ MariaDB (contenidor) │
│ │
│ BD: nextcloud (metadades, usuaris, apps) │
│ Volum: /var/lib/mysql │
└─────────────────────────────────────────────┘
La base de dades guarda:
Els fitxers reals es guarden al sistema de fitxers del contenidor (o volum muntat).
Nextcloud té un sistema de gestió d'usuaris complet:
Des de la interfície web (panell d'administració):
Des de la línia de comandes amb occ:
occ (ownCloud Console) és l'eina CLI de Nextcloud. A Docker s'executa així:
docker compose exec -u www-data app php occ <comanda>
Exemples útils:
# Llistar usuaris
docker compose exec -u www-data app php occ user:list
# Crear usuari
OC_PASS="contrasenya" docker compose exec -u www-data -e OC_PASS app \
php occ user:add --password-from-env --display-name "Nom Cognom" nomUsuari
# Afegir usuari a grup (el grup es crea si no existeix)
docker compose exec -u www-data app php occ group:adduser professors alice
# Canviar quota d'emmagatzematge
docker compose exec -u www-data app php occ user:setting alice files quota 1GB
# Veure info d'un usuari
docker compose exec -u www-data app php occ user:info alice
Nextcloud distingeix entre:
Permisos de compartició disponibles: lectura, descàrrega, edició, creació, eliminació, compartició a tercers.
occ vs interfície web: quan usar cadascun| Tasca | Recomanació |
|---|---|
| Administració quotidiana (1-5 usuaris) | Interfície web |
| Creació massiva d'usuaris (curs escolar) | occ + script Bash |
| Automatització / scripts de desplegament | occ sempre |
| Diagnòstic de problemes | occ (més informació) |
| Manteniment (mode manteniment, actualitzacions) | occ obligatori |
Per a proves en una xarxa local aïllada (classe, laboratori), HTTP és acceptable. En producció real cal HTTPS sempre. Les raons:
Per a HTTPS en local es pot usar un certificat autosignat, però genera advertiments al navegador.
Cada usuari ha de tenir exactament els permisos que necessita, ni més ni menys:
A Nextcloud: no doneu mai accés d'administrador a usuaris normals. Useu grups per gestionar permisos de forma escalable.
Nextcloud permet configurar polítiques de contrasenyes (longitud mínima, caràcters especials, etc.) a Administració → Seguretat.
Per a un entorn d'aula, almenys:
| Criteri | Com es treballa a la Pràctica 1 |
|---|---|
| 4.1 Utilitat de les aplicacions d'ofimàtica web | Introducció i panorama (teoria) |
| 4.2 Classificació per funcionalitat | Taula comparativa (teoria) |
| 4.3 Instal·lació | Desplegar Nextcloud + MariaDB amb Docker Compose |
| 4.4 Configuració en intranet | compose.yaml amb xarxa interna, sense domini |
| 4.5 Gestió de comptes d'usuari | Crear usuaris i grups via web i via occ |
| 4.6 Criteris de seguretat | Permisos per grup, polítiques de contrasenya |
| 4.7 Ús cooperatiu | Pujar i compartir fitxers entre usuaris |
| 4.8 Documentació | Es demana al final de la pràctica |
Podeu consultar la documentació oficial de Nextcloud a docs.nextcloud.com i la referència de occ a docs.nextcloud.com/server/stable/admin_manual/occ_command.html