1. Регистрируем в DNS имя нашего будущего сайта на IP сервера, если он напрямую в интернете, или на внешний адрес шлюза, если сервер находится за шлюзом. Это можно сделать и позже, но чем раньше, тем лучше, чтобы запись успела обновиться на вышестоящих серверах.
2. Выполнить базовую установку Seafile.
3. Выполняем базовую установку IIS
Это можно сделать из PowerShell с привилегиями администратора командой
$> Install-WindowsFeature -Name Web-Server, Web-Mgmt-Tools
или в графическом интерфейсе через диспетчер серверов при помощи мастера добавления ролей и компонентов.
Подробнее установку можно посмотреть здесь: https://jackstromberg.com/2014/11/tutorial-how-to-install-iis-on-server-2012-and-server-2012-r2/
4. Для работы IIS в качестве обратного прокси нам понадобится модуль «Application Request Routing (ARR)»
Скачиваем MSI-установщик с сайта IIS https://www.iis.net/downloads/microsoft/application-request-routing
Просто выполняем его установку, пока ни как не настраиваем.
5. Для перенаправления запросов с HTTP на HTTPS нашему IIS понадобится ещё один модуль «URL Rewrite»
Скачиваем MSI-установщик с сайта IIS
https://www.iis.net/downloads/microsoft/url-rewrite
Просто выполняем его установку, пока ни как не настраиваем.
6. Для первоначальной настройки нам понадобится SSL-сертификат, годный для подписания веб-сервера, можно самоподписной, или выпущенный локальным центром сертификации. При запросе сертификата нужно указать имя сайта, который им будет подписан.
Для его импорта выполняем следующее:
открываем «Диспетчер служб IIS», выделяем сервер, запускаем ярлык «сертификаты сервера». Здесь импортируем полученный сертификат, или запрашиваем новый.
7. Создаем сайт, через который будет работать наш Seafile.
7.1 Если полный адрес сервера не совпадает с полным именем сайта, нужно в файле hosts создать запись с полным именем сайта, указывающую на ip-адрес данного сервера. Можно это сделать и через запись в DNS, но только в том случае, если пользователи будут обращаться к серверу не через шлюз, иначе в DNS придется указывать внешний адрес шлюза, а не этого сервера, нам же нужно, чтобы Seafile и IIS, а так же локальный браузер, который может понадобиться для того, чтобы разобраться с возникающими проблемами могли преобразовать имя сайта в IP сервера.
7.2 В диспетчере служб IIS кликаем правой кнопкой мыши на сервер и выбираем «Добавить сайт».
В имени сайта указываем полное имя нашего сайта
В физическом пути указываем C:\inetpub\wwwroot-seafile (если папки нет, создаем её и указываем)
Обращаем внимание, что «Тип» должен быть выставлен в HTTPS, порт должен выставиться в 443.
Имя узла — указываем то же самое имя сайта.
SSL-сертификат — выбираем сертификат, который добавляли в пункте 5. Позже его можно будет заменить, например сертификатом Lets encrypt.
8. Создаем базовую конфигурацию сайта.
скачиваем конфигурационный файл web.configнапример отсюда:
https://www.weavweb.net/wp-content/uploads/2015/06/web.config.zip
или с другого настроенного сервера. Можно создавать вручную, но могут возникнуть проблемы с отступами.
Содержимое файла:
<? xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<location path = "" overrideMode = "Deny">
</location>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping = "true "/>
</security>
<rewrite>
<rules>
<clear />
<rule name =" Redirect to HTTPS "enabled =" true "stopProcessing =" true ">
<match url =" (. *) "/>
< условия logicGrouping = "MatchAll" trackAllCaptures = "false">
<add input = "{HTTPS}" pattern = "^ OFF $" />
</conditions>
<action type = "Redirect" url = "https: // {HTTP_HOST} / {R: 1}" redirectType = "Permanent" />
</rule>
<rule name = "seafilehttp" stopProcessing = "true">
<match url = "seafhttp /(.*)" />
<conditions logicalGrouping = "MatchAll" trackAllCaptures = "false" />
<action type = "Rewrite" url = "http://127.0.0.1:8082/{R : 1} "appendQueryString =" true "logRewrittenUrl =" true "/>
</rule>
<rule name =" seafile "enabled =" true "stopProcessing =" true ">
<match url =" (. *) "/>
<условия logicGrouping = "MatchAll" trackAllCaptures = "false" />
<action type = "Rewrite" url = "http: // localhost: 8000 / {R: 1}" appendQueryString = "true" logRewrittenUrl = "true" />
</rule>
</rules>
<outboundRules>
<preConditions>
<preCondition name = "ResponseIsHtml1">
<add input = "{RESPONSE_CONTENT_TYPE}" pattern = "^ text / html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
<httpErrors errorMode = "DetailLocalOnly" />
</system.webServer>
</configuration>
9. Включаем проксирование
Открываем «Диспетчер служб IIS», выделяем настраиваемый сервер.
Запускаем ярлык «Application Request Routing Cache»
В правой части нажимаем на пункт «Server proxy settings»
Включаем прокси
Остальные пункты оставляем по умолчанию.
10. Увеличиваем размер аплоада.
По умолчанию размер загружаемой информации в IIS ограничен 30 МБ. Чтобы увеличить его до 2 ГБ выполняем следующую команду в командной строке, или PowerShell с повышенными привилегиями:
c:\windows\system32\inetsrv\appcmd set config -section:requestFiltering -requestLimits.maxAllowedContentLength:2000000000
11. Настраиваем Seafile на работу через прокси.
Seafile должен знать, по каким адресам доступен пользователю его веб-интерфейс и файлообменник, иначе будут проблемы со ссылками, закачкой и скачиванием файлов.
Открываем веб-интерфейс Seafile (он точно должен быть доступен с самого сервера по адресу http://localhost:8000), логинимся под учеткой с админскими правами.
В правом верхнем углу нажимаем на значек пользователя и в меню выбираем «Управление системой».
Переходим в пункт меню «настройки».
Меняем следующие параметры:
SERVICE_URL https://<your-domain-name>
FILE_SERVER_ROOT https://<your-domain-name>/seafhttp
SERVICE_URL, так же можно задать в файле ccnet.conf
FILE_SERVER_ROOT можно задать вместо шифрованной строки в файле seahub_settings.py, адрес должен быть в одиночных кавычках.
12. Заходим в Диспетчер служб IIS. Переходим к сайту, находим ярлык «переопределение URL-адресов и открываем его. Видим 3 правила. Redirect to HTTPS — не трогаем seafilehttp — поле URL-адрес переопределения меняем на
http://<your-domain-name>:8082/{R:1} seafile — поле URL-адрес переопределения меняем на http://tfiles.typhoon-jsc.ru:8000/{R:1}
13. Перезапускаем Seafile (служба) и IIS (через Диспетчер служб IIS), или перезагружаем сервер.
14. Если доступ к серверу осуществляется через шлюз, то настраиваем его.
15. Проверяем доступность сайта извне по http, иначе не сможем получить Lets Encrypt.
16. Получаем валидный сертификат.
17. Пробуем зайти как пользователь извне, например через анонимайзер (например https://cameleo.xyz/), загрузить и скачать файлы.
Данная статья написана на основе англоязычного источника и собственного опыта