Установка nextcloud в TrueNas-core

Установка nextcloud в TrueNas-core

Установка nextcloud в TrueNas-core. 

    Привет читателям. Если вы сюда попали и читаете вот это вот всё, значит у вас есть интерес к тому, чтобы создать своё личное облако и уйти от этих все яндексов, маилов, гуглов и прочих платных облаков. Финансовое и все мысли с этим связанные расскажу в других статьях, которые, я надеюсь напишу и выложу). Почему TrueNas-core? Да потому что лично мне было с ним проще разобраться чем с докерами и прочим что есть в scale и мне больше понравилась FreeBSD удобством исползования jail-ов.  Тут уже, как говориться, на вкус и цвет все фломастеры разные. Может гляди больше станут пользоваться core-версией, разрабы заметят и не забросят совсем эту ветку. Подразумевается, что трунас вы уже установи-ли и уже знаете, что это такое. 
    Скажу сразу, я лишь немного продвинутый пользователь ПК и ничему нигде не учился. Просто умею хорошо гуглить, желание сделать ну и в телеге в каналах задавал вопросы иногда. Я такой же новичок в этом всём как и Вы. И как видите, с сайто-строением знаком постольку поскольку )))). Вообще не исключаю что что-либо в настройках может быть немного неверно и надо бы подкрутить. Но! В данном виде всё работает и запускается, а тонкие настрой-ки и тюнинг это уже материал или для самостоятельной работы или других статей.
    На данный момент вопрос «а как из интернета попасть в свое облако?» не рассматриваем, считаем что у вас белый IP/умеете использовать ddns.

   Доступ к своему облаку имеет несколько вариантов:
1.     На трунасе крутиться в джейле (позже в этой статье расскажу) прокси сервер angie https://angie.software/ (аналог Nginx-ProxyManager), на который приходят все запросы из интернетов (в роутере прокинуты 80 и 443 порты на прокси сервер), а он уже распределяет по сервисам в вашей сети. Для этого варианта да, нужен домен. Ssl сертификат от LetsEncrypt angie получит сам, причем не нужен никакой certbot и прочее, всего четыре строчки. Это одна из первых причин почему он мне понравился и я переехал на него.
2.     Keenetic (netcraze), самое простое. Они вообще красавцы. Во всех роутерах есть пункт «доменное имя», прям роутере придумываешь себе имя и можно «ходить» к себе домой по домену имя.keenetic.pro (если роутер старый) или имя.crazedns.ru с сертификатом. Плюс еще в том, что даже с самым серым айпи можно попадать на своё облако. Одно облако у меня на интернете от usb модема через мобильную сеть.
3.     Прямой из интернета.

    Первый вариант считаю более привлекательным, по той простой причине, что помимо облака, поста-вите себе офис, какую-нибудь торрент качалку, медиа сервис или что-то еще и всем этим надо рулить из инета. А 443 порт он один, вот поэтому  всё идет на прокси сервер, а он уже сам распределяет все запро-сы.
    Итак погнали. Сам трунас-core скачиваю отсюда . Так вот, установили, запустили. В плагинах nextcloud мертвый (ноябрь 2025 года), поэтому ставить будем руками в jail. Создание датасетов я опустил, подра-зумевается, что с этим вы уже разобрались и настроили.
Создаем jail, смотрим внимательно картинки. Если это будет первым jail-ом, то система запросит «где хранить данные?», выбираете датасет который под nextcloud выделили.

 alt text

 

Тут я всегда выбираю «базовый jail» и последнюю версию.

alt text

 

Далее выбираем dhcp. Это не принципиально, можете сразу прописать статичный IP если вам надо.

alt text

 

Jail создался. Теперь запускаем его. 

 

И проверяем что адрес получен. 

 

 На этом этапе всё.
 Далее для удобства настроек и установки скачиваем на комп (для тех у кого windows) Putty и WinSCP устанавливаем. Можно использовать и totalCommander с плагинами sftp и виндовый powershell, т.е. к чему душа лежит. Открываем веб морду трунаса, переходим в «службы», запускаем «ssh» и открываем настройки:

 

 По всем канонам root доступ в консолях не разрешают и ходят обычным пользователем с разрешенным sudo, но у меня так ))). Я ssh наружу не выставляю, использую только внутри сети. Опустим лирику. 

 

Запускаем WinSCP, подключаемся к трунасу (нажимаем "войти") с паролем трунасовским, соответственно . Откроется файловый менеджер. И тут же нажимаем "новое соединение", снова выбираем/вводим локальный адрес трунаса и нажимаем "открыть в putty". Запустится терминал и в нём вводим пароль (при вводе пароля курсор не двигается и введенные знаки не отображаются, просто вводите и нажимаете enter):

 

На следующем фото файловая иерархия, чтоб понимали где искать созданный jail с именем «next».  

 

Итак, открываем Putty и пишем команду

iocage console next

и мы попадаем уже в консоль  нашего джейла в котором будем устанавливать nextcloud:

 

Ну начнем:

pkg  update  && pkg upgrade   
pkg install -y nano   # Ставим текстовый консольный редактор nano, пусть будет. Если -y не писать, то консоль будет спрашивать «N/Y» и надо будет ей ответить. 

Далее будем ставить веб сервер angie вместо nginx. Хотя в официальной документации про него ничего не сказано. Да и в принципе, официальную документацию надо читать )

pkg install -y angie
sysrc angie_enable=YES   #  эта команда делает запись в файле rc.conf.


Ну так, просто для инфы, этот же файл можно открыть через winscp и сделать запись текстовым редактором: 

 

service angie start   # это мы запустили веб сервер. 

Теперь если перейти по адресу, который получил наш jail «next», нас будет встречать окно angie. Значит пока не накосячили и всё идет правильным путём: 

 

Теперь возвращаемся к официальной странице nextcloud с требованиями  по установке и запоминаем про php 8.4 и mariadb 11.4 

 

Ставим базу данных (БД). Будем ставить mariadb. Чтобы узнать как называется  нужный нам пакет, используем команду search :

pkg search mariadb 

 

 Поиск показал что нужный пакет называется mariadb114. Надо ставить и сервер и клиент, вот их и ставим:

pkg install mariadb114-{server,client}

Для работы БД с nextcloud нужны пакеты pdo_mysql и mysqli и т.к. в рекомендациях идет php 8.4

pkg install php84-{pdo_mysql,mysqli}  # с ними заодно установиться РНР 8.4 которое нам и надо
sysrc mysql_enable=YES 

Теперь папке temp надо выставить права 777, если не выставить права, получим ошибку: «Установка системных таблиц не удалась! Изучите журналы»

chmod -R 777 /tmp
service mysql-server start   # запускаем БД

Начнем настраивать саму БД:

mysql_secure_installation   # на первый запрос нажать просто enter, потом везде отвечать «У», придумать и ввести пароль для root пользователя БД и далее отвечать «У». Курсор также не будет двигаться.

Далее будем создавать базу для nextcloud

mysql -u root -p   # пароль вводим на запрос тот, который выше придумали

Теперь придумайте логин и пароль для пользователя БД nextcloud, из надо будет вводить ниже вместо. Для образца у меня будет bdadmin с паролем bdpassword:

CREATE USER 'bdadmin'@'localhost' IDENTIFIED BY 'bdpassword';    # не пропустите точку с запятой в конце.

Название самой базы пусть будет nextbd, его ниже и введем и донастроим БД:

CREATE DATABASE nextbd CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON nextbd.* TO 'bdadmin'@'127.0.0.1' IDENTIFIED BY 'bdpassword';
FLUSH PRIVILEGES;
quit

Вот мы и дошли до установки nextcloud

pkg search nextcloud

 

Т.к. РНР у нас версии 8.4 то и устанавливаем nextcloud-php84:

pkg install nextcloud-php84

Далее надо создать два каталога:

mkdir -p /var/tmp/angie/proxy_temp 
mkdir /var/tmp/angie/client_body_temp

Приступаем к настройке веб сервера. Но прежде зайдите в трунас и сделайте снимок этого джейла, чтоб в случае чего можно было быстро откатиться до этого момента. Официальная  документация по настройке веб сервера ( нам нужны настройки nginx, т.к. angie это те же разработчики и настройки все одинаковые) предлагает делать один конфиг. Но мы будем делать два файла, чтоб было удобнее перенастроить веб сервер в плане hhtp/https. Запускаем WinSCP, подключаемся к  трунасу и идем по пути /наш_jail/usr/local/etc/angie и открываем angie.confраскомментируем (удалить знак #) две дерективы:

tcp_nopush on;
gzip on;

Под tcp_nopush добавляем (про точку с запятой не забывайте):

    tcp_nodelay on;
    types_hash_max_size 2048;
    server_tokens off;
    server_names_hash_max_size 4096;
    keepalive_timeout  65;

    # установите максимальный размер загрузки и увеличьте время ожидания загрузки cli-ent_max_body_size 16G;
    client_body_timeout 600s;
    client_body_buffer_size 512k;
    fastcgi_buffers 64 4K;
    proxy_temp_path /var/tmp/angie/proxy_temp;
    client_body_temp_path /var/tmp/angie/client_body_temp;

    # Тайм-ауты прокси и клиентского ответа
    proxy_connect_timeout 600s;
    proxy_send_timeout 600s;
    proxy_read_timeout 600s;
    send_timeout 600s;
    proxy_buffer_size 4k;
    proxy_buffers 8 16k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

После каждой правки сохраняйте редактируемый файл и вводите в терминале команду:

angie -t

Это проверка синтаксиса. Если где-то ошиблись, терминал об этом скажет и укажет номер строки с ошибкой:
вот я, например, ввёл второе значение keepalive_timeout  65.

 

Продолжаем. Под gzip on добавляем:

    gzip_vary on;
    gzip_static on;
    gzip_comp_level 4;
    gzip_buffers 16 8k;
    gzip_disable "msie6";
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml text/javascript application/javascript application/json applica-tion/ld+json application/manifest+json application/rss+xml application/vnd.geo+json applica-tion/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
    
     map $arg_v $asset_immutable {
        "" "";
        default ", immutable";
    }

В начале документа найдите строчку include  /usr/local/etc/angie/mime.types; и под ней добавьте:

    types {
        text/javascript mjs;
    }

На этом с angie.conf всё. Сохраняем файл. Открываем тут же каталог http.d  и создаем файл nextcloud.conf с таким содержимым:

upstream php-handler {
server unix:/var/run/nextcloud-php-fpm.sock;
}

#Раскомментировать acme_client для получения сертификата letsencrypt, если доступ к нексту прямой по домену,
#а не через прокси веб сервер или роутер кинетик, например. Они сами ssl сертификат получают
#Выделенное имя зеленым (nextcloud) в четырех строчках можете придумать сами.
#acme_client nextcloud https://acme-v02.api.letsencrypt.org/directory;
    server {
        listen 80 default_server;
        listen [::]:80;
        # Path to the root of your installation
        root /usr/local/www/nextcloud/;
        location ^~ /.well-known/acme-challenge {
            # Path to the root of your installation
            root /usr/local/www/nextcloud/;
            try_files $uri $uri/ =404;
        }

        #location / {
        #   return 301 https://$host:443$request_uri;
        #}

        include http.d/nextcloud.inc; # если доступ к nextcloud через https, перенести эту строку в блок listen 443 ssl
    }

    #server {
        # listen 443 ssl;
        # http2 on;
        # server_name _; # вместо "_" пропишите свой домен
        # Три строки ниже просто раскомментируйте чтобы получить сертификат от LetsEncrypt
        #acme nextcloud;
        #ssl_certificate $acme_cert_nextcloud;
        #ssl_certificate_key $acme_cert_key_nextcloud;

        # HSTS settings
        # ПРЕДУПРЕЖДЕНИЕ: Добавляйте опцию предварительной загрузки только после того, как прочитаете о
        # последствия в https://hstspreload.org/. Этот вариант
        # добавит домен в жестко запрограммированный список, который будет отправлен
        # во всех основных браузерах и быть удаленным из этого списка
        # может занять несколько месяцев.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains;" always;
        #}

Сохраняем файл (если сделаете проверку синтаксиса, будет ошибка, т.к. файл nextcloud.inc еще не создали) и создаём рядом в этом же каталоге (http.d) файл с именем nextcloud.inc с таким содержимым:

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ^~ /.well-known {
        # Правила в этом блоке представляют собой адаптацию правил
        # из `.htaccess` Nextcloud, которые касаются `/.well-known`.
        # Необходимо предотвратить включение схемы, домена и порта в заголовок Location.
        absolute_redirect off;
        location = /.well-known/carddav { return 301 /remote.php/dav/; }
        location = /.well-known/caldav  { return 301 /remote.php/dav/; }
        location /.well-known/acme-challenge    { try_files $uri $uri/ =404; }
        location /.well-known/pki-validation    { try_files $uri $uri/ =404; }

        # Позвольте API Nextcloud для URI `/.well-known` обрабатывать все остальные
        # запросы, передавая их контроллеру интерфейса.
        return 301 /index.php$request_uri;
    }

    # Заголовки HTTP-ответа заимствованы из Nextcloud `.htaccess`
    add_header Referrer-Policy                   "no-referrer"       always;
    add_header X-Content-Type-Options            "nosniff"           always;
    add_header X-Frame-Options                   "SAMEORIGIN"        always;
    add_header X-Permitted-Cross-Domain-Policies "none"              always;
    add_header X-Robots-Tag                      "noindex, nofollow" always;
    add_header X-Download-Options                   "noopen"        always;
    add_header X-XSS-Protection                     "1; mode=block" always;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # Удалить X-Powered-By, который является утечкой информации
    fastcgi_hide_header X-Powered-By;

    # Укажите, как обрабатывать каталоги, указав `/nextcloud/index.php$request_uri`
    # здесь в качестве резервного варианта означает, что Nginx всегда будет вести себя так,
    # когда клиент запрашивает путь, соответствующий каталогу, существующему
    # на сервере. В частности, если этот каталог содержит файл index.php,
    # этот файл будет обработан корректно; если нет, запрос будет передан
    # контроллеру фронтенда. Такое согласованное поведение означает, что нам не нужно
    # задавать специальные правила для определённых путей (например, изображений и других ресурсов,
    # `/updater`, `/ocs-provider`), и, следовательно,
    # `try_files $uri $uri/ /nextcloud/index.php$request_uri`
    # всегда будет вести себя так, как нужно.
    index index.php index.html /nextcloud/index.php$request_uri;

    # Правило, заимствованное из `.htaccess` для обработки клиентов Microsoft DAV
    location = / {
        if ( $http_user_agent ~ ^DavClnt ) {
            return 302 /nextcloud/remote.php/webdav/$is_args$args;
        }
    }

    # Правила, заимствованные из `.htaccess`, для скрытия определенных путей от клиентов
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)    { return 404; }
    location ~ ^/(?:.|autotest|occ|issue|indie|db_|console)                  { return 404; }

    # Убедитесь, что этот блок, передающий PHP-файлы в PHP-процесс, находится выше блоков,
    # обрабатывающих статические ресурсы (как показано ниже). Если этот блок не объявлен первым,
    # то angie столкнётся с бесконечным циклом перезаписи при добавлении `/index.php`
    # к URI, что приведёт к ошибке HTTP 500.
    location ~ .php(?:$|/) {

        # Требуется для поддержки устаревших версий
        rewrite ^/(?!index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|.+/richdocumentscode(_arm64)?/proxy) /index.php$request_uri;
        fastcgi_split_path_info ^(.+?.php)(/.*)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        #fastcgi_param HTTPS on;     # раскоментировать если некст работает по домену(сервер 443)
        fastcgi_param modHeadersAvailable true;         # Избегайте повторной отправки заголовков безопасности
        fastcgi_param front_controller_active true;     # Включить красивые URL-адреса   
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering on;                   # Требуется, так как PHP-FPM не поддерживает кодирование фрагментиро-ванной передачи и требует допустимого заголовка ContentLength, было off
        # Тайм-ауты ответа PHP-FPM 504

        # Раскомментируйте и увеличьте эти значения, если при загрузке больших файлов возникают ошибки тайм-аута.
        #fastcgi_read_timeout 60s;
        #fastcgi_send_timeout 60s;
        #fastcgi_connect_timeout 60s;
        fastcgi_max_temp_file_size 0;
    }

    # Обслуживание статических файлов
    location ~ .(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {
        try_files $uri /nextcloud/index.php$request_uri;
        # Заголовки HTTP-ответа заимствованы из Nextcloud `.htaccess`
        add_header Cache-Control                     "public, max-age=15778463$asset_immutable";
        add_header Referrer-Policy                   "no-referrer"       always;
        add_header X-Content-Type-Options            "nosniff"           always;
        add_header X-Frame-Options                   "SAMEORIGIN"        always;
        add_header X-Permitted-Cross-Domain-Policies "none"              always;
        add_header X-Robots-Tag                      "noindex, nofollow" always;
        add_header X-XSS-Protection                  "1; mode=block"     always;   # перенесено из старого
        access_log off;     # Optional: Don't log access to assets
        }
    location ~ .(otf|woff2?)$ {
        try_files $uri /nextcloud/index.php$request_uri;
        expires 7d;         # Политика управления кэшем заимствована из `.htaccess`
        access_log off;     # Необязательно: не регистрировать доступ к активам
    }

    # Rule borrowed from `.htaccess`
    location /remote {
        return 301 /remote.php$request_uri;
    }

    location / {
        try_files $uri $uri/ /index.php$request_uri;
    }

Сохраняем. Не забываем в терминале проверять синтаксис angie -t  и убеждаться, что терминал выдал всего две строки ответа:

root@next:~ # angie -t
angie: the configuration file /usr/local/etc/angie/angie.conf syntax is ok
angie: configuration file /usr/local/etc/angie/angie.conf test is successful

Скопировав отсюда весь конфиг и вставив в текстовый редактор WinSCP, всё вставляется правильно. В принципе проблем не должно быть. 

Продолжаем настройку. Далее переходим к терминалу и запускаем php_fpm :

sysrc php_fpm_enable=YES
service php_fpm start

Настраиваем mysql как описано тут  отредактировав два файла. Открываем файл /usr/local/etc/mysql/my.cnf и редактируем.

Перед [client-server] вставляем:

[server]
skip_name_resolve = 1
innodb_buffer_pool_size = 128M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

И в конце добавляем:

[client]
default-character-set = utf8mb4
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1

Теперь идем по пути /usr/local/etc/php/ext-30-pdo_mysql.ini  и добавляем:

[mysql]
mysql.allow_local_infile=On
mysql.allow_persistent=On
mysql.cache_size=2000
mysql.max_persistent=-1
mysql.max_links=-1
mysql.default_port=
mysql.default_socket=/var/run/mysql/mysql.sock  
mysql.default_host=
mysql.default_user=
mysql.default_password=
mysql.connect_timeout=60
mysql.trace_mode=Off

 С БД всё, теперь настраиваем РНР. Идем по пути /usr/local/etc/ и создаем файл php.ini с таким содержанием:

memory_limit = 578M
upload_max_filesize=64G
post_max_size=48G
max_input_time 3600
max_execution_time 3600
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

 Идём по пути /usr/local/etc/php-fpm.d/ и создаём файл  nextcloud.conf :

[nextcloud]
user = www
group = www
listen = /var/run/nextcloud-php-fpm.sock
listen.owner = www
listen.group = www
pm = dynamic
pm.max_children = 100
pm.start_servers = 25
pm.min_spare_servers = 25
pm.max_spare_servers = 75
php_admin_value[session.save_path] = "/usr/local/www/nextcloud-sessions-tmp"
php_admin_value[date.timezone] = "Europe/Moscow"
; Nextcloud wants PATH environment variable set.
env[PATH] = $PATH

Далее читаем офф доку и доустанавливаем:

pkg install php84-phar
pkg install php84-pecl-imagick
pkg install ffmpeg4
pkg install sudo # Надо чтобы запускать обновление некстклауда  в терминале командой sudo -uwww php /var/www/nextcloud/updater/updater.phar

 

С этим всё. Остались штрихи, выполняем команды в терминале:

chown -R 80:80 /usr/local/www/nextcloud   # выдали права на каталог nextcloud
mkdir -m 700 /usr/local/www/nextcloud-sessions-tmp   # создали каталог для временных сессий
chown -R 80:80 /usr/local/www/nextcloud-sessions-tmp # выдали ему права

 Ну и перезапускаем службы:

service mysql-server restart
service angie restart
service php_fpm restart

 Небольшое отступление, если для файлов пользователей облака (в некстклауде это каталог data) вы сделаете отдельный датасет/пул/другое место, то остановите джейл, в настройках джейла «точки монтирования» пропишите путь до каталога под личные файлы.  

alt text

 Открываем браузер и заходим по IP нашего nextcloud. Придумываем логин и пароль для адми-на некстклауда, и заполняем остальные поля и нажимаем «установить».  

 Небольшое уточнение, на момент написания (6 ноября 2025) в некстклауде был баг, установка не начиналась. Для этого идем по пути /usr/local/www/nextcloud/config/  и создаем файл autoconfig.php с таким содержимым:

$AUTOCONFIG = array(
  "dbtype"        => "mysql",
);

Обновляем страницу и нажимаем «установить». И вот оно, наше облако. 

alt text

Про настройки самого некстклауда разговора сейчас не будет. Если зайти в «параметры сервера-общие сведения» там будут предупреждения, которые надо «лечить», об этом в другой статье(когда не знаю) но все это легко гуглится /в телеге/на форумах и т.п. Там не сложно. 

Организация доступа извне к нашему облаку.

 

1. Через прокси серверу по домену. 

 

    Для этого вы должны знать ка пробросить 80 и 443 порты напрямую на айпи адрес джейла который сейчас будет создаваться и как из интернета в принципе «заходить к себе домой», и как у хостера прописывать записи А для своего домена. В качестве прокси сервера будем снова использовать angie. 

    Создаем новый jail и заходим в него. Устанавливаем angie:

pkg install angie
sysrc angie_enable=YES
service angie start

 Открываем WinSCP заходим в наш новый джейл по пути /usr/local/etc/angie/http.d/ и создаем файл с любым именем.conf с таким содержимым (ИмяЛатиницейЛюбое – в одном конфиге должно быть одинаковое во всех четырех строчках и не совпадать с другими именами в других конфигах): 

# cat /usr/local/etc/angie/http.d/своеоблако.conf
# Acme Let's Encrypt certificate enable
    acme_client ИмяЛатиницейЛюбое https://acme-v02.api.letsencrypt.org/directory;
    resolver 192.168.1.1; # ip роутера
    server {
        listen 80;
        server_name СвойДоменПишите; # если домен в зоне рф, то использовать запись в punycode https://2ip.ru/punycode/

    # Redirect all HTTP to HTTPS
    return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        http2 on;
        server_name СвойДоменПишите;

        # Obtain and use certificate from LetsEncrypt
        acme ИмяЛатиницейЛюбое;
        ssl_certificate $acme_cert_ИмяЛатиницейЛюбое;
        ssl_certificate_key $acme_cert_key_ИмяЛатиницейЛюбое;
        location / {
            proxy_pass http://192.168.1.136:80; #тут пишите локальный айпи своего некстклауда
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_send_timeout 600s;
            proxy_read_timeout 600s;
            client_max_body_size 0m; # тут можно задать максималный размер загружаемого файла, например 1m, значит пользователь сможет загрузить файл не больше одного мегабайта
    }
}

Как видим, всё элементарно и просто, angie сам получил сертификат LetsEncrypt. Собственно говоря этим он мне и понравился. 

 

Теперь осталось поправить конфиг некстклауда, добавить свой домен доверенные, о чем он сам и пишет в окне: 

 Конфиг лежит в джейле некстклауда по пути /usr/local/www/nextcloud/config/ . Открываем config.php и в секцию trusted_domains добавляем свой домен, не забываем про запятую в конце! 

 

2. Доступ к облаку через роутеры keenetic (самое простое).

 

   Вот вы купили себе кинетик, включили, заходите в список устройств и регистрируете свой некстклауд. 

 Далее идёте в сетевые_правила-доменное_имя. Придумываете себе имя, регистрируете и ждете пока не появиться надпись «С сертификатом ssl»  

 

Как появилась, нажимаете добавить и создаете правило для некстклауда, тут всё интуитивно понятно: 



Ну собственно и всё, добавляете этот домен в доверенные некстклауда и пользуетесь.

P.s. бывает что при доступе через keenetic нельзя войти, перезагружается страница авторизации. В таком случае через cli кинетика надо прописать команду  
ip http proxy next preserve-origin где next это доменное имя которое назначили для nextcloud, потом открыть config.php некстклауда и добавить строку

'overwriteprotocol' => 'https', 

 Ну а далее уже выполнить послеустановочные настройки. На официальной странице есть раздел для тюнинга.


Всем удачи !


Забыл добавить, когда терминалом входите в jail, то команды для nextcloud все те же как и в линукс версии, только их надо писать сразу с 'occ', например так:

occ files:scan --all  

Отдельная благодарность чатикам в тележеньке, которые наполняли мой мозг знаниями:

angie   TrueNas 

 

P.S. Если всё выше написанное помогло вам со своим облаком, тогда можете выписать премию к пенсии )))))

Top