Tegenwoordig maak ik uitgebreid gebruik van docker containers om op een gemakkelijk manier applicaties te installeren die ge-isoleerd draaien en makkelijk te backuppen zijn als je de ‘docker-compose.yml’ file slim configureert.

Deze keer gaat heb ik een docker container gebruikt voor Nextcloud waarvoor ik de informatie van deze site heb gebruikt.

Met Nextcloud is het mogelijk om in eigen beheer cloudopslag te draaien. Alle onderdelen, inclusief de enterprise functionaliteit, worden als open source aangeboden en het verdienmodel is gelijk aan wat Red Hat doet, namelijk het leveren van betaalde ondersteuning aan grote klanten.

Configureren

Ik maak dus gebruik van een ‘docker-compose.yml’ file in een docker omgeving. Hiervoor heb ik een eigen sub-directory aangemaakt in mijn ‘/home/henri/docker’ directory en hierin de volgende inhoud gezet (pas aan naar jouw behoeften):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
volumes:
nextcloud:
db:
services:
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- /home/henri/docker/nextcloud/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=geheim
- MYSQL_PASSWORD=geheim
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
restart: always
ports:
- 8714:80
links:
- db
volumes:
- /home/henri/docker/nextcloud/html:/var/www/html
environment:
- MYSQL_PASSWORD=geheim
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- NEXTCLOUD_ADMIN_USER=gebruiker
- NEXTCLOUD_ADMIN_PASSWORD=geheim
volumes: nextcloud: db: services: db: image: mariadb:10.6 restart: always command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - /home/henri/docker/nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=geheim - MYSQL_PASSWORD=geheim - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud app: image: nextcloud restart: always ports: - 8714:80 links: - db volumes: - /home/henri/docker/nextcloud/html:/var/www/html environment: - MYSQL_PASSWORD=geheim - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_HOST=db - NEXTCLOUD_ADMIN_USER=gebruiker - NEXTCLOUD_ADMIN_PASSWORD=geheim
volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb:10.6
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - /home/henri/docker/nextcloud/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=geheim
      - MYSQL_PASSWORD=geheim
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8714:80
    links:
      - db
    volumes:
      - /home/henri/docker/nextcloud/html:/var/www/html
    environment:
      - MYSQL_PASSWORD=geheim
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - NEXTCLOUD_ADMIN_USER=gebruiker
      - NEXTCLOUD_ADMIN_PASSWORD=geheim

Hierna start je de docker container op, door in de directory waar je de ‘docker-compose.yml’ file hebt staan, het volgende commando uit te voeren:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker compose up -d
docker compose up -d
docker compose up -d

Ik heb in mijn ‘docker-compose.yml’ file ingesteld dat de web-interface op poort 8714 draait. Hier ging ik vervolgens met mijn browser naar toe en kreeg de melding dat mijn domein niet vertrouwd werd. Dit heb ik opgelost door een aanpassing te maken in de configuratie file:

‘\home\henri\docker\nextcloud\html\config\config.php’

Voor de ’trusted_domains’ setting heb ik hier mijn lokaal netwerk path toegevoegd en de domein-naam van mijn reverse-proxy:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
'trusted_domains' =>
array (
0 => 'localhost',
1 => '192.168.1.*',
2 => 'mydomain.net',
),
'trusted_domains' => array ( 0 => 'localhost', 1 => '192.168.1.*', 2 => 'mydomain.net', ),
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => '192.168.1.*',
    2 => 'mydomain.net',
  ),

Hierna start je de docker container opnieuw op en kun je gebruik maken van Nextcloud.

Updaten

Om Nextcloud te updaten heb ik een simpel ‘update.sh’ shell script gemaakt met de volgende inhoud:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker compose pull
docker compose up -d
docker compose pull docker compose up -d
docker compose pull
docker compose up -d

Maak deze uitvoerbaar met het commando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
chmod +x update.sh
chmod +x update.sh
chmod +x update.sh

Vervolgens kun je updaten door het script als volgt aan te roepen:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./update.sh
./update.sh
./update.sh

Reverse Proxy

Aangezien ik Nextcloud ook gemakkelijk van buiten mijn netwerk willen kunnen gebruiken zonder port-forward in mijn router (die vaak toch geblokt worden door bedrijfsomgevingen) heb ik een reversed proxy setting gemaakt in mijn Apache2 configuratie. Edit hiervoor de file ‘/etc/apache2/site-available/default.conf’ en voeg hier de volgende configuratie toe (pas aan naar jouw instellingen):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
########################################################################################
#
# mydomain.net (Nextcloud)
#
########################################################################################
<VirtualHost *:80>
ServerAdmin nextcloud@mydomain.net
ServerName mydomain.net
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.1.25:8714
ProxyPassReverse / http://192.168.1.25:8714
RewriteEngine on
RewriteRule /(.*) http://192.168.1.25:8714/$1 [P,L]
RewriteRule ^/\.well-known/carddav http://192.168.1.25:8714/remote.php/dav/ [R=301,L]
RewriteRule ^/\.well-known/caldav http://192.168.1.25:8714/remote.php/dav/ [R=301,L]
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log WithHost
</VirtualHost>
######################################################################################## # # mydomain.net (Nextcloud) # ######################################################################################## <VirtualHost *:80> ServerAdmin nextcloud@mydomain.net ServerName mydomain.net ProxyPreserveHost On ProxyRequests Off ProxyPass / http://192.168.1.25:8714 ProxyPassReverse / http://192.168.1.25:8714 RewriteEngine on RewriteRule /(.*) http://192.168.1.25:8714/$1 [P,L] RewriteRule ^/\.well-known/carddav http://192.168.1.25:8714/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav http://192.168.1.25:8714/remote.php/dav/ [R=301,L] ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log WithHost </VirtualHost>
########################################################################################
#
#  mydomain.net (Nextcloud)
#
########################################################################################

<VirtualHost *:80>

    ServerAdmin nextcloud@mydomain.net
    ServerName mydomain.net

    ProxyPreserveHost       On
    ProxyRequests           Off

    ProxyPass         /  http://192.168.1.25:8714
    ProxyPassReverse  /  http://192.168.1.25:8714

    RewriteEngine on
    RewriteRule /(.*)  http://192.168.1.25:8714/$1 [P,L]

    RewriteRule ^/\.well-known/carddav http://192.168.1.25:8714/remote.php/dav/ [R=301,L]
    RewriteRule ^/\.well-known/caldav  http://192.168.1.25:8714/remote.php/dav/ [R=301,L]
    
    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log WithHost

</VirtualHost>

Na deze aanpassing moet je de Apache2 server opnieuw starten met het commando:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
service apache2 restart
service apache2 restart
service apache2 restart

Gebruik

Met Nextcloud is meer mogelijk dan je zou denken als je deze via een web-browser benadert:




Raadpleeg het internet voor meer informatie over het gebruik van Nextcloud. Zie bijvoorbeeld ook de volgende bronnen voor een snelle start:

Desktop en Smartphone clients

Er zijn diverse clients voor verschillende operating systems beschikbaar op de volgende lokatie. Op deze manier kun je handig automatisch al je files op al je systemen automatisch synchroniseren.




Tevens zijn er ook nog Apps voor je Smarthone (IOS en Android).