Inleiding
Met deze handleiding ga je Nextcloud server en vereisten installeren op Fedora Server.
Benodigheden
Je hebt een machine met Fedora Server nodig en wat tijd en koffie. Op de server moet het volgende (los) geïnstalleerd worden voor Nextcloud:
- httpd
- mod_ssl
- php
- php-bcmatch
- php-cli
- php-common
- php-fpm
- php-gd
- php-gmp
- php-intl
- php-ldap
- php-mbstring
- php-mysqlnd
- php-opcache
- php-pdo
- php-pecl-apcu
- php-pecl-imagick
- php-pecl-memcached
- php-pecl-redis5
- php-pecl-zip
- php-process
- php-sodium
- php-xml
- php-imagick
- mariadb
- mariadb-backup
- mariadb-common
- mariadb-connector-c
- mariadb-connector-c-config
- mariadb-cracklib-password-check
- mariadb-errmsg
- mariadb-gssapi-server
- mariadb-server
- mariadb-server-utils
- redis
Je kunt dit insatalleren met het volgende commando:
sudo dnf install -y httpd mod_ssl php php-bcmath php-cli php-common php-fpm php-gd php-gmp php-intl php-ldap php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-apcu php-pecl-igbinary php-pecl-imagick php-pecl-memcached php-pecl-msgpack php-pecl-redis5 php-pecl-zip php-process php-sodium php-xml php-imagick mariadb mariadb-backup mariadb-common mariadb-connector-c mariadb-connector-c-config mariadb-cracklib-password-check mariadb-errmsg mariadb-gssapi-server mariadb-server mariadb-server-utils redis
Configuratie Apache (httpd)
De volgende stappen zijn nodig om Apache te configureren.
Eigenaar en groep van de map /var/www/html
aanpassen
Verander de eigenaar en groep van de map /var/www/html/
naar apache
met het volgende commando:
sudo chown -R apache:apache /var/www/html/
Configuratiebestand voor Nextcloud
Maak een nieuw configuratiebestand /etc/httpd/conf.d/nextcloud.conf
aan met de volgende inhoud:
<VirtualHost *:80>
DocumentRoot "/var/www/html/nextcloud/"
ServerName nextcloud.domeinnaam.nl
<IfModule mod_headers.c>
Headers always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory "/var/www/html/nextcloud/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
Apache activeren en starten
Activeer en start Apache met het volgende commando:
sudo systemctl enable --now httpd
Firewall configureren voor Apache
Open poort 80 en 443 (HTTP en HTTPS) in de firewall
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
Apache SELinux instellingen
Om ervoor te zorgen dat de installatie van Nextcloud zometeen soepel verloopt en er geeen foutmeldingen naar voren komen zoals het niet kunnen verbinden met een database voer je de volgende commando’s uit:
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_unified 1
sudo setsebool -P httpd_can_connect_ldap 1
De laatste daarvan is niet nodig als je niet van plan bent Nextcloud centraal te beheren vanuit een LDAP oplossing.
PHP
De volgende instellingen zijn nodig voor PHP.
Configuratiebestand voor Nextcloud
Maak een nieuw configuratiebestand /etc/php-fpm.d/z-nextcloud.conf
aan met de volgede inhoud:
; Upload settings for PHP
php_value[upload_max_filesize] = 128M
php_value[post_max_size] = 128M
; Memory limit
php_value[memory_limit] = 1024M
; APCu
; php_value[apc.enable_cli] = 1
; Opcache
; php_value[opcache.enable_cli] = 1
php_value[opcache.interned_strings_buffer] = 128
Configuratie PHP-cli
Om ervoor te zorgen dat de verschillende commandline PHP
commando’s die verderop gegeven worden werken zonder foutmelding(en) moet je een configuratiebestand aanpassen.
Pas in /etc/php-zts.d/40-apcu.ini
regel 9 aan van dit:
; apc.enable_cli=0
Naar
apc.enable_cli=1
Om er zeker van te zijn dat dit overal wordt toegepast doe je dezelfde stappen in het bestand /etc/php.d/40-apcu.ini
ook.
Herladen PHP
Om er voor te zorgen dat alle aanpassingen die gedaan zijn ook doorgevoerd worden moet je de php-fpm
dienst herladen, dat kan met
sudo systemctl reload php-fpm.service
MariaDB
De volgende stappen zijn nodig voor MariaDB (MySQL).
Activeer en start mariadb
sudo systemctl enable --now mariadb.service
Voer de post-install tool van MariaDB uit
sudo mysql_secure_installation
Gebruiker
Maak een nieuwe database én gebruiker aan (voor meer details zie deze handleiding):
CREATE DATABASE nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* to nextcloud@localhost IDENTIFIED BY 'sterkwachtwoordhier';
FLUSH PRIVILEGES;
(Een sterk wachtwoord kun je genereren met pwgen 32 1
)
Redis
Activeer en start Redis. Er is verder geen configuratie nodig.
sudo systemctl enable --now redis.service
Configuratie Nextcloud
Hieronder de stappen om Nextcloud te installeren en te configureren.
Downloaden en uitpakken van Nextcloud
Om te beginnen moet je de meest recente versie van Nextcloud downloaden, uitpakken en verplaatsen.
cd /tmp/
curl -LO https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
rm latest.zip
sudo mv /tmp/nextcloud /var/www/html/
Data map aanmaken en eigenaar en groep goedzetten
De uitgepakte zip van Nextcloud heeft geen data map. Die moet dus aangemaakt worden, waarna de hele /var/www/html/nextcloud/
map de juiste eigenaar en groep moet krijgen:
sudo mkdir /var/www/html/nextcloud/data/
sudo chown -R apache:apache /var/www/html/
Nextcloud achtergrondtaken
Nextcloud heeft een achtergrondtaak die het eens per 5 minuten wil uitvoeren om o.a. (nieuwe) mappen en bestanden gesynchroniseerd te houden. Dat kan geautomatiseerd worden met een systemd unit en timer.
Om te beginnen maak een niuewe systemd unit aan in /etc/systemd/system/nextcloudcron.service
met de volgende inhoud
[Unit]
Description=Nextcloud cron.php job
[Service]
User=apache
ExecCondition=/usr/bin/php -f /var/www/html/nextcloud/occ status -e
ExecStart=/usr/bin/php -f /var/www/html/nextcloud/cron.php
KillMode=process
En dan maak je een nieuwe systemd timer aan in /etc/systemd/system/nextcloudcron.timer
met de volgende inhoud:
[Unit]
Description=Run Nextcloud cron.php every 5 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service
[Install]
WantedBy=timers.target
Herlaad vervolgens systemd en activeer de timer.
sudo systemctl daemon-reload
sudo systemctl enable --now nextcloudcron.timer
SELinux mapconfiguratie
Voor een goede werking van Nextcloud moet het SELinux label op een aantal mappen en bestanden van Nextcloud iets worden aangepast:
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'
sudo restorecon -RvF /var/www/html
Het kan zijn dat je bij het uitvoeren van sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
de foutmelding ValueError: File context for /var/www/html/nextcloud/data(/.*)? already defined
krijgt. Dat is omdat dit al gedefineerd is vanuit de orginele zip, en je past daarmee de labels aan naar hetzelfde. Dit kun je veilig negeren, maar controleer aan het eind van het installatieproces voor de zekerheid het label van /var/www/html/nextcloud/data/
voor de zekerheid.
Afconfigureren
Ga in een webbrowser naar de URL van Nextcloud en doorloop de configuratie. Als dit gedaan is zijn er een aantal zaken die je kunt doen om ervoor te zorgen dat Nextcloud soepeler draait.
Voeg de volgede zaken toe aan /var/www/html/nextcloud/config/config.php
(met het volgende commando `sudo -u apache vim /var/www/html/nextcloud/config/config.php’):
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => ''
),
'default_phone_region' => 'NL',
'maintenance_window_start' => 1
Het config.php bestand heeft al inhoud erin zitten, dus let er goed op dat je de regels hierboven toevoegt aan het einde van het bestand, en niet de inhoud overschrijft.
Als je dit gedaan hebt moet het .htaccess bestand van Nextcloud opnieuw aangemaakt worden. Gelukkig kan Nextcloud dit zelf met het volgende commando. Als je dan toch bezig bent, de laatste twee commando’s optimaliseren de database structuur van Nextcloud:
sudo -u apache php /var/www/html/nextcloud/occ maintenance:update:htaccess
sudo -u apache php /var/www/html/nextcloud/occ maintenance:repair --include-expensive
sudo -u apache php /var/www/html/nextcloud/occ db:add-missing-indices