OwnCloud 10 ist eine selbst gehostete Plattform zur Datei-Synchronisation und -Freigabe. Sie ermöglicht eine sichere, DSGVO-konforme Cloud-Umgebung ohne externe Anbieter. Durch gezielte Härtungsmaßnahmen lässt sich OwnCloud zu einer robusten, widerstandsfähigen Private‑Cloud‑Lösung ausbauen.
sudo apt update
sudo apt upgrade
sudo apt install apache2 mariadb-server libapache2-mod-php \
php php-gd php-mbstring php-xml php-zip php-curl php-mysql php-intl
cd /var/www
sudo wget https://download.owncloud.org/community/owncloud-10.x.x.zip
sudo unzip owncloud-10.x.x.zip
sudo chown -R www-data:www-data owncloud
sudo mysql -u root -p
CREATE DATABASE owncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'SICHERES_PASSWORT';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
sudo nano /etc/apache2/sites-available/owncloud.conf
<VirtualHost *:80>
ServerName cloud.deinedomain.tld
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/owncloud_error.log
CustomLog ${APACHE_LOG_DIR}/owncloud_access.log combined
</VirtualHost>
sudo a2ensite owncloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl reload apache2
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d cloud.deinedomain.tld
Rufe die Installationsseite auf:
https://cloud.deinedomain.tld
Im Setup:
Nach der Installation sollte OwnCloud gezielt gehärtet werden, um Angriffe zu verhindern und die Integrität der Daten zu schützen.
In /etc/php/*/apache2/php.ini restriktive Einstellungen setzen:
expose_php = Off
display_errors = Off
log_errors = On
memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
sudo systemctl restart apache2
In /etc/apache2/conf-available/security.conf:
ServerSignature Off
ServerTokens Prod
TraceEnable Off
Gefährliche HTTP-Methoden deaktivieren:
<Directory /var/www/owncloud>
<LimitExcept GET POST HEAD>
Deny from all
</LimitExcept>
</Directory>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Rechte minimieren:
sudo chown -R www-data:www-data /var/www/owncloud
sudo find /var/www/owncloud/ -type d -exec chmod 750 {} \;
sudo find /var/www/owncloud/ -type f -exec chmod 640 {} \;
Datenverzeichnis separat & sicher:
sudo chown -R www-data:www-data /srv/owncloud/data
sudo chmod 640 /var/www/owncloud/config/config.php
sudo chown root:www-data /var/www/owncloud/config/config.php
'trusted_domains' => [
0 => 'cloud.deinedomain.tld',
1 => '192.168.1.10',
],
sudo -u www-data crontab -e
*/15 * * * * php -f /var/www/owncloud/cron.php
Filter erstellen:
sudo nano /etc/fail2ban/filter.d/owncloud.conf
[Definition]
failregex = Login failed: .* Remote IP: '<HOST>'
ignoreregex =
Jail konfigurieren:
sudo nano /etc/fail2ban/jail.local
[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/www/owncloud/data/owncloud.log
maxretry = 5
bantime = 3600
sudo systemctl restart fail2ban
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
mysqldump -u owncloud -p owncloud > /backup/owncloud.sql
sudo -u www-data php /var/www/owncloud/occ upgrade
Regelmäßige Updates sind essenziell, um Sicherheitslücken zu schließen.