Merge branch 'release/rc-v1.2.0' into feature/manage-notifications-panel

# Conflicts:
#	packages/client/public/locales/en/Profile.json
#	packages/client/public/locales/ru/Profile.json
This commit is contained in:
Tatiana Lopaeva 2023-01-20 14:13:00 +03:00
commit af09362401
3328 changed files with 212999 additions and 321383 deletions

View File

@ -2,7 +2,7 @@ name: 4testing multiarch-build
on:
push:
branches: [ "develop" ]
branches: [ "release/rc-v1.2.0" ]
jobs:
build:
@ -33,10 +33,10 @@ jobs:
cd ./build/install/docker
REPO="onlyoffice" \
DOCKER_IMAGE_PREFIX="4testing-docspace" \
DOCKER_TAG="develop" \
DOCKER_TAG="rc-v1.2.0" \
DOCKERFILE="Dockerfile.app" \
docker buildx bake -f build.yml \
--set *.args.GIT_BRANCH="develop" \
--set *.args.GIT_BRANCH="release/rc-v1.2.0" \
--set *.platform=linux/amd64 \
--push
shell: bash

1
.gitignore vendored
View File

@ -50,4 +50,3 @@ TestsResults/
**/.yarn/cache
**/.yarn/install-state.gz
config/appsettings.dev.json

File diff suppressed because one or more lines are too long

801
.yarn/releases/yarn-3.2.4.cjs vendored Executable file

File diff suppressed because one or more lines are too long

View File

@ -8,4 +8,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
spec: "@yarnpkg/plugin-version"
yarnPath: .yarn/releases/yarn-3.2.2.cjs
yarnPath: .yarn/releases/yarn-3.2.4.cjs

View File

@ -29,6 +29,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Migration.Runner", "com
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ActiveDirectory", "common\ASC.ActiveDirectory\ASC.ActiveDirectory.csproj", "{DD482D67-F700-4C30-9AA6-A2BE7A1079B5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Migration.PersonalToDocspace", "common\Tools\ASC.MigrationPersonalToDocspace\ASC.Migration.PersonalToDocspace.csproj", "{9493BF4B-46DF-4BE7-AC63-83992B205A00}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Common", "common\ASC.Common\ASC.Common.csproj", "{1C5691B2-4AB1-4D3C-931C-AF7AD9CE8241}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -87,6 +91,14 @@ Global
{DD482D67-F700-4C30-9AA6-A2BE7A1079B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD482D67-F700-4C30-9AA6-A2BE7A1079B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD482D67-F700-4C30-9AA6-A2BE7A1079B5}.Release|Any CPU.Build.0 = Release|Any CPU
{9493BF4B-46DF-4BE7-AC63-83992B205A00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9493BF4B-46DF-4BE7-AC63-83992B205A00}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9493BF4B-46DF-4BE7-AC63-83992B205A00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9493BF4B-46DF-4BE7-AC63-83992B205A00}.Release|Any CPU.Build.0 = Release|Any CPU
{1C5691B2-4AB1-4D3C-931C-AF7AD9CE8241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C5691B2-4AB1-4D3C-931C-AF7AD9CE8241}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C5691B2-4AB1-4D3C-931C-AF7AD9CE8241}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C5691B2-4AB1-4D3C-931C-AF7AD9CE8241}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -42,22 +42,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Notify.Textile", "commo
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ElasticSearch", "common\services\ASC.ElasticSearch\ASC.ElasticSearch.csproj", "{AE1A0E06-6CD4-4E1D-8209-22BBBD6D5652}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Calendar", "products\ASC.Calendar\Server\ASC.Calendar.csproj", "{867BF98F-9638-4E99-BB68-651E1B812547}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Files", "products\ASC.Files\Server\ASC.Files.csproj", "{77BA2F61-6155-4283-BB39-F8E42F46A0B0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Files.Service", "products\ASC.Files\Service\ASC.Files.Service.csproj", "{5D41FFFF-816C-40B2-95CD-E2DDDCB83784}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ApiSystem", "common\services\ASC.ApiSystem\ASC.ApiSystem.csproj", "{C2BB03A0-C35B-433F-96D4-3A06CBC06AD7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Feed.Aggregator", "common\services\ASC.Feed.Aggregator\ASC.Feed.Aggregator.csproj", "{07CCC11F-76CB-448E-B15A-72E09FBB348B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Files.Core", "products\ASC.Files\Core\ASC.Files.Core.csproj", "{F0A39728-940D-4DBE-A37A-05D4EB57F342}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Storage.Migration", "common\services\ASC.Data.Storage.Migration\ASC.Data.Storage.Migration.csproj", "{02356BD7-7E99-457B-BEFF-090CE4DF067D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Storage.Encryption", "common\services\ASC.Data.Storage.Encryption\ASC.Data.Storage.Encryption.csproj", "{17A05AE2-21C8-4C1C-B422-6AB80F13F63E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.TelegramService", "common\services\ASC.TelegramService\ASC.TelegramService.csproj", "{95CE7371-17B6-4EEE-8E38-2FDE6347E955}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.AuditTrail", "common\services\ASC.AuditTrail\ASC.AuditTrail.csproj", "{2C111161-B7C5-4869-9F52-EA725E64BA40}"
@ -69,18 +61,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Encryption", "common\ASC.Data.Encryption\ASC.Data.Encryption.csproj", "{C4DF1A63-C9EB-4D8F-A4E5-4FD9249A5089}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Projects", "products\ASC.Projects\Server\ASC.Projects.csproj", "{D1A33923-5680-4B86-A7DA-41E78350D997}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.CRM", "products\ASC.CRM\Server\ASC.CRM.csproj", "{277F4A2C-07CC-4BC5-B4F3-9695BB2DFFB9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Mail", "products\ASC.Mail\Server\ASC.Mail.csproj", "{137CA67B-D0F5-4746-B8BC-1888D2859B90}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Web.HealthChecks.UI", "web\ASC.Web.HealthChecks.UI\ASC.Web.HealthChecks.UI.csproj", "{0C1A387E-0CD0-4BE8-82FC-9FCAD05BF289}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ClearEvents", "common\services\ASC.ClearEvents\ASC.ClearEvents.csproj", "{448221A8-EABA-4200-9192-E08BF241A487}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.CRM.BackgroundTasks", "products\ASC.CRM\BackgroundTasks\ASC.CRM.BackgroundTasks.csproj", "{E52C0E35-A05C-437F-8FF2-3E0AC9F81433}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Backup.Core", "common\ASC.Data.Backup.Core\ASC.Data.Backup.Core.csproj", "{F5D9DE01-06CD-4881-9F41-46882E9ED45C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Backup", "common\services\ASC.Data.Backup\ASC.Data.Backup.csproj", "{027EEE53-7491-48F4-B467-6404D68798A7}"
@ -103,6 +87,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ActiveDirectory", "comm
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.EventBus.ActiveMQ", "common\ASC.EventBus.ActiveMQ\ASC.EventBus.ActiveMQ.csproj", "{86916EF2-4A1B-441C-B673-EB0F68EC9C3A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.Data.Storage.Encryption", "common\services\ASC.Data.Storage.Encryption\ASC.Data.Storage.Encryption.csproj", "{76BFD0A6-3F28-4BCE-983B-9FE3FBDD966D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASC.ApiSystem", "common\services\ASC.ApiSystem\ASC.ApiSystem.csproj", "{EB0FC2DF-D8AC-460B-8FBE-307A7B163C6C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -181,10 +169,6 @@ Global
{AE1A0E06-6CD4-4E1D-8209-22BBBD6D5652}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AE1A0E06-6CD4-4E1D-8209-22BBBD6D5652}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE1A0E06-6CD4-4E1D-8209-22BBBD6D5652}.Release|Any CPU.Build.0 = Release|Any CPU
{867BF98F-9638-4E99-BB68-651E1B812547}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{867BF98F-9638-4E99-BB68-651E1B812547}.Debug|Any CPU.Build.0 = Debug|Any CPU
{867BF98F-9638-4E99-BB68-651E1B812547}.Release|Any CPU.ActiveCfg = Release|Any CPU
{867BF98F-9638-4E99-BB68-651E1B812547}.Release|Any CPU.Build.0 = Release|Any CPU
{77BA2F61-6155-4283-BB39-F8E42F46A0B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77BA2F61-6155-4283-BB39-F8E42F46A0B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77BA2F61-6155-4283-BB39-F8E42F46A0B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -193,10 +177,6 @@ Global
{5D41FFFF-816C-40B2-95CD-E2DDDCB83784}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D41FFFF-816C-40B2-95CD-E2DDDCB83784}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D41FFFF-816C-40B2-95CD-E2DDDCB83784}.Release|Any CPU.Build.0 = Release|Any CPU
{C2BB03A0-C35B-433F-96D4-3A06CBC06AD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2BB03A0-C35B-433F-96D4-3A06CBC06AD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2BB03A0-C35B-433F-96D4-3A06CBC06AD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2BB03A0-C35B-433F-96D4-3A06CBC06AD7}.Release|Any CPU.Build.0 = Release|Any CPU
{07CCC11F-76CB-448E-B15A-72E09FBB348B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07CCC11F-76CB-448E-B15A-72E09FBB348B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07CCC11F-76CB-448E-B15A-72E09FBB348B}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -205,14 +185,6 @@ Global
{F0A39728-940D-4DBE-A37A-05D4EB57F342}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F0A39728-940D-4DBE-A37A-05D4EB57F342}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F0A39728-940D-4DBE-A37A-05D4EB57F342}.Release|Any CPU.Build.0 = Release|Any CPU
{02356BD7-7E99-457B-BEFF-090CE4DF067D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02356BD7-7E99-457B-BEFF-090CE4DF067D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02356BD7-7E99-457B-BEFF-090CE4DF067D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02356BD7-7E99-457B-BEFF-090CE4DF067D}.Release|Any CPU.Build.0 = Release|Any CPU
{17A05AE2-21C8-4C1C-B422-6AB80F13F63E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17A05AE2-21C8-4C1C-B422-6AB80F13F63E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17A05AE2-21C8-4C1C-B422-6AB80F13F63E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17A05AE2-21C8-4C1C-B422-6AB80F13F63E}.Release|Any CPU.Build.0 = Release|Any CPU
{95CE7371-17B6-4EEE-8E38-2FDE6347E955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95CE7371-17B6-4EEE-8E38-2FDE6347E955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{95CE7371-17B6-4EEE-8E38-2FDE6347E955}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -225,18 +197,6 @@ Global
{C4DF1A63-C9EB-4D8F-A4E5-4FD9249A5089}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4DF1A63-C9EB-4D8F-A4E5-4FD9249A5089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4DF1A63-C9EB-4D8F-A4E5-4FD9249A5089}.Release|Any CPU.Build.0 = Release|Any CPU
{D1A33923-5680-4B86-A7DA-41E78350D997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1A33923-5680-4B86-A7DA-41E78350D997}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1A33923-5680-4B86-A7DA-41E78350D997}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1A33923-5680-4B86-A7DA-41E78350D997}.Release|Any CPU.Build.0 = Release|Any CPU
{277F4A2C-07CC-4BC5-B4F3-9695BB2DFFB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{277F4A2C-07CC-4BC5-B4F3-9695BB2DFFB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{277F4A2C-07CC-4BC5-B4F3-9695BB2DFFB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{277F4A2C-07CC-4BC5-B4F3-9695BB2DFFB9}.Release|Any CPU.Build.0 = Release|Any CPU
{137CA67B-D0F5-4746-B8BC-1888D2859B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{137CA67B-D0F5-4746-B8BC-1888D2859B90}.Debug|Any CPU.Build.0 = Debug|Any CPU
{137CA67B-D0F5-4746-B8BC-1888D2859B90}.Release|Any CPU.ActiveCfg = Release|Any CPU
{137CA67B-D0F5-4746-B8BC-1888D2859B90}.Release|Any CPU.Build.0 = Release|Any CPU
{0C1A387E-0CD0-4BE8-82FC-9FCAD05BF289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C1A387E-0CD0-4BE8-82FC-9FCAD05BF289}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C1A387E-0CD0-4BE8-82FC-9FCAD05BF289}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -245,10 +205,6 @@ Global
{448221A8-EABA-4200-9192-E08BF241A487}.Debug|Any CPU.Build.0 = Debug|Any CPU
{448221A8-EABA-4200-9192-E08BF241A487}.Release|Any CPU.ActiveCfg = Release|Any CPU
{448221A8-EABA-4200-9192-E08BF241A487}.Release|Any CPU.Build.0 = Release|Any CPU
{E52C0E35-A05C-437F-8FF2-3E0AC9F81433}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E52C0E35-A05C-437F-8FF2-3E0AC9F81433}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E52C0E35-A05C-437F-8FF2-3E0AC9F81433}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E52C0E35-A05C-437F-8FF2-3E0AC9F81433}.Release|Any CPU.Build.0 = Release|Any CPU
{F5D9DE01-06CD-4881-9F41-46882E9ED45C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5D9DE01-06CD-4881-9F41-46882E9ED45C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5D9DE01-06CD-4881-9F41-46882E9ED45C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -293,6 +249,14 @@ Global
{86916EF2-4A1B-441C-B673-EB0F68EC9C3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{86916EF2-4A1B-441C-B673-EB0F68EC9C3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{86916EF2-4A1B-441C-B673-EB0F68EC9C3A}.Release|Any CPU.Build.0 = Release|Any CPU
{76BFD0A6-3F28-4BCE-983B-9FE3FBDD966D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76BFD0A6-3F28-4BCE-983B-9FE3FBDD966D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76BFD0A6-3F28-4BCE-983B-9FE3FBDD966D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76BFD0A6-3F28-4BCE-983B-9FE3FBDD966D}.Release|Any CPU.Build.0 = Release|Any CPU
{EB0FC2DF-D8AC-460B-8FBE-307A7B163C6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB0FC2DF-D8AC-460B-8FBE-307A7B163C6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB0FC2DF-D8AC-460B-8FBE-307A7B163C6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB0FC2DF-D8AC-460B-8FBE-307A7B163C6C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -18,10 +18,8 @@
"common\\ASC.Feed\\ASC.Feed.csproj",
"common\\ASC.IPSecurity\\ASC.IPSecurity.csproj",
"common\\ASC.MessagingSystem\\ASC.MessagingSystem.csproj",
"common\\ASC.Migration\\ASC.Migration.csproj",
"common\\ASC.Notify.Textile\\ASC.Notify.Textile.csproj",
"common\\ASC.Textile\\ASC.Textile.csproj",
"common\\ASC.Webhooks.Core\\ASC.Webhooks.Core.csproj",
"common\\services\\ASC.ApiSystem\\ASC.ApiSystem.csproj",
"common\\services\\ASC.AuditTrail\\ASC.AuditTrail.csproj",
"common\\services\\ASC.ClearEvents\\ASC.ClearEvents.csproj",
@ -31,8 +29,6 @@
"common\\services\\ASC.Feed.Aggregator\\ASC.Feed.Aggregator.csproj",
"common\\services\\ASC.Notify\\ASC.Notify.csproj",
"common\\services\\ASC.Studio.Notify\\ASC.Studio.Notify.csproj",
"common\\services\\ASC.TelegramService\\ASC.TelegramService.csproj",
"common\\services\\ASC.Webhooks.Service\\ASC.Webhooks.Service.csproj",
"products\\ASC.Files\\Core\\ASC.Files.Core.csproj",
"products\\ASC.Files\\Server\\ASC.Files.csproj",
"products\\ASC.Files\\Service\\ASC.Files.Service.csproj",

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/build.backend.docker.ps1 %1
echo.
pause

View File

@ -0,0 +1,81 @@
$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major }
$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor }
if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) {
Write-Error "Powershell version must be greater than or equal to 7.2."
exit
}
$Branch = git branch --show-current
$BranchExistRemote = git ls-remote --heads origin $Branch
if (-not $BranchExistRemote) {
Write-Error "The current branch does not exist in the remote repository. Please push changes."
exit
}
$RootDir = Split-Path -Parent $PSScriptRoot
$DockerDir = ($RootDir + "\build\install\docker")
$BuildDate = Get-Date -Format "yyyy-MM-dd"
$LocalIp = (Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration | Where-Object { $_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null }).IPAddress | Select-Object -First 1
$Doceditor = ($LocalIp + ":5013")
$Login = ($LocalIp + ":5011")
$Client = ($LocalIp + ":5001")
$DockerFile = "Dockerfile.dev"
$EnvExtension = "dev"
$CoreBaseDomain = "localhost"
# Stop all backend services"
& "$PSScriptRoot\start\stop.backend.docker.ps1"
$Env:COMPOSE_IGNORE_ORPHANS = "True"
$Containers = docker ps -a -f "name=^onlyoffice" --format="{{.ID}} {{.Names}}" | Select-String -Pattern ("mysql|rabbitmq|redis|elasticsearch|documentserver") -NotMatch | ConvertFrom-String | ForEach-Object P1
$Images = docker images onlyoffice/docspace* -q
if ($Containers) {
Write-Host "Remove all backend containers" -ForegroundColor Blue
docker rm -f $Containers
}
if ($Images) {
Write-Host "Remove all docker images except 'mysql, rabbitmq, redis, elasticsearch, documentserver'" -ForegroundColor Blue
docker rmi -f $Images
}
Write-Host "Run MySQL" -ForegroundColor Green
docker compose -f ($DockerDir + "\db.yml") up -d
Write-Host "Run environments (redis, rabbitmq)" -ForegroundColor Green
$Env:DOCKERFILE = $DockerFile
docker compose -f ($DockerDir + "\redis.yml") -f ($DockerDir + "\rabbitmq.yml") up -d
if ($args[0] -eq "--no_ds") {
Write-Host "SKIP Document server" -ForegroundColor Blue
}
else {
Write-Host "Run Document server" -ForegroundColor Green
$Env:DOCUMENT_SERVER_IMAGE_NAME = "onlyoffice/documentserver-de:latest"
$Env:ROOT_DIR = $RootDir
docker compose -f ($DockerDir + "\ds.dev.yml") up -d
}
Write-Host "Build all backend services" -ForegroundColor Blue
$Env:DOCKERFILE = $DockerFile
$Env:RELEASE_DATE = $BuildDate
$Env:GIT_BRANCH = $Branch
$Env:SERVICE_DOCEDITOR = $Doceditor
$Env:SERVICE_LOGIN = $Login
$Env:SERVICE_CLIENT = $Client
$Env:APP_CORE_BASE_DOMAIN = $CoreBaseDomain
$Env:ENV_EXTENSION = $EnvExtension
docker compose -f ($DockerDir + "\build.dev.yml") build --build-arg GIT_BRANCH=$Branch --build-arg RELEASE_DATE=$BuildDate
Write-Host "Run DB migration" -ForegroundColor Green
$Env:DOCKERFILE = $DockerFile
docker compose -f ($DockerDir + "\migration-runner.yml") up -d
# Start all backend services"
& "$PSScriptRoot\start\start.backend.docker.ps1"

View File

@ -9,10 +9,17 @@ echo "Root directory:" $dir
cd $dir
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
branch=$(git branch --show-current)
echo "GIT_BRANCH:" $branch
branch_exist_remote=$(git ls-remote --heads origin $branch)
if [ -z "$branch_exist_remote" ]; then
echo "The current branch does not exist in the remote repository. Please push changes."
exit 1
fi
cd $dir/build/install/docker/
docker_dir="$( pwd )"
@ -38,11 +45,14 @@ echo "SERVICE_DOCEDITOR: $doceditor"
echo "SERVICE_LOGIN: $login"
echo "SERVICE_CLIENT: $client"
echo "Stop all backend services"
# Stop all backend services"
$dir/build/start/stop.backend.docker.sh
echo "Remove all backend containers"
docker rm -f $(docker ps -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $1}')
echo "Remove all docker images except 'mysql, rabbitmq, redis, elasticsearch, documentserver'"
docker image rm -f $(docker images -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $3}')
docker rmi -f $(docker images -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $3}')
echo "Run MySQL"
@ -53,7 +63,7 @@ if [ "${arch_name}" = "x86_64" ]; then
docker compose -f db.yml up -d
elif [ "${arch_name}" = "arm64" ]; then
echo "CPU Type: arm64 -> run db.yml with arm64v8 image"
MYSQL_IMAGE=arm64v8/mysql:oracle \
MYSQL_IMAGE=arm64v8/mysql:8.0.31-oracle \
docker compose -f db.yml up -d
else
echo "Error: Unknown CPU Type: ${arch_name}."
@ -68,7 +78,9 @@ if [ "$1" = "--no_ds" ]; then
echo "SKIP Document server"
else
echo "Run Document server"
docker compose -f ds.yml up -d
DOCUMENT_SERVER_IMAGE_NAME=onlyoffice/documentserver-de:latest \
ROOT_DIR=$dir \
docker compose -f ds.dev.yml up -d
fi
echo "Build all backend services"
@ -86,5 +98,5 @@ echo "Run DB migration"
DOCKERFILE=$docker_file \
docker compose -f migration-runner.yml up -d
echo "Start all backend services"
# Start all backend services"
$dir/build/start/start.backend.docker.sh

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/build.document.server.docker.ps1 %1
echo.
pause

View File

@ -0,0 +1,15 @@
$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major }
$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor }
if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) {
Write-Error "Powershell version must be greater than or equal to 7.2."
exit
}
$RootDir = Split-Path -Parent $PSScriptRoot
Write-Host "Run Document server" -ForegroundColor Green
$DOCUMENT_SERVER_IMAGE_NAME = "onlyoffice/documentserver-de:latest"
docker run -i -t -d -p 8085:80 -e JWT_ENABLED=false -e JWT_IN_BODY=false --restart=always -v $RootDir/Data:/var/www/onlyoffice/Data $DOCUMENT_SERVER_IMAGE_NAME

View File

@ -29,7 +29,5 @@ pushd $dir/common/ASC.SsoAuth/
yarn install
pushd $dir/common/ASC.WebDav/
yarn install
pushd $dir/common/ASC.UrlShortener/
yarn install
pushd $dir/common/ASC.WebPlugins/
yarn install

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/clear.backend.docker.ps1
echo.
pause

View File

@ -0,0 +1,21 @@
$Containers = docker ps -aqf "name=^onlyoffice"
$Images = docker images onlyoffice/docspace* -q
if ($Containers) {
Write-Host "Stop all backend containers" -ForegroundColor Blue
docker stop $Containers
Write-Host "Remove all backend containers" -ForegroundColor Blue
docker rm -f $Containers
}
if ($Images) {
Write-Host "Remove all docker images except 'mysql, rabbitmq, redis, elasticsearch, documentserver'" -ForegroundColor Blue
docker rmi -f $Images
}
Write-Host "Remove unused volumes." -ForegroundColor Blue
docker volume prune -f
Write-Host "Remove unused networks." -ForegroundColor Blue
docker network prune -f

12
build/clear.backend.docker.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
echo "Stop all onlyoffice containers."
docker stop $(docker ps -a | egrep "onlyoffice" | awk 'NR>0 {print $1}')
echo "Remove all onlyoffice containers."
docker rm -f $(docker ps -a | egrep "onlyoffice" | awk 'NR>0 {print $1}')
echo "Remove all onlyoffice images."
docker rmi -f $(docker images -a | egrep "onlyoffice" | awk 'NR>0 {print $3}')
echo "Remove unused volumes."
docker volume prune -f
echo "Remove unused networks."
docker network prune -f

View File

@ -88,7 +88,7 @@ echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] http://download.onlyoff
mkdir -p -m 700 $HOME/.gnupg
gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/onlyoffice.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
chmod 644 /usr/share/keyrings/onlyoffice.gpg
echo "deb http://static.teamlab.info.s3.amazonaws.com/repo/4testing/debian stable main" | sudo tee /etc/apt/sources.list.d/onlyoffice4testing.list
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] http://static.teamlab.info.s3.amazonaws.com/repo/4testing/debian stable main" | sudo tee /etc/apt/sources.list.d/onlyoffice4testing.list
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US:en"

View File

@ -21,3 +21,11 @@ fi
if ! dpkg -l | grep -q "dirmngr"; then
apt-get install -yq dirmngr
fi
if ! dpkg -l | grep -q "debian-archive-keyring"; then
apt-get install -yq debian-archive-keyring
fi
if ! dpkg -l | grep -q "debconf-utils"; then
apt-get install -yq debconf-utils
fi

View File

@ -17,26 +17,27 @@ fi
apt-get -y update
if ! dpkg -l | grep -q "locales"; then
if ! command -v locale-gen &> /dev/null; then
apt-get install -yq locales
fi
if ! dpkg -l | grep -q "dirmngr"; then
apt-get install -yq dirmngr
if ! dpkg -l | grep -q "apt-transport-https"; then
apt-get install -yq apt-transport-https
fi
if ! dpkg -l | grep -q "software-properties-common"; then
apt-get install -yq software-properties-common
fi
if [ $(dpkg-query -W -f='${Status}' curl 2>/dev/null | grep -c "ok installed") -eq 0 ]; then
apt-get install -yq curl;
locale-gen en_US.UTF-8
if [ -f /etc/needrestart/needrestart.conf ]; then
sed -e "s_#\$nrconf{restart}_\$nrconf{restart}_" -e "s_\(\$nrconf{restart} =\).*_\1 'a';_" -i /etc/needrestart/needrestart.conf
fi
locale-gen en_US.UTF-8
# add elasticsearch repo
ELASTIC_VERSION="7.13.1"
ELASTIC_VERSION="7.16.3"
ELASTIC_DIST=$(echo $ELASTIC_VERSION | awk '{ print int($1) }')
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/elastic-${ELASTIC_DIST}.x.gpg --import
echo "deb [signed-by=/usr/share/keyrings/elastic-${ELASTIC_DIST}.x.gpg] https://artifacts.elastic.co/packages/${ELASTIC_DIST}.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-${ELASTIC_DIST}.x.list
@ -49,11 +50,15 @@ curl -sL https://deb.nodesource.com/setup_16.x | bash -
if [ "$DIST" = "debian" ] && [ "$DISTRIB_CODENAME" = "stretch" ]; then
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
wget -O /etc/apt/sources.list.d/microsoft-prod.list https://packages.microsoft.com/config/debian/9/prod.list
else
elif [ "$DISTRIB_CODENAME" != "jammy" ]; then
curl https://packages.microsoft.com/config/$DIST/$REV/packages-microsoft-prod.deb -O
dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb
elif dpkg -l | grep -q "packages-microsoft-prod"; then
apt-get purge -y packages-microsoft-prod dotnet*
fi
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP 'mysql-apt-config_\K.*' | grep -o '^[^_]*' | sort --version-sort --field-separator=. | tail -n1)"
MYSQL_PACKAGE_NAME="mysql-apt-config_${MYSQL_REPO_VERSION}_all.deb"
if ! dpkg -l | grep -q "mysql-server"; then
MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"}
@ -62,8 +67,7 @@ if ! dpkg -l | grep -q "mysql-server"; then
MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-"$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12)"}
# setup mysql 8.0 package
MYSQL_PACKAGE_NAME="mysql-apt-config_0.8.23-1_all.deb"
curl -OL http://dev.mysql.com/get/${MYSQL_PACKAGE_NAME}
curl -OL http://repo.mysql.com/${MYSQL_PACKAGE_NAME}
echo "mysql-apt-config mysql-apt-config/repo-codename select $DISTRIB_CODENAME" | debconf-set-selections
echo "mysql-apt-config mysql-apt-config/repo-distro select $DIST" | debconf-set-selections
echo "mysql-apt-config mysql-apt-config/select-server select mysql-8.0" | debconf-set-selections
@ -76,6 +80,11 @@ if ! dpkg -l | grep -q "mysql-server"; then
echo mysql-server-8.0 mysql-server/root_password password ${MYSQL_SERVER_PASS} | debconf-set-selections
echo mysql-server-8.0 mysql-server/root_password_again password ${MYSQL_SERVER_PASS} | debconf-set-selections
apt-get -y update
elif dpkg -l | grep -q "mysql-apt-config" && [ "$(apt-cache policy mysql-apt-config | awk 'NR==2{print $2}')" != "${MYSQL_REPO_VERSION}" ]; then
curl -OL http://repo.mysql.com/${MYSQL_PACKAGE_NAME}
DEBIAN_FRONTEND=noninteractive dpkg -i ${MYSQL_PACKAGE_NAME}
rm -f ${MYSQL_PACKAGE_NAME}
apt-get -y update
fi

View File

@ -70,7 +70,7 @@ DATABASE_MIGRATION="true"
ELK_VERSION=""
ELK_HOST=""
DOCUMENT_SERVER_IMAGE_NAME=onlyoffice/4testing-documentserver-ee:latest
DOCUMENT_SERVER_IMAGE_NAME="onlyoffice/4testing-documentserver-ee:latest"
DOCUMENT_SERVER_JWT_SECRET=""
DOCUMENT_SERVER_JWT_HEADER=""
DOCUMENT_SERVER_HOST=""
@ -83,7 +83,7 @@ HELP_TARGET="install-Docker.sh";
SKIP_HARDWARE_CHECK="false";
EXTERNAL_PORT="8092"
EXTERNAL_PORT="80"
SERVICE_PORT="5050"
while [ "$1" != "" ]; do
@ -124,7 +124,7 @@ while [ "$1" != "" ]; do
fi
;;
-ids | --installdocumentserver )
-idocs | --installdocumentserver )
if [ "$2" != "" ]; then
INSTALL_DOCUMENT_SERVER=$2
shift
@ -138,14 +138,14 @@ while [ "$1" != "" ]; do
fi
;;
-ira | --installrabbitmq )
-irb | --installrabbitmq )
if [ "$2" != "" ]; then
INSTALL_RABBITMQ=$2
shift
fi
;;
-ire | --installredis )
-ird | --installredis )
if [ "$2" != "" ]; then
INSTALL_REDIS=$2
shift
@ -294,11 +294,11 @@ while [ "$1" != "" ]; do
echo " -p, --password dockerhub password"
echo " -ids, --installdocspace install or update $PRODUCT (true|false)"
echo " -tag, --dockertag select the version to install $PRODUCT (latest|develop|version number)"
echo " -ids, --installdocumentserver install or update document server (true|false)"
echo " -idocs, --installdocumentserver install or update document server (true|false)"
echo " -di, --documentserverimage document server image name"
echo " -imysql, --installmysql install or update mysql (true|false)"
echo " -ira, --installrabbitmq install or update rabbitmq (true|false)"
echo " -ire, --installredis install or update redis (true|false)"
echo " -irb, --installrabbitmq install or update rabbitmq (true|false)"
echo " -ird, --installredis install or update redis (true|false)"
echo " -mysqlrp, --mysqlrootpassword mysql server root password"
echo " -mysqld, --mysqldatabase $PRODUCT database name"
echo " -mysqlu, --mysqluser $PRODUCT database user"
@ -309,25 +309,26 @@ while [ "$1" != "" ]; do
echo " -env, --environment $PRODUCT environment"
echo " -skiphc, --skiphardwarecheck skip hardware check (true|false)"
echo " -ip, --internalport internal $PRODUCT port (default value 5050)"
echo " -ep, --externalport external $PRODUCT port (default value 8092)"
echo " -ep, --externalport external $PRODUCT port (default value 80)"
echo " -mk, --machinekey setting for core.machinekey"
echo " -ls, --local_scripts run the installation from local scripts"
echo " -dbm, --databasemigration database migration (true|false)"
echo " -?, -h, --help this help"
echo
echo " Install all the components without document server:"
echo " bash $HELP_TARGET -ids false"
echo " bash $HELP_TARGET -idocs false"
echo
echo " Install Document Server only. Skip the installation of MYSQL and $PRODUCT:"
echo " bash $HELP_TARGET -ias false -ids true -imysql false -ims false"
echo " bash $HELP_TARGET -ids false -idocs true -imysql false -irb false -ird false"
echo
echo " Update all installed components. Stop the containers that need to be updated, remove them and run the latest versions of the corresponding components. The portal data should be picked up automatically:"
echo " bash $HELP_TARGET -u true"
echo
echo " Update Document Server only to version 4.4.2.20 and skip the update for all other components:"
echo " bash $HELP_TARGET -u true -dv 4.4.2.20 -ias false"
echo " Update Document Server only to version 7.2.1.34 and skip the update for all other components:"
echo " bash $HELP_TARGET -u true -di onlyoffice/documentserver-ee:7.2.1.34 -ids false"
echo
echo " Update $PRODUCT only to version 0.1.10 and skip the update for all other components:"
echo " bash $HELP_TARGET -u true -av 9.1.0.393 -ids false"
echo " Update $PRODUCT only to version 1.2.0 and skip the update for all other components:"
echo " bash $HELP_TARGET -u true -tag rc-v1.2.0 -idocs false"
echo
exit 0
;;
@ -863,11 +864,11 @@ install_product () {
reconfigure DOCKER_TAG ${DOCKER_TAG}
if [[ -n $EXTERNAL_PORT ]]; then
sed -i "s/8092:8092/${EXTERNAL_PORT}:8092/g" $BASE_DIR/appserver.yml
sed -i "s/8092:8092/${EXTERNAL_PORT}:8092/g" $BASE_DIR/${PRODUCT}.yml
fi
docker-compose -f $BASE_DIR/migration-runner.yml up -d
docker-compose -f $BASE_DIR/appserver.yml up -d
docker-compose -f $BASE_DIR/${PRODUCT}.yml up -d
docker-compose -f $BASE_DIR/notify.yml up -d
}
@ -900,7 +901,7 @@ check_image_RepoDigest() {
}
docker_image_update() {
docker-compose -f $BASE_DIR/notify.yml -f $BASE_DIR/appserver.yml down --volumes
docker-compose -f $BASE_DIR/notify.yml -f $BASE_DIR/${PRODUCT}.yml down --volumes
docker-compose -f $BASE_DIR/build.yml pull
}
@ -947,7 +948,7 @@ save_parameters_from_configs() {
APP_CORE_MACHINEKEY=$(save_parameter APP_CORE_MACHINEKEY $APP_CORE_MACHINEKEY)
APP_CORE_BASE_DOMAIN=$(save_parameter APP_CORE_BASE_DOMAIN $APP_CORE_BASE_DOMAIN)
if [ ${EXTERNAL_PORT} = "8092" ]; then
EXTERNAL_PORT=$(grep -oP '(?<=- ).*?(?=:8092)' /app/onlyoffice/appserver.yml)
EXTERNAL_PORT=$(grep -oP '(?<=- ).*?(?=:8092)' /app/onlyoffice/${PRODUCT}.yml)
fi
}

View File

@ -83,8 +83,6 @@ if [ "$DOCUMENT_SERVER_INSTALLED" = "false" ]; then
fi
${package_manager} -y install ${package_sysname}-documentserver
systemctl restart supervisord
expect << EOF
@ -125,20 +123,6 @@ elif [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
${package_manager} -y update ${package_sysname}-documentserver
fi
NGINX_ROOT_DIR="/etc/nginx"
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
if rpm -q "firewalld"; then
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
systemctl restart firewalld.service
fi
{ ${package_manager} check-update ${package_sysname}-${product}; PRODUCT_CHECK_UPDATE=$?; } || true
if [ "$PRODUCT_INSTALLED" = "false" ]; then
${package_manager} install -y ${package_sysname}-${product}
@ -165,6 +149,22 @@ elif [[ $PRODUCT_CHECK_UPDATE -eq $UPDATE_AVAILABLE_CODE ]]; then
-mysqlp ${MYSQL_ROOT_PASS}
fi
NGINX_ROOT_DIR="/etc/nginx"
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_ROOT_DIR}/nginx.conf
if rpm -q "firewalld"; then
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
systemctl restart firewalld.service
fi
systemctl restart nginx
echo ""
echo "$RES_INSTALL_SUCCESS"
echo "$RES_QUESTIONS"

View File

@ -25,21 +25,6 @@ if ! [[ "$REV" =~ ^[0-9]+$ ]]; then
REV=7;
fi
read_unsupported_installation () {
read -p "$RES_CHOICE_INSTALLATION " CHOICE_INSTALLATION
case "$CHOICE_INSTALLATION" in
y|Y ) yum -y install $DIST*-release
;;
n|N ) exit 0;
;;
* ) echo $RES_CHOICE;
read_unsupported_installation
;;
esac
}
{ yum check-update postgresql; PSQLExitCode=$?; } || true #Checking for postgresql update
{ yum check-update $DIST*-release; exitCode=$?; } || true #Checking for distribution update
@ -57,34 +42,44 @@ if rpm -qa | grep mariadb.*config >/dev/null 2>&1; then
echo $RES_MARIADB && exit 0
fi
# add epel repo
#Add repositories: EPEL, REMI and RPMFUSION
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-$REV.noarch.rpm || true
rpm -ivh https://rpms.remirepo.net/enterprise/remi-release-$REV.rpm || true
yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$REV.noarch.rpm
MONOREV=$REV
if [ "$REV" = "9" ]; then
MONOREV="8"
yum localinstall -y --nogpgcheck https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/xorg-x11-font-utils-7.5-41.el8.x86_64.rpm
elif [ "$REV" = "8" ]; then
POWERTOOLS_REPO="--enablerepo=powertools"
fi
#add rabbitmq & erlang repo
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | os=centos dist=$MONOREV bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | os=centos dist=$MONOREV bash
#add nodejs repo
curl -sL https://rpm.nodesource.com/setup_16.x | bash - || true
#add yarn
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo || true
curl -sL https://rpm.nodesource.com/setup_16.x | sed 's/centos|/'$DIST'|/g' | sudo bash - || true
#add dotnet repo
rpm -Uvh https://packages.microsoft.com/config/centos/$REV/packages-microsoft-prod.rpm || true
if [ $REV = "7" ] || [[ $DIST != "redhat" && $REV = "8" ]]; then
rpm -Uvh https://packages.microsoft.com/config/centos/$REV/packages-microsoft-prod.rpm || true
elif rpm -q packages-microsoft-prod; then
yum remove -y packages-microsoft-prod dotnet*
fi
#add mysql repo
case $REV in
8) dnf remove -y @mysql
dnf module -y reset mysql && dnf module -y disable mysql
${package_manager} localinstall -y https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm || true ;;
7) ${package_manager} localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm || true ;;
6) ${package_manager} localinstall -y https://dev.mysql.com/get/mysql80-community-release-el6-5.noarch.rpm || true ;;
esac
[ "$REV" != "7" ] && dnf remove -y @mysql && dnf module -y reset mysql && dnf module -y disable mysql
MYSQL_REPO_VERSION="$(curl https://repo.mysql.com | grep -oP "mysql80-community-release-el${REV}-\K.*" | grep -o '^[^.]*' | sort | tail -n1)"
yum localinstall -y https://repo.mysql.com/mysql80-community-release-el${REV}-${MYSQL_REPO_VERSION}.noarch.rpm || true
if ! rpm -q mysql-community-server; then
MYSQL_FIRST_TIME_INSTALL="true";
fi
#add elasticsearch repo
ELASTIC_VERSION="7.13.1"
ELASTIC_VERSION="7.16.3"
ELASTIC_DIST=$(echo $ELASTIC_VERSION | awk '{ print int($1) }')
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elasticsearch.repo <<END
@ -109,45 +104,21 @@ gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
END
if [ "$REV" = "8" ]; then
rabbitmq_version="-3.8.12"
cat > /etc/yum.repos.d/rabbitmq-server.repo <<END
[rabbitmq-server]
name=rabbitmq-server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=0
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
END
fi
${package_manager} -y install python3-dnf-plugin-versionlock || ${package_manager} -y install yum-plugin-versionlock
${package_manager} versionlock clear
${package_manager} -y install epel-release \
python3 \
expect \
nano \
nodejs \
gcc-c++ \
make \
yarn \
dotnet-sdk-6.0 \
elasticsearch-${ELASTIC_VERSION} --enablerepo=elasticsearch \
mysql-server \
nginx \
supervisor \
postgresql \
postgresql-server \
rabbitmq-server$rabbitmq_version \
redis --enablerepo=remi \
java
SDL2 $POWERTOOLS_REPO
py3_version=$(python3 -c 'import sys; print(sys.version_info.minor)')
if [[ $py3_version -lt 6 ]]; then
@ -171,4 +142,4 @@ if [ ! -e /usr/bin/json ]; then
fi
systemctl daemon-reload
package_services="rabbitmq-server postgresql redis supervisord nginx mysqld"
package_services="rabbitmq-server postgresql redis nginx mysqld"

View File

@ -32,3 +32,18 @@ check_hardware () {
if [ "$SKIP_HARDWARE_CHECK" != "true" ]; then
check_hardware
fi
read_unsupported_installation () {
read -p "$RES_CHOICE_INSTALLATION " CHOICE_INSTALLATION
case "$CHOICE_INSTALLATION" in
y|Y ) yum -y install $DIST*-release
;;
n|N ) exit 0;
;;
* ) echo $RES_CHOICE;
read_unsupported_installation
;;
esac
}

View File

@ -47,7 +47,6 @@ dotnet build ASC.Migrations.sln -o ${SRC_PATH}/ASC.Migration.Runner/service/
# Array of names backend services in directory common (Nodejs)
services_name_backend_nodejs=()
services_name_backend_nodejs+=(ASC.UrlShortener)
services_name_backend_nodejs+=(ASC.Socket.IO)
services_name_backend_nodejs+=(ASC.SsoAuth)

View File

@ -242,9 +242,9 @@ restart_services() {
echo "OK"
echo -n "Restarting services... "
for SVC in login api urlshortener socket studio-notify notify \
people-server files files-services studio backup telegram-service \
webhooks-service clear-events backup-background migration ssoauth doceditor
for SVC in login api socket studio-notify notify \
people-server files files-services studio backup \
clear-events backup-background ssoauth doceditor
do
systemctl enable ${PRODUCT}-$SVC >/dev/null 2>&1
systemctl restart ${PRODUCT}-$SVC
@ -303,7 +303,7 @@ establish_mysql_conn(){
SSL Mode=none;AllowPublicKeyRetrieval=true;Connection Timeout=30;Maximum Pool Size=300"
$JSON_USERCONF "this.ConnectionStrings={'default': {'connectionString': \"$CONNECTION_STRING\"}}" >/dev/null 2>&1
sed "s/Server=.*/$CONNECTION_STRING\"/g" -i $PRODUCT_DIR/services/ASC.Migration.Runner/appsettings.json
sed "s/Server=.*/$CONNECTION_STRING\"/g" -i $PRODUCT_DIR/services/ASC.Migration.Runner/appsettings.runner.json
change_mysql_config
@ -449,15 +449,11 @@ setup_nginx(){
PORTS+=('5011') #ASC.Login
PORTS+=('5012') #ASC.Data.Backup
PORTS+=('5013') #ASC.Files/editor
PORTS+=('5018') #ASC.Migration
PORTS+=('5027') #ASC.ClearEvents
PORTS+=('5028') #ASC.Socket.IO
PORTS+=('5029') #ASC.UrlShortener
PORTS+=('5031') #ASC.Webhooks.Service
PORTS+=('5032') #ASC.Data.Backup.BackgroundTasks
PORTS+=('8081') #Storybook
PORTS+=('9834') #ASC.SsoAuth
PORTS+=('51702') #ASC.TelegramService
setsebool -P httpd_can_network_connect on
;;
disabled)
@ -501,16 +497,6 @@ setup_docs() {
'secret': {'value': \"$DOCUMENT_SERVER_JWT_SECRET\",'header': \"$DOCUMENT_SERVER_JWT_HEADER\"}, \
'url': {'public': \"http://${DOCUMENT_SERVER_HOST}:${DOCUMENT_SERVER_PORT}\", 'internal': \"http://${DOCUMENT_SERVER_HOST}:${DOCUMENT_SERVER_PORT}\",'portal': \"http://$APP_HOST:$APP_PORT\"}}}" >/dev/null 2>&1
#Docs Database Migration
local DOCUMENT_SERVER_DB_HOST=$(json -f ${DS_CONF} services.CoAuthoring.sql.dbHost)
local DOCUMENT_SERVER_DB_PORT=$(json -f ${DS_CONF} services.CoAuthoring.sql.dbPort)
local DOCUMENT_SERVER_DB_NAME=$(json -f ${DS_CONF} services.CoAuthoring.sql.dbName)
local DOCUMENT_SERVER_DB_USERNAME=$(json -f ${DS_CONF} services.CoAuthoring.sql.dbUser)
local DOCUMENT_SERVER_DB_PASSWORD=$(json -f ${DS_CONF} services.CoAuthoring.sql.dbPass)
local DS_CONNECTION_STRING="Host=${DOCUMENT_SERVER_DB_HOST};Port=${DOCUMENT_SERVER_DB_PORT};Database=${DOCUMENT_SERVER_DB_NAME};Username=${DOCUMENT_SERVER_DB_USERNAME};Password=${DOCUMENT_SERVER_DB_PASSWORD};"
sed "s/Host=.*/$DS_CONNECTION_STRING\"/g" -i $PRODUCT_DIR/services/ASC.Migration.Runner/appsettings.json
echo "OK"
}

View File

@ -74,15 +74,12 @@ services_name_backend+=(ASC.Data.Backup)
services_name_backend+=(ASC.Files.Service)
services_name_backend+=(ASC.Notify)
services_name_backend+=(ASC.Studio.Notify)
services_name_backend+=(ASC.TelegramService)
services_name_backend+=(ASC.UrlShortener.Svc)
services_name_backend+=(ASC.Web.Api)
services_name_backend+=(ASC.Web.Studio)
services_name_backend+=(ASC.Data.Backup.BackgroundTasks)
services_name_backend+=(ASC.ClearEvents)
services_name_backend+=(ASC.Migration)
services_name_backend+=(ASC.Webhooks.Service)
services_name_backend+=(ASC.ApiSystem)
services_name_backend+=(ASC.Web.HealthChecks.UI)
# Publish backend services
for i in ${!services_name_backend[@]}; do
@ -94,7 +91,6 @@ done
# Array of names backend services in directory common (Nodejs)
services_name_backend_nodejs=()
services_name_backend_nodejs+=(ASC.UrlShortener)
services_name_backend_nodejs+=(ASC.Socket.IO)
services_name_backend_nodejs+=(ASC.SsoAuth)

View File

@ -44,7 +44,7 @@ CORE=" --core:products:folder=${BASE_DIR}/products --core:products:subfolder=ser
SERVICE_NAME=(
api
urlshortener
api-system
socket
studio-notify
notify
@ -53,12 +53,9 @@ SERVICE_NAME=(
files-services
studio
backup
telegram-service
ssoauth
webhooks-service
clear-events
backup-background
migration
doceditor
migration-runner
login
@ -71,10 +68,10 @@ reassign_values (){
WORK_DIR="${BASE_DIR}/studio/ASC.Web.Api/"
EXEC_FILE="ASC.Web.Api.dll"
;;
urlshortener )
SERVICE_PORT="5029"
WORK_DIR="${BASE_DIR}/services/ASC.UrlShortener/"
EXEC_FILE="index.js"
api-system )
SERVICE_PORT="5010"
WORK_DIR="${BASE_DIR}/services/ASC.ApiSystem/"
EXEC_FILE="ASC.ApiSystem.dll"
;;
socket )
SERVICE_PORT="5028"
@ -116,21 +113,11 @@ reassign_values (){
WORK_DIR="${BASE_DIR}/services/ASC.Data.Backup/"
EXEC_FILE="ASC.Data.Backup.dll"
;;
telegram-service )
SERVICE_PORT="51702"
WORK_DIR="${BASE_DIR}/services/ASC.TelegramService/"
EXEC_FILE="ASC.TelegramService.dll"
;;
ssoauth )
SERVICE_PORT="9834"
WORK_DIR="${BASE_DIR}/services/ASC.SsoAuth/"
EXEC_FILE="app.js"
;;
webhooks-service )
SERVICE_PORT="5031"
WORK_DIR="${BASE_DIR}/services/ASC.Webhooks.Service/"
EXEC_FILE="ASC.Webhooks.Service.dll"
;;
clear-events )
SERVICE_PORT="5027"
WORK_DIR="${BASE_DIR}/services/ASC.ClearEvents/"
@ -141,11 +128,6 @@ reassign_values (){
WORK_DIR="${BASE_DIR}/services/ASC.Data.Backup.BackgroundTasks/"
EXEC_FILE="ASC.Data.Backup.BackgroundTasks.dll"
;;
migration )
SERVICE_PORT="5018"
WORK_DIR="${BASE_DIR}/services/ASC.Migration/"
EXEC_FILE="ASC.Migration.dll"
;;
doceditor )
SERVICE_PORT="5013"
WORK_DIR="${BASE_DIR}/products/ASC.Files/editor/"

View File

@ -2,7 +2,7 @@ Source: {{product}}
Section: web
Priority: optional
Maintainer: onlyoffice
Build-Depends: debhelper (>= 10), nodejs (>=14), dotnet-sdk-6.0, yarn
Build-Depends: debhelper (>= 10), nodejs (>=18), dotnet-sdk-6.0, yarn
Standards-Version: {{package_header_tag_version}}
Homepage: https://www.onlyoffice.com/
Architecture: any
@ -17,7 +17,6 @@ Depends: {{product}}-api (= {{package_header_tag_version}}),
{{product}}-files (= {{package_header_tag_version}}),
{{product}}-files-services (= {{package_header_tag_version}}),
{{product}}-login (= {{package_header_tag_version}}),
{{product}}-migration (= {{package_header_tag_version}}),
{{product}}-migration-runner (= {{package_header_tag_version}}),
{{product}}-notify (= {{package_header_tag_version}}),
{{product}}-people-server (= {{package_header_tag_version}}),
@ -26,10 +25,7 @@ Depends: {{product}}-api (= {{package_header_tag_version}}),
{{product}}-socket (= {{package_header_tag_version}}),
{{product}}-ssoauth (= {{package_header_tag_version}}),
{{product}}-studio (= {{package_header_tag_version}}),
{{product}}-studio-notify (= {{package_header_tag_version}}),
{{product}}-telegram-service (= {{package_header_tag_version}}),
{{product}}-urlshortener (= {{package_header_tag_version}}),
{{product}}-webhooks-service (= {{package_header_tag_version}})
{{product}}-studio-notify (= {{package_header_tag_version}})
Description: Description
Package: {{product}}-common
@ -80,7 +76,7 @@ Description: Description
Package: {{product}}-socket
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
nodejs (>=14),
nodejs (>=16),
${misc:Depends},
${shlibs:Depends}
Description: Description
@ -93,7 +89,7 @@ Depends: {{product}}-common (= {{package_header_tag_version}}),
${shlibs:Depends}
Description: Description
Package: {{product}}-telegram-service
Package: {{product}}-api
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
dotnet-sdk-6.0,
@ -101,15 +97,7 @@ Depends: {{product}}-common (= {{package_header_tag_version}}),
${shlibs:Depends}
Description: Description
Package: {{product}}-urlshortener
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
nodejs (>=14),
${misc:Depends},
${shlibs:Depends}
Description: Description
Package: {{product}}-api
Package: {{product}}-api-system
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
dotnet-sdk-6.0,
@ -133,7 +121,7 @@ Description: Description
Package: {{product}}-ssoauth
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
nodejs (>=14),
nodejs (>=16),
${misc:Depends},
${shlibs:Depends}
Description: Description
@ -154,14 +142,6 @@ Depends: {{product}}-common (= {{package_header_tag_version}}),
${shlibs:Depends}
Description: Description
Package: {{product}}-migration
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
dotnet-sdk-6.0,
${misc:Depends},
${shlibs:Depends}
Description: Description
Package: {{product}}-migration-runner
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
@ -178,18 +158,10 @@ Depends: {{product}}-common (= {{package_header_tag_version}}),
${shlibs:Depends}
Description: Description
Package: {{product}}-webhooks-service
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
dotnet-sdk-6.0,
${misc:Depends},
${shlibs:Depends}
Description: Description
Package: {{product}}-doceditor
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
nodejs (>=14),
nodejs (>=16),
${misc:Depends},
${shlibs:Depends}
Description: Description
@ -197,7 +169,7 @@ Description: Description
Package: {{product}}-login
Architecture: any
Depends: {{product}}-common (= {{package_header_tag_version}}),
nodejs (>=14),
nodejs (>=16),
${misc:Depends},
${shlibs:Depends}
Description: Description

View File

@ -0,0 +1 @@
../../../publish/services/ASC.ApiSystem/service/* var/www/{{product}}/services/ASC.ApiSystem

View File

@ -1 +0,0 @@
../../../publish/services/ASC.Migration/service/* var/www/{{product}}/services/ASC.Migration

View File

@ -1 +0,0 @@
../../../publish/services/ASC.TelegramService/service/* var/www/{{product}}/services/ASC.TelegramService

View File

@ -1 +0,0 @@
../../../publish/services/ASC.UrlShortener/service/* var/www/{{product}}/services/ASC.UrlShortener

View File

@ -1 +0,0 @@
../../../publish/services/ASC.Webhooks.Service/service/* var/www/{{product}}/services/ASC.Webhooks.Service

View File

@ -36,8 +36,7 @@ override_dh_auto_build:
sed -i "s@var/www@var/www/${PRODUCT}@g" ${SRC_PATH}/config/nginx/*.conf
sed -i "s@var/www@var/www/${PRODUCT}@g" ${SRC_PATH}/config/nginx/includes/*.conf
json -I -f ${SRC_PATH}/config/appsettings.services.json -e "this.logPath=\"/var/log/onlyoffice/${PRODUCT}\"" \
-e "this.urlshortener={ 'path': '../ASC.UrlShortener/index.js' }" -e "this.socket={ 'path': '../ASC.Socket.IO/' }" \
json -I -f ${SRC_PATH}/config/appsettings.services.json -e "this.logPath=\"/var/log/onlyoffice/${PRODUCT}\"" -e "this.socket={ 'path': '../ASC.Socket.IO/' }" \
-e "this.ssoauth={ 'path': '../ASC.SsoAuth/' }" -e "this.core={ 'products': { 'folder': '/var/www/${PRODUCT}/products', 'subfolder': 'server'} }"
override_dh_fixperms:

View File

@ -5,12 +5,13 @@
DOCKER_IMAGE_PREFIX=${STATUS}docspace
DOCKER_TAG=latest
CONTAINER_PREFIX=${PRODUCT}-
MYSQL_VERSION=8.0.18
MYSQL_VERSION=8.0.31
MYSQL_IMAGE=mysql:${MYSQL_VERSION}
ELK_VERSION=7.13.1
SERVICE_PORT=5050
DOCUMENT_SERVER_IMAGE_NAME=onlyoffice/4testing-documentserver-ee:latest
DOCKERFILE=Dockerfile.app
APP_DOTNET_ENV=""
# zookeeper #
ZOO_PORT=2181
@ -53,9 +54,6 @@
BACKUP_HOST=${CONTAINER_PREFIX}backup
BACKUP_BACKGRUOND_TASKS_HOST=${CONTAINER_PREFIX}backup-background-tasks
CLEAR_EVENTS_HOST=${CONTAINER_PREFIX}clear-events
MIGRATION_HOST=${CONTAINER_PREFIX}migration
WEBHOOKS_SERVICE_HOST=${CONTAINER_PREFIX}webhooks-service
STORAGE_ENCRYPTION_HOST=${CONTAINER_PREFIX}storage-encryption
FILES_HOST=${CONTAINER_PREFIX}files
FILES_SERVICES_HOST=${CONTAINER_PREFIX}files-services
STORAGE_MIGRATION_HOST=${CONTAINER_PREFIX}storage-migration
@ -63,8 +61,6 @@
PEOPLE_SERVER_HOST=${CONTAINER_PREFIX}people-server
SOCKET_HOST=${CONTAINER_PREFIX}socket
STUDIO_NOTIFY_HOST=${CONTAINER_PREFIX}studio-notify
TELEGRAM_SERVICE_HOST=${CONTAINER_PREFIX}telegram-service
URLSHORTENER_HOST=${CONTAINER_PREFIX}urlshortener
API_HOST=${CONTAINER_PREFIX}api
STUDIO_HOST=${CONTAINER_PREFIX}studio
SSOAUTH_HOST=${CONTAINER_PREFIX}ssoauth
@ -72,15 +68,13 @@
PROXY_HOST=${CONTAINER_PREFIX}proxy
DOCEDITOR_HOST=${CONTAINER_PREFIX}doceditor
LOGIN_HOST=${CONTAINER_PREFIX}login
HELTHCHECKS_HOST=${CONTAINER_PREFIX}healthchecks
# proxy upstream environment #
SERVICE_API_SYSTEM=${API_SYSTEM_HOST}:${SERVICE_PORT}
SERVICE_BACKUP=${BACKUP_HOST}:${SERVICE_PORT}
SERVICE_BACKUP_BACKGRUOND_TASKS=${BACKUP_BACKGRUOND_TASKS_HOST}:${SERVICE_PORT}
SERVICE_CLEAR_EVENTS=${CLEAR_EVENTS_HOST}:${SERVICE_PORT}
SERVICE_MIGRATION=${MIGRATION_HOST}:${SERVICE_PORT}
SERVICE_WEBHOOKS_SERVICE=${WEBHOOKS_SERVICE_HOST}:${SERVICE_PORT}
SERVICE_STORAGE_ENCRYPTION=${STORAGE_ENCRYPTION_HOST}:${SERVICE_PORT}
SERVICE_FILES=${FILES_HOST}:${SERVICE_PORT}
SERVICE_FILES_SERVICES=${FILES_SERVICES_HOST}:${SERVICE_PORT}
SERVICE_STORAGE_MIGRATION=${STORAGE_MIGRATION_HOST}:${SERVICE_PORT}
@ -88,8 +82,6 @@
SERVICE_PEOPLE_SERVER=${PEOPLE_SERVER_HOST}:${SERVICE_PORT}
SERVICE_SOCKET=${SOCKET_HOST}:${SERVICE_PORT}
SERVICE_STUDIO_NOTIFY=${STUDIO_NOTIFY_HOST}:${SERVICE_PORT}
SERVICE_TELEGRAM_SERVICE=${TELEGRAM_SERVICE_HOST}:${SERVICE_PORT}
SERVICE_URLSHORTENER=${URLSHORTENER_HOST}:${SERVICE_PORT}
SERVICE_API=${API_HOST}:${SERVICE_PORT}
SERVICE_STUDIO=${STUDIO_HOST}:${SERVICE_PORT}
SERVICE_SSOAUTH=${SSOAUTH_HOST}:${SERVICE_PORT}

View File

@ -140,8 +140,8 @@ RUN cd /app/onlyoffice/src/ && \
cp -f config/nginx/onlyoffice*.conf /etc/nginx/conf.d/ && \
mkdir -p /etc/nginx/includes/ && cp -f config/nginx/includes/onlyoffice*.conf /etc/nginx/includes/ && \
sed -e 's/#//' -i /etc/nginx/conf.d/onlyoffice.conf && \
dotnet restore ASC.Web.sln && \
dotnet build -r linux-x64 ASC.Web.sln && \
dotnet restore ASC.Web.slnf && \
dotnet build -r linux-x64 ASC.Web.slnf && \
cd products/ASC.People/Server && \
dotnet -d publish --no-build --self-contained -r linux-x64 -o /var/www/products/ASC.People/server && \
cd ../../../ && \

View File

@ -1,7 +1,7 @@
ARG SRC_PATH="/app/onlyoffice/src"
ARG BUILD_PATH="/var/www"
ARG DOTNET_SDK="mcr.microsoft.com/dotnet/sdk:6.0"
ARG DOTNET_RUN="mcr.microsoft.com/dotnet/aspnet:6.0"
ARG DOTNET_SDK="mcr.microsoft.com/dotnet/sdk:7.0"
ARG DOTNET_RUN="mcr.microsoft.com/dotnet/aspnet:7.0"
FROM $DOTNET_SDK AS base
ARG RELEASE_DATE="2016-06-22"
@ -30,10 +30,11 @@ RUN apt-get -y update && \
npm && \
locale-gen en_US.UTF-8 && \
npm install --global yarn && \
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - && \
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
ADD https://api.github.com/repos/ONLYOFFICE/DocSpace/git/refs/heads/${GIT_BRANCH} version.json
RUN echo ${GIT_BRANCH} && \
git clone --recurse-submodules -b ${GIT_BRANCH} https://github.com/ONLYOFFICE/DocSpace.git ${SRC_PATH}
@ -92,7 +93,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onl
EXPOSE 5050
ENTRYPOINT ["python3", "docker-entrypoint.py"]
FROM node:16.16-slim as noderun
FROM node:18.12.1-slim as noderun
ARG BUILD_PATH
ARG SRC_PATH
ENV BUILD_PATH=${BUILD_PATH}
@ -149,18 +150,12 @@ RUN chown nginx:nginx /etc/nginx/* -R && \
# changes for upstream configure
sed -i 's/127.0.0.1:5010/$service_api_system/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5012/$service_backup/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5021/$service_crm/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5007/$service_files/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5004/$service_people_server/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5020/$service_projects_server/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5000/$service_api/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5003/$service_studio/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5023/$service_calendar/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9899/$service_socket/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9834/$service_sso/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5022/$service_mail/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9999/$service_urlshortener/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5034/$service_migration/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5013/$service_doceditor/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5011/$service_login/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/$public_root/\/var\/www\/public\//' /etc/nginx/conf.d/onlyoffice.conf && \
@ -168,17 +163,21 @@ RUN chown nginx:nginx /etc/nginx/* -R && \
## Doceditor ##
FROM noderun as doceditor
WORKDIR ${BUILD_PATH}/products/ASC.Files/editor
WORKDIR ${BUILD_PATH}/products/ASC.Editors/editor
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${SRC_PATH}/build/deploy/editor/ .
ENTRYPOINT ["node", "server.js"]
CMD ["server.js", "ASC.Editors"]
## Login ##
FROM noderun as login
WORKDIR ${BUILD_PATH}/products/ASC.Login/login
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${SRC_PATH}/build/deploy/login/ .
ENTRYPOINT ["node", "server.js"]
CMD ["server.js", "ASC.Login"]
## ASC.Data.Backup.BackgroundTasks ##
FROM dotnetrun AS backup_background
@ -196,7 +195,7 @@ WORKDIR ${BUILD_PATH}/services/ASC.ApiSystem/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ApiSystem/service/ .
CMD [" ASC.ApiSystem.dll", " ASC.ApiSystem"]
CMD ["ASC.ApiSystem.dll", "ASC.ApiSystem"]
## ASC.ClearEvents ##
FROM dotnetrun AS clear-events
@ -207,15 +206,6 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ClearE
CMD ["ASC.ClearEvents.dll", "ASC.ClearEvents"]
## ASC.Migration ##
FROM dotnetrun AS migration
WORKDIR ${BUILD_PATH}/services/ASC.Migration/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Migration/service/ .
CMD ["ASC.Migration.dll", "ASC.Migration"]
## ASC.Data.Backup ##
FROM dotnetrun AS backup
WORKDIR ${BUILD_PATH}/services/ASC.Data.Backup/
@ -288,24 +278,6 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Studio
CMD ["ASC.Studio.Notify.dll", "ASC.Studio.Notify"]
## ASC.TelegramService ##
FROM dotnetrun AS telegram_service
WORKDIR ${BUILD_PATH}/services/ASC.TelegramService/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.TelegramService/service/ .
CMD ["ASC.TelegramService.dll", "ASC.TelegramService"]
## ASC.UrlShortener ##
FROM noderun AS urlshortener
WORKDIR ${BUILD_PATH}/services/ASC.UrlShortener/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener/service/ .
CMD ["index.js", "ASC.UrlShortener"]
## ASC.Web.Api ##
FROM dotnetrun AS api
WORKDIR ${BUILD_PATH}/studio/ASC.Web.Api/
@ -315,15 +287,6 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Ap
CMD ["ASC.Web.Api.dll", "ASC.Web.Api"]
## ASC.Webhooks.Service ##
FROM dotnetrun AS webhooks-service
WORKDIR ${BUILD_PATH}/services/ASC.Webhooks.Service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Webhooks.Service/service/ .
CMD ["ASC.Webhooks.Service.dll", "ASC.Webhooks.Service"]
## ASC.Web.Studio ##
FROM dotnetrun AS studio
WORKDIR ${BUILD_PATH}/studio/ASC.Web.Studio/
@ -333,6 +296,16 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.St
CMD ["ASC.Web.Studio.dll", "ASC.Web.Studio"]
## ASC.Web.HealthChecks.UI ##
FROM dotnetrun AS healthchecks
WORKDIR ${BUILD_PATH}/services/ASC.Web.HealthChecks.UI/service
COPY --chown=onlyoffice:onlyoffice docker-healthchecks-entrypoint.sh ./docker-healthchecks-entrypoint.sh
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.HealthChecks.UI/service/ .
ENTRYPOINT ["./docker-healthchecks-entrypoint.sh"]
CMD ["ASC.Web.HealthChecks.UI.dll", "ASC.Web.HealthChecks.UI"]
## ASC.Migration.Runner ##
FROM $DOTNET_RUN AS onlyoffice-migration-runner
ARG BUILD_PATH

View File

@ -1,7 +1,7 @@
ARG SRC_PATH="/app/onlyoffice/src"
ARG BUILD_PATH="/var/www"
ARG DOTNET_SDK="mcr.microsoft.com/dotnet/sdk:6.0"
ARG DOTNET_RUN="mcr.microsoft.com/dotnet/aspnet:6.0"
ARG DOTNET_SDK="mcr.microsoft.com/dotnet/sdk:7.0"
ARG DOTNET_RUN="mcr.microsoft.com/dotnet/aspnet:7.0"
FROM $DOTNET_SDK AS base
ARG RELEASE_DATE="2022-10-09"
@ -30,7 +30,7 @@ RUN apt-get -y update && \
npm && \
locale-gen en_US.UTF-8 && \
npm install --global yarn && \
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - && \
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
@ -91,7 +91,7 @@ COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onl
EXPOSE 5050
ENTRYPOINT ["python3", "docker-entrypoint.py"]
FROM node:16.16-slim as noderun
FROM node:18.12.1-slim as noderun
ARG BUILD_PATH
ARG SRC_PATH
ENV BUILD_PATH=${BUILD_PATH}
@ -130,6 +130,7 @@ ENV DNS_NAMESERVER=127.0.0.11 \
RUN apt-get -y update && \
apt-get install -yq vim && \
apt-get install -y dos2unix && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /usr/share/nginx/html/*
@ -138,8 +139,13 @@ COPY --from=base /etc/nginx/conf.d /etc/nginx/conf.d
COPY --from=base /etc/nginx/includes /etc/nginx/includes
COPY /config/nginx/templates/upstream.conf.template /etc/nginx/templates/upstream.conf.template
COPY /config/nginx/templates/nginx.conf.template /etc/nginx/nginx.conf.template
COPY prepare-nginx-proxy.sh /docker-entrypoint.d/prepare-nginx-proxy.sh
RUN dos2unix /docker-entrypoint.d/prepare-nginx-proxy.sh && \
apt-get --purge remove -y dos2unix && \
rm -rf /var/lib/apt/lists/*
# add defualt user and group for no-root run
RUN chown nginx:nginx /etc/nginx/* -R && \
chown nginx:nginx /docker-entrypoint.d/* && \
@ -152,8 +158,8 @@ RUN chown nginx:nginx /etc/nginx/* -R && \
sed -i 's/127.0.0.1:5003/$service_studio/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9899/$service_socket/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9834/$service_sso/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:9999/$service_urlshortener/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5034/$service_migration/' /etc/nginx/conf.d/onlyoffice.conf && \
# sed -i 's/127.0.0.1:9999/$service_urlshortener/' /etc/nginx/conf.d/onlyoffice.conf && \
# sed -i 's/127.0.0.1:5034/$service_migration/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5013/$service_doceditor/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5011/$service_login/' /etc/nginx/conf.d/onlyoffice.conf && \
sed -i 's/127.0.0.1:5001/$service_client/' /etc/nginx/conf.d/onlyoffice.conf && \
@ -164,27 +170,36 @@ FROM dotnetrun AS backup_background
WORKDIR ${BUILD_PATH}/services/ASC.Data.Backup.BackgroundTasks/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Backup.BackgroundTasks/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Data.Backup.BackgroundTasks/service/ .
CMD ["ASC.Data.Backup.BackgroundTasks.dll", "ASC.Data.Backup.BackgroundTasks"]
# ASC.ApiSystem ##
FROM dotnetrun AS api_system
WORKDIR ${BUILD_PATH}/services/ASC.ApiSystem/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ApiSystem/service/ .
CMD ["ASC.ApiSystem.dll", "ASC.ApiSystem"]
## ASC.ClearEvents ##
FROM dotnetrun AS clear-events
WORKDIR ${BUILD_PATH}/services/ASC.ClearEvents/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ClearEvents/service/ .
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.ClearEvents/service/ .
CMD ["ASC.ClearEvents.dll", "ASC.ClearEvents"]
## ASC.Migration ##
FROM dotnetrun AS migration
WORKDIR ${BUILD_PATH}/services/ASC.Migration/
# FROM dotnetrun AS migration
# WORKDIR ${BUILD_PATH}/services/ASC.Migration/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Migration/service/ .
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Migration/service/ .
CMD ["ASC.Migration.dll", "ASC.Migration"]
# CMD ["ASC.Migration.dll", "ASC.Migration"]
## ASC.Data.Backup ##
FROM dotnetrun AS backup
@ -214,13 +229,13 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Files.
CMD ["ASC.Files.Service.dll", "ASC.Files.Service"]
## ASC.Notify ##
FROM dotnetrun AS notify
WORKDIR ${BUILD_PATH}/services/ASC.Notify/service
# FROM dotnetrun AS notify
# WORKDIR ${BUILD_PATH}/services/ASC.Notify/service
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Notify/service/ .
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Notify/service/ .
CMD ["ASC.Notify.dll", "ASC.Notify"]
# CMD ["ASC.Notify.dll", "ASC.Notify"]
## ASC.People ##
FROM dotnetrun AS people_server
@ -259,22 +274,22 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Studio
CMD ["ASC.Studio.Notify.dll", "ASC.Studio.Notify"]
## ASC.TelegramService ##
FROM dotnetrun AS telegram_service
WORKDIR ${BUILD_PATH}/services/ASC.TelegramService/
# FROM dotnetrun AS telegram_service
# WORKDIR ${BUILD_PATH}/services/ASC.TelegramService/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.TelegramService/service/ .
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.TelegramService/service/ .
CMD ["ASC.TelegramService.dll", "ASC.TelegramService"]
# CMD ["ASC.TelegramService.dll", "ASC.TelegramService"]
## ASC.UrlShortener ##
FROM noderun AS urlshortener
WORKDIR ${BUILD_PATH}/services/ASC.UrlShortener/service/
# FROM noderun AS urlshortener
# WORKDIR ${BUILD_PATH}/services/ASC.UrlShortener/service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener/service/ .
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.UrlShortener/service/ .
CMD ["index.js", "ASC.UrlShortener"]
# CMD ["index.js", "ASC.UrlShortener"]
## ASC.Web.Api ##
FROM dotnetrun AS api
@ -286,13 +301,13 @@ COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Web.Ap
CMD ["ASC.Web.Api.dll", "ASC.Web.Api"]
## ASC.Webhooks.Service ##
FROM dotnetrun AS webhooks-service
WORKDIR ${BUILD_PATH}/services/ASC.Webhooks.Service/
# FROM dotnetrun AS webhooks-service
# WORKDIR ${BUILD_PATH}/services/ASC.Webhooks.Service/
COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Webhooks.Service/service/ .
# COPY --chown=onlyoffice:onlyoffice docker-entrypoint.py ./docker-entrypoint.py
# COPY --from=base --chown=onlyoffice:onlyoffice ${BUILD_PATH}/services/ASC.Webhooks.Service/service/ .
CMD ["ASC.Webhooks.Service.dll", "ASC.Webhooks.Service"]
# CMD ["ASC.Webhooks.Service.dll", "ASC.Webhooks.Service"]
## ASC.Web.Studio ##
FROM dotnetrun AS studio
@ -310,26 +325,16 @@ ARG SRC_PATH
ENV BUILD_PATH=${BUILD_PATH}
ENV SRC_PATH=${SRC_PATH}
WORKDIR ${BUILD_PATH}/services/ASC.Migration.Runner/
COPY ./docker-migration-entrypoint.sh ./docker-migration-entrypoint.sh
RUN apt-get update && \
apt-get install -y dos2unix
COPY docker-migration-entrypoint.sh docker-migration-entrypoint.sh
RUN dos2unix docker-migration-entrypoint.sh && \
apt-get --purge remove -y dos2unix && \
rm -rf /var/lib/apt/lists/*
COPY --from=base ${SRC_PATH}/ASC.Migration.Runner/service/ .
ENTRYPOINT ["./docker-migration-entrypoint.sh"]
## image for k8s bin-share ##
FROM busybox:latest AS bin_share
RUN mkdir -p /app/appserver/ASC.Files/server && \
mkdir -p /app/appserver/ASC.People/server/ && \
addgroup --system --gid 107 onlyoffice && \
adduser -u 104 onlyoffice --home /var/www/onlyoffice --system -G onlyoffice
COPY bin-share-docker-entrypoint.sh /app/docker-entrypoint.sh
COPY --from=base /var/www/products/ASC.Files/server/ /app/appserver/ASC.Files/server/
COPY --from=base /var/www/products/ASC.People/server/ /app/appserver/ASC.People/server/
ENTRYPOINT ["./app/docker-entrypoint.sh"]
## image for k8s wait-bin-share ##
FROM busybox:latest AS wait_bin_share
RUN mkdir /app
COPY wait-bin-share-docker-entrypoint.sh /app/docker-entrypoint.sh
ENTRYPOINT ["./app/docker-entrypoint.sh"]

View File

@ -15,12 +15,12 @@ services:
target: clear-events
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}"
onlyoffice-migration:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: migration
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
# onlyoffice-migration:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: migration
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
onlyoffice-backup:
build:
@ -43,12 +43,12 @@ services:
target: files_services
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}"
onlyoffice-notify:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: notify
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-notify:${DOCKER_TAG}"
# onlyoffice-notify:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: notify
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-notify:${DOCKER_TAG}"
onlyoffice-people-server:
build:
@ -71,19 +71,19 @@ services:
target: studio_notify
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}"
onlyoffice-telegram-service:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: telegram_service
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
# onlyoffice-telegram-service:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: telegram_service
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
onlyoffice-urlshortener:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: urlshortener
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
# onlyoffice-urlshortener:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: urlshortener
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
onlyoffice-api:
build:
@ -92,6 +92,13 @@ services:
target: api
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}"
onlyoffice-api-system:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: api_system
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api-system:${DOCKER_TAG}"
onlyoffice-studio:
build:
context: ./
@ -106,26 +113,12 @@ services:
target: ssoauth
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
onlyoffice-webhooks-service:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: webhooks-service
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
onlyoffice-bin-share:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: bin_share
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-bin-share:${DOCKER_TAG}"
onlyoffice-wait-bin-share:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: wait_bin_share
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-wait-bin-share:${DOCKER_TAG}"
# onlyoffice-webhooks-service:
# build:
# context: ./
# dockerfile: "${DOCKERFILE}"
# target: webhooks-service
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
onlyoffice-proxy:
build:

View File

@ -15,13 +15,6 @@ services:
target: clear-events
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}"
onlyoffice-migration:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: migration
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
onlyoffice-backup:
build:
context: ./
@ -71,20 +64,6 @@ services:
target: studio_notify
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}"
onlyoffice-telegram-service:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: telegram_service
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
onlyoffice-urlshortener:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: urlshortener
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
onlyoffice-api:
build:
context: ./
@ -113,13 +92,6 @@ services:
target: ssoauth
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
onlyoffice-webhooks-service:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: webhooks-service
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
onlyoffice-bin-share:
build:
context: ./
@ -161,3 +133,10 @@ services:
dockerfile: "${DOCKERFILE}"
target: onlyoffice-migration-runner
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration-runner:${DOCKER_TAG}"
onlyoffice-healthchecks:
build:
context: ./
dockerfile: "${DOCKERFILE}"
target: healthchecks
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-healthchecks:${DOCKER_TAG}"

View File

@ -15,11 +15,6 @@ map $SERVICE_CLIENT $service_client {
$SERVICE_CLIENT $SERVICE_CLIENT;
}
map $SERVICE_MIGRATION $service_migration {
volatile;
$SERVICE_MIGRATION $SERVICE_MIGRATION;
}
map $SERVICE_API_SYSTEM $service_api_system {
volatile;
$SERVICE_API_SYSTEM $SERVICE_API_SYSTEM;
@ -30,21 +25,6 @@ map $SERVICE_BACKUP $service_backup {
$SERVICE_BACKUP $SERVICE_BACKUP;
}
map $SERVICE_CALENDAR $service_calendar {
volatile;
$SERVICE_CALENDAR $SERVICE_CALENDAR;
}
map $SERVICE_CRM $service_crm {
volatile;
$SERVICE_CRM $SERVICE_CRM;
}
map $SERVICE_STORAGE_ENCRYPTION $service_storage_encryption {
volatile;
$SERVICE_STORAGE_ENCRYPTION $SERVICE_STORAGE_ENCRYPTION;
}
map $SERVICE_FILES $service_files {
volatile;
$SERVICE_FILES $SERVICE_FILES;
@ -55,16 +35,6 @@ map $SERVICE_FILES_SERVICES $service_files_services {
$SERVICE_FILES_SERVICES $SERVICE_FILES_SERVICES;
}
map $SERVICE_MAIL $service_mail {
volatile;
$SERVICE_MAIL $SERVICE_MAIL;
}
map $SERVICE_STORAGE_MIGRATION $service_storage_migration {
volatile;
$SERVICE_STORAGE_MIGRATION $SERVICE_STORAGE_MIGRATION;
}
map $SERVICE_NOTIFY $service_notify {
volatile;
$SERVICE_NOTIFY $SERVICE_NOTIFY;
@ -75,11 +45,6 @@ map $SERVICE_PEOPLE_SERVER $service_people_server {
$SERVICE_PEOPLE_SERVER $SERVICE_PEOPLE_SERVER;
}
map $SERVICE_PROJECTS_SERVER $service_projects_server {
volatile;
$SERVICE_PROJECTS_SERVER $SERVICE_PROJECTS_SERVER;
}
map $SERVICE_SOCKET $service_socket {
volatile;
$SERVICE_SOCKET $SERVICE_SOCKET;
@ -90,21 +55,11 @@ map $SERVICE_STUDIO_NOTIFY $service_studio_notify {
$SERVICE_STUDIO_NOTIFY $SERVICE_STUDIO_NOTIFY;
}
map $SERVICE_TELEGRAM_SERVICE $service_telegram_service {
volatile;
$SERVICE_TELEGRAM_SERVICE $SERVICE_TELEGRAM_SERVICE;
}
map $SERVICE_THUMBNAILS $service_thumbnails {
volatile;
$SERVICE_THUMBNAILS $SERVICE_THUMBNAILS;
}
map $SERVICE_URLSHORTENER $service_urlshortener {
volatile;
$SERVICE_URLSHORTENER $SERVICE_URLSHORTENER;
}
map $SERVICE_API $service_api {
volatile;
$SERVICE_API $SERVICE_API;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,6 @@ MYSQL_HOST = os.environ["MYSQL_HOST"] if environ.get("MYSQL_HOST") else "localho
MYSQL_DATABASE = os.environ["MYSQL_DATABASE"] if environ.get("MYSQL_DATABASE") else "onlyoffice"
MYSQL_USER = os.environ["MYSQL_USER"] if environ.get("MYSQL_USER") else "onlyoffice_user"
MYSQL_PASSWORD = os.environ["MYSQL_PASSWORD"] if environ.get("MYSQL_PASSWORD") else "onlyoffice_pass"
DATABASE_MIGRATION = os.environ["DATABASE_MIGRATION"] if environ.get("DATABASE_MIGRATION") else "false"
APP_CORE_BASE_DOMAIN = os.environ["APP_CORE_BASE_DOMAIN"] if environ.get("APP_CORE_BASE_DOMAIN") is not None else "localhost"
APP_CORE_MACHINEKEY = os.environ["APP_CORE_MACHINEKEY"] if environ.get("APP_CORE_MACHINEKEY") else "your_core_machinekey"
@ -128,13 +127,11 @@ updateJsonData(jsonData,"$.core.base-domain", APP_CORE_BASE_DOMAIN)
updateJsonData(jsonData,"$.core.machinekey", APP_CORE_MACHINEKEY)
updateJsonData(jsonData,"$.core.products.subfolder", "server")
updateJsonData(jsonData,"$.web.hub.internal", "http://onlyoffice-socket:" + SERVICE_PORT + "/")
updateJsonData(jsonData,"$.web.url-shortener.internal", "http://onlyoffice-urlshortener:" + SERVICE_PORT + "/")
updateJsonData(jsonData,"$.files.docservice.url.portal", APP_URL_PORTAL)
updateJsonData(jsonData,"$.files.docservice.url.public", DOCUMENT_SERVER_URL_PUBLIC)
updateJsonData(jsonData,"$.files.docservice.url.internal", DOCUMENT_SERVER_URL_INTERNAL)
updateJsonData(jsonData,"$.files.docservice.secret.value", DOCUMENT_SERVER_JWT_SECRET)
updateJsonData(jsonData,"$.files.docservice.secret.header", DOCUMENT_SERVER_JWT_HEADER)
updateJsonData(jsonData,"$.migration.enabled", DATABASE_MIGRATION)
writeJsonFile(filePath, jsonData)
filePath = "/app/onlyoffice/config/elastic.json"

View File

@ -0,0 +1,46 @@
#!/bin/bash
# read parameters
if [ -n "$1" ]; then
RUN_DLL="${1}";
shift
fi
if [ -n "$1" ]; then
NAME_SERVICE="${1}";
shift
fi
echo "Executing -- ${NAME_SERVICE}"
PRODUCT=${PRODUCT:-"onlyoffice"}
CONTAINER_PREFIX=${PRODUCT}-
SERVICE_PORT=${SERVICE_PORT:-"5050"}
SHEME=${SHEME:-"http"}
URLS=${URLS:-"${SHEME}://0.0.0.0:${SERVICE_PORT}"}
PATH_TO_CONF=${PATH_TO_CONF:-"/var/www/services/ASC.Web.HealthChecks.UI/service"}
API_SYSTEM_HOST=${API_SYSTEM_HOST:-"${CONTAINER_PREFIX}api-system:${SERVICE_PORT}"}
BACKUP_HOST=${BACKUP_HOST:-"${CONTAINER_PREFIX}backup:${SERVICE_PORT}"}
BACKUP_BACKGRUOND_TASKS_HOST=${BACKUP_BACKGRUOND_TASKS_HOST:-"${CONTAINER_PREFIX}backup-background-tasks:${SERVICE_PORT}"}
CLEAR_EVENTS_HOST=${CLEAR_EVENTS_HOST:-"${CONTAINER_PREFIX}clear-events:${SERVICE_PORT}"}
FILES_HOST=${FILES_HOST:-"${CONTAINER_PREFIX}files:${SERVICE_PORT}"}
FILES_SERVICES_HOST=${FILES_SERVICES_HOST:-"${CONTAINER_PREFIX}files-services:${SERVICE_PORT}"}
NOTIFY_HOST=${NOTIFY_HOST:-"${CONTAINER_PREFIX}notify:${SERVICE_PORT}"}
PEOPLE_SERVER_HOST=${PEOPLE_SERVER_HOST:-"${CONTAINER_PREFIX}people-server:${SERVICE_PORT}"}
STUDIO_NOTIFY_HOST=${STUDIO_NOTIFY_HOST:-"${CONTAINER_PREFIX}studio-notify:${SERVICE_PORT}"}
API_HOST=${API_HOST:-"${CONTAINER_PREFIX}api:${SERVICE_PORT}"}
STUDIO_HOST=${STUDIO_HOST:-"${CONTAINER_PREFIX}studio:${SERVICE_PORT}"}
sed -i "s!localhost:5010!${API_SYSTEM_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5012!${BACKUP_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5032!${BACKUP_BACKGRUOND_TASKS_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5027!${CLEAR_EVENTS_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5007!${FILES_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5009!${FILES_SERVICES_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5005!${NOTIFY_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5004!${PEOPLE_SERVER_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5006!${API_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5000!${STUDIO_NOTIFY_HOST}!g" ${PATH_TO_CONF}/appsettings.json
sed -i "s!localhost:5003!${STUDIO_HOST}!g" ${PATH_TO_CONF}/appsettings.json
dotnet ${RUN_DLL} --urls=${URLS}

View File

@ -1,10 +1,10 @@
#!/bin/bash
#!/bin/bash
MYSQL_HOST=${MYSQL_HOST:-"localhost"}
MYSQL_DATABASE=${MYSQL_DATABASE:-"onlyoffice"}
MYSQL_USER=${MYSQL_USER:-"onlyoffice_user"}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-"onlyoffice_pass"}
sed -i "s!\"ConnectionString\".*!\"ConnectionString\": \"Server=${MYSQL_HOST};Database=${MYSQL_DATABASE};User ID=${MYSQL_USER};Password=${MYSQL_PASSWORD}\",!g" ./appsettings.json
sed -i "s!\"ConnectionString\".*!\"ConnectionString\": \"Server=${MYSQL_HOST};Database=${MYSQL_DATABASE};User ID=${MYSQL_USER};Password=${MYSQL_PASSWORD}\",!g" ./appsettings.runner.json
dotnet ASC.Migration.Runner.dll
dotnet ASC.Migration.Runner.dll

View File

@ -29,6 +29,7 @@ x-service: &x-service-base
- files_data:/var/www/products/ASC.Files/server/
- people_data:/var/www/products/ASC.People/server/
- ${ROOT_DIR}/config/appsettings.${ENV_EXTENSION}.json:/app/onlyoffice/config/appsettings.${ENV_EXTENSION}.json
- ${ROOT_DIR}/config/apisystem.${ENV_EXTENSION}.json:/app/onlyoffice/config/apisystem.${ENV_EXTENSION}.json
services:
onlyoffice-elasticsearch:
@ -66,10 +67,10 @@ services:
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}"
container_name: ${CLEAR_EVENTS_HOST}
onlyoffice-migration:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
container_name: ${MIGRATION_HOST}
# onlyoffice-migration:
# <<: *x-service-base
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
# container_name: ${MIGRATION_HOST}
onlyoffice-files:
<<: *x-service-base
@ -98,24 +99,29 @@ services:
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}"
container_name: ${STUDIO_NOTIFY_HOST}
onlyoffice-telegram-service:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
container_name: ${TELEGRAM_SERVICE_HOST}
# onlyoffice-telegram-service:
# <<: *x-service-base
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
# container_name: ${TELEGRAM_SERVICE_HOST}
onlyoffice-urlshortener:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
container_name: ${URLSHORTENER_HOST}
expose:
- ${SERVICE_PORT}
- "9999"
# onlyoffice-urlshortener:
# <<: *x-service-base
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
# container_name: ${URLSHORTENER_HOST}
# expose:
# - ${SERVICE_PORT}
# - "9999"
onlyoffice-api:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}"
container_name: ${API_HOST}
onlyoffice-api-system:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api-system:${DOCKER_TAG}"
container_name: ${API_SYSTEM_HOST}
onlyoffice-studio:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}"
@ -129,10 +135,10 @@ services:
- ${SERVICE_PORT}
- "9834"
onlyoffice-webhooks-service:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
container_name: ${WEBHOOKS_SERVICE_HOST}
# onlyoffice-webhooks-service:
# <<: *x-service-base
# image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
# container_name: ${WEBHOOKS_SERVICE_HOST}
onlyoffice-proxy:
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-proxy:${DOCKER_TAG}"
@ -148,16 +154,17 @@ services:
- onlyoffice-backup-background-tasks
- onlyoffice-backup
- onlyoffice-clear-events
- onlyoffice-migration
- onlyoffice-webhooks-service
# - onlyoffice-migration
# - webhooks-service
- onlyoffice-files
- onlyoffice-files-services
- onlyoffice-people-server
- onlyoffice-socket
- onlyoffice-studio-notify
- onlyoffice-telegram-service
- onlyoffice-urlshortener
# - onlyoffice-telegram-service
# - onlyoffice-urlshortener
- onlyoffice-api
- onlyoffice-api-system
- onlyoffice-studio
- onlyoffice-ssoauth
environment:
@ -165,15 +172,16 @@ services:
- SERVICE_FILES=${SERVICE_FILES}
- SERVICE_FILES_SERVICES=${SERVICE_FILES_SERVICES}
- SERVICE_CLEAR_EVENTS=${SERVICE_CLEAR_EVENTS}
- SERVICE_MIGRATION=${SERVICE_MIGRATION}
- SERVICE_WEBHOOKS_SERVICE=${SERVICE_WEBHOOKS_SERVICE}
# - SERVICE_MIGRATION=${SERVICE_MIGRATION}
# - SERVICE_WEBHOOKS_SERVICE=${SERVICE_WEBHOOKS_SERVICE}
- SERVICE_NOTIFY=${SERVICE_NOTIFY}
- SERVICE_PEOPLE_SERVER=${SERVICE_PEOPLE_SERVER}
- SERVICE_SOCKET=${SERVICE_SOCKET}
- SERVICE_STUDIO_NOTIFY=${SERVICE_STUDIO_NOTIFY}
- SERVICE_TELEGRAM_SERVICE=${SERVICE_TELEGRAM_SERVICE}
- SERVICE_URLSHORTENER=${SERVICE_URLSHORTENER}
# - SERVICE_TELEGRAM_SERVICE=${SERVICE_TELEGRAM_SERVICE}
# - SERVICE_URLSHORTENER=${SERVICE_URLSHORTENER}
- SERVICE_API=${SERVICE_API}
- SERVICE_API_SYSTEM=${SERVICE_API_SYSTEM}
- SERVICE_STUDIO=${SERVICE_STUDIO}
- SERVICE_SSOAUTH=${SERVICE_SSOAUTH}
- SERVICE_DOCEDITOR=${SERVICE_DOCEDITOR}
@ -189,8 +197,8 @@ services:
networks:
default:
external:
name: ${NETWORK_NAME}
name: ${NETWORK_NAME}
external: true
volumes:
es_data:

View File

@ -1,34 +1,33 @@
version: "3.8"
x-service:
&x-service-base
container_name: base
restart: always
expose:
x-service: &x-service-base
container_name: base
restart: always
expose:
- ${SERVICE_PORT}
environment:
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
DATABASE_MIGRATION: ${DATABASE_MIGRATION}
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET}
DOCUMENT_SERVER_JWT_HEADER: ${DOCUMENT_SERVER_JWT_HEADER}
DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}
DOCUMENT_SERVER_URL_INTERNAL: ${DOCUMENT_SERVER_URL_INTERNAL}
KAFKA_HOST: ${KAFKA_HOST}
ELK_HOST: ${ELK_HOST}
PROXY_HOST: ${PROXY_HOST}
volumes:
environment:
MYSQL_HOST: ${MYSQL_HOST}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
DATABASE_MIGRATION: ${DATABASE_MIGRATION}
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET}
DOCUMENT_SERVER_JWT_HEADER: ${DOCUMENT_SERVER_JWT_HEADER}
DOCUMENT_SERVER_URL_PUBLIC: ${DOCUMENT_SERVER_URL_PUBLIC}
DOCUMENT_SERVER_URL_INTERNAL: ${DOCUMENT_SERVER_URL_INTERNAL}
KAFKA_HOST: ${KAFKA_HOST}
ELK_HOST: ${ELK_HOST}
PROXY_HOST: ${PROXY_HOST}
volumes:
#- /app/onlyoffice/CommunityServer/data:/app/onlyoffice/data
- app_data:/app/onlyoffice/data
- files_data:/var/www/products/ASC.Files/server/
- people_data:/var/www/products/ASC.People/server/
services:
services:
onlyoffice-elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}
container_name: ${ELK_HOST}
@ -58,17 +57,12 @@ services:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-backup:${DOCKER_TAG}"
container_name: ${BACKUP_HOST}
onlyoffice-clear-events:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-clear-events:${DOCKER_TAG}"
container_name: ${CLEAR_EVENTS_HOST}
onlyoffice-migration:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-migration:${DOCKER_TAG}"
container_name: ${MIGRATION_HOST}
onlyoffice-files:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files:${DOCKER_TAG}"
@ -78,7 +72,7 @@ services:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-files-services:${DOCKER_TAG}"
container_name: ${FILES_SERVICES_HOST}
onlyoffice-people-server:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-people-server:${DOCKER_TAG}"
@ -89,26 +83,13 @@ services:
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-socket:${DOCKER_TAG}"
container_name: ${SOCKET_HOST}
expose:
- ${SERVICE_PORT}
- ${SERVICE_PORT}
onlyoffice-studio-notify:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio-notify:${DOCKER_TAG}"
container_name: ${STUDIO_NOTIFY_HOST}
onlyoffice-telegram-service:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-telegram-service:${DOCKER_TAG}"
container_name: ${TELEGRAM_SERVICE_HOST}
onlyoffice-urlshortener:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-urlshortener:${DOCKER_TAG}"
container_name: ${URLSHORTENER_HOST}
expose:
- ${SERVICE_PORT}
- "9999"
onlyoffice-api:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-api:${DOCKER_TAG}"
@ -123,21 +104,17 @@ services:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-studio:${DOCKER_TAG}"
container_name: ${STUDIO_HOST}
onlyoffice-ssoauth:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-ssoauth:${DOCKER_TAG}"
container_name: ${SSOAUTH_HOST}
expose:
- ${SERVICE_PORT}
- "9834"
onlyoffice-webhooks-service:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-webhooks-service:${DOCKER_TAG}"
container_name: ${WEBHOOKS_SERVICE_HOST}
- ${SERVICE_PORT}
- "9834"
onlyoffice-doceditor:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-doceditor:${DOCKER_TAG}"
container_name: ${DOCEDITOR_HOST}
restart: always
@ -145,6 +122,7 @@ services:
- "5013"
onlyoffice-login:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-login:${DOCKER_TAG}"
container_name: ${LOGIN_HOST}
restart: always
@ -160,20 +138,16 @@ services:
- "8099"
- "8092"
ports:
- 8092:8092
- 8092:8092
depends_on:
- onlyoffice-backup-background-tasks
- onlyoffice-backup
- onlyoffice-clear-events
- onlyoffice-migration
- onlyoffice-webhooks-service
- onlyoffice-files
- onlyoffice-files-services
- onlyoffice-people-server
- onlyoffice-socket
- onlyoffice-studio-notify
- onlyoffice-telegram-service
- onlyoffice-urlshortener
- onlyoffice-api
- onlyoffice-api-system
- onlyoffice-studio
@ -185,14 +159,10 @@ services:
- SERVICE_FILES=${SERVICE_FILES}
- SERVICE_FILES_SERVICES=${SERVICE_FILES_SERVICES}
- SERVICE_CLEAR_EVENTS=${SERVICE_CLEAR_EVENTS}
- SERVICE_MIGRATION=${SERVICE_MIGRATION}
- SERVICE_WEBHOOKS_SERVICE=${SERVICE_WEBHOOKS_SERVICE}
- SERVICE_NOTIFY=${SERVICE_NOTIFY}
- SERVICE_PEOPLE_SERVER=${SERVICE_PEOPLE_SERVER}
- SERVICE_SOCKET=${SERVICE_SOCKET}
- SERVICE_STUDIO_NOTIFY=${SERVICE_STUDIO_NOTIFY}
- SERVICE_TELEGRAM_SERVICE=${SERVICE_TELEGRAM_SERVICE}
- SERVICE_URLSHORTENER=${SERVICE_URLSHORTENER}
- SERVICE_API=${SERVICE_API}
- SERVICE_API_SYSTEM=${SERVICE_API_SYSTEM}
- SERVICE_STUDIO=${SERVICE_STUDIO}
@ -206,8 +176,8 @@ services:
networks:
default:
external:
name: ${NETWORK_NAME}
name: ${NETWORK_NAME}
external: true
volumes:
es_data:

View File

@ -0,0 +1,23 @@
version: "3.6"
services:
onlyoffice-document-server:
image: "${DOCUMENT_SERVER_IMAGE_NAME}"
container_name: ${DOCUMENT_SERVER_HOST}
# Strings below enable the JSON Web Token validation.
environment:
- JWT_ENABLED=true
- JWT_SECRET=${DOCUMENT_SERVER_JWT_SECRET}
- JWT_HEADER=${DOCUMENT_SERVER_JWT_HEADER}
- JWT_IN_BODY=true
expose:
- "80"
volumes:
- ${ROOT_DIR}/Data:/var/www/onlyoffice/Data
stdin_open: true
restart: always
stop_grace_period: 60s
networks:
default:
external:
name: ${NETWORK_NAME}

View File

@ -0,0 +1,29 @@
version: "3.8"
x-service:
&x-service-base
container_name: base
restart: always
expose:
- ${SERVICE_PORT}
volumes:
#- /app/onlyoffice/CommunityServer/data:/app/onlyoffice/data
- app_data:/app/onlyoffice/data
- files_data:/var/www/products/ASC.Files/server/
- people_data:/var/www/products/ASC.People/server/
services:
onlyoffice-health-checks-ui:
<<: *x-service-base
image: "${REPO}/${DOCKER_IMAGE_PREFIX}-healthchecks:${DOCKER_TAG}"
container_name: ${HELTHCHECKS_HOST}
networks:
default:
external:
name: ${NETWORK_NAME}
volumes:
app_data:
files_data:
people_data:

View File

@ -13,5 +13,5 @@ services:
networks:
default:
external:
name: ${NETWORK_NAME}
name: ${NETWORK_NAME}
external: true

View File

@ -1,2 +1,3 @@
#!/bin/sh
envsubst '$MAP_HASH_BUCKET_SIZE,$COUNT_WORKER_CONNECTIONS' < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
envsubst '$MAP_HASH_BUCKET_SIZE,$COUNT_WORKER_CONNECTIONS' < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf

View File

@ -1,6 +1,6 @@
version: '3'
services:
onlyoffice-rabbitmq:
version: "3"
services:
onlyoffice-rabbitmq:
image: rabbitmq:3
container_name: onlyoffice-rabbitmq
restart: always
@ -9,5 +9,5 @@ services:
- "80"
networks:
default:
external:
name: ${NETWORK_NAME}
name: ${NETWORK_NAME}
external: true

View File

@ -1,6 +1,6 @@
version: '3'
services:
onlyoffice-redis:
version: "3"
services:
onlyoffice-redis:
image: redis:7
container_name: onlyoffice-redis
restart: always
@ -8,5 +8,5 @@ services:
- "6379"
networks:
default:
external:
name: ${NETWORK_NAME}
name: ${NETWORK_NAME}
external: true

View File

@ -9,6 +9,5 @@ rename -f -v "s/product([^\/]*)$/%{product}\$1/g" build/install/common/*.sh
sed -i "s@var/www@var/www/%{product}@g" config/nginx/*.conf && sed -i "s@var/www@var/www/%{product}@g" config/nginx/includes/*.conf && rm config/nginx/onlyoffice-login.conf
json -I -f %{_builddir}/%{sourcename}/config/appsettings.services.json -e "this.logPath=\"/var/log/onlyoffice/%{product}\"" \
-e "this.urlshortener={ 'path': '../ASC.UrlShortener/index.js' }" -e "this.thumb={ 'path': '../ASC.Thumbnails/' }" -e "this.socket={ 'path': '../ASC.Socket.IO/' }" \
json -I -f %{_builddir}/%{sourcename}/config/appsettings.services.json -e "this.logPath=\"/var/log/onlyoffice/%{product}\"" -e "this.socket={ 'path': '../ASC.Socket.IO/' }" \
-e "this.ssoauth={ 'path': '../ASC.SsoAuth/' }" -e "this.core={ 'products': { 'folder': '%{buildpath}/products', 'subfolder': 'server'} }"

View File

@ -13,6 +13,12 @@
%dir %{buildpath}/products/ASC.Files/
%dir %{buildpath}/products/ASC.Files/server/
%files api-system
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.ApiSystem/
/usr/lib/systemd/system/%{product}-api-system.service
%dir %{buildpath}/services/
%files backup
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Data.Backup/
@ -98,12 +104,6 @@
%dir %{buildpath}/products/ASC.Files/
%dir %{buildpath}/products/ASC.Files/server/
%files urlshortener
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.UrlShortener/
/usr/lib/systemd/system/%{product}-urlshortener.service
%dir %{buildpath}/services/
%files socket
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Socket.IO/
@ -128,31 +128,12 @@
%dir %{buildpath}/products/ASC.Files/
%dir %{buildpath}/products/ASC.Files/server/
%files telegram-service
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.TelegramService/
%{buildpath}/products/ASC.Files/server/ASC.Files*.dll
%{buildpath}/products/ASC.People/server/ASC.People.dll
/usr/lib/systemd/system/%{product}-telegram-service.service
%dir %{buildpath}/services/
%dir %{buildpath}/products/
%dir %{buildpath}/products/ASC.Files/
%dir %{buildpath}/products/ASC.Files/server/
%dir %{buildpath}/products/ASC.People/
%dir %{buildpath}/products/ASC.People/server/
%files ssoauth
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.SsoAuth/
/usr/lib/systemd/system/%{product}-ssoauth.service
%dir %{buildpath}/services/
%files webhooks-service
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Webhooks.Service/
/usr/lib/systemd/system/%{product}-webhooks-service.service
%dir %{buildpath}/services/
%files clear-events
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.ClearEvents/
@ -165,12 +146,6 @@
/usr/lib/systemd/system/%{product}-backup-background.service
%dir %{buildpath}/services/
%files migration
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/services/ASC.Migration/
/usr/lib/systemd/system/%{product}-migration.service
%dir %{buildpath}/services/
%files radicale
%defattr(-, onlyoffice, onlyoffice, -)
%{buildpath}/Tools/radicale/

View File

@ -13,18 +13,15 @@ mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/service/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.People/client/"
mkdir -p "%{buildroot}%{buildpath}/products/ASC.People/server/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ApiSystem/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ClearEvents/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup.BackgroundTasks/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Migration/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Migration.Runner/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Notify/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Socket.IO/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.SsoAuth/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Studio.Notify/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.TelegramService/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.UrlShortener/"
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Webhooks.Service/"
mkdir -p "%{buildroot}%{buildpath}/studio/ASC.Web.Api/"
mkdir -p "%{buildroot}%{buildpath}/studio/ASC.Web.Studio/"
mkdir -p "%{buildroot}%{buildpath}/public/"
@ -45,17 +42,14 @@ cp -rf %{_builddir}/%{sourcename}/config/nginx/onlyoffice*.conf "%{buildroot}%{_
cp -rf %{_builddir}/%{sourcename}/products/ASC.Files/Server/DocStore/* "%{buildroot}%{buildpath}/products/ASC.Files/server/DocStore/"
cp -rf %{_builddir}/%{sourcename}/publish/products/ASC.Files/server/* "%{buildroot}%{buildpath}/products/ASC.Files/server/"
cp -rf %{_builddir}/%{sourcename}/publish/products/ASC.People/server/* "%{buildroot}%{buildpath}/products/ASC.People/server/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.ApiSystem/service/* "%{buildroot}%{buildpath}/services/ASC.ApiSystem/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.ClearEvents/service/* "%{buildroot}%{buildpath}/services/ASC.ClearEvents/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Data.Backup.BackgroundTasks/service/* "%{buildroot}%{buildpath}/services/ASC.Data.Backup.BackgroundTasks/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Data.Backup/service/* "%{buildroot}%{buildpath}/services/ASC.Data.Backup/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Files.Service/service/* "%{buildroot}%{buildpath}/products/ASC.Files/service/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Migration/service/* "%{buildroot}%{buildpath}/services/ASC.Migration/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Notify/service/* "%{buildroot}%{buildpath}/services/ASC.Notify/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Socket.IO/service/* "%{buildroot}%{buildpath}/services/ASC.Socket.IO/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.SsoAuth/service/* "%{buildroot}%{buildpath}/services/ASC.SsoAuth/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Studio.Notify/service/* "%{buildroot}%{buildpath}/services/ASC.Studio.Notify/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.TelegramService/service/* "%{buildroot}%{buildpath}/services/ASC.TelegramService/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.UrlShortener/service/* "%{buildroot}%{buildpath}/services/ASC.UrlShortener/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Web.Api/service/* "%{buildroot}%{buildpath}/studio/ASC.Web.Api/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Web.Studio/service/* "%{buildroot}%{buildpath}/studio/ASC.Web.Studio/"
cp -rf %{_builddir}/%{sourcename}/publish/services/ASC.Webhooks.Service/service/* "%{buildroot}%{buildpath}/services/ASC.Webhooks.Service/"

View File

@ -60,19 +60,11 @@ Requires: dotnet-sdk-6.0
AutoReqProv: no
%description people-server
%package urlshortener
Summary: urlshortener
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: nodejs >= 14.0
AutoReqProv: no
%description urlshortener
%package socket
Summary: socket
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: nodejs >= 14.0
Requires: nodejs >= 16.0
AutoReqProv: no
%description socket
@ -92,30 +84,22 @@ Requires: dotnet-sdk-6.0
AutoReqProv: no
%description api
%package telegram-service
Summary: telegram-service
%package api-system
Summary: api-system
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: dotnet-sdk-6.0
AutoReqProv: no
%description telegram-service
%description api-system
%package ssoauth
Summary: ssoauth
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: nodejs >= 14.0
Requires: nodejs >= 16.0
AutoReqProv: no
%description ssoauth
%package webhooks-service
Summary: webhooks-service
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: dotnet-sdk-6.0
AutoReqProv: no
%description webhooks-service
%package clear-events
Summary: clear-events
Group: Applications/Internet
@ -132,14 +116,6 @@ Requires: dotnet-sdk-6.0
AutoReqProv: no
%description backup-background
%package migration
Summary: migration
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: dotnet-sdk-6.0
AutoReqProv: no
%description migration
%package radicale
Summary: radicale
Group: Applications/Internet
@ -152,7 +128,7 @@ AutoReqProv: no
Summary: doceditor
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: nodejs >= 14.0
Requires: nodejs >= 16.0
AutoReqProv: no
%description doceditor
@ -168,6 +144,6 @@ AutoReqProv: no
Summary: login
Group: Applications/Internet
Requires: %name-common = %version-%release
Requires: nodejs >= 14.0
Requires: nodejs >= 16.0
AutoReqProv: no
%description login

View File

@ -19,7 +19,7 @@ Source0: https://github.com/ONLYOFFICE/%{product}/archive/%GIT_BRANCH.tar
Source1: https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz#/document-templates-main-community-server.tar.gz
Source2: https://github.com/ONLYOFFICE/dictionaries/archive/master.tar.gz#/dictionaries-master.tar.gz
BuildRequires: nodejs >= 14.0
BuildRequires: nodejs >= 18.0
BuildRequires: yarn
BuildRequires: dotnet-sdk-6.0
@ -31,7 +31,6 @@ Requires: %name-doceditor = %version-%release
Requires: %name-files = %version-%release
Requires: %name-files-services = %version-%release
Requires: %name-login = %version-%release
Requires: %name-migration = %version-%release
Requires: %name-migration-runner = %version-%release
Requires: %name-notify = %version-%release
Requires: %name-people-server = %version-%release
@ -41,9 +40,6 @@ Requires: %name-socket = %version-%release
Requires: %name-ssoauth = %version-%release
Requires: %name-studio = %version-%release
Requires: %name-studio-notify = %version-%release
Requires: %name-telegram-service = %version-%release
Requires: %name-urlshortener = %version-%release
Requires: %name-webhooks-service = %version-%release
%description
App Server is a platform for building your own online office by connecting ONLYOFFICE modules packed as separate apps.

View File

@ -41,23 +41,23 @@ namespace Utils
{
try
{
using (var redis = new Redis(session["REDIS_HOST_PROP"], Convert.ToInt32(session["REDIS_PORT_PROP"])))
using (var redis = new Redis(session["REDIS_HOST"], Convert.ToInt32(session["REDIS_PORT"])))
{
if (!String.IsNullOrEmpty(session["REDIS_PASSWORD_PROP"].Trim()))
redis.Password = session["REDIS_PASSWORD_PROP"];
if (!String.IsNullOrEmpty(session["REDIS_PWD"].Trim()))
redis.Password = session["REDIS_PWD"];
var pong = redis.Ping("ONLYOFFICE");
session.Log("Redis Status: IsConnected is {0}", !String.IsNullOrEmpty(pong));
session["RedisServerConnectionError"] = !String.IsNullOrEmpty(pong) ? "" : String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST_PROP"], session["REDIS_PORT_PROP"], session["REDIS_PASSWORD_PROP"]);
session["RedisServerConnectionError"] = !String.IsNullOrEmpty(pong) ? "" : String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST"], session["REDIS_PORT"], session["REDIS_PWD"]);
}
}
catch (Exception ex)
{
session.Log("RedisConnectionException '{0}'", ex.Message);
session["RedisServerConnectionError"] = String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST_PROP"], session["REDIS_PORT_PROP"], session["REDIS_PASSWORD_PROP"]);
session["RedisServerConnectionError"] = String.Format("Connection Refused HOST:{0},PORT:{1},PASS:{2}", session["REDIS_HOST"], session["REDIS_PORT"], session["REDIS_PWD"]);
}
return ActionResult.Success;
@ -69,11 +69,11 @@ namespace Utils
{
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = session["RABBITMQ_HOSTNAME_PROP"];
factory.Port = Convert.ToInt32(session["RABBITMQ_PORT_PROP"]);
factory.VirtualHost = session["RABBITMQ_VIRTUALHOST_PROP"];
factory.UserName = session["RABBITMQ_USERNAME_PROP"];
factory.Password = session["RABBITMQ_PASSWORD_PROP"];
factory.HostName = session["AMQP_HOST"];
factory.Port = Convert.ToInt32(session["AMQP_PORT"]);
factory.VirtualHost = session["AMQP_VHOST"];
factory.UserName = session["AMQP_USER"];
factory.Password = session["AMQP_PWD"];
try
{
@ -82,11 +82,11 @@ namespace Utils
session.Log("RabbitMQ Status: IsConnected is {0}", conn.IsOpen);
session["RabbitMQServerConnectionError"] = conn.IsOpen ? "" : String.Format("Connection Refused HOST:{0}, PORT:{1}, VirtualHost:{2}, UserName:{3}, PASS:{4}",
session["RABBITMQ_HOSTNAME_PROP"],
session["RABBITMQ_PORT_PROP"],
session["RABBITMQ_VIRTUALHOST_PROP"],
session["RABBITMQ_USERNAME_PROP"],
session["RABBITMQ_PASSWORD_PROP"]
session["AMQP_HOST"],
session["AMQP_PORT"],
session["AMQP_VHOST"],
session["AMQP_USER"],
session["AMQP_PWD"]
);
}
}
@ -95,11 +95,11 @@ namespace Utils
session.Log("RabbitMQ.Client.Exceptions.BrokerUnreachableException {0}", ex.Message);
session["RabbitMQServerConnectionError"] = String.Format("Connection Refused HOST:{0}, PORT:{1}, VirtualHost:{2}, UserName:{3}, PASS:{4}",
session["RABBITMQ_HOSTNAME_PROP"],
session["RABBITMQ_PORT_PROP"],
session["RABBITMQ_VIRTUALHOST_PROP"],
session["RABBITMQ_USERNAME_PROP"],
session["RABBITMQ_PASSWORD_PROP"]
session["AMQP_HOST"],
session["AMQP_PORT"],
session["AMQP_VHOST"],
session["AMQP_USER"],
session["AMQP_PWD"]
);
}

File diff suppressed because it is too large Load Diff

View File

@ -13,4 +13,4 @@ OutputBaseFilename="MySQL Installer Runner"
OutputDir=/
[Run]
Filename: "{pf}\MySQL\MySQL Installer for Windows\MySQLInstallerConsole.exe"; Parameters: "community install server;{param:MYSQL_VERSION|5.7.25};X64:*:servertype=Server;passwd={param:PASSWORD_PROP} -silent"; Flags: runhidden
Filename: "{pf}\MySQL\MySQL Installer for Windows\MySQLInstallerConsole.exe"; Parameters: "community install server;{param:MYSQL_VERSION|5.7.25};X64:*:servertype=Server;passwd={param:DB_PWD} -silent"; Flags: runhidden

View File

@ -11,11 +11,6 @@ pushd %~1
call dotnet build ASC.Web.slnf
call dotnet build ASC.Migrations.sln -o %SRC_PATH%\services\ASC.Migration.Runner\service
echo "== Build ASC.UrlShortener =="
pushd common\ASC.UrlShortener
call yarn install --frozen-lockfile
popd
echo "== Build ASC.Socket.IO =="
pushd common\ASC.Socket.IO
call yarn install --frozen-lockfile

View File

@ -1,7 +1,8 @@
REM echo ######## Set variables ########
set "publisher="Ascensio System SIA""
set "nginx_version=1.21.1"
set "nuget="%cd%\thirdparty\SimpleRestServices\src\.nuget\NuGet.exe""
set "nginx_version=1.21.1"
set "environment=test"
REM echo ######## Extracting and preparing files to build ########
%sevenzip% x build\install\win\nginx-%nginx_version%.zip -o"build\install\win\Files" -y
@ -11,26 +12,21 @@ md build\install\win\Files\nginx\temp
md build\install\win\Files\nginx\logs
md build\install\win\Files\tools
md build\install\win\Files\Logs
md build\install\win\Files\service\
md build\install\win\Files\Data
md build\install\win\Files\products\ASC.Files\server\temp
md build\install\win\Files\products\ASC.People\server\temp
md build\install\win\Files\services\ASC.Data.Backup\service\temp
md build\install\win\Files\services\ASC.Files.Service\service\temp
md build\install\win\Files\services\ASC.Notify\service\temp
md build\install\win\Files\services\ASC.Studio.Notify\service\temp
md build\install\win\Files\services\ASC.TelegramService\service\temp
md build\install\win\Files\services\ASC.Data.Backup.BackgroundTasks\service\temp
md build\install\win\Files\services\ASC.ClearEvents\service\temp
md build\install\win\Files\services\ASC.Migration\service\temp
md build\install\win\Files\services\ASC.Webhooks.Service\service\temp
md build\install\win\Files\services\ASC.Web.Api\service\temp
md build\install\win\Files\services\ASC.Web.Studio\service\temp
copy build\install\win\WinSW.NET4.exe "build\install\win\Files\tools\Proxy.exe" /y
copy build\install\win\tools\Proxy.xml "build\install\win\Files\tools\Proxy.xml" /y
copy build\install\win\WinSW3.0.0.exe "build\install\win\Files\tools\Socket.IO.exe" /y
copy build\install\win\tools\Socket.IO.xml "build\install\win\Files\tools\Socket.IO.xml" /y
copy build\install\win\WinSW3.0.0.exe "build\install\win\Files\tools\UrlShortener.exe" /y
copy build\install\win\tools\UrlShortener.xml "build\install\win\Files\tools\UrlShortener.xml" /y
copy build\install\win\WinSW3.0.0.exe "build\install\win\Files\tools\SsoAuth.exe" /y
copy build\install\win\tools\SsoAuth.xml "build\install\win\Files\tools\SsoAuth.xml" /y
copy build\install\win\WinSW3.0.0.exe "build\install\win\Files\tools\DocEditor.exe" /y
@ -39,7 +35,13 @@ copy build\install\win\WinSW3.0.0.exe "build\install\win\Files\tools\Login.exe"
copy build\install\win\tools\Login.xml "build\install\win\Files\tools\Login.xml" /y
copy "build\install\win\nginx.conf" "build\install\win\Files\nginx\conf\nginx.conf" /y
rmdir build\install\win\publish /s /q
::edit environment
%sed% -i "s/\(\W\)PRODUCT.ENVIRONMENT.SUB\(\W\)/\1%environment%\2/g" build\install\win\DocSpace.aip
::delete nginx configs
del /f /q build\install\win\Files\nginx\conf\onlyoffice-login.conf
del /f /q build\install\win\Files\nginx\conf\onlyoffice-story.conf
REM echo ######## Build Utils ########
@ -50,10 +52,6 @@ rmdir build\install\win\CustomActions\C#\Utils\bin /s /q
rmdir build\install\win\CustomActions\C#\Utils\obj /s /q
REM echo ######## Delete temp files ########
del /f /q build\install\win\Files\config\sed*
del /f /q build\install\win\Files\nginx\conf\sed*
del /f /q build\install\win\Files\nginx\conf\includes\sed*
del /f /q build\install\win\Files\services\*\service\config\sed*
del /f /q build\install\win\*.back.*
REM echo ######## Build MySQL Server Installer ########
@ -61,4 +59,10 @@ iscc /Qp /S"byparam="signtool" sign /a /n "%publisher%" /t http://timestamp.digi
REM echo ######## Build DocSpace package ########
%AdvancedInstaller% /edit build\install\win\DocSpace.aip /SetVersion %BUILD_VERSION%.%BUILD_NUMBER%
IF "%SignBuild%"=="true" (
:%AdvancedInstaller% /edit build\install\win\DocSpace.aip /SetSig
:%AdvancedInstaller% /edit build\install\win\DocSpace.aip /SetDigitalCertificateFile -file %onlyoffice_codesign_path% -password "%onlyoffice_codesign_password%"
)
%AdvancedInstaller% /rebuild build\install\win\DocSpace.aip

View File

@ -12,31 +12,45 @@ $AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12,Tls13'
function DownloadComponents {
param ( $prereq_list, $path )
[void](New-Item -ItemType Directory -Force -Path $path)
ForEach ( $item in $prereq_list ) {
$url = $item.link
$output = $path + $item.name
if( $item.download_allways ){
[system.console]::WriteLine("Downloading $url")
Invoke-WebRequest -Uri $url -OutFile $output
} else {
if(![System.IO.File]::Exists($output)){
try
{
if( $item.download_allways ){
[system.console]::WriteLine("Downloading $url")
Invoke-WebRequest -Uri $url -OutFile $output
} else {
if(![System.IO.File]::Exists($output)){
[system.console]::WriteLine("Downloading $url")
Invoke-WebRequest -Uri $url -OutFile $output
}
}
} catch {
Write-Host "[ERROR] Can not download" $item.name "by link" $url
}
}
}
switch ( $env:DOCUMENT_SERVER_VERSION )
{
latest { $DOCUMENT_SERVER_LINK = "https://download.onlyoffice.com/install/documentserver/windows/onlyoffice-documentserver-ee.exe" }
custom { $DOCUMENT_SERVER_LINK = $env:DOCUMENT_SERVER_CUSTOM_LINK.Replace(",", "") }
}
$nginx_version = '1.21.1'
$psql_version = '9.5.4'
$path_prereq = "${pwd}\build\install\win\"
$prerequisites = @(
@{
download_allways = $false;
name = "nginx-${nginx_version}.zip";
name = "nginx-${nginx_version}.zip";
link = "https://nginx.org/download/nginx-${nginx_version}.zip";
}
@ -45,6 +59,24 @@ $prerequisites = @(
name = "WinSW.NET4new.exe";
link = "https://github.com/winsw/winsw/releases/download/v2.11.0/WinSW.NET4.exe";
}
@{
download_allways = $true;
name = "onlyoffice-documentserver.latest.exe";
link = $DOCUMENT_SERVER_LINK
}
@{
download_allways = $false;
name = "psqlodbc_x64.msi";
link = "http://download.onlyoffice.com/install/windows/redist/psqlodbc_x64.msi"
}
@{
download_allways = $false;
name = "postgresql-${psql_version}-1-windows-x64.exe";
link = "https://get.enterprisedb.com/postgresql/postgresql-${psql_version}-1-windows-x64.exe"
}
)
$path_nuget_packages = "${pwd}\.nuget\packages\"

View File

@ -21,22 +21,17 @@ dotnet publish "%PathToRepository%\products\ASC.Files\server\ASC.Files.csproj" -
dotnet publish "%PathToRepository%\products\ASC.People\server\ASC.People.csproj" -c Release --self-contained false -o "%PathToAppFolder%\products\ASC.People\server"
rem backend services (dotnet) in directory 'services'
dotnet publish "%PathToRepository%\common\services\ASC.ApiSystem\ASC.ApiSystem.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.ApiSystem\service"
dotnet publish "%PathToRepository%\common\services\ASC.Data.Backup\ASC.Data.Backup.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Data.Backup\service"
dotnet publish "%PathToRepository%\products\ASC.Files\service\ASC.Files.Service.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Files.Service\service"
dotnet publish "%PathToRepository%\common\services\ASC.Notify\ASC.Notify.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Notify\service"
dotnet publish "%PathToRepository%\common\services\ASC.Studio.Notify\ASC.Studio.Notify.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Studio.Notify\service"
dotnet publish "%PathToRepository%\common\services\ASC.TelegramService\ASC.TelegramService.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.TelegramService\service"
dotnet publish "%PathToRepository%\common\services\ASC.Data.Backup.BackgroundTasks\ASC.Data.Backup.BackgroundTasks.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Data.Backup.BackgroundTasks\service"
dotnet publish "%PathToRepository%\common\services\ASC.ClearEvents\ASC.ClearEvents.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.ClearEvents\service"
dotnet publish "%PathToRepository%\common\ASC.Migration\ASC.Migration.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Migration\service"
dotnet publish "%PathToRepository%\common\services\ASC.Webhooks.Service\ASC.Webhooks.Service.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Webhooks.Service\service"
dotnet publish "%PathToRepository%\web\ASC.Web.Api\ASC.Web.Api.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Web.Api\service"
dotnet publish "%PathToRepository%\web\ASC.Web.Studio\ASC.Web.Studio.csproj" -c Release --self-contained false -o "%PathToAppFolder%\services\ASC.Web.Studio\service"
rem backend services (Nodejs) in directory 'services'
mkdir "%PathToAppFolder%\services\ASC.UrlShortener\service"
xcopy "%PathToRepository%\common\ASC.UrlShortener" "%PathToAppFolder%\services\ASC.UrlShortener\service" /s /y /b /i
mkdir "%PathToAppFolder%\services\ASC.Socket.IO\service"
xcopy "%PathToRepository%\common\ASC.Socket.IO" "%PathToAppFolder%\services\ASC.Socket.IO\service" /s /y /b /i

View File

@ -1,14 +0,0 @@
<service>
<id>ASC.UrlShortener</id>
<name>ASC.UrlShortener</name>
<description>This service runs ASC.UrlShortener</description>
<priority>RealTime</priority>
<startmode>Automatic</startmode>
<onfailure action="restart" delay="10 sec"/>
<executable>node</executable>
<arguments>&quot;{APPDIR}services\ASC.UrlShortener\service\index.js&quot;</arguments>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
</service>

View File

@ -1,3 +1,123 @@
Function RedisSetup
On Error Resume Next
Dim Shell
Set Shell = CreateObject("WScript.Shell")
Shell.Run "redis-cli config set save """"", 0, True
Shell.Run "redis-cli config rewrite", 0, True
Set Shell = Nothing
End Function
Function TestPostgreSqlConnection
On Error Resume Next
Dim ErrorText
Dim Pos, postgreSqlDriver
postgreSqlDriver = "PostgreSQL Unicode(x64)"
Session.Property("PostgreSqlConnectionError") = ""
Set ConnectionObject = CreateObject("ADODB.Connection")
ConnectionObject.Open "Driver={" & postgreSqlDriver & "};" & _
"Server=" & Session.Property("PS_DB_HOST") & ";" & _
"Port=" & Session.Property("PS_DB_PORT") & ";" & _
"Database=" & Session.Property("PS_DB_NAME") & ";" & _
"Uid=" & Session.Property("PS_DB_USER") & ";" & _
"Pwd=" & Session.Property("PS_DB_PWD")
If Err.Number <> 0 Then
ErrorText = Err.Description
Pos = InStrRev( ErrorText, "]" )
If 0 < Pos Then
ErrorText = Right( ErrorText, Len( ErrorText ) - Pos )
End If
Session.Property("PostgreSqlConnectionError") = ErrorText
End If
ConnectionObject.Close
Set ConnectionObject = Nothing
End Function
Function PostgreSqlConfigure
On Error Resume Next
If (StrComp(Session.Property("POSTGRE_SQL_PATH"),"FALSE") = 0) Then
Wscript.Quit
End If
Dim ErrorText
Dim Pos, postgreSqlDriver
Dim databaseUserName
Dim databaseUserPwd
Dim databaseName
Dim databasePort
Dim databaseHost
databaseUserName = Session.Property("PS_DB_USER")
databaseUserPwd = Session.Property("PS_DB_PWD")
databaseName = Session.Property("PS_DB_NAME")
databasePort = Session.Property("PS_DB_PORT")
databaseHost = Session.Property("PS_DB_HOST")
Call WriteToLog("PostgreSqlConfig: databaseUserName is " & databaseUserName)
Call WriteToLog("PostgreSqlConfig: databaseUserPwd is " & databaseUserPwd)
Call WriteToLog("PostgreSqlConfig: databaseName is " & databaseName)
Call WriteToLog("PostgreSqlConfig: databasePort is " & databasePort)
Call WriteToLog("PostgreSqlConfig: databaseHost is " & databaseHost)
postgreSqlDriver = "PostgreSQL Unicode(x64)"
Set ConnectionObject = CreateObject("ADODB.Connection")
ConnectionObject.Open "Driver={" & postgreSqlDriver & "};Server=" & databaseHost & ";Port=" & databasePort & ";Database=" & "postgres" & ";Uid=" & "postgres" & ";Pwd=" & "postgres"
ConnectionObject.Execute "CREATE DATABASE " & databaseName
ConnectionObject.Execute "create user " & databaseUserName & " with encrypted password '" & databaseUserPwd & "'"
ConnectionObject.Execute "grant all privileges on database " & databaseName & " to " & databaseUserName
If Err.Number <> 0 Then
ErrorText = Err.Description
Pos = InStrRev( ErrorText, "]" )
If 0 < Pos Then
Call WriteToLog("PostgreSqlConfig: error is " & ErrorText)
ErrorText = Right( ErrorText, Len( ErrorText ) - Pos )
Session.Property("PostgreSqlConnectionError") = ErrorText
End If
End If
ConnectionObject.Close
Set ConnectionObject = Nothing
End Function
Function RandomString( ByVal strLen )
Dim str, min, max
Const LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ0123456789"
min = 1
max = Len(LETTERS)
Randomize
For i = 1 to strLen
str = str & Mid( LETTERS, Int((max-min+1)*Rnd+min), 1 )
Next
RandomString = str
End Function
Function SetDocumentServerJWTSecretProp
On Error Resume Next
Session.Property("JWT_SECRET") = RandomString( 30 )
End Function
Function MySQLConfigure
On Error Resume Next
@ -28,8 +148,8 @@ Function MySQLConfigure
Session.Property("MYSQLODBCDRIVER") = mysqlDriver
Set shell = CreateObject("WScript.Shell")
dbname = Session.Property("DATABASE_PROP")
dbpass = Session.Property("PASSWORD_PROP")
dbname = Session.Property("DB_NAME")
dbpass = Session.Property("DB_PWD")
Err.Clear
installDir = shell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MySQL AB\MySQL Server 8.0\Location")
@ -101,13 +221,13 @@ Function ElasticSearchSetup
Set Shell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
APP_INDEX_DIR = Session.Property("APPDIR") & "Data\Index\v7.13.1\"
APP_INDEX_DIR = Session.Property("APPDIR") & "Data\Index\v7.16.3\"
If Not fso.FolderExists(APP_INDEX_DIR) Then
Session.Property("NEED_REINDEX_ELASTICSEARCH") = "TRUE"
End If
Call Shell.Run("%COMSPEC% /c mkdir """ & Session.Property("APPDIR") & "Data\Index\v7.13.1\""",0,true)
Call Shell.Run("%COMSPEC% /c mkdir """ & Session.Property("APPDIR") & "Data\Index\v7.16.3\""",0,true)
Call Shell.Run("%COMSPEC% /c mkdir """ & Session.Property("APPDIR") & "Logs\""",0,true)
Set objFile = objFSO.OpenTextFile(Session.Property("CommonAppDataFolder") & "Elastic\Elasticsearch\config\elasticsearch.yml", ForReading)
@ -159,7 +279,7 @@ Function ElasticSearchSetup
End if
oRE.Pattern = "path.data:.*"
fileContent = oRE.Replace(fileContent, "path.data: " & Session.Property("APPDIR") & "Data\Index\v7.13.1\")
fileContent = oRE.Replace(fileContent, "path.data: " & Session.Property("APPDIR") & "Data\Index\v7.16.3\")
oRE.Pattern = "path.logs:.*"
fileContent = oRE.Replace(fileContent, "path.logs: " & Session.Property("APPDIR") & "Logs\")
@ -215,8 +335,8 @@ Function ElasticSearchInstallPlugin
Set Shell = CreateObject("WScript.Shell")
ShellInstallCommand = """C:\Program Files\Elastic\Elasticsearch\7.13.1\bin\elasticsearch-plugin""" & " install -b -s ingest-attachment"""
ShellRemoveCommand = """C:\Program Files\Elastic\Elasticsearch\7.13.1\bin\elasticsearch-plugin""" & " remove -s ingest-attachment"""
ShellInstallCommand = """C:\Program Files\Elastic\Elasticsearch\7.16.3\bin\elasticsearch-plugin""" & " install -b -s ingest-attachment"""
ShellRemoveCommand = """C:\Program Files\Elastic\Elasticsearch\7.16.3\bin\elasticsearch-plugin""" & " remove -s ingest-attachment"""
Call Shell.Run("cmd /C " & """" & ShellRemoveCommand & """",0,true)
Call Shell.Run("cmd /C " & """" & ShellInstallCommand & """",0,true)
@ -260,7 +380,7 @@ Function TestSqlConnection
Session.Property("MYSQLODBCDRIVER") = mysqlDriver
Set ConnectionObject = CreateObject("ADODB.Connection")
ConnectionObject.Open "Driver={" & mysqlDriver & "};Server=" & Session.Property("SERVER_PROP") & ";Port=" & Session.Property("PORT_PROP") & ";Uid=" & Session.Property("USERNAME_PROP") & ";Pwd=" & Session.Property("PASSWORD_PROP")
ConnectionObject.Open "Driver={" & mysqlDriver & "};Server=" & Session.Property("DB_HOST") & ";Port=" & Session.Property("DB_PORT") & ";Uid=" & Session.Property("DB_USER") & ";Pwd=" & Session.Property("DB_PWD")
If Err.Number <> 0 Then
ErrorText = Err.Description

View File

@ -1,2 +1,4 @@
PUSHD %~dp0..
dotnet test common\Tests\Frontend.Translations.Tests\Frontend.Translations.Tests.csproj --filter "TestCategory=FastRunning" -l:html -r TestsResults
set dir=%~dp0..
echo %dir%
dotnet test common\Tests\Frontend.Translations.Tests\Frontend.Translations.Tests.csproj --filter "TestCategory=FastRunning" -l:html --environment "BASE_DIR=%dir%" --results-directory "%dir%/TestsResults"

View File

@ -5,4 +5,4 @@ dir=$(builtin cd $rd/../; pwd)
echo "Root directory:" $dir
dotnet test $dir/common/Tests/Frontend.Translations.Tests/Frontend.Translations.Tests.csproj --filter "TestCategory=FastRunning" -l:html -r $dir/TestsResults
dotnet test $dir/common/Tests/Frontend.Translations.Tests/Frontend.Translations.Tests.csproj --filter "TestCategory=FastRunning" -l:html --results-directory "$dir/TestsResults" --environment "BASE_DIR=$dir"

View File

@ -1,4 +1,4 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\common\services\ASC.Data.Backup.BackgroundTasks\bin\Debug\ASC.Data.Backup.BackgroundTasks.exe urls=http://0.0.0.0:5032 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=backup.backgroundtasks pathToConf=%cd%\config core:products:folder=%cd%\products
set servicepath=%cd%\common\services\ASC.Data.Backup.BackgroundTasks\bin\Debug\ASC.Data.Backup.BackgroundTasks.exe urls=http://0.0.0.0:5032 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=backup.backgroundtasks pathToConf=%cd%\config core:products:folder=%cd%\products core:eventBus:subscriptionClientName=asc_event_bus_backup_queue

View File

@ -1,4 +1,4 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\products\ASC.Files\Service\bin\Debug\ASC.Files.Service.exe urls=http://0.0.0.0:5009 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=files.service pathToConf=%cd%\config core:products:folder=%cd%\products
set servicepath=%cd%\products\ASC.Files\Service\bin\Debug\ASC.Files.Service.exe urls=http://0.0.0.0:5009 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=files.service pathToConf=%cd%\config core:products:folder=%cd%\products core:eventBus:subscriptionClientName=asc_event_bus_files_service_queue

View File

@ -1,4 +0,0 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\common\ASC.Migration\bin\Debug\ASC.Migration.exe urls=http://0.0.0.0:5034 $STORAGE_ROOT=%cd%\Data pathToConf=%cd%\config log:dir=%cd%\Logs log:name=migration core:products:folder=%cd%\products

View File

@ -1,4 +1,4 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\common\services\ASC.Notify\bin\Debug\ASC.Notify.exe urls=http://0.0.0.0:5005 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=notify pathToConf=%cd%\config core:products:folder=%cd%\products
set servicepath=%cd%\common\services\ASC.Notify\bin\Debug\ASC.Notify.exe urls=http://0.0.0.0:5005 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=notify pathToConf=%cd%\config core:products:folder=%cd%\products core:eventBus:subscriptionClientName=asc_event_bus_notify_queue

View File

@ -1,10 +0,0 @@
<service>
<id>OnlyofficeRadicale</id>
<name>ONLYOFFICE Radicale</name>
<startmode>manual</startmode>
<executable>python</executable>
<arguments>-m radicale --config %BASE%/../../config/radicale.config</arguments>
<log mode="none"/>
<delayedAutoStart>true</delayedAutoStart>
<onfailure action="restart" delay="5 sec" />
</service>

View File

@ -1,4 +0,0 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\common\services\ASC.TelegramService\bin\Debug\ASC.TelegramService.exe urls=http://0.0.0.0:51702 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=telegram pathToConf=%cd%\config

View File

@ -1,10 +0,0 @@
<service>
<id>OnlyofficeUrlShortenerService</id>
<name>ONLYOFFICE UrlShortenerService</name>
<startmode>manual</startmode>
<executable>node</executable>
<arguments>../../common/ASC.UrlShortener/index.js</arguments>
<log mode="none"/>
<delayedAutoStart>true</delayedAutoStart>
<onfailure action="restart" delay="5 sec" />
</service>

View File

@ -1,4 +1,4 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\web\ASC.Web.HealthChecks.UI\bin\Debug\ASC.Web.HealthChecks.UI.exe urls=http://0.0.0.0:5027
set servicepath=%cd%\web\ASC.Web.HealthChecks.UI\bin\Debug\ASC.Web.HealthChecks.UI.exe urls=http://0.0.0.0:5033

View File

@ -1,4 +0,0 @@
@echo off
PUSHD %~dp0..\..
set servicepath=%cd%\common\services\ASC.Webhooks.Service\bin\Debug\ASC.Webhooks.Service.exe urls=http://0.0.0.0:5031 $STORAGE_ROOT=%cd%\Data log:dir=%cd%\Logs log:name=webhooks pathToConf=%cd%\config core:products:folder=%cd%\products

View File

@ -3,8 +3,8 @@
cd /D "%~dp0"
call start\stop.bat nopause
dotnet build ..\asc.web.slnf
dotnet build ..\asc.web.slnf
dotnet build ..\ASC.Migrations.sln
PUSHD %~dp0..\common\Tools\ASC.Migration.Runner\bin\Debug\net6.0
PUSHD %~dp0..\common\Tools\ASC.Migration.Runner\bin\Debug\net7.0
dotnet ASC.Migration.Runner.dll
pause

View File

@ -9,7 +9,7 @@ echo "Run script directory:" $rd
dir=$(builtin cd $rd/../; pwd)
echo "Root directory:" $dir
dotnet build $dir/asc.web.slnf
dotnet build $dir/asc.web.slnf
dotnet build $dir/ASC.Migrations.sln
pushd $dir/common/Tools/ASC.Migration.Runner/bin/Debug/net6.0

View File

@ -10,8 +10,11 @@ const localesDir = join(
"locales"
);
//console.log("localesDir", localesDir);
const getFileList = (dirName) => {
let files = [];
const items = readdirSync(dirName, { withFileTypes: true });
for (const item of items) {
@ -29,6 +32,8 @@ const files = getFileList(localesDir);
files.forEach((filePath) => {
try {
if (filePath.endsWith(".DS_Store")) return;
let content = readFileSync(filePath);
writeFileSync(filePath, minifyJson(content, filePath));
//console.log(`File '${filePath}' minified`);

View File

@ -1,7 +0,0 @@
PUSHD %~dp0..
cd %~dp0../../common/ASC.UrlShortener/
call yarn install --immutable
POPD

View File

@ -0,0 +1,16 @@
@echo off
PUSHD %~dp0..
call runasadmin.bat "%~dpnx0"
POPD
if %errorlevel% == 0 (
pwsh %~dp0/command.ps1 "increase-service-timeout"
)
echo.
if "%1"=="nopause" goto start
pause
:start

View File

@ -2,14 +2,29 @@ $PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object
$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object {$_.minor}
if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) {
Write-Error "Powershell version must be greater than or equal to 7.2. Press Enter to exit."
Pause
Write-Error "Powershell version must be greater than or equal to 7.2."
exit
}
$WorkDir = "$(Split-Path -Parent $PSScriptRoot)\run";
$CommandName = "$($args[0])";
if ( $CommandName -eq "increase-service-timeout" ) {
$RegistryPath = 'HKLM:\SYSTEM\CurrentControlSet\Control'
$Name = 'ServicesPipeTimeout'
$Value = '90000'
Write-Output "Changing service start timeout from default value (30000 ms ) to $($Value) ms"
New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force
Write-Warning "Please, restart the computer for the changes to take effect."
exit
}
#Write-Output "Starting $($CommandName) services at time: $(Get-Date -Format HH:mm:ss)"
#Write-Output ""

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/restart.backend.docker.ps1
echo.
pause

View File

@ -0,0 +1,5 @@
# Stop all backend services"
& "$PSScriptRoot\stop.backend.docker.ps1"
# Start all backend services"
& "$PSScriptRoot\start.backend.docker.ps1"

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/start.backend.docker.ps1
echo.
pause

View File

@ -0,0 +1,41 @@
$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major }
$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor }
if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) {
Write-Error "Powershell version must be greater than or equal to 7.2."
exit
}
$Branch = git branch --show-current
$BranchExistRemote = git ls-remote --heads origin $Branch
if (-not $BranchExistRemote) {
Write-Error "The current branch does not exist in the remote repository. Please push changes."
exit
}
$RootDir = Split-Path (Split-Path -Parent $PSScriptRoot) -Parent
$DockerDir = ($RootDir + "\build\install\docker")
$BuildDate = Get-Date -Format "yyyy-MM-dd"
$LocalIp = (Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration | Where-Object { $_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null }).IPAddress | Select-Object -First 1
$Doceditor = ($LocalIp + ":5013")
$Login = ($LocalIp + ":5011")
$Client = ($LocalIp + ":5001")
$DockerFile = "Dockerfile.dev"
$EnvExtension = "dev"
$CoreBaseDomain = "localhost"
Write-Host "Start all backend services (containers)" -ForegroundColor Green
$Env:DOCKERFILE = $DockerFile
$Env:ROOT_DIR = $RootDir
$Env:RELEASE_DATE = $BuildDate
$Env:GIT_BRANCH = $Branch
$Env:SERVICE_DOCEDITOR = $Doceditor
$Env:SERVICE_LOGIN = $Login
$Env:SERVICE_CLIENT = $Client
$Env:APP_CORE_BASE_DOMAIN = $CoreBaseDomain
$Env:APP_URL_PORTAL = ("http://" + $LocalIp + ":8092")
$Env:ENV_EXTENSION = $EnvExtension
docker compose -f ($DockerDir + "\docspace.dev.yml") up -d

View File

@ -9,10 +9,17 @@ echo "Root directory:" $dir
cd $dir
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
branch=$(git branch --show-current)
echo "GIT_BRANCH:" $branch
branch_exist_remote=$(git ls-remote --heads origin $branch)
if [ -z "$branch_exist_remote" ]; then
echo "The current branch does not exist in the remote repository. Please push changes."
exit 1
fi
cd $dir/build/install/docker/
docker_dir="$( pwd )"
@ -39,7 +46,7 @@ docker_file=Dockerfile.dev
env_extension="dev"
core_base_domain="localhost"
echo "Start all backend services"
echo "Start all backend services (containers)"
DOCKERFILE=$docker_file \
ROOT_DIR=$dir \
RELEASE_DATE=$build_date \

View File

@ -0,0 +1,7 @@
@echo off
pwsh %~dp0/stop.backend.docker.ps1
echo.
pause

View File

@ -0,0 +1,17 @@
$PSversionMajor = $PSVersionTable.PSVersion | sort-object major | ForEach-Object { $_.major }
$PSversionMinor = $PSVersionTable.PSVersion | sort-object minor | ForEach-Object { $_.minor }
if ($PSversionMajor -lt 7 -or $PSversionMinor -lt 2) {
Write-Error "Powershell version must be greater than or equal to 7.2."
exit
}
$Containers = docker ps -a -f "name=^onlyoffice" --format="{{.ID}} {{.Names}}" | Select-String -Pattern ("mysql|rabbitmq|redis|elasticsearch|documentserver") -NotMatch | ConvertFrom-String | ForEach-Object P1
if (-not $Containers) {
Write-Host "No containers to stop" -ForegroundColor Blue
exit
}
Write-Host "Stop all backend services (containers)" -ForegroundColor Green
docker stop $Containers

View File

@ -1,23 +1,4 @@
#!/bin/bash
#rd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
#echo "Run script directory:" $dir
#dir=$(builtin cd $rd/../../; pwd)
#echo "Root directory:" $dir
#cd $dir/build/install/docker/
#docker_dir="$( pwd )"
#echo "Docker directory:" $docker_dir
echo "Stop all backend containers"
# DOCKERFILE=Dockerfile.dev \
# docker compose -f docspace.dev.yml down
docker stop $(docker ps -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $1}')
echo "Remove all backend containers"
docker rm -f $(docker ps -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $1}')
echo "Remove all backend images"
docker rmi -f $(docker images -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $3}')
echo "Stop all backend services (containers)"
docker stop $(docker ps -a | egrep "onlyoffice" | egrep -v "mysql|rabbitmq|redis|elasticsearch|documentserver" | awk 'NR>0 {print $1}')

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

View File

@ -24,8 +24,6 @@
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
using ASC.Core.Common.EF.Context;
namespace ASC.ActiveDirectory.Base;
[Scope]

View File

@ -364,7 +364,7 @@ public class LdapUserImporter : IDisposable
return result;
}
public bool TrySyncUserGroupMembership(Tuple<UserInfo, LdapObject> ldapUserInfo)
public async Task<bool> TrySyncUserGroupMembership(Tuple<UserInfo, LdapObject> ldapUserInfo)
{
if (ldapUserInfo == null ||
!Settings.GroupMembership)
@ -401,12 +401,12 @@ public class LdapUserImporter : IDisposable
groupInfo = UserManager.SaveGroupInfo(_ldapObjectExtension.ToGroupInfo(ldapUserGroup, Settings));
_logger.DebugTrySyncUserGroupMembershipAddingUserToGroup(userInfo.UserName, ldapUser.Sid, groupInfo.Name, groupInfo.Sid);
UserManager.AddUserIntoGroup(userInfo.Id, groupInfo.ID);
await UserManager.AddUserIntoGroup(userInfo.Id, groupInfo.ID);
}
else if (!portalUserLdapGroups.Contains(groupInfo))
{
_logger.DebugTrySyncUserGroupMembershipAddingUserToGroup(userInfo.UserName, ldapUser.Sid, groupInfo.Name, groupInfo.Sid);
UserManager.AddUserIntoGroup(userInfo.Id, groupInfo.ID);
await UserManager.AddUserIntoGroup(userInfo.Id, groupInfo.ID);
}
actualPortalLdapGroups.Add(groupInfo);

View File

@ -136,7 +136,7 @@ public class LdapOperationJob : DistributedTaskProgress
InitDisturbedTask();
}
protected override void DoJob()
protected override async Task DoJob()
{
try
{
@ -206,7 +206,7 @@ public class LdapOperationJob : DistributedTaskProgress
default:
throw new ArgumentOutOfRangeException();
}
Do();
await Do();
}
catch (AuthorizingException authError)
{
@ -247,7 +247,7 @@ public class LdapOperationJob : DistributedTaskProgress
}
}
private void Do()
private async Task Do()
{
try
{
@ -288,7 +288,7 @@ public class LdapOperationJob : DistributedTaskProgress
_logger.DebugLdapSettings(sb.ToString());
}
SyncLDAP();
await SyncLDAP();
if (!string.IsNullOrEmpty(Error))
{
@ -380,7 +380,7 @@ public class LdapOperationJob : DistributedTaskProgress
_logger.DebugSaveUserInfo(existingLDAPUser.GetUserInfoString());
_userManager.SaveUserInfo(existingLDAPUser);
_userManager.UpdateUserInfo(existingLDAPUser);
break;
case LdapOperationType.SaveTest:
case LdapOperationType.SyncTest:
@ -394,7 +394,7 @@ public class LdapOperationJob : DistributedTaskProgress
}
}
private void SyncLDAP()
private async Task SyncLDAP()
{
var currentDomainSettings = _settingsManager.Load<LdapCurrentDomain>();
@ -408,21 +408,21 @@ public class LdapOperationJob : DistributedTaskProgress
{
_logger.DebugSyncLDAPUsers();
SyncLDAPUsers();
await SyncLDAPUsers();
}
else
{
_logger.DebugSyncLDAPUsersInGroups();
SyncLDAPUsersInGroups();
await SyncLDAPUsersInGroups();
}
SyncLdapAvatar();
await SyncLdapAvatar();
SyncLdapAccessRights();
await SyncLdapAccessRights();
}
private void SyncLdapAvatar()
private async Task SyncLdapAvatar()
{
SetProgress(90, Resource.LdapSettingsStatusUpdatingUserPhotos);
@ -438,7 +438,7 @@ public class LdapOperationJob : DistributedTaskProgress
foreach (var guid in ph.CurrentPhotos.Keys)
{
_logger.InfoSyncLdapAvatarsRemovingPhoto(guid);
_userPhotoManager.RemovePhoto(guid);
await _userPhotoManager.RemovePhoto(guid);
_userPhotoManager.ResetThumbnailSettings(guid);
}
@ -511,16 +511,16 @@ public class LdapOperationJob : DistributedTaskProgress
_settingsManager.Save(photoSettings);
}
private void SyncLdapAccessRights()
private async Task SyncLdapAccessRights()
{
SetProgress(95, Resource.LdapSettingsStatusUpdatingAccessRights);
var currentUserRights = new List<LdapSettings.AccessRight>();
TakeUsersRights(_currentUser != null ? currentUserRights : null);
await TakeUsersRights(_currentUser != null ? currentUserRights : null);
if (LDAPSettings.GroupMembership && LDAPSettings.AccessRights != null && LDAPSettings.AccessRights.Count > 0)
{
GiveUsersRights(LDAPSettings.AccessRights, _currentUser != null ? currentUserRights : null);
await GiveUsersRights(LDAPSettings.AccessRights, _currentUser != null ? currentUserRights : null);
}
if (currentUserRights.Count > 0)
@ -531,7 +531,7 @@ public class LdapOperationJob : DistributedTaskProgress
_settingsManager.Save(LDAPSettings);
}
private void TakeUsersRights(List<LdapSettings.AccessRight> currentUserRights)
private async Task TakeUsersRights(List<LdapSettings.AccessRight> currentUserRights)
{
var current = _settingsManager.Load<LdapCurrentAcccessSettings>();
@ -558,7 +558,7 @@ public class LdapOperationJob : DistributedTaskProgress
else
{
_logger.DebugTakingAdminRights(right.Key, user);
_webItemSecurity.SetProductAdministrator(LdapSettings.AccessRightsGuids[right.Key], userId, false);
await _webItemSecurity.SetProductAdministrator(LdapSettings.AccessRightsGuids[right.Key], userId, false);
}
}
}
@ -567,7 +567,7 @@ public class LdapOperationJob : DistributedTaskProgress
_settingsManager.Save(current);
}
private void GiveUsersRights(Dictionary<LdapSettings.AccessRight, string> accessRightsSettings, List<LdapSettings.AccessRight> currentUserRights)
private async Task GiveUsersRights(Dictionary<LdapSettings.AccessRight, string> accessRightsSettings, List<LdapSettings.AccessRight> currentUserRights)
{
var current = _settingsManager.Load<LdapCurrentAcccessSettings>();
var currentAccessRights = new Dictionary<LdapSettings.AccessRight, List<string>>();
@ -618,7 +618,7 @@ public class LdapOperationJob : DistributedTaskProgress
if (_webItemSecurity.IsProductAdministrator(prodId, user.Id))
{
cleared = true;
_webItemSecurity.SetProductAdministrator(prodId, user.Id, false);
await _webItemSecurity.SetProductAdministrator(prodId, user.Id, false);
}
}
@ -636,7 +636,7 @@ public class LdapOperationJob : DistributedTaskProgress
SetProgress((int)currentPercent,
string.Format(Resource.LdapSettingsStatusGivingRights, _userFormatter.GetUserName(user, DisplayUserNameFormat.Default), access.Key));
_webItemSecurity.SetProductAdministrator(LdapSettings.AccessRightsGuids[access.Key], user.Id, true);
await _webItemSecurity.SetProductAdministrator(LdapSettings.AccessRightsGuids[access.Key], user.Id, true);
if (currentUserRights != null && currentUserRights.Contains(access.Key))
{
@ -651,7 +651,7 @@ public class LdapOperationJob : DistributedTaskProgress
_settingsManager.Save(current);
}
private void SyncLDAPUsers()
private async Task SyncLDAPUsers()
{
SetProgress(15, Resource.LdapSettingsStatusGettingUsersFromLdap);
@ -675,14 +675,14 @@ public class LdapOperationJob : DistributedTaskProgress
: Resource.LdapSettingsStatusSyncingUsers,
"");
SyncDbUsers(ldapUsers);
await SyncDbUsers(ldapUsers);
SetProgress(70, Resource.LdapSettingsStatusRemovingOldGroups, "");
RemoveOldDbGroups(new List<GroupInfo>()); // Remove all db groups with sid
}
private void SyncLDAPUsersInGroups()
private async Task SyncLDAPUsersInGroups()
{
SetProgress(15, Resource.LdapSettingsStatusGettingGroupsFromLdap);
@ -717,11 +717,11 @@ public class LdapOperationJob : DistributedTaskProgress
: Resource.LdapSettingsStatusSyncingUsers,
"");
var newUniqueLdapGroupUsers = SyncGroupsUsers(uniqueLdapGroupUsers);
var newUniqueLdapGroupUsers = await SyncGroupsUsers(uniqueLdapGroupUsers);
SetProgress(60, Resource.LdapSettingsStatusSavingGroups, "");
SyncDbGroups(ldapGroupsUsers);
await SyncDbGroups(ldapGroupsUsers);
SetProgress(80, Resource.LdapSettingsStatusRemovingOldGroups, "");
@ -732,7 +732,7 @@ public class LdapOperationJob : DistributedTaskProgress
RemoveOldDbUsers(newUniqueLdapGroupUsers);
}
private void SyncDbGroups(Dictionary<GroupInfo, List<UserInfo>> ldapGroupsWithUsers)
private async Task SyncDbGroups(Dictionary<GroupInfo, List<UserInfo>> ldapGroupsWithUsers)
{
const double percents = 20;
@ -765,18 +765,18 @@ public class LdapOperationJob : DistributedTaskProgress
if (Equals(dbLdapGroup, Constants.LostGroupInfo))
{
AddNewGroup(ldapGroup, ldapGroupUsers, gIndex, gCount);
await AddNewGroup(ldapGroup, ldapGroupUsers, gIndex, gCount);
}
else
{
UpdateDbGroup(dbLdapGroup, ldapGroup, ldapGroupUsers, gIndex, gCount);
await UpdateDbGroup(dbLdapGroup, ldapGroup, ldapGroupUsers, gIndex, gCount);
}
percentage += step;
}
}
private void AddNewGroup(GroupInfo ldapGroup, List<UserInfo> ldapGroupUsers, int gIndex, int gCount)
private async Task AddNewGroup(GroupInfo ldapGroup, List<UserInfo> ldapGroupUsers, int gIndex, int gCount)
{
if (!ldapGroupUsers.Any()) // Skip empty groups
{
@ -815,7 +815,7 @@ public class LdapOperationJob : DistributedTaskProgress
++index, count,
_userFormatter.GetUserName(userBySid, DisplayUserNameFormat.Default)));
_userManager.AddUserIntoGroup(userBySid.Id, ldapGroup.ID);
await _userManager.AddUserIntoGroup(userBySid.Id, ldapGroup.ID);
}
break;
case LdapOperationType.SaveTest:
@ -846,7 +846,7 @@ public class LdapOperationJob : DistributedTaskProgress
return needUpdate;
}
private void UpdateDbGroup(GroupInfo dbLdapGroup, GroupInfo ldapGroup, List<UserInfo> ldapGroupUsers, int gIndex,
private async Task UpdateDbGroup(GroupInfo dbLdapGroup, GroupInfo ldapGroup, List<UserInfo> ldapGroupUsers, int gIndex,
int gCount)
{
SetProgress(currentSource:
@ -911,7 +911,7 @@ public class LdapOperationJob : DistributedTaskProgress
++index, count,
_userFormatter.GetUserName(userInfo, DisplayUserNameFormat.Default)));
_userManager.AddUserIntoGroup(userInfo.Id, dbLdapGroup.ID);
await _userManager.AddUserIntoGroup(userInfo.Id, dbLdapGroup.ID);
}
if (dbGroupMembers.All(dbUser => groupMembersToRemove.Exists(u => u.Id.Equals(dbUser.Id)))
@ -965,7 +965,7 @@ public class LdapOperationJob : DistributedTaskProgress
return foundUser;
}
private void SyncDbUsers(List<UserInfo> ldapUsers)
private async Task SyncDbUsers(List<UserInfo> ldapUsers)
{
const double percents = 35;
@ -992,12 +992,11 @@ public class LdapOperationJob : DistributedTaskProgress
{
case LdapOperationType.Save:
case LdapOperationType.Sync:
_lDAPUserManager.SyncLDAPUser(userInfo, ldapUsers);
await _lDAPUserManager.SyncLDAPUser(userInfo, ldapUsers);
break;
case LdapOperationType.SaveTest:
case LdapOperationType.SyncTest:
LdapChangeCollection changes;
_lDAPUserManager.GetLDAPSyncUserChange(userInfo, ldapUsers, out changes);
var changes = (await _lDAPUserManager.GetLDAPSyncUserChange(userInfo, ldapUsers)).LdapChangeCollection;
_ldapChanges.AddRange(changes);
break;
default:
@ -1065,7 +1064,7 @@ public class LdapOperationJob : DistributedTaskProgress
_logger.DebugSaveUserInfo(removedUser.GetUserInfoString());
_userManager.SaveUserInfo(removedUser);
_userManager.UpdateUserInfo(removedUser);
break;
case LdapOperationType.SaveTest:
case LdapOperationType.SyncTest:
@ -1129,7 +1128,7 @@ public class LdapOperationJob : DistributedTaskProgress
}
}
private List<UserInfo> SyncGroupsUsers(List<UserInfo> uniqueLdapGroupUsers)
private async Task<List<UserInfo>> SyncGroupsUsers(List<UserInfo> uniqueLdapGroupUsers)
{
const double percents = 30;
@ -1157,7 +1156,7 @@ public class LdapOperationJob : DistributedTaskProgress
{
case LdapOperationType.Save:
case LdapOperationType.Sync:
user = _lDAPUserManager.SyncLDAPUser(ldapGroupUser, uniqueLdapGroupUsers);
user = await _lDAPUserManager.SyncLDAPUser(ldapGroupUser, uniqueLdapGroupUsers);
if (!Equals(user, Constants.LostUser))
{
newUniqueLdapGroupUsers.Add(user);
@ -1165,8 +1164,9 @@ public class LdapOperationJob : DistributedTaskProgress
break;
case LdapOperationType.SaveTest:
case LdapOperationType.SyncTest:
LdapChangeCollection changes;
user = _lDAPUserManager.GetLDAPSyncUserChange(ldapGroupUser, uniqueLdapGroupUsers, out changes);
var wrapper = await _lDAPUserManager.GetLDAPSyncUserChange(ldapGroupUser, uniqueLdapGroupUsers);
user = wrapper.UserInfo;
var changes = wrapper.LdapChangeCollection;
if (!Equals(user, Constants.LostUser))
{
newUniqueLdapGroupUsers.Add(user);

View File

@ -51,11 +51,13 @@ global using ASC.ActiveDirectory.Novell;
global using ASC.ActiveDirectory.Novell.Data;
global using ASC.ActiveDirectory.Novell.Exceptions;
global using ASC.ActiveDirectory.Novell.Extensions;
global using ASC.ActiveDirectory.Wrapper;
global using ASC.Common;
global using ASC.Common.Security.Authorizing;
global using ASC.Common.Threading;
global using ASC.Core;
global using ASC.Core.Common.EF;
global using ASC.Core.Common.EF.Context;
global using ASC.Core.Common.Settings;
global using ASC.Core.Tenants;
global using ASC.Core.Users;
@ -69,7 +71,6 @@ global using ASC.Web.Core;
global using ASC.Web.Core.PublicResources;
global using ASC.Web.Core.Quota;
global using ASC.Web.Core.Users;
global using ASC.Web.Core.Utility;
global using ASC.Web.Studio.Utility;
global using Microsoft.EntityFrameworkCore;

Some files were not shown because too many files have changed in this diff Show More