Skip to content
Snippets Groups Projects
Verified Commit 3c1b6dff authored by Quentin Duchemin's avatar Quentin Duchemin
Browse files

[NextCloud] Add files for Picasoft and CeT

parent 375afc73
No related branches found
No related tags found
1 merge request!50Remove CI
Showing
with 149 additions and 1 deletion
**Ajouter le docker-compose et la documentation de mise à jour**
File moved
File moved
File moved
File moved
## NextCloud
Ce dossier contient les ressources nécessaires pour lancer une ou plusieurs instances NextCloud.
Deux instances sont gérées : celle de Picasoft et celle de Compiègne en Transition.
Celle de Picasoft utilise une image officielle ainsi que MySQL ; celle de CeT utilise une image construite par nos soins et une base PostgreSQL.
### Lancement
Pour l'instance de Compiègne en Transition :
* Copier `cloudcet.secrets.example` dans `cloudcet.secrets` et remplacer les valeurs
* Lancer `docker-compose -f docker-compose-cet.yml up -d`.
Pour l'instance de Picasoft :
* Copier `pica.secrets.example` dans `pica.secrets` et remplacer les valeurs
* Lancer `docker-compose -f docker-compose-pica.yml up -d`.
### Mise à jour
Pour les prochaines mises à jour du cloud CeT, il est peut être plus pertinent de se baser sur l'image officielle.
Dans ce cas, supprimer la directive `build` de Compose.
Pour mettre à jour l'instance de Picasoft, il suffit de mettre à jour le tag de l'image de `nextcloud-app`.
Attention : **toutes les mises à jour de version majeure doivent se faire une par une**.
Exemple :
* 15 -> 16, puis
* 16 -> 17, puis
* 17 -> 18.
Sinon, il y a risque de casse.
### Mise à jour de PostgreSQL (CeT)
Il peut arriver que la version de PostgreSQL ne soit plus supportée par NextCloud.
Sans en arriver là, il est bon de régulièrement mettre à jour PostgreSQL :
> While upgrading will always contain some level of risk, PostgreSQL minor releases fix only frequently-encountered bugs, security issues, and data corruption problems to reduce the risk associated with upgrading. For minor releases, the community considers not upgrading to be riskier than upgrading. https://www.postgresql.org/support/versioning/
Les mise à jours mineures (changement du Y de la version X.Y) peuvent se faire sans intervention humaine. On veillera à bien regarder les logs.
En revanche, le passage d'une version majeure à une autre nécessitera une intervention manuelle.
La documentation complète est ici : https://www.postgresql.org/docs/current/upgrading.html
De manière générale, la façon la plus simple est de se rendre dans l'ancien conteneur, de réaliser un `pg_dumpall` et de le copier en lieu sûr (`docker cp`).
Ensuite, on supprime l'ancien volume de base de données, on relance le nouveau conteneur de base de données (qui sera sans donnée), on monte le fichier de dump, et on lance un `psql -U <user> -d <db> -f <dump_file>` (valeurs de `user` et `db` à matcher avec le fichiers de secrets).
On attend, et **si tout s'est bien passé**, on peut lancer le conteneur applicatif (NextCloud).
### Mise à jour de MariaDB (Picasoft)
[Selon la documentation](https://mariadb.com/kb/en/upgrading-between-major-mariadb-versions/) :
> MariaDB is designed to allow easy upgrades. You should be able to trivially upgrade from ANY earlier MariaDB version to the latest one (for example MariaDB 5.5.x to MariaDB 10.5.x), usually in a few seconds.
L'idée est d'éteindre le conteneur applicatif (NextCloud), puis de lancer la nouvelle version du conteneur, d'entrer dedans, de lancer la commande `mysql_upgrade` et de redémarrer le conteneur.
version: '3.7'
# TODO switch to volumes
networks:
docker_default:
name: docker_default:
cloud_cet:
name: cloud_cet
services:
cloudcet:
build:
dockerfile: ./15.0/Dockerfile
container_name: cloudcet
image: registry.picasoft.net/nextcloud:15.0
labels:
- "traefik.frontend.rule=Host:cloudcet.picasoft.net"
- "traefik.port=80"
- "traefik.enable=true"
networks:
- docker_default
- cloud_cet
volumes:
- /DATA/docker/cet/nc:/var/www/html
depends_on:
- cloudcet_db
restart: unless-stopped
cloudcet_db:
container_name: cloudcet_db
image: postgres:9.6
volumes:
- /DATA/docker/cet/nc_db:/var/lib/postgresql/data
env_file:
- ./secrets/cloudcet.secrets
restart: unless-stopped
version: '3.7'
volumes:
nextcloud-db:
nextcloud:
networks:
nextcloud:
docker_default:
name: docker_default
services:
nextcloud-app:
image: nextcloud:17.0.1-fpm-alpine
container_name: nextcloud-app
restart: unless-stopped
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_HOST=nextcloud-db
env_file:
- /DATA/docker/secrets/nextcloud-db.secrets
depends_on:
- nextcloud-db
networks:
- nextcloud
restart: unless-stopped
nextcloud-web:
image: nginx:alpine
container_name: nextcloud-web
volumes:
- nextcloud:/var/www/html:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
env_file: ./pica.secrets
depends_on:
- nextcloud-app
networks:
- nextcloud
- docker_default
labels:
- "traefik.frontend.rule=Host:cloud.picasoft.net"
- "traefik.port=80"
- "traefik.enable=true"
# https://docs.nextcloud.com/server/16/admin_manual/configuration_server/reverse_proxy_configuration.html
- "traefik.frontend.redirect.permanent=true"
- "traefik.frontend.redirect.regex=https://(.*)/.well-known/(card|cal)dav"
- "traefik.frontend.redirect.replacement=https://$$1/remote.php/dav/"
restart: unless-stopped
nextcloud-db:
image: mariadb:10.3.17
container_name: nextcloud-db
volumes:
- nextcloud-db:/var/lib/mysql
networks:
- nextcloud
env_file: ./pica.secrets
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment