Главная | Обо мне

Установка Nextcloud в Docker

Установка Docker

В Debian это можно сделать так:

apt-get install docker docker.io

Написание systemd сервиса

Systemd сервис нужен для того что бы после перезагрузки Nextcloud запускался автоматически.

  1. Создайте systemd сервис:
  2. nano /etc/systemd/system/nextcloud.service
    
    [Unit]
    After=network-online.target docker.service
    
    [Service]
    Restart=always
    ExecStartPre=/usr/bin/bash -c \
    "/usr/bin/mkdir -p /var/lib/nextcloud/mysql && \
    /usr/bin/mkdir -p /var/lib/nextcloud/custom_apps && \
    /usr/bin/mkdir -p /var/lib/nextcloud/config && \
    /usr/bin/mkdir -p /var/lib/nextcloud/data"
    ExecStart=/usr/bin/docker run --pull always -t -p 127.0.0.1:8888:80 \
    -v /var/lib/nextcloud/mysql:/var/lib/mysql \
    -v /var/lib/nextcloud/custom_apps:/var/www/html/custom_apps \
    -v /var/lib/nextcloud/config:/var/www/html/config \
    -v /var/lib/nextcloud/data:/var/www/html/data \
    nextcloud
    ExecStop=/usr/bin/docker stop nextcloud
    
    [Install]
    WantedBy=multi-user.target
    
  3. Обновите конфигурацию systemd:
  4. systemctl daemon-reload
    
  5. Добавьте сервис в автозагрузку и запустите:
  6. systemctl enable nextcloud && systemctl start nextcloud
    

Настройка реверс прокси

В качестве примера я буду использовать Apache, но подойдёт любой другой реверс прокси.

  1. Установите Apache:
  2. apt-get install -y apache2
    
  3. Добавить его в автозагрузку:
  4. systemctl enable apache2
    
  5. Влючите модули необходимые для реверс прокси:
  6. a2enmod proxy proxy_http proxy_html
    
  7. Отредактируйте конфиг Apache:
  8. nano /etc/apache2/apache2.conf
    

    В самый конец допишите следующие:

    <VirtualHost ВАШ_ДОМЕН:443>
    	ServerName ВАШ_ДОМЕН
    
    	SSLEngine on
    	SSLProtocol TLSv1.3
    	SSLCertificateFile /etc/letsencrypt/live/ВАШ_ДОМЕН/cert.pem
    	SSLCertificateChainFile /etc/letsencrypt/live/ВАШ_ДОМЕН/chain.pem
    	SSLCertificateKeyFile /etc/letsencrypt/live/ВАШ_ДОМЕН/privkey.pem
    	<IfModule mod_headers.c>
    		Header always set Strict-Transport-Security "max-age=15552000; includeSubDomai$
    	</IfModule>
    
    	ProxyPass / http://127.0.0.1:8888/
    	ProxyPassReverse / http://127.0.0.1:8888/
    </VirtualHost>
    
  9. Рестартуем Apache что бы применить изменения:
  10. systemctl restart apache2.service
    

Настройка Nextcloud

Nextcloud если его не настроить не будет работать с реверс прокси. Это сделано в целях безопасность.

  1. Откройте конфиг Nextcloud:
  2. nano /var/lib/nextcloud/config/config.php
    

    Допишите следующие:

    .....
      'overwritehost' => 'ВАШ_ДОМЕН',
      'overwriteprotocol' => 'https',
    );
    
  3. Перезапустите демон:
  4. systemctl restart nextcloud
    

Конец

Теперь Nextcloud настроен и работает. Если вы перейдёте по адресу вашего сервера в браузере, то увидите WEB интерфейс.

Ссылки


Дата создания: 25.11.2021