Suite installation pelican ssh et wireguard

Ta boîte bloque le port 22, mais te laisserait installer un client VPN sur ton ordinateur, et qui utilise un port exotique ?

Je te propose plutôt de passer par Nextcloud, puisque tu es sûr que le trafic HTTPS fonctionne. Cela demande un peu de bidouille, mais j’ai pu prototyper ça. (je suis quasiment sûr d’avoir déjà évoqué cette idée sur le forum)

  1. Installe Nextcloud
  2. Changeons les droits d’accès des dossiers:
sudo su
cd /var/www/pelican
# Faire en sorte que tout les dossiers et fichiers appartiennent au groupe pelican
chown pelican:pelican -R .
# Ajouter nextcloud et www-data au groupe pelican
usermod -a -G pelican nextcloud
usermod -a -G pelican www-data
# Forcer à ce que les fichiers créés par nextcloud appartiennent toujours au groupe pelican
chmod g+s content
# Autoriser nextcloud (et incidemment www-data) à écrire dans content
chmod 770 content
chmod 660 content/* -R
# On redémarre PHP et NGINX
systemctl restart nginx
# futurs lecteurs, la version de PHP-FPM aura peut-être changé
systemctl restart php8.1-fpm

A noter que les fichiers créés par Nextcloud n’auront pas tout à fait les mêmes permissions qu’attendues, mais rien de bien grave. Ces permissions risquent de sauter à la prochaine mise à jour de l’app. A voir si tu ajoutes ça dans un hook pour automatiser tout ça.

J’ajouterais aussi un service pour régénérer automatiquement le site dès qu’un fichier est modifié.

sudo nano /etc/systemd/system/pelican_perso.service

Et colles-y ceci:

[Unit]
Description=Surveillance du dossier content de Pelican

[Service]
Type=simple
User=pelican
Group=pelican
WorkingDirectory=/var/www/pelican/
ExecStart=/var/www/pelican/venv/bin/pelican --autoreload
StandardOutput=journal
StandardError=inherit

# Sandboxing options to harden security
# Depending on specificities of your service/app, you may need to tweak these
# .. but this should be a good baseline
# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
DevicePolicy=closed
ProtectSystem=full
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
LockPersonality=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap

# Denying access to capabilities that should not be relevant for webapps
# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
CapabilityBoundingSet=~CAP_RAWIO CAP_MKNOD
CapabilityBoundingSet=~CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE
CapabilityBoundingSet=~CAP_SYS_BOOT CAP_SYS_TIME CAP_SYS_MODULE CAP_SYS_PACCT
CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK
CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM
CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG
CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE
CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG

[Install]
WantedBy=multi-user.target

Lance le service:

systemctl daemon-reload
systemctl start pelican_perso
# et vérifie son bon fonctionnement
systemctl status pelican_perso

Dans Nextcloud, ajoute un nouveau Stockage Externe en tant qu’admin: stockage Local, chemin /var/www/pelican/content, et choisis quels utilisateurs peuvent y accéder. Une coche verte devrait confirmer que Nextcloud a bien accès au dossier.

Bonus, si tu peux installer l’app Nexcloud Desktop, tu peux synchroniser tes fichiers directement sur ton PC.

3 Likes