|
Raspberry Pi OwnCloud:
ваше личное облачное хранилище
Поскольку защита вашей конфиденциальности становится все сложнее и сложнее, вы можете подумать о перемещении файлов в частное облачное хранилище. Если это так, то этот урок идеально подходит для вас. Важно помнить, что, поскольку ваши данные будут храниться в вашей локальной сети, вы в конечном итоге будете использовать большую пропускную способность при загрузке и скачивании файлов из-за пределов вашей сети. Это руководство проведет вас через все, что вам нужно знать, чтобы настроить и получить доступ к Owncloud.
Если вам интересно и вы хотите узнать больше о программном обеспечении Owncloud, обязательно их веб-сайт по адресу Owncloud.org .
Настройка сервера Raspberry Pi Owncloud
Во-первых, вам понадобится Raspberry Pi с установленным Raspbian. Есть несколько способов установить Owncloud на Raspberry Pi. В этом конкретном руководстве мы собираемся загрузить веб-сервер ( Nginx ) и Owncloud.
Установка NGINX и PHP
Первое, что нам нужно сделать, это установить NGINX и PHP на Raspberry Pi. Нам потребуются оба этих программного обеспечения для запуска программного обеспечения Owncloud.
1.Во-первых, в командной строке Pi или через SSH нам нужно будет обновить Raspberry Pi и его пакеты, для этого введите:
sudo apt-get update
sudo apt-get upgrade
2.Далее нам нужно добавить www-dataпользователя в www-dataгруппу.
sudo usermod -a -G www-data www-data
Эти инструкции были обновлены для работы с Raspbian Buster. Если вы используете более раннюю версию, я настоятельно рекомендую вам перейти на Raspbian Buster, прежде чем продолжить.
3. После того, как вы запустите Raspbian Buster, вы можете спокойно продолжить изучение этого руководства. На этом этапе мы установим все пакеты, необходимые для запуска Owncloud. Это включает php7.3 и его многочисленные модули, на которые полагается OwnCloud. Выполните следующую команду, чтобы установить все, что нам нужно.
sudo apt-get install nginx openssl ssl-cert php7.3-xml php7.3-dev php7.3-curl php7.3-gd php7.3-fpm php7.3-zip php7.3-intl php7.3-mbstring php7.3-cli php7.3-mysql php7.3-common php7.3-cgi php7.3-apcu php7.3-redis redis-server php-pear curl libapr1 libtool libcurl4-openssl-dev
Настройка NGINX для Owncloud и HTTPS
Наш следующий шаг - установить и настроить NGINX для работы с программным обеспечением Owncloud. Мы также настроим NGINX, чтобы он также мог поддерживать HTTPS-соединения.
1. Теперь нам нужно создать сертификат SSL, вы можете сделать это, выполнив следующую команду:
sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
Просто введите соответствующие данные для каждого из вопросов, которые вам задают.
2.В дополнение к сертификату SSL нам также необходимо сгенерировать собственный файл dhparam. Этот файл помогает обеспечить безопасность наших SSL-соединений. По умолчанию будет использоваться вариант по умолчанию, который не так безопасен. Чтобы создать файл dhparam длиной 2048 байт, выполните следующую команду на своем Raspberry Pi. Этот процесс займет довольно много времени, до 2 часов. Добавление dhparamфлага к команде поможет ускорить процесс, но, возможно, менее безопасно.
sudo openssl dhparam -out /etc/nginx/dh2048.pem 2048
3. Теперь нам нужно изменить chmod три файла сертификатов, которые мы только что сгенерировали.
sudo chmod 600 /etc/nginx/cert.pem
sudo chmod 600 /etc/nginx/cert.key
sudo chmod 600 /etc/nginx/dh2048.pem
4. Давайте очистим конфигурационный файл сервера, так как мы будем копировать и вставлять в него нашу собственную версию.
sudo sh -c "echo '' > /etc/nginx/sites-available/default"
5. Теперь давайте настроим конфигурацию веб-сервера, чтобы он правильно запускал Owncloud.
sudo nano /etc/nginx/sites-available/default
6. Теперь просто скопируйте и вставьте в файл следующий код.
upstream php-handler {
server unix:/var/run/php/php7.3-fpm.sock;
}
server {
listen 80;
server_name _;
#Allow letsencrypt through
location /.well-known/acme-challenge/ {
root /var/www/owncloud;
}
# enforce https
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name _;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH';
ssl_dhparam /etc/nginx/dh2048.pem;
ssl_prefer_server_ciphers on;
keepalive_timeout 70;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
root /var/www/owncloud/;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 8 4K;
fastcgi_ignore_headers X-Accel-Buffering;
gzip off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_read_timeout 180;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off; #Available since NGINX 1.7.11
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}
location ~ \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "max-age=15778463";
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log off;
}
location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map)$ {
add_header Cache-Control "public, max-age=7200";
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}
7.Теперь сохраните файл и выйдите из него, нажав CTRL+ X, затем Y, а затем ENTER.
8. Поскольку мы внесли изменения в конфигурацию NGINX, нам нужно перезапустить его службу, выполнив следующую команду.
sudo systemctl restart nginx
Настройка PHP для Owncloud
Теперь, когда NGINX настроен, мы можем приступить к подготовке PHP к работе с нашей установкой Owncloud. По мере использования php-fpmнам нужно сделать еще несколько вещей.
1. Теперь, когда это сделано, нам нужно будет обновить еще несколько конфигураций. Сначала откройте файл конфигурации PHP, введя.
sudo nano /etc/php/7.3/fpm/php.ini
2.В этом файле мы хотим найти и обновить следующие строки. ( CTRL+ Wпозволяет искать)
Находим
upload_max_filesize = 2M
Заменим
upload_max_filesize = 2000M
Находим
post_max_size = 8M
Заменим
post_max_size = 2000M
3.После этого сохраните и выйдите, нажав CTRL+ X, затем Y, затем ENTER.
4.Наш следующий шаг - внести некоторые изменения в конфигурацию пула php-fpm. Причина этого в том, что php-fpm не может получить доступ к переменным среды. Выполните следующую команду, чтобы начать изменение файла конфигурации.
sudo nano /etc/php/7.3/fpm/pool.d/www.conf
5. В этом файле найдите следующий блок кода и замените его тем, что у нас ниже. Вы можете использовать CTRL+, Wчтобы быстрее найти этот блок кода. Обычно он находится в нижней части файла.
Находим
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
Заменим
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
6.После внесения этих изменений сохраните файл, нажав CTRL+ X, а Yзатем, затем ENTER.
Добавление памяти подкачки
Наш следующий шаг - добавить в нашу систему немного памяти подкачки. Добавление памяти подкачки позволяет Raspberry Pi работать дальше своей памяти, используя пространство на устройстве хранения. Хотя намного медленнее, чем RAM, но лучше, чем сбой программы
1.Чтобы увеличить объем памяти подкачки, нам нужно изменить файл с именем dphys-swapfile. Чтобы изменить этот файл, используйте следующую команду:
sudo nano /etc/dphys-swapfile
2.В этом файле найдите следующую строку и измените ее на то, что у нас ниже.
Находим
CONF_SWAPSIZE=100
Заменим
CONF_SWAPSIZE = 512
3.После этого сохраните и выйдите, нажав CTRL+ X, затем Y, затем ENTER.
4. Чтобы наши изменения вступили в силу, нам нужно перезапустить Raspberry Pi, выполнив команду ниже.
sudo reboot
Настройка базы данных MySQL и пользователя для Owncloud
Перед тем, как начать этот раздел, вы должны уже настроить сервер MySQL на своем Raspberry Pi .
1. Чтобы иметь возможность создать нашу базу данных, нам нужно будет использовать интерфейс командной строки MySQL. Мы можем загрузить инструмент, выполнив следующую команду.
sudo mysql -u root -p
2. После входа в систему вы можете начать взаимодействие со своим сервером MySQL. База данных, которую мы будем создавать, называется ownclouddb. Мы можем создать эту базу данных, выполнив следующую команду.
CREATE DATABASE ownclouddb;
3. Создав базу данных, давайте теперь создадим пользователя, который сможет с ней взаимодействовать. Мы можем создать пользователя с именем ownclouduser, выполнив команду ниже. Убедитесь, что вы заменили [PASSWORD]пароль на надежный, и запишите его на будущее.
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY '[PASSWORD]';
4. Наш следующий шаг - предоставить права доступа нашему новому пользователю. Мы можем предоставить эти привилегии, выполнив следующую команду.
GRANT ALL PRIVILEGES ON ownclouddb.* TO 'ownclouduser'@'localhost';
5.Последняя задача - сбросить привилегии. Если мы этого не сделаем, наши изменения не будут использоваться сервером. Чтобы сбросить привилегии, все, что нам нужно сделать, это выполнить следующую команду.
FLUSH PRIVILEGES;
После очистки таблицы привилегий мы можем приступить к установке и настройке программного обеспечения Owncloud.
Скачивание и распаковка Owncloud
Теперь в этом разделе мы установим актуальное программное обеспечение Owncloud на Raspberry Pi. Для установки Owncloud нужно выполнить несколько простых шагов.
1. После перезапуска Pi вам нужно будет установить Owncloud на Raspberry Pi. Давайте перейдем в каталог, из которого мы будем запускать скрипт.
cd /var/www/
2. Теперь, когда мы находимся в нужном каталоге, мы можем загрузить последнюю версию Owncloud. Для этого мы воспользуемся wgetкомандой, приведенной ниже.
sudo wget https://download.owncloud.org/community/owncloud-latest.tar.bz2
3.Теперь распакуйте архив, который мы скачали, используя tar.
sudo tar -xvf owncloud-latest.tar.bz2
4.После того, как все извлечено, нам нужно убедиться, что www-dataфайлы принадлежат ему. Мы можем рекурсивно изменять права доступа к файлу с помощью команды chown .
sudo chown -R www-data:www-data /var/www
5.Теперь нам нужно открыть .user.iniфайл, чтобы применить некоторые изменения, которые мы внесли ранее в учебнике.
sudo nano /var/www/owncloud/.user.ini
6. Здесь обновите следующие значения, чтобы они равнялись 2000M:
upload_max_filesize=2000M
post_max_size=2000M
memory_limit=2000M
7. Теперь, когда это сделано, мы должны иметь возможность подключиться к Owncloud по IP-адресу вашего PI. Перед настройкой учетной записи администратора вы можете подключить внешний диск, чтобы у вас было много места для вашего сервера Raspberry Pi Owncloud. Просто следуйте инструкциям в следующем разделе.
Монтаж и настройка диска
Настройка внешнего диска при этом должна быть относительно простой, но иногда все работает не так правильно, как должно. Эти инструкции предназначены для монтирования и позволяют Owncloud хранить файлы на внешнем жестком диске.
1. Во-первых, если у вас есть диск NTFS, нам нужно будет установить пакет NTFS, введя следующее:
sudo apt-get install ntfs-3g
2. Теперь давайте создадим каталог, который мы можем смонтировать.
sudo mkdir /media/ownclouddrive
3.Теперь нам нужно получить GID , UID и UUID, поскольку нам нужно будет использовать их в ближайшее время. Введите следующую команду для GID :
id -g www-data
4.Теперь для UID введите следующую команду:
id -u www-data
5.Кроме того, если мы получим UUID жесткого диска, Pi запомнит этот диск, даже если вы подключите его к другому USB-порту.
ls -l /dev/disk/by-uuid
Скопируйте голубые буквы и цифры последней записи (в конце должно быть что-то вроде -> ../../sda1).
6. Теперь давайте добавим ваш диск в файл fstab, чтобы он загружался с правильными разрешениями.
sudo nano /etc/fstab
7.Теперь добавьте следующую строку в конец файла, обновив UID , GUID и UUID значениями, которые мы получили выше. (Следующее должно быть в одной строке)
UUID=DC72-0315 /media/ownclouddrive auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0
8.Перезагрузите Raspberry Pi, и диски должны быть автоматически смонтированы. Если они установлены, нам всем хорошо. Примечание: если вы получаете сообщение об ошибке, указывающее, что Pi находится в аварийном режиме при загрузке, это, вероятно, означает проблему с записью fstab. Просто отредактируйте файл fstab ( sudo nano /etc/fstab) и удалите добавленную строку или найдите ошибку и исправьте ее.
Настройка Owncloud
Я кратко рассмотрю основы настройки Owncloud Raspberry Pi здесь. Если вам нужна дополнительная информация, я настоятельно рекомендую ознакомиться с руководствами на их веб-сайте. Вы можете найти их на сайте руководства Owncloud здесь .
1. В вашем любимом веб-браузере вам нужно перейти на IP-адрес вашего Raspberry Pi. Если вы не знаете локальный IP-адрес вашего Pi, вы можете выполнить следующую команду.
hostname -I
2. После того, как вы перейдете на IP-адрес, где вы хотите получить ошибку сертификата, добавьте его в свой список исключений, так как это будет безопасно. В Chrome, вы кнопку ( 1 ).clickShow advanced Затем click« Proceed to [YOURPISIPADDRESS] (unsafe)» ( 2. ).
3. Когда вы впервые откроете Owncloud, вам нужно будет выполнить некоторые начальные шаги по настройке. Первое, что вам нужно сделать, это указать usernameи passwordдля своей учетной записи администратора Owncloud. ( 1. ) Далее нам нужно вызвать настройки хранилища и базы данных. Вы можете сделать это с clickingпомощью раскрывающегося списка « Хранилище и база данных » ( 2. ). Если вы используете другую папку данных, вы можете указать ее сейчас, используя Data folderтекстовое поле ( 3. ) Затем нам нужно вызвать параметры базы данных MySQL. Вы можете найти их с clickingпомощью переключателя MySQL / MariaDB ( 4. ). Затем нам нужно заполнить три бита информации: пользователя базы данных, пароль для этого пользователя и имя базы данных.
Во-первых, вам нужно указать « Пользователь базы данных » ( A. ). Если вы следуете этому руководству, так и должно быть ownclouduser.
Во втором варианте вам нужно будет указать пароль, который вы установили для указанного выше пользователя. ( Б. )
Наконец, нам нужно указать имя базы данных. ( C. ) Если вы использовали те из этого учебника, вы должны установить это значение ownclouddb.
После того, как вы закончите со всеми настройками, clickс помощью Finish setupкнопки ( 4 ).
Если вам когда-либо понадобится обновить, и вы обнаружите, что внутреннее средство обновления не работает, это, вероятно, означает, что вам придется сделать это вручную. Вы можете найти подробный процесс обновления на странице руководства по обновлению Owncloud . В следующих двух разделах вы узнаете, как еще больше улучшить программное обеспечение Owncloud.
Настройка кеширования памяти для Owncloud
В этом разделе мы покажем вам, как настроить Owncloud для использования APCu и Redis. APCu используется в качестве кэша объектной памяти, а Redis используется для блокировки транзакционных файлов. Использование обоих из них поможет улучшить производительность Owncloud на Raspberry Pi.
1. Чтобы включить их, нам нужно внести изменения в файл конфигурации Owncloud. Начните редактировать этот файл, выполнив следующую команду.
sudo nano /var/www/owncloud/config/config.php
2. Найдите в этом файле следующую строку и добавьте под ней блок текста.
Находим
'installed' => true,
Добавим ниже
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
3.После этого сохраните файл, нажав CTRL+ X, затем Y, а затем ENTER.
Использование System Cron с Owncloud
Команда Owncloud рекомендует настроить его так, чтобы операционная система выполняла задания cron вместо Ajax.
1.Чтобы иметь возможность настроить задание cron для Owncloud, нам нужно будет использовать www-datacrontab пользователя. Начните изменять cron пользователя, выполнив следующую команду.
sudo crontab -u www-data -e
Если вас спросят, какой редактор вы должны использовать для изменения crontab, мы настоятельно рекомендуем вам использовать nano.
2. Добавьте следующую строку в конец этого файла.
* * * * * /usr/bin/php /var/www/owncloud/occ system:cron
Эта строка будет запускать задание cron Owncloud каждую минуту.
3.После этого сохраните файл, нажав CTRL+ X, затем Y, затем ENTER. Теперь у вас должен быть правильно настроен Owncloud на вашем Raspberry Pi.
Перенаправление портов и внешний доступ
Если вы хотите иметь доступ к вашему облачному диску за пределами вашей локальной сети, вам нужно будет настроить переадресацию портов и внести несколько изменений в наши файлы конфигурации. Если у вас динамический IP-адрес, вы можете настроить динамический DNS и использовать его в качестве своего адреса. Вы можете найти информацию об этом в моем руководстве по перенаправлению портов. Для этого откройте файл конфигурации Owncloud с помощью следующей команды.
sudo nano /var/www/owncloud/config/config.php
Здесь добавьте новый элемент в массив доверенных доменов (это будет ваш внешний IP-адрес). Ваша новая запись должна выглядеть примерно так (x - это просто заполнители).
1 => 'xxx.xxx.xxx.xxx',
Наконец, обновите URL-адрес строки overwrite.cli.url на свой IP-адрес. Это должно выглядеть примерно так.
'overwrite.cli.url' => 'https://xxx.xxx.xxx.xxx',
Ниже приведен пример готового config.txtфайла.
Обязательно ознакомьтесь с моим руководством по переадресации портов и используйте следующий порт 443 для внутреннего, и я рекомендовал случайный порт для внешнего порта. При настройке внешнего порта убедитесь, что он еще не зарезервирован для конкретной программы. При внешнем подключении к серверу Owncloud вам необходимо убедиться, что вы используете https, иначе вы получите недопустимый запрос в своем браузере. Настроить переадресацию портов очень просто, и вы получите доступ к своему личному облаку на ходу. Также после того, как вы это сделаете, вы все равно сможете подключиться через свой локальный IP-адрес.