Nextcloud - Plateforme d'échange sécurisés
| Mis à jour le 01 mars 2022 (PJ) |
Nextcloud est une solution open source d'hébergement de fichiers.
Sunnikan dispose et administre une machine virtuelle hébergée chez le prestataire OVH qui héberge une solution Nextcloud afin de pouvoir échanger avec ses clients des fichiers de manière sécurisé. Cette solution est accessible à :
Les spécifications complète, tests et documentation techniques se trouvent sur le SharePoint :
Le consultant Demandeur fait la demande de création par email en précisant :
Le Sysadmin :
Une vidéo de la création de compte utilisateur est disponible ici :
Important : Prévenir le Sysadmin (PJ) en cas de
modification !
(il utilise des draft email pour
accélérer la création)
Bonjour,
Comme convenu hier, je reviens vers vous pour vous proposer une solution de partage des documents afin que vous puissiez me transmettre les documents nécessaires à la préparation de l'audit.
Comme convenu, je reviens vers vous pour vous proposer une solution de partage des documents afin que je puisse vous transmettre les documents suite à l'audit xxx.
Pour cela, je vous invite à vous connecter à l'adresse suivante : https://nextcloud.sunnikan.com Puis à vous identifier à l'aide du compte utilisateur suivant (Attention à bien respecter les majuscules/minuscules) :
Utilisateur : AAAA-CCC
Mot de passe : ***
Vous pourrez ensuite rentrer dans le dossier nommé " AAAA-CCC " pour y déposer vos documents. Il est important que vous déposiez les documents dans ce dossier car sinon nous n'y auront pas accès.
Vous pourrez ensuite rentrer dans le dossier nommé " AAAA-CCC " pour y télécharger le rapport.
Si vous rencontrez le moindre souci, n'hésitez pas à contacter notre administrateur, en copie de ce mail.
En vous remerciant, je reste à votre disposition pour tout complément d'information.
Bien cordialement,
Dear xxx,
As agreed, I am coming back to you to propose a document sharing solution so that you can provide me the documents necessary to prepare the audit.
To do so, I invite you to connect to the following address: https://nextcloud.sunnikan.com. Then to identify yourself with the following user account (Be careful to respect upper/lower case):
User: AAAA-CCC
Password: it will be sent in a separate email
You will then be able to enter the folder named " AAAA-CCC " to put the documents. It is important that you put the documents in this folder because otherwise we will not have access to them.
If you have any problem, please do not hesitate to contact our administrator.
With my best regards,
Dear xxx,
Password: ***
With my best regards,
Récupérer l'ip de la machine (assigner une ip en dhcp si serveur
local)
```
hostname -I
```
Mettre à jour le
serveur
```
sudo apt-get update && sudo apt-get upgrade &&
sudo apt-get autoremove
sudo reboot now
```
Installer
Apache et php
```
sudo apt-get install apache2
sudo
apt-get install php
```
Installer les modules nécessaires
php \
(ceux entre parenthèses ne s'installent pas ou sont déjà
présent)\
(ceux en erreur sont introuvables)
```
(sudo
apt-get install php-ctype)
sudo apt-get install php-dom
sudo
apt-get install php-GD
(sudo apt-get install php-iconv)
(sudo
apt-get install php-JSON)
(sudo apt-get install php-libxml)
sudo apt-get install php-mbstring
(sudo apt-get install
php-openssl)
(sudo apt-get install php-posix)
(sudo apt-get
install php-SimpleXML)
(sudo apt-get install php-XMLReader)
(sudo
apt-get install php-XMLWriter)
sudo apt-get install php-zip
(sudo
apt-get install php-zlib)
sudo apt-get install php-mysql
sudo
apt-get install php-curl
ERROR : sudo apt-get install
php-fileinfo
sudo apt-get install php-bz2
sudo apt-get install
php-intl
ERROR : sudo apt-get install php-mcrypt
sudo apt-get
install php-imap
sudo apt-get install php-ldap
sudo apt-get
install php-smbclient
sudo apt-get install php-apcu
sudo
apt-get install php-memcached
sudo apt-get install php-redis
sudo apt-get install php-imagick
sudo apt-get install php-avconv
```
Installer MariaDB pour la base de données
```
sudo apt-get install mariadb-server
```
Se connecter à la
base en tant que root
(pas de mot de passe car accessible
uniquement en sudo depuis localhost)
```
sudo mysql -u
root
```
Une fois le prompt mysql, créer un utilisateur nc-user
avec tous les privilèges
```
CREATE USER 'nc-user'@'localhost'
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON . TO 'nc-user'@'localhost'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
```
Normalement je devrai activer php sur apache mais apparemment
c'était déjà le cas
```
(sudo a2enmod php7)
```
Créer un fichier phpinfo à la racine du serveur apache
(/var/www/html)
```
sudo nano /var/www/html/phpinfo.php
```
Editer le fichier
```
<?php
phpinfo();
?>
```
Accéder au fichier pour confirmer que le serveur tourne
Créer les dossier nécessaires et configurer les droits.
Normalement nextcloud devrait être installé dans son propre
répertoire mais baste.
```
sudo mkdir /var/www/data
sudo chown -R www-data:www-data /var/www/html/
sudo chown -R
www-data:www-data /var/www/data/
```
Aller chercher le
fichier d'install php et le copier à la racine du serveur web
```
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
sudo cp *.php /var/www/html
```
Accéder au fichier setup-nextcloud.php
install de nextcloud. Note que le compte MySQL à utiliser pour
la création de la base est nc-user@localhost et non root
Copier le pfx du certif wildcard sunnikan sur une clef usb et
l'insérer dans le serveur
Si serveur externe, passer par un
hébergement ?
```
sudo mkdir /mnt/usb
sudo fdisk -l
```
Repérer l'id de la clef usb, ici c'est sdb1. (lsblk est
plus propre)
```
sudo mount /dev/sdb1 /mnt/usb
cp /mnt/usb/*.pfx
.
sudo umount /dev/sdb1
```
Activer SSL et headers su
apache
```
sudo a2enmod ssl
sudo a2enmod headers
sudo systemctl reload apache2
```
Extraire la clé privée
depuis le pfx avec openssl. Cette clé est cryptée, il faudra la
décrypter :
```
openssl pkcs12 -in
wildcard-sunnikan-com2018-10-23.pfx -nocerts -out
sunnikan.com-privateencrypted.pem
openssl rsa -in
sunnikan.com-private_encrypted.pem -out sunnikan.com-private.pem
```
Extraire le certificat serveur depuis le pfx avec openssl
```
openssl pkcs12 -in wildcard-sunnikan-com_2018-10-23.pfx -clcerts
-nokeys -out sunnikan.com.pem
```
Copier le cert et la
clef dans les dossiers correspondants
```
sudo cp
sunnikan.com.pem /etc/ssl/certs/
sudo cp sunnikan.com-private.pem
/etc/ssl/private/
```
Créer le fichier de configuration
apache du serveur :
```
sudo nano /etc/apache2/sites-available/sunnikan.com.conf
```
```
<VirtualHost :80>
ServerName
nextcloud.sunnikan.com
ServerAlias www.nextcloud.sunnikan.com
Redirect permanent / https://nextcloud.sunnikan.com/
</VirtualHost>
<VirtualHost :443>
ServerName nextcloud.sunnikan.com
ServerAlias www.nextcloud.sunnikan.com
DocumentRoot
"/var/www/html"
<Directory "/var/www/html">
Options +FollowSymLinks
AllowOverride all
Require all granted
</Directory>
#
directives obligatoires pour TLS
SSLEngine on
SSLCertificateFile /etc/ssl/certs/sunnikan.com.pem
SSLCertificateKeyFile /etc/ssl/private/sunnikan.com-private.pem
Header always set Strict-Transport-Security "max-age=15768000"
ErrorLog /var/log/apache2/error.nextcloud.sunnikan.com.log
CustomLog /var/log/apache2/access.nextcloud.sunnikan.com.log
combined
</VirtualHost>
```
Ajouter le domaine ainsi
créé à la config php de nextcloud
```
sudo nano
/var/www/html/config/config.php
```
```
Ajouter à
trusted_domains :
```
Ajouter à trusted_domains :
```
1 => 'nextcloud.sunnikan.com',
```
Activer la
config
```
sudo a2ensite sunnikan.com
sudo systemctl
reload apache2
```
```
sudo mysql -u root
```
```
show variables
like 'innodb_large_prefix';
show variables like 'innodb_file_format';
show variables like 'innodb_file_per_table';
SET GLOBAL
innodb_large_prefix=1;
SET GLOBAL innodb_file_format=barracuda;
SET GLOBAL innodb_file_per_table=1;
exit;
```
```
cd /var/www/html
sudo -u www-data php occ maintenance:mode --on
sudo mysql -u root
```
```
ALTER DATABASE nextcloud
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
exit;
```
```
sudo -u www-data php occ config:system:set mysql.utf8mb4
--type boolean --value="true"
sudo -u www-data php occ
maintenance:repair
sudo -u www-data php occ maintenance:mode
--off
service mysql restart
```
_____