Compare commits

..

230 Commits

Author SHA1 Message Date
adbba165a6
fix(ci/cd): Missing apt update, wrong exit code
Some checks failed
Build / build (push) Failing after 16m42s
2024-09-22 23:13:52 +02:00
d837b6f4ef
fix(ci/cd): Cache apt packages 2024-09-22 23:05:26 +02:00
c700df21c1
chore: Disaable jobs from upstream 2024-09-22 22:59:30 +02:00
9b6eabced0
fix(ci/cd): Wrong variable name when checking for existing builds 2024-09-22 22:52:58 +02:00
7d2df472a6
feat: Add files for nix 2024-09-22 22:23:41 +02:00
ff49aa4da3
feat: Add gitignore 2024-09-22 22:23:18 +02:00
d94706dd54
Merge remote-tracking branch 'upstream/master'
Some checks failed
Build / build (push) Failing after 38s
Trigger 4testing rebuild / trigget-rebuild (push) Failing after 1s
2024-04-09 01:57:21 +02:00
papacarlo
40efc5bea9 Merge branch release/v8.0.0 into master 2024-01-30 11:32:11 +00:00
3318b6d62f
fix: Forgot to delete cut command, bad if statement 2024-01-27 04:33:47 +01:00
abd8c8fc95
fix: Outputs not working
Some checks failed
Build / build (push) Has been cancelled
2024-01-27 04:19:39 +01:00
fd38c9a98b
fix: Wrong working directory, simplified to 1 command (+ shell output)
Some checks failed
Build / build (push) Failing after 44s
2024-01-27 03:25:34 +01:00
1123cc8e19
test: /var/run/act/workflow/meta.sh: line 5: : No such file or directory
Some checks failed
Build / build (push) Failing after 39s
https://gitea.stefka.eu/jiriks74/Docker-DocumentServer/actions/runs/44
2024-01-27 03:18:18 +01:00
47f07ad059
fix: bad substitution
Some checks failed
Build / build (push) Failing after 39s
https://gitea.stefka.eu/jiriks74/Docker-DocumentServer/actions/runs/43
2024-01-27 03:16:15 +01:00
6871cb70c8
fix: No such file or directory
Some checks failed
Build / build (push) Failing after 40s
https://gitea.stefka.eu/jiriks74/Docker-DocumentServer/actions/runs/40
https://gitea.stefka.eu/jiriks74/Docker-DocumentServer/actions/runs/41
2024-01-27 03:11:40 +01:00
57aa057198
fix: Docker meta action cannot get git tags
Some checks failed
Build / build (push) Failing after 39s
2024-01-27 03:05:57 +01:00
19d79af2db
fix: Invalid context source: upstream
Some checks failed
Build / build (push) Failing after 44s
2024-01-27 02:55:35 +01:00
a61e416bb5
fix: Move to manual git clone
Some checks failed
Build / build (push) Failing after 42s
the actions/checkout cannot pull from github
2024-01-27 02:48:52 +01:00
06da0b1e92
fix: Invalid repository, Expected format {owner}/{repo}.
Some checks failed
Build / build (push) Failing after 57s
2024-01-27 02:46:12 +01:00
c13261154f
fix: identation
Some checks failed
Build / build (push) Failing after 59s
2024-01-27 02:37:47 +01:00
77f4adf134
fix: Use docker meta action to get tags 2024-01-27 02:34:42 +01:00
Alexey Golubev
0a42ee66b0
Fix bug #60688 (#703) 2024-01-18 10:20:37 +03:00
Danil Titarenko
6416c2c32a
Action small fixes (#697) 2023-12-21 13:22:02 +03:00
Semyon Bezrukov
4ab054c502
Add DOCKER_ORG make variable (#696) 2023-12-20 19:54:56 +03:00
Danil Titarenko
016440fd4b
Disable issue creation from zap scanner (#695) 2023-12-20 11:22:37 +03:00
Danil Titarenko
cb06c6f6e1
Correct startup conditions for zap scanner (#694) 2023-12-20 11:21:34 +03:00
Danil Titarenko
276c5da9f5
Add the ability to manually launch the zap scanner (#691)
* Add zap scanning for DocumentServer

* Set branch name as ref for manual trigger

* Use master as default zap action branch

* Move zap action to master branch

* Fix token variable name

* Small cosmetic fix

* Modify zap action trigger condition

Run zap scanner only when documentserver edition hit community and branch hit in `release/` or `hotfix/`
2023-12-19 11:45:12 +03:00
Danil Titarenko
84a8191de9
Add DocumentServer zap scanner (#685)
* Add DocumentServer zap scanner

* Fix zap target url from `http` to `https`
2023-12-19 11:24:58 +03:00
Evgeniy Antonyuk
6fc2b27fcf
fix Bug 65188 - Upgrade to a current version of postgresql (#690) 2023-11-29 12:33:41 +03:00
c981844975
fix(cicd): gitea
Some checks failed
Build / build (push) Failing after 1m44s
2023-11-21 20:55:07 +01:00
fc505d7f85
fix(cicd): testing
Some checks failed
Build / build (push) Failing after 43s
2023-11-21 20:53:43 +01:00
5382012065
fix(cicd): outputh path
Some checks failed
Build / build (push) Failing after 47s
2023-11-21 20:51:41 +01:00
42bcd0adf1
fix(cicd): remove if statements
Some checks failed
Build / build (push) Failing after 1m6s
2023-11-21 20:46:36 +01:00
6910d565c7
fix(cicd): invert exit statements
All checks were successful
Build / build (push) Successful in 24s
2023-11-21 20:44:51 +01:00
8e3fff2ca1
fix(cicd): add exit command
Some checks failed
Build / build (push) Failing after 24s
2023-11-21 20:42:53 +01:00
5ebcce6742
fix(cicd): inverted if statements
All checks were successful
Build / build (push) Successful in 34s
2023-11-21 20:40:40 +01:00
35ade80ab1
fix(cicd): broken new line
All checks were successful
Build / build (push) Successful in 26s
2023-11-21 20:38:56 +01:00
c2e4633b6c
fix(cicd): bad exit codes
Some checks failed
Build / build (push) Failing after 20s
2023-11-21 20:36:43 +01:00
9e9f6d37d2
fix(cicd): wrong command placement
All checks were successful
Build / build (push) Successful in 19s
2023-11-21 20:34:41 +01:00
9a134fc2ba
fix(cicd): try different command
All checks were successful
Build / build (push) Successful in 21s
2023-11-21 20:31:19 +01:00
b104e22c7a
fix(cicd): try different quotes
Some checks failed
Build / build (push) Failing after 45s
2023-11-21 20:26:56 +01:00
1d22c1e9c1
debug(cicd): test output
Some checks failed
Build / build (push) Failing after 43s
2023-11-21 19:50:06 +01:00
82ee7b2a4c
fix(cicd): move tag extraction to it's own job
Some checks failed
Build / build (push) Failing after 45s
2023-11-21 19:46:00 +01:00
c091b8908a
fix(cicd): move output to the end of job
Some checks failed
Build / build (push) Failing after 49s
2023-11-21 19:39:00 +01:00
6d6a87fe5b
fix(cicd): wrong brackets
Some checks failed
Build / build (push) Failing after 1m5s
2023-11-21 19:29:38 +01:00
e1adffa72b
fix(cicd): broken tag extraction
Some checks failed
Build / build (push) Failing after 29s
2023-11-21 19:26:40 +01:00
Semyon Bezrukov
09ac8b5463
Fix build workflow runs names (#679) 2023-11-20 12:05:00 +03:00
papacarlo
cd8177e0ae Merge branch hotfix/v7.5.1 into release/v7.6.0 2023-11-15 12:57:43 +00:00
Dmitry Kireev
012b35d2f8
Cancel prepare4shutdown script during cluster installation (#673)
* Cancel prepare4shutdown script during cluster installation

* Fix line length
2023-10-27 15:08:30 +03:00
papacarlo
5ef86cd090 Merge branch release/v7.5.0 into develop 2023-10-25 10:32:34 +00:00
papacarlo
6e424a5541 Merge branch release/v7.5.0 into master 2023-10-17 12:14:14 +00:00
d800394eb9
feat(ci/cd): Automatically build image, archive upstream workflows
Some checks failed
Build / build (push) Failing after 46s
2023-10-17 13:46:52 +02:00
7e2a6604dd
docs: Remove obsolete badges 2023-10-17 13:46:30 +02:00
Evgeniy Antonyuk
709bfdd734
fix Bug 63804 - Remove gconf from dependencies since it's deprecated (#663) 2023-09-21 17:09:21 +03:00
Alexey Golubev
f42aed52ab
Merge pull request #662 from RealVishy/patch-1
Fix mistype
2023-09-12 10:38:14 +03:00
Vishwas P
c37270f61f
Update README.md
fix the spelling of docker engine
2023-09-12 15:02:02 +10:00
Danil Titarenko
24d737d5b4
Add instructions for ipv6 connection. Related to bug #63537 (#654)
* Update README.md - add the 'ONLYOFFICE Document Server ipv6 setup' section

* Fix README.md formatting

---------

Co-authored-by: svetlana maleeva <svetlana.maleeva@onlyoffice.com>
2023-08-11 10:40:34 +03:00
papacarlo
4bc4f62720 Merge branch hotfix/v7.4.1 into develop 2023-08-01 08:19:29 +00:00
papacarlo
0b60ccb92b Merge branch hotfix/v7.4.1 into master 2023-07-31 07:28:30 +00:00
Iskandar Kurbonov
c413936f1c
Fix Bug #63238 - Fix re-copying of configuration files in supervisor (#645) 2023-07-13 19:51:03 +05:00
Danil Titarenko
9400eedc06
Add auto rebuild previous releases
* Add the ability to rebuild images

Rebuilding images will be done manually (for now). The choice of the number of rebuilt releases is available (1 by default), the choice of repositories for pushing rebuilt images is available (4testing by default).

Principle of operation:
Through the api of the docker hub, we get the last launched tag that falls under the pattern x.x.x.1, after that the tag with the assembly of which the minor tag x.x will be sent will be calculated. Next, at one of the build steps, the number of the previous release will be received, for example x. x.x.4 which will mean that the current one will be x.x.x.5

* Add login to dockerhub

* Refactoring code

Set some variables for all rebuild-info job. Also set default values for repository and quantity variables

* Refactor: remove push trigger

* Refactoring code

* Refactor: Unlinking a version

* Submitting the latest tag for the latest release only
2023-06-29 14:50:17 +05:00
papacarlo
80b4014588 Merge branch release/v7.4.0 into develop 2023-06-28 07:25:32 +00:00
papacarlo
4ae34b4d02 Merge branch release/v7.4.0 into master 2023-06-13 11:25:57 +00:00
Evgeniy Antonyuk
48add9dc89
Add the ability to enable request filtering agent (#628) 2023-05-26 18:59:54 +05:00
Danil Titarenko
7d32cac40a
Add new stable images versioning principles (#633)
* Refactoring stable images release versioning

The new principle of stable docker images versioning: release numbering is now not by build number, but by serial number.

* Refactoring: fix non-example image pull tag
2023-05-25 18:36:33 +05:00
Semyon Bezrukov
989647852e
Fix deprecated set-output (#632) 2023-05-24 13:51:14 +05:00
Alexey Golubev
816b4823d2
Merge pull request #627 from ONLYOFFICE/release/v7.4.0
Merge release/v7.4.0 into develop
2023-05-17 14:44:26 +05:00
Alexey Golubev
a97a8f0aaf
Merge pull request #624 from ONLYOFFICE/hotfix/v7.3.3
Merge branch hotfix/v7.3.3 into release/v7.4.0
2023-05-15 12:01:29 +05:00
Evgeniy Antonyuk
e2080865b9 Merge branch 'release/v7.4.0' into hotfix/v7.3.3 2023-05-15 12:00:20 +05:00
papacarlo
ad7086886c Merge branch hotfix/v7.3.3 into develop 2023-05-15 06:52:33 +00:00
papacarlo
8e08fed4ee Merge branch hotfix/v7.3.3 into master 2023-05-15 06:52:28 +00:00
Alexey Golubev
4c5e5f20ee Revert "Trace build commands (#609)"
This reverts commit 708684ccc1096f4ef1131ec0d16ea5c1c635fcdf.
2023-05-02 13:25:36 +05:00
Semyon Bezrukov
708684ccc1
Trace build commands (#609)
* Trace build commands

* Small fix
2023-04-25 20:01:14 +05:00
Evgeniy Antonyuk
c61323257b
Use the default supervisord configuration (#608)
* Use a unix socket by default

* Use the default supervisord configuration

* Return the init.d supervisor file
2023-04-20 20:27:35 +05:00
Alexey Golubev
06fe4034f0
Merge master into hotfix/v7.3.3 2023-04-18 22:39:22 +05:00
Alexey Golubev
b011e73f64
Fix nginx secure link url (#604) 2023-04-18 22:34:02 +05:00
Semyon Bezrukov
44eb6c45f2
Fix deb package link (#602) 2023-04-14 22:32:04 +05:00
Semyon Bezrukov
4499ca1d34
Fix deb package link (#599) 2023-04-10 17:10:23 +05:00
Evgeniy Antonyuk
09b9a73637
fix Bug 61960 - Add authentication for supervisord (#598) 2023-04-10 13:16:23 +05:00
Evgeniy Antonyuk
f455bdf433
fix Bug 59826 - Fix database creation without onlyoffice owner (#597)
* fix Bug 59826 - Fix database creation without onlyoffice owner

* Fix an unnecessary space
2023-04-06 15:18:10 +05:00
Dmitry Kireev
f03bc7ec18
Add docker-compose with prometheus and grafana (#495)
* Add docker-compose with prometheus and grafana

* Add dashbord installation

* Fix path to config file
2023-03-21 15:06:05 +05:00
Evgeniy Antonyuk
648ff7322f
Fix the owner of the logrotate config (#591) 2023-03-17 14:25:33 +05:00
papacarlo
00b188d9ff Merge branch hotfix/v7.3.3 into master 2023-03-15 10:53:31 +00:00
db576c7add
Update README.md 2023-03-09 12:23:15 +01:00
3dc36ac0af
Update README.md 2023-03-09 12:23:04 +01:00
2e1e603daf Pull from upstream 2023-03-09 12:19:40 +01:00
Alexey Golubev
6f716134dd
Fix misprint
Instead  https://github.com/ONLYOFFICE/Docker-DocumentServer/pull/579
2023-02-22 17:41:59 +05:00
papacarlo
0fb195b958 Merge branch hotfix/v7.3.2 into develop 2023-02-14 07:59:59 +00:00
papacarlo
4636320e3b Merge branch hotfix/v7.3.2 into master 2023-02-14 07:59:56 +00:00
Alexey Golubev
4c05627d1f
Merge pull request #585 from ONLYOFFICE/bugfix/psql-owner
fix Bug 59826 - Fix database creation without onlyoffice owner
2023-02-07 18:53:11 +05:00
evgeniy-antonyuk
985bc4020a Fix database creation without onlyoffice owner 2023-02-07 16:08:40 +03:00
Alexey Golubev
46215d4372
Merge pull request #584 from ONLYOFFICE/hotfix/v7.3.2
Merger hotfix/v7.3.2 into hotfix/v7.3.3
2023-02-07 13:02:08 +05:00
Alexey Golubev
934d17b994
Fix bug #61002 (#583)
Removed unused code that was causing a build error
2023-02-07 13:00:29 +05:00
Thomas Gerbet
83825d26e9
Generated JWT secret is too small for HMAC SHA256 (#582)
The key that is automatically generated weaken the security strength.
As noted in RFC7518 section 3.2 [0]:
```
A key of the same size as the hash output (for instance, 256 bits for
"HS256") or larger MUST be used with this algorithm.  (This
requirement is based on Section 5.3.4 (Security Effect of the HMAC
Key) of NIST SP 800-117 [NIST.800-107], which states that the
effective security strength is the minimum of the security strength
of the key and two times the size of the internal hash value.)
```

Some JWT libraries are rejecting by default keys that are too small in
a attempt to prevent misusages so generating a key that does not respect
the minimal length can be problematic for OO integrations.

[0] https://www.rfc-editor.org/rfc/rfc7518.html#section-3.2
2023-02-07 11:02:40 +05:00
Danil Titarenko
a3d7ed7ceb Install rabbitmq-server from default ubuntu repo, fixed bug closes #575 (#578)
(cherry picked from commit cac79dea01b64793909ed505d28c9cc5667aac9b)
2023-02-03 20:23:17 +05:00
Danil Titarenko
cac79dea01
Install rabbitmq-server from default ubuntu repo, fixed bug closes #575 (#578) 2023-02-02 20:41:49 +05:00
papacarlo
22ab86d2d6 Merge branch release/v7.3.0 into develop 2023-02-02 13:38:11 +00:00
Danil Titarenko
f98d6a4ae3
Fix ucs build (#574)
Links on packages was update
2023-01-31 19:05:26 +05:00
Danil Titarenko
c017ed1680
Fix stable build (#573)
Remove image present checker, because its not work corractly
2023-01-31 17:18:39 +05:00
papacarlo
562b248198 Merge branch release/v7.3.0 into master 2023-01-31 08:03:28 +00:00
Danil Titarenko
611db1f4a9
Fix docker build by downgrading rabbit from 3.10 to 3.9 (#569) 2023-01-18 17:58:48 +03:00
Alexey Golubev
8bb2ab6321
Merge pull request #565 from ONLYOFFICE/master
Merge master into release/v7.3.0
2023-01-16 12:12:09 +03:00
Evgeniy Antonyuk
26f3d34ac3
Cosmetic changes README.md (#563) 2022-12-30 12:50:18 +03:00
Evgeniy Antonyuk
759bed5c14
Add obligatory use of JWT parameters (#562) 2022-12-30 12:40:54 +03:00
papacarlo
eb643e3adb
Merge pull request #561 from ONLYOFFICE/hotfix/v7.2.2
Merge branch hotfix/v7.2.2 into develop
2022-12-27 18:34:45 +03:00
Semyon Bezrukov
19debc5181
Merge branch 'develop' into hotfix/v7.2.2 2022-12-27 18:31:52 +03:00
Danil Titarenko
7fa2f598a1
Fix ucs build (#537)
* Fix ucs build

* Change rabbitmq version on lower

* Remove rabbimq version argument

* Rename variable
2022-12-20 14:54:23 +03:00
Alexey Golubev
01f8337dcb
Merge pull request #560 from ONLYOFFICE/feature/release-merge
Merge branch hotfix/v7.2.2 into release/v7.3.0
2022-12-20 14:16:52 +03:00
Semyon Bezrukov
edb6e9b044 Merge branch 'hotfix/v7.2.2' into feature/release-merge 2022-12-20 13:24:55 +03:00
papacarlo
3fb3b2f3de Merge branch hotfix/v7.2.2 into master 2022-12-20 09:55:28 +00:00
Semyon Bezrukov
b074535366
Fix makefile (#554) 2022-12-15 17:45:33 +03:00
Alexey Golubev
b59175d13f
Merge pull request #552 from ONLYOFFICE/release/v7.3.0
Merge branch release/v7.3.0 into develop
2022-12-12 15:32:25 +03:00
Semyon Bezrukov
e5f8e69d89
Fix package url (#551) 2022-12-01 15:53:43 +03:00
Semyon Bezrukov
574b3c92b4
Update build scripts (#550) 2022-12-01 14:46:31 +03:00
papacarlo
47503e6c98 Merge branch hotfix/v7.2.1 into develop 2022-11-11 11:12:56 +00:00
Danil Titarenko
c7090252ff Add base image and postgresql version build arguments (#524)
(cherry picked from commit e1d7cfd5e86bf143d25b019fd72ec2849df15a03)
2022-10-31 19:00:18 +03:00
Danil Titarenko
730dd71ac5 Add ucs build on older image version (#531)
(cherry picked from commit 92dd2833d1479ebe25afe3da85a78d308e6e06ff)
2022-10-31 19:00:03 +03:00
Evgeniy Antonyuk
452dd4996d
Correct the name of the docker installation variable (#536) 2022-10-31 17:52:20 +03:00
Pavel Lobashov
1957d38907
Actualize state of JWT variables (#535) 2022-10-31 17:38:53 +03:00
Evgeniy Antonyuk
6c0c7085c9
Feature/Add supervisor services (#517)
* Add supervisor services

* Add installation of the DOCKER_INSTALLATION variable
2022-10-31 17:19:10 +03:00
Evgeniy Antonyuk
cdc73fe379
Fix Bug 59481 - Fix errors when starting the container (#530)
* Update the rabbitmq version

* Fix incorrect replacement of worker_connections

* Limiting the maximum number of simultaneous connections due to possible memory shortage
2022-10-31 16:34:42 +03:00
Danil Titarenko
e1d7cfd5e8
Add base image and postgresql version build arguments (#524) 2022-10-31 15:24:17 +03:00
Danil Titarenko
92dd2833d1
Add ucs build on older image version (#531) 2022-10-31 11:53:24 +03:00
Evgeniy Antonyuk
d98eb758b5
Fix Bug 59483 - Fix port parsing from amqp_uri (#529)
* Fix port parsing from amqp_uri

* Correct regex for port parsing
2022-10-28 16:33:41 +03:00
papacarlo
a3973583f8 Merge branch hotfix/v7.2.1 into master 2022-10-27 08:23:10 +00:00
Pavel Lobashov
fcbbe2979f
Add note (#526) 2022-10-27 11:08:52 +03:00
Danil Titarenko
311db051fb
Disable non-example build (#525)
Co-authored-by: papacarlo <builder@onlyoffice.com>
2022-10-26 14:27:37 +03:00
papacarlo
46683cbc4e Merge branch hotfix/v7.2.1 into master 2022-10-20 13:12:18 +00:00
Alexey Golubev
784ecca724
Merge pull request #513 from ONLYOFFICE/hotfix/v7.2.1
Merge hotfix/v7.2.1 into develop
2022-10-13 15:58:13 +03:00
Semyon Bezrukov
1c72796657
Fix testing build tags (#512) 2022-10-13 15:50:39 +03:00
papacarlo
7b7e9bc66a Merge branch release/v7.2.0 into develop 2022-10-12 12:34:01 +00:00
Danil Titarenko
e32047ffcc
Fix bug #59310 / Fix users build (#508)
* Remove version for correct users build

* Assembly support without targetarch variable

* Remove targetarch variable

* Correcting a typo in a variable

* Small fix

Co-authored-by: Semyon Bezrukov <semen.bezrukov@onlyoffice.com>
2022-10-11 12:52:48 +03:00
fa24b10607
Update README.md 2022-10-02 01:32:45 +02:00
papacarlo
ad066be1c8 Merge branch release/v7.2.0 into master 2022-09-22 12:23:12 +00:00
20e8f4453c
Update README.md 2022-09-21 02:46:24 +02:00
f739252479
Update README.md 2022-09-21 02:36:05 +02:00
b27a88676d
Update README.md 2022-09-21 02:34:46 +02:00
e16d0d211b
Update README.md 2022-09-21 02:33:23 +02:00
38336fc566
Update README.md 2022-09-21 02:32:33 +02:00
1b9dc9b4ba
Update README.md 2022-09-21 02:31:17 +02:00
ccc2dc426c
Update README.md 2022-09-21 02:29:27 +02:00
Semyon Bezrukov
29bb07d2cb
Fix makefile docker image (#499) 2022-09-20 14:20:10 +03:00
Semyon Bezrukov
67fbd9d9c8
Fix makefile (#498) 2022-09-18 16:20:15 +03:00
Semyon Bezrukov
bac88530c1
Refactoring testing build (#496)
* Fix dockerfile args

* Refactoring testing build action

* Secret repo baseurl

* Fix package version
2022-09-16 12:28:44 +03:00
Evgeniy Antonyuk
b9bfa7b90c
fix Bug 58778 - Correct the display of container ID for 22.04 (#494) 2022-09-13 11:08:04 +03:00
Semyon Bezrukov
61a5a021cf
Refactoring stable build (#490)
* Refactoring stable build

* Build: setting up push 4enterprise images

* Cosmetic change

* Remove needless tag

* Rename dockerfile

* Small fix

* Rename dockerfile for nonexample

Co-authored-by: danilapog <danil.titarenko@onlyoffice.com>
2022-09-12 16:04:56 +03:00
Danil Titarenko
713a06e999
Add expected build arch (#489)
* Add fail status if build unexpected platforms

* Build: set exit code for action

* Build: Change expected platforms message
2022-09-08 15:56:49 +03:00
Roman Demidov
e44acbebf7
Fix KylinOS start error (#471)
* Fix KylinOS start error

* Small changes

* Small changes
2022-08-31 12:13:30 +03:00
Danil Titarenko
3626f8cc6c
Build: Set job fail status if some build failed (#488) 2022-08-30 14:33:23 +03:00
Danil Titarenko
207bd5dac7
Add build Documentserver without example (#473)
* Add dockerfile for non-example build

* Create new symlink for supervisor config

* Add ARG for dynamic images specification

* Update action version

* Add build nonexample after stable build success

* Add targets for nonexample build

* Cosmetic changes

* Update FROM instruction

* Add default tag

* Remove needless welcome nginx location

* Change nonexample image tags

* Set correct nonexample image tag

* Change tag for nonexample image

* Change dockerfile name

* Rename dockerfile for release images

* Move stable build to dockerfile

* Refactoring bake file
2022-08-29 11:40:25 +03:00
Alexey Golubev
3d7ac29ee1
Merge pull request #487 from ONLYOFFICE/release/v7.2.0
Merge release/v7.2.0 into develop
2022-08-24 12:49:04 +03:00
Danil Titarenko
2379128240
fix build (#486) 2022-08-24 12:47:47 +03:00
Alexey Golubev
bd4908d7c8
Merge pull request #485 from ONLYOFFICE/release/v7.2.0
Merge release/v7.2.0 into develop
2022-08-24 11:39:22 +03:00
Danil Titarenko
083ab2c6a6
Add latest tag for develop build (#484) 2022-08-24 11:14:59 +03:00
Evgeniy Antonyuk
34180710cf
Fix command to get container id (#483) 2022-08-22 20:56:45 +03:00
Evgeniy Antonyuk
8887cb7a26
Enable JWT by default and add a JWT status message (#482)
* Enable JWT by default and add a JWT status message

* Correct JWT message

* Add a condition for displaying a JWT message

* Minor correction

* Minor correction
2022-08-22 20:27:10 +03:00
Alexey Golubev
8a4525cb80
Merge pull request #478 from ONLYOFFICE/release/v7.2.0
Merge release/v7.2.0 into develop
2022-08-17 09:45:05 +03:00
Danil Titarenko
05c5042985
Add the missing variable (#467) 2022-07-22 09:44:59 +03:00
Danil Titarenko
2213fc70f5
Add another tags processing (#464)
* Add support for processing other tags

* Print build-info before build start

* Cosmetic changes

* Add architecture and URL processing

* Refactoring action code

* Refactoring code

* Refactoring code

* Cosmetic changes

* Remove some check package version

* Refactoring code

* Redefining url variable for dockerfile

* Cosmetic changes

* Changes platform conditions check

* Set to use default TARGETARCH in build
2022-07-21 18:44:06 +03:00
Danil Titarenko
06a05223b5
Fix bug #58032 / Fix moves certificates alarm messages (#461)
* Add some checks before replace certificates

* Change if check key

* Refactoring code

* Refactoring code

* Add checking exist files

* Refactor: refactoring code

* Remove check files conditions
2022-07-19 15:51:46 +03:00
Danil Titarenko
143e77fdfc
Fix Big #57286 / Add redis password config settings (#466)
* Add redis password settings

* Add variable description

* Change variable descriptions

* Change variable descriptions

* Change variable descriptions
2022-07-18 17:11:06 +03:00
papacarlo
8acbfdbeb7 Merge branch hotfix/v7.1.1 into release/v7.2.0 2022-07-18 10:02:02 +00:00
Alexey Golubev
73ec78a7da
Merge pull request #463 from ONLYOFFICE/release/v7.2.0
Mergre release/v7.2.0 into develop
2022-07-13 10:53:49 +03:00
Alexey Golubev
46cd6febae
Merge pull request #462 from ONLYOFFICE/hotfix/v7.1.1
Merge hotfix/v7.1.1 into develop
2022-07-13 10:52:43 +03:00
Danil Titarenko
c16635ea71
Fix supervisor socket messages (#459) 2022-07-12 12:37:48 +03:00
Danil Titarenko
29e4ec3027
Refactoring workflow (#448) 2022-07-11 13:27:43 +03:00
Evgeniy Antonyuk
c7a1fd04a4
fix Bug 50138 / Fix SSL key access error (#455)
* Fix SSL key access error

* Change name of directory
2022-07-05 14:56:42 +03:00
Danil Titarenko
c4ddb99710
Update base image version (#447) 2022-07-05 14:41:20 +03:00
Danil Titarenko
9494e08e8f
Fix for redis correct work (#449)
* Fix for redis correct work

* Refactoring code

* Refactoring code

* Refactoring code

* Refactor: refactoring code
2022-06-15 10:30:18 +03:00
Danil Titarenko
86cbb01bbf
Add short tags for released images (#446)
* Add short tags for images

* Edit workflow tags
2022-06-10 15:43:50 +03:00
Danil Titarenko
a6562f4017
Add multiarch build with action (#445)
* Update run-document-server.sh (#439)

* Revert "Update run-document-server.sh (#439)"

This reverts commit 5c17c711b1a14e39a2836bec0fee49044433c3a5.

* Add bake config

* Add targets for multiarch build

* Add multiarch workflows

* Cosmetic changes

* Refactoring

* Cosmetic changes

* Cosmetic changes

* Change URL for test repo

* Refactor: refactoring code

* Refactoring sed

* Remove -ie build

* Add special tag for package

* Cosmetic changes

Co-authored-by: papacarlo <builder@onlyoffice.com>
Co-authored-by: Roger Shieh <sh.rog@protonmail.ch>
Co-authored-by: Alexey Golubev <alexey.golubev@onlyoffice.com>
2022-06-09 13:27:39 +03:00
Evgeniy Antonyuk
01606746c1
Fix Bug 53170 / Add the ability to set secure_link_secret (#444)
* Add securelink generation

* Add ability to configure securelink_secret

* Add a description of SECURE_LINK_SECRET

* Update README.md
2022-06-07 16:16:05 +03:00
papacarlo
558353ee99 Merge branch hotfix/v7.1.1 into master 2022-06-01 16:22:20 +00:00
Alexey Golubev
19b66de202 Revert "Update run-document-server.sh (#439)"
This reverts commit 5c17c711b1a14e39a2836bec0fee49044433c3a5.
2022-05-26 17:03:57 +03:00
Roger Shieh
5c17c711b1
Update run-document-server.sh (#439) 2022-05-24 18:02:42 +03:00
papacarlo
61d388372b Merge branch release/v7.1.0 into develop 2022-05-16 12:57:21 +00:00
98ee9148fc
Update README.md 2022-05-16 03:16:07 +02:00
aaa77fce4e
Update README.md 2022-05-16 03:13:02 +02:00
cc7b5378e1
Update README.md 2022-05-15 21:32:29 +02:00
4a4fc6c25f Add default themes
Default themes (even the blank one) are missing if you enable the `slideThemes` volume in `docker-compose.yml`, so I added them here.
2022-05-15 21:26:35 +02:00
1cb1c932dc Fix larger files 2022-05-15 20:07:31 +02:00
jiriks74
9bcd24fbd6 Move COPY to the end of the file
For faster builds when changing only the scripts
2022-05-15 18:33:57 +02:00
12c8cb1982 Fix identation 2022-05-15 18:23:47 +02:00
67bda4f479
Setting larger file limits now works 2022-05-15 18:22:11 +02:00
f89a097732 Update docker-compose.yml 2022-05-15 17:11:17 +02:00
fb26b20a42
Update README.md 2022-05-15 15:43:25 +02:00
e0f402c25a
Update docker-compose.yml 2022-05-15 15:43:03 +02:00
b2bc4e81f3
Update README.md 2022-05-15 15:28:22 +02:00
5170ab1e8d
Update README.md 2022-05-15 15:27:22 +02:00
jiriks74
83dc4f3e07 Add volume for themes source directory 2022-05-15 15:25:08 +02:00
eb2e39acef
Update run-document-server.sh 2022-05-15 15:19:50 +02:00
jiriks74
b9f2fdaf9d Move largerFileLimits.sh to run-document-server.sh 2022-05-15 15:15:19 +02:00
26e178542a
Update README.md 2022-05-15 14:54:54 +02:00
jiriks74
3c33cedcca Add script to set larger file limits 2022-05-15 14:52:26 +02:00
6e4b6a4e6c
Update building for all platforms 2022-05-15 14:28:17 +02:00
70b846c733
Update maintainer 2022-05-15 14:25:45 +02:00
216cadc50f
Merge pull request #5 from ONLYOFFICE/master
Update to be in line with main repository
2022-05-15 14:24:56 +02:00
b0fe26d31b
Update README.md 2022-05-13 17:37:51 +02:00
jiriks74
f070cdbd1f Add script to build and push all images for all architectures automatically
This script automatically builds the newest version of the documentserver for all architectures with the correct tags and pushes everything to dockerhub automatically
2022-05-13 13:42:42 +02:00
8384d08c26
Update README to be inline with new images structure
Image structure was changed so that all architectures are included in one tag so docker pulls the correct architecture automatically
2022-05-13 12:21:18 +02:00
a94d5c0efa
Ensure build process won't break with new debian version 2022-05-13 11:21:07 +02:00
d84ddc9834
Update README.md 2022-05-13 04:42:01 +02:00
3b6095bcf5
Update README.md
Update README to use new repositories links
2022-05-12 21:32:54 +02:00
99180c44e4
Update README
Update README to be up to date with the architectures
2022-05-12 21:25:23 +02:00
32eda02f32 Fix typo (RUN RUN in Dockerfile) 2022-05-12 21:12:13 +02:00
37d6dd41fd Fix missing && \ 2022-05-12 21:11:05 +02:00
0ba22e894f Merge branch 'master' of github.com:jiriks74/Docker-DocumentServer-Arm64 2022-05-12 21:04:45 +02:00
5ce2129406 Use native version, add compatibility for both amd64 and arm64 2022-05-12 21:03:31 +02:00
papacarlo
95e27e2655 Merge branch release/v7.1.0 into master 2022-05-12 13:21:23 +00:00
Roman Demidov
452dfeb56d
Fix bug #56785 (#434)
* Fix bug #56785

* Changes for root
2022-04-29 14:57:14 +03:00
Roman Demidov
80acbe974d
Fix bug #53046 : sed error starting container on Arch (#433) 2022-04-29 14:55:25 +03:00
Alexey Golubev
4fb0a1e712
Improve SSL certificate detection (#431) 2022-04-25 17:25:19 +03:00
Alexey Golubev
39d2e303f1 Fix disabling JWT 2022-04-12 19:00:46 +03:00
papacarlo
decb1ed860 Merge branch hotfix/v7.0.2 into release/v7.1.0 2022-04-05 12:27:33 +00:00
papacarlo
a830c53218 Merge branch hotfix/v7.0.2 into develop 2022-04-05 12:27:30 +00:00
16d5eecd74
Add FAQ
This means frequent problems really...
2022-04-05 13:53:54 +02:00
f1849ef17f
Update README.md 2022-04-05 09:32:49 +02:00
bc9d3c9575
Update README.md 2022-04-05 09:21:32 +02:00
10f303bc63
Add pretty things 2022-04-05 09:10:04 +02:00
037eaea85b
Update README.md 2022-04-04 23:56:47 +02:00
101ac458f5
Update README.md 2022-04-04 23:13:52 +02:00
a4176e1dd6
Update README.md 2022-04-04 18:38:04 +02:00
a3813d64dc
Update README.md 2022-04-04 18:32:43 +02:00
papacarlo
bb160d345e Merge branch hotfix/v7.0.1 into release/v7.1.0 2022-03-23 10:29:52 +00:00
papacarlo
3cf36a79cc Merge branch hotfix/v7.0.1 into develop 2022-03-23 09:49:22 +00:00
01c3c74b9a Move copy command to the end of the file
Reason: faster builds when editing scripts
2022-03-13 23:57:50 +01:00
Stavros Kois
21f5019e1c
Initialliaze services.CoAuthoring.redis before attempting to set a child to a value (#404)
Co-authored-by: papacarlo <builder@onlyoffice.com>
2022-02-09 10:37:52 +03:00
papacarlo
4c959d62b7 Merge branch release/v7.0.0 into release/v7.1.0 2022-01-17 14:34:38 +00:00
papacarlo
c5fb8f1fe0 Merge branch release/v7.0.0 into develop 2022-01-17 14:34:35 +00:00
papacarlo
44a96b1fde Merge branch hotfix/v6.4.2 into develop 2021-10-28 07:33:55 +00:00
papacarlo
2eb99ffb20 Merge branch hotfix/v6.4.1 into develop 2021-09-30 12:21:03 +00:00
43 changed files with 4449 additions and 207 deletions

1
.envrc Normal file

@ -0,0 +1 @@
use nix

@ -0,0 +1,174 @@
### This workflow setup instance then build and push images ###
name: 4testing multiarch-build
run-name: >-
Build #${{ inputs.build }} [
${{ inputs.amd64 && 'AMD64' || '-' }}
${{ inputs.arm64 && 'ARM64' || '-' }}
] [
${{ inputs.community && 'CE' || '-' }}
${{ inputs.developer && 'DE' || '-' }}
${{ inputs.enterprise && 'EE' || '-' }}
]
on:
workflow_dispatch:
inputs:
build:
description: 'Build number (ex. 45)'
type: string
required: true
amd64:
type: boolean
description: 'Build AMD64'
default: true
arm64:
type: boolean
description: 'Build ARM64'
default: true
community:
type: boolean
description: 'Build Community Edition'
default: true
enterprise:
type: boolean
description: 'Build Enterprise Edition'
default: true
developer:
type: boolean
description: 'Build Developer Edition'
default: true
env:
COMPANY_NAME: "onlyoffice"
PRODUCT_NAME: "documentserver"
jobs:
prepare:
runs-on: ubuntu-latest
steps:
- id: matrix
run: |
set -ex
BRANCH_NAME=${GITHUB_REF#refs/heads/}
if ! [[ $BRANCH_NAME == develop || $BRANCH_NAME =~ hotfix || $BRANCH_NAME =~ release ]]; then
echo "Wrong branch."
exit 1
fi
[ ${{ github.event.inputs.amd64 }} = true ] && PLATFORMS+=("amd64")
[ ${{ github.event.inputs.arm64 }} = true ] && PLATFORMS+=("arm64")
if [ -z ${PLATFORMS} ]; then
echo "None of the platforms are selected."
exit 1
fi
[ ${{ github.event.inputs.community }} = true ] && EDITIONS+=("community")
[ ${{ github.event.inputs.enterprise }} = true ] && EDITIONS+=("enterprise")
[ ${{ github.event.inputs.developer }} = true ] && EDITIONS+=("developer")
if [ -z ${EDITIONS} ]; then
echo "None of the editions are selected."
exit 1
fi
echo "editions=$(jq -n -c --arg s "${EDITIONS[*]}" '($s|split(" "))')" >> $GITHUB_OUTPUT
outputs:
editions: ${{ steps.matrix.outputs.editions }}
build:
name: "Build ${{ matrix.image }}-${{ matrix.edition }}"
runs-on: ubuntu-latest
needs: prepare
strategy:
fail-fast: false
matrix:
image: ["documentserver"]
edition: ${{ fromJSON(needs.prepare.outputs.editions) }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build 4testing
id: build-ds
run: |
set -eux
### ==>> At this step build variable declaration ###
case ${{ matrix.edition }} in
community)
PRODUCT_EDITION=""
;;
enterprise)
PRODUCT_EDITION="-ee"
;;
developer)
PRODUCT_EDITION="-de"
;;
esac
[ ${{ github.event.inputs.amd64 }} = true ] && PLATFORMS+=("amd64")
[ ${{ github.event.inputs.arm64 }} = true ] && PLATFORMS+=("arm64")
PLATFORM=$(echo ${PLATFORMS[*]/#/linux/} | tr ' ' ',')
BRANCH_NAME=${GITHUB_REF#refs/heads/}
if [ $BRANCH_NAME = develop ]; then
BUILD_CHANNEL=nightly
PRODUCT_VERSION=99.99.99
elif [[ $BRANCH_NAME =~ hotfix || $BRANCH_NAME =~ release ]]; then
BUILD_CHANNEL=test
PRODUCT_VERSION=${BRANCH_NAME#*/v}
fi
BUILD_NUMBER=${{ github.event.inputs.build }}
export PRODUCT_EDITION
export PACKAGE_VERSION=${PRODUCT_VERSION}-${BUILD_NUMBER}
export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }}
export BUILD_CHANNEL
export PLATFORM
export DOCKERFILE=Dockerfile
export PREFIX_NAME=4testing-
export TAG=${PRODUCT_VERSION}.${BUILD_NUMBER}
### ==>> Build and push images at this step ###
docker buildx bake -f docker-bake.hcl ${{ matrix.image }} --push
echo "DONE: Build success"
### Set output for Zap scanner
### NOTE: Output will be used only in release/hotfix branches
echo "version=${TAG}" >> "$GITHUB_OUTPUT"
echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
shell: bash
# Run scanner only when edition is community
# and branch hit release/ or hotfix/
- name: Trigger zap manualy
if: >-
matrix.edition == 'community' &&
(startsWith(steps.build-ds.outputs.branch, 'release/') ||
startsWith(steps.build-ds.outputs.branch, 'hotfix/'))
env:
VERSION: ${{ steps.build-ds.outputs.version }}
BRANCH: ${{ steps.build-ds.outputs.branch }}
GITHUB_TOKEN: ${{ secrets.TOKEN }}
run: |
gh workflow run zap-ds.yaml \
--repo ${{ github.repository }} \
-f branch=${BRANCH} \
-f version=${VERSION}
shell: bash

@ -0,0 +1,66 @@
name: Build
on:
schedule:
- cron: "0 0 * * 1"
push:
tags:
- 'manual_build'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get upstream repository
run: |
git clone https://github.com/ONLYOFFICE/DocumentServer/ upstream
- name: Extract tags and labels for Docker
id: meta
run: |
export VERSION="$(cd upstream && git describe --tags --abbrev=0 | cut -d 'v' -f2-)"
echo "Version: ${VERSION}"
echo "tag=${VERSION}" >> $GITHUB_OUTPUT
shell: bash
- name: Check if the image was already built
id: check-build-status
run: |
echo ${{ steps.meta.outputs.tag }}
if curl --silent -f -lSL "https://hub.docker.com/v2/repositories/jiriks74/onlyoffice-documentserver/tags/$(echo ${{ steps.meta.outputs.tag }})" > /dev/null; then echo "Already exists" && exit 1; else echo "Desn't exist" && exit 0; fi
- name: Set tag in Dockerfile
run: |
sed -i "s/ARG PACKAGE_VERSION=/ARG PACKAGE_VERSION=$(echo ${{ steps.meta.outputs.tag }} | cut -d ':' -f2)/g" Dockerfile
- name: Update repositories
run: sudo apt update
- name: Install Docker
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: docker.io
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
platforms: linux/amd64,linux/arm64
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push image
uses: docker/build-push-action@v2
with:
push: true
tags: jiriks74/onlyoffice-documentserver:${{ steps.meta.outputs.tag }},jiriks74/onlyoffice-documentserver:latest
platforms: linux/amd64,linux/arm64
context: .
file: ./Dockerfile

@ -0,0 +1,22 @@
---
name: Trigger 4testing rebuild
run-name: "Weekly 4testing rebuild trigger"
on:
schedule:
# Run every Saturday at 10 p.m.
- cron: '00 22 * * 6'
jobs:
trigger-rebuild:
name: "trigget-rebuild"
runs-on: "ubuntu-latest"
steps:
- name: Rebuild 4testing manualy
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
run: |
gh workflow run rebuild.yml \
--repo ONLYOFFICE/Docker-DocumentServer \
-f repo=4test

@ -0,0 +1,224 @@
---
name: Rebuild Docker-Documentserver
run-name: >
Rebuild DocumentServer with secure updates for repo: ${{ github.event.inputs.repo }}
on:
workflow_dispatch:
inputs:
repo:
type: choice
description: Please, choose upload repo..
options:
- '4test'
- 'stable'
permissions:
# All other permissions are set to none
contents: read
# Technically read access while waiting for images should be more than enough. However,
# there is a bug in GitHub Actions/Packages and in case private repositories are used, you get a permission
# denied error when attempting to just pull private image, changing the token permission to write solves the
# issue. This is not dangerous, because if it is for "ONLYOFFICE/Docker-DocumentServer", only maintainers can use ds-rebuild.yaml
# If it is for a fork, then the token is read-only anyway.
packages: read
env:
COMPANY_NAME: "onlyoffice"
PRODUCT_NAME: "documentserver"
REGISTRY_URL: "https://hub.docker.com/v2/repositories"
jobs:
rebuild-info:
name: "Rebuild-info"
runs-on: "ubuntu-22.04"
env:
REPO_INPUTS: ${{ github.event.inputs.repo }}
EVENT: ${{ github.event_name }}
outputs:
stable-versions: ${{ steps.selective-checks.outputs.stable-versions }}
ucs-versions: ${{ steps.selective-checks.outputs.ucs-versions }}
minor-tags: ${{ steps.selective-checks.outputs.minor-tags }}
ucs-rebuild-condition: ${{ steps.selective-checks.outputs.ucs-rebuild-condition }}
prefix-name: ${{ steps.selective-checks.outputs.prefix-name }}
repo: ${{ steps.selective-checks.outputs.repo }}
steps:
- name: Selective checks
id: selective-checks
run: |
set -e
REPO=${REPO_INPUTS:-"4test"}
if [ "${REPO}" == "stable" ]; then
UCS_REBUILD=true
UCS_VERSIONS=($(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}-ucs/tags/?page_size=100 | \
jq -r '.results|.[]|.name' | grep -oxE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.1' || true))
echo "ucs-versions=$(jq -c -n '$ARGS.positional' --args "${UCS_VERSIONS[@]}")" >> "$GITHUB_OUTPUT"
elif
[ "${REPO}" == "4test" ]; then
UCS_REBUILD=false
PREFIX_NAME=4testing-
fi
STABLE_VERSIONS=($(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 | \
jq -r '.results|.[]|.name' | grep -oxE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.1' || true))
# When rebuilding stable versions of the document server,
# it is necessary to determine the version from which the
# minor x.x tag will need to be pushed.
VERSIONS=(${STABLE_VERSIONS[@]})
for i in {1..10}; do
if [ -z "${VERSIONS}" ]; then
break
else
TEMPLATE=${VERSIONS[0]%.*.*}
TEMPLATE_MINOR=$(printf -- '%s\n' "${VERSIONS[@]}" | grep -o -m 1 "${VERSIONS[0]%.*.*}.[0-9].[0-9]")
MINOR_TAGS+=(${TEMPLATE_MINOR%.*})
for v in ${MINOR_TAGS[@]}; do
VERSIONS=(${VERSIONS[@]//${v%.*}.*.*})
done
fi
done
echo "Stable releases that will be rebuilded"
echo "--------------------------------------"
echo "${STABLE_VERSIONS[@]}"
echo
echo
echo "Ucs releases that will be rebuilded"
echo "-----------------------------------"
echo "${UCS_VERSIONS[@]}"
echo "stable-versions=$(jq -c -n '$ARGS.positional' --args "${STABLE_VERSIONS[@]}")" >> "$GITHUB_OUTPUT"
echo "minor-tags=${MINOR_TAGS[@]}" >> "$GITHUB_OUTPUT"
echo "ucs-rebuild-condition=${UCS_REBUILD}" >> "$GITHUB_OUTPUT"
echo "prefix-name=${PREFIX_NAME}" >> "$GITHUB_OUTPUT"
echo "repo=${REPO}" >> "$GITHUB_OUTPUT"
shell: bash
re-build-stable:
name: "Rebuild stable:${{ matrix.version }} ${{ matrix.edition }}"
needs: [rebuild-info]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
type: ["stable"]
edition: ["", "-ee", "-de"]
version: ${{fromJSON(needs.rebuild-info.outputs.stable-versions)}}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
# Determines the new build number based
# on data from the hub.docker registry
- name: Declare release number
id: release-number
env:
REBUILD_VERSION: ${{ matrix.version }}
run: |
MINOR_VERSION=${REBUILD_VERSION%.*}
LAST_RELEASE=$(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 \
| jq -r '.results|.[]|.name' | grep -Eo -m1 "${MINOR_VERSION}.[0-9]{1,}")
LAST_RELEASE=${LAST_RELEASE#*.*.*.}
echo "release-number=$((LAST_RELEASE+1))" >> "$GITHUB_OUTPUT"
shell: bash
# Note: Rebuilding images with an
# extra layer to update security and
# all dependencies. Update tags got +1 to previous release.
- name: Re-build documentserver-stable
env:
MINOR_TAGS_ST: ${{ needs.rebuild-info.outputs.minor-tags }}
VERSION: ${{ matrix.version }}
RELEASE_NUMBER: ${{ steps.release-number.outputs.release-number }}
PREFIX_NAME: ${{ needs.rebuild-info.outputs.prefix-name }}
REPO: ${{ needs.rebuild-info.outputs.repo }}
PRODUCT_EDITION: ${{ matrix.edition }}
run: |
set -eux
export PULL_TAG=${VERSION}
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
export SHORTER_TAG=${VERSION%.*}
export SHORTEST_TAG=${VERSION%.*.*}
if [ "${REPO}" == "stable" ]; then
MINOR_TAGS=(${MINOR_TAGS_ST})
for v in ${MINOR_TAGS[@]}; do
if [ "${SHORTER_TAG}" == "${v}" ]; then
export PUSH_MAJOR="true"
fi
done
if [ "${SHORTER_TAG}" == "${MINOR_TAGS[0]}" ]; then
export LATEST="true"
fi
fi
docker buildx bake -f docker-bake.hcl documentserver-stable-rebuild --push
shell: bash
re-build-ucs:
name: "Rebuild ucs: ${{ matrix.version }} ${{ matrix.edition }}"
if: needs.rebuild-info.outputs.ucs-rebuild-condition == 'true'
needs: [rebuild-info]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
type: ["ucs"]
edition: ["", "-ee"]
version: ${{fromJSON(needs.rebuild-info.outputs.ucs-versions)}}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
# Determines the new build number based
# on data from the hub.docker registry
- name: Declare release number
id: release-number
env:
REBUILD_VERSION: ${{ matrix.version }}
run: |
MINOR_VERSION=${REBUILD_VERSION%.*}
LAST_RELEASE=$(curl -s -H -X ${REGISTRY_URL}/${COMPANY_NAME}/${PRODUCT_NAME}/tags/?page_size=100 \
| jq -r '.results|.[]|.name' | grep -Eo -m1 "${MINOR_VERSION}.[0-9]{1,}")
LAST_RELEASE=${LAST_RELEASE#*.*.*.}
echo "release-number=$((LAST_RELEASE+1))" >> "$GITHUB_OUTPUT"
shell: bash
# Note: Rebuilding images with an
# extra layer to update security and
# all dependencies. Update tags +1 to previous release.
- name: Re-build documentserver-ucs
env:
VERSION: ${{ matrix.version }}
RELEASE_NUMBER: ${{ steps.release-number.outputs.release-number }}
PRODUCT_EDITION: ${{ matrix.edition }}
run: |
set -eux
export PULL_TAG=${VERSION}
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
export SHORTER_TAG=${VERSION%.*}
export SHORTEST_TAG=${VERSION%.*.*}
export UCS_REBUILD=true
export UCS_PREFIX=-ucs
docker buildx bake -f docker-bake.hcl documentserver-stable-rebuild --push
shell: bash

@ -0,0 +1,137 @@
### This workflow setup instance then build and push images ###
name: Multi-arch build stable
run-name: ${{ inputs.tag }} (${{ inputs.release_number }})
on:
workflow_dispatch:
inputs:
tag:
description: 'Tag for release (ex. 1.2.3.45)'
type: string
required: true
release_number:
description: 'Sequence number of the release (ex. x.x.x.<number>)'
type: string
required: true
default: '1'
env:
COMPANY_NAME: "onlyoffice"
PRODUCT_NAME: "documentserver"
jobs:
build:
name: "Release image: DocumentServer${{ matrix.edition }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
images: ["documentserver-stable"]
edition: ["", "-ee", "-de"]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build documentserver-release
run: |
set -eux
VERSION=${{ github.event.inputs.tag }}
RELEASE_NUMBER=${{ github.event.inputs.release_number }}
PRODUCT_EDITION=${{ matrix.edition }}
TESTING_IMAGE=${COMPANY_NAME}/4testing-${PRODUCT_NAME}${PRODUCT_EDITION}
export PRODUCT_EDITION
export PULL_TAG=${VERSION}
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
export SHORTER_TAG=${VERSION%.*}
export SHORTEST_TAG=${VERSION%.*.*}
docker buildx bake -f docker-bake.hcl ${{ matrix.images }} --push
echo "DONE: Build success >> exit with 0"
exit 0
shell: bash
build-nonexample:
name: "Release image: DocumentServer${{ matrix.edition }}-nonExample"
runs-on: ubuntu-latest
needs: [build]
if: ${{ false }}
strategy:
fail-fast: false
matrix:
images: ["documentserver-nonexample"]
edition: ["", "-ee", "-de"]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: build image
run: |
set -eux
VERSION=${{ github.event.inputs.tag }}
RELEASE_NUMBER=${{ github.event.inputs.release_number }}
export PULL_TAG=${VERSION%.*}.${RELEASE_NUMBER}
export PRODUCT_EDITION=${{ matrix.edition }}
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
docker buildx bake -f docker-bake.hcl ${{ matrix.images }} --push
shell: bash
build-ucs-ubuntu20:
name: "Release image: DocumentServer${{ matrix.edition }}-ucs"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
edition: ["", "-ee"]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: build UCS
run: |
set -eux
VERSION=${{ github.event.inputs.tag }}
RELEASE_NUMBER=${{ github.event.inputs.release_number }}
export PRODUCT_EDITION=${{ matrix.edition }}
export PACKAGE_BASEURL=${{ secrets.REPO_BASEURL }}
export DOCKERFILE=Dockerfile
export BASE_IMAGE=ubuntu:20.04
export PG_VERSION=12
export TAG=${VERSION%.*}.${RELEASE_NUMBER}
export PACKAGE_VERSION=$( echo ${VERSION} | sed -E 's/(.*)\./\1-/')
docker buildx bake -f docker-bake.hcl documentserver-ucs --push
shell: bash

@ -0,0 +1,70 @@
---
name: Scanning DocumentServer with ZAP
run-name: >
ZAP DocumentServer ver: ${{ github.event.inputs.version }} from branch: ${{ github.event.inputs.branch }}
on:
workflow_dispatch:
inputs:
version:
description: 'Set DocumentServer version that will be deployed'
type: string
required: true
branch:
description: 'The branch from which the scan will be performed'
type: string
required: true
jobs:
zap:
name: "Zap scanning DocumentServer"
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run DS
id: run-ds
env:
TAG: ${{ github.event.inputs.version }}
run: |
# Create ssl certs
openssl genrsa -out tls.key 2048
openssl req -new -key tls.key -out tls.csr -subj "/C=RU/ST=NizhObl/L=NizhNov/O=RK-Tech/OU=TestUnit/CN=TestName"
openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt
openssl dhparam -out dhparam.pem 2048
sudo mkdir -p /app/onlyoffice/DocumentServer/data/certs
sudo cp ./tls.key /app/onlyoffice/DocumentServer/data/certs/
sudo cp ./tls.crt /app/onlyoffice/DocumentServer/data/certs/
sudo cp ./dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
sudo chmod 400 /app/onlyoffice/DocumentServer/data/certs/tls.key
rm ./tls.key ./tls.crt ./dhparam.pem
# Run Ds with enabled ssl
export CONTAINER_NAME="documentserver"
sudo docker run -itd \
--name ${CONTAINER_NAME} \
-p 80:80 \
-p 443:443 \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
onlyoffice/4testing-documentserver:${TAG}
sleep 60
sudo docker exec ${CONTAINER_NAME} sudo supervisorctl start ds:example
LOCAL_IP=$(hostname -I | awk '{print $1}')
echo "local-ip=${LOCAL_IP}" >> "$GITHUB_OUTPUT"
# Scan DocumentServer with ZAP.
# NOTE: Full scan get a lot of time.
# If you want make scan more faster (but less accurate) remove `cmd options` field
# -j mean that scanning use AJAX Spider, with this spider the scan takes approximately an hour
# Without any cmd options will be used default spider and the scan takes approximately ~10-15 minutes
- name: ZAP Scan
uses: zaproxy/action-full-scan@v0.8.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
target: 'https://${{ steps.run-ds.outputs.local-ip }}/'
allow_issue_writing: false
cmd_options: '-j'

2
.gitignore vendored Normal file

@ -0,0 +1,2 @@
# Nix, direnv
.direnv

131
.travis.yml Normal file

@ -0,0 +1,131 @@
language: generic
dist: trusty
env:
# community edition
- config: standalone.yml
# integration edition
- config: standalone.yml
PRODUCT_NAME: documentserver-ie
# certificates (default tls if onlyoffice not exists)
- config: certs.yml
ssl: true
# certificates (default onlyoffice if exists)
- config: certs.yml
ssl: true
private_key: onlyoffice.key
certificate_request: onlyoffice.csr
certificate: onlyoffice.crt
# custom certificates
- config: certs-customized.yml
ssl: true
private_key: mycert.key
certificate_request: mycert.csr
certificate: mycert.crt
SSL_CERTIFICATE_PATH: /var/www/onlyoffice/Data/certs/mycert.crt
SSL_KEY_PATH: /var/www/onlyoffice/Data/certs/mycert.key
# postgresql 16
- config: postgres.yml
POSTGRES_VERSION: 16
# postgresql 15
- config: postgres.yml
POSTGRES_VERSION: 15
# postgresql 14
- config: postgres.yml
POSTGRES_VERSION: 14
# postgresql 13
- config: postgres.yml
POSTGRES_VERSION: 13
# postgresql 12
- config: postgres.yml
# postgresql custom values
- config: postgres.yml
DB_NAME: mydb
DB_USER: myuser
DB_PWD: password
POSTGRES_DB: mydb
POSTGRES_USER: myuser
# postgresql deprecated variables
- config: postgres-old.yml
# mysql 8
- config: mysql.yml
MYSQL_VERSION: 8
# mysql 5
- config: mysql.yml
MYSQL_VERSION: 5
# mysql 5.7
- config: mysql.yml
# mariadb 10
- config: mariadb.yml
MARIADB_VERSION: 10
# mariadb 10.5
- config: mariadb.yml
- config: activemq.yml
ACTIVEMQ_VERSION: latest
# activemq 5.14.3
- config: activemq.yml
# rabbitmq latest
- config: rabbitmq.yml
# rabbitmq 3
- config: rabbitmq.yml
RABBITMQ_VERSION: 3
# rabbitmq old variables
- config: rabbitmq-old.yml
# redis latest with community edition
- config: redis.yml
# redis latest with integraion edition
- config: redis.yml
PRODUCT_NAME: documentserver-ie
# redis 6
- config: redis.yml
REDIS_VERSION: 6
# redis 5
- config: redis.yml
REDIS_VERSION: 5
# graphite
- config: graphite.yml
services:
- docker
script:
# Go to tests dir
- cd ${PWD}/tests
# Run test.
- ./test.sh

@ -1,19 +1,17 @@
FROM debian:latest ARG BASE_IMAGE=ubuntu:22.04
LABEL maintainer="jiriks74"
RUN echo "deb http://deb.debian.org/debian bullseye main contrib non-free\ndeb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free\ndeb http://deb.debian.org/debian bullseye-updates main contrib non-free\ndeb http://deb.debian.org/debian bullseye-backports main" > /etc/apt/sources.list FROM ${BASE_IMAGE} as documentserver
LABEL maintainer Jiří Štefka <jiri.stefka.js@gmail.com>
RUN mkdir /build ARG PG_VERSION=14
WORKDIR /build
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=13 ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive PG_VERSION=${PG_VERSION}
ARG ONLYOFFICE_VALUE=onlyoffice ARG ONLYOFFICE_VALUE=onlyoffice
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
apt-get -y update && \ apt-get -y update && \
apt-get -yq install wget apt-transport-https gnupg locales && \ apt-get -yq install wget apt-transport-https gnupg locales lsb-release && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x8320ca65cb2de8e5 && \
locale-gen en_US.UTF-8 && \ locale-gen en_US.UTF-8 && \
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \ echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections && \
apt-get -yq install \ apt-get -yq install \
@ -21,8 +19,8 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
apt-utils \ apt-utils \
bomstrip \ bomstrip \
certbot \ certbot \
cron \
curl \ curl \
gconf-service \
htop \ htop \
libasound2 \ libasound2 \
libboost-regex-dev \ libboost-regex-dev \
@ -36,7 +34,7 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
libxml2 \ libxml2 \
libxss1 \ libxss1 \
libxtst6 \ libxtst6 \
mariadb-client \ mysql-client \
nano \ nano \
net-tools \ net-tools \
netcat-openbsd \ netcat-openbsd \
@ -59,73 +57,47 @@ RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d && \
sed 's|\(application\/zip.*\)|\1\n application\/wasm wasm;|' -i /etc/nginx/mime.types && \ sed 's|\(application\/zip.*\)|\1\n application\/wasm wasm;|' -i /etc/nginx/mime.types && \
pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \ pg_conftool $PG_VERSION main set listen_addresses 'localhost' && \
service postgresql restart && \ service postgresql restart && \
sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE;" && \
sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \ sudo -u postgres psql -c "CREATE USER $ONLYOFFICE_VALUE WITH password '$ONLYOFFICE_VALUE';" && \
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $ONLYOFFICE_VALUE TO $ONLYOFFICE_VALUE;" && \ sudo -u postgres psql -c "CREATE DATABASE $ONLYOFFICE_VALUE OWNER $ONLYOFFICE_VALUE;" && \
service postgresql stop && \ service postgresql stop && \
service redis-server stop && \ service redis-server stop && \
service rabbitmq-server stop && \ service rabbitmq-server stop && \
service supervisor stop && \ service supervisor stop && \
service nginx stop service nginx stop && \
RUN apt install qemu binfmt-support qemu-user-static -t bullseye-backports -y
RUN dpkg --add-architecture amd64
RUN apt update && apt install libgcc-s1 libgcc-s1:amd64 -y
RUN apt download libc6:amd64
RUN dpkg-deb -R ./libc6*.deb ./libc6
RUN sed -i 's/^Package: libc6$/Package: libc6-amd64/' ./libc6/DEBIAN/control
RUN sed -i 's/^Depends: libgcc-s1, libcrypt1$/#Depends: libgcc-s1, libcrypt1/' ./libc6/DEBIAN/control
RUN rm -rf ./libc6/usr/share/doc
RUN rm -rf ./libc6/usr/share/lintian
RUN dpkg-deb -b ./libc6 ./libc6-modified.deb
RUN dpkg -i ./libc6-modified.deb
RUN apt download libstdc++6:amd64
RUN dpkg-deb -R ./libstdc++6*.deb ./stdc
RUN sed -i 's/^Depends: gcc-10-base (= 10.2.1-6), libc6 (>= 2.23), libgcc-s1 (>= 4.2)$/#Depends: gcc-10-base (= 10.2.1-6), libc6 (>= 2.23), libgcc-s1 (>= 4.2)/' ./stdc/DEBIAN/control
RUN dpkg-deb -b ./stdc ./libstdc++6-modified.deb
RUN dpkg -i ./libstdc++6-modified.deb
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
RUN echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | tee /etc/apt/sources.list.d/onlyoffice.list
RUN apt update && apt download onlyoffice-documentserver:amd64
RUN dpkg-deb -R ./onlyoffice-documentserver*.deb ./onlyoffice
RUN sed -i 's/^Depends: debconf (>= 0.5) | debconf-2.0, adduser, ca-certificates, coreutils, curl, libasound2, libcairo2, libcurl3 | libcurl4, libcurl3-gnutls, libgconf-2-4, libgtk-3-0, libstdc++6 (>= 4.8.4), libxml2, libxss1, libxtst6, logrotate, mysql-client | mariadb-client, nginx-extras (>= 1.3.13), postgresql-client (>= 9.1), pwgen, supervisor (>= 3.0b2), xvfb, zlib1g$/Depends: debconf:arm64 (>= 0.5) | debconf-2.0:arm64, adduser:arm64, ca-certificates:arm64, coreutils:arm64, curl:arm64, libasound2:arm64, libcairo2:arm64, libcurl3:arm64 | libcurl4:arm64, libcurl3-gnutls:arm64, libgconf-2-4:arm64, libgtk-3-0:arm64, libstdc++6:amd64 (>= 4.8.4), libxml2:arm64, libxss1:arm64, libxtst6:arm64, logrotate:arm64, mysql-client:arm64 | mariadb-client:arm64, nginx-extras:arm64 (>= 1.3.13), postgresql-client:arm64 (>= 9.1), pwgen:arm64, supervisor:all (>= 3.0b2), xvfb:arm64, zlib1g:arm64/' ./onlyoffice/DEBIAN/control
RUN dpkg-deb -b ./onlyoffice ./onlyoffice-documentserver-modified.deb
RUN service postgresql start && \
apt-get -yq install ./onlyoffice-documentserver-modified.deb && \
service postgresql stop && \
service supervisor stop && \
rm -rf /build/ && \
rm -rf /var/log/$COMPANY_NAME && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
COPY config /app/ds/setup/config/ COPY config/supervisor/supervisor /etc/init.d/
COPY config/supervisor/ds/*.conf /etc/supervisor/conf.d/
COPY run-document-server.sh /app/ds/run-document-server.sh COPY run-document-server.sh /app/ds/run-document-server.sh
COPY largeFiles.sh /app/ds/largeFiles.sh
RUN chmod 755 /app/ds/*.sh
EXPOSE 80 443 EXPOSE 80 443
ARG COMPANY_NAME=onlyoffice ARG COMPANY_NAME=onlyoffice
ARG PRODUCT_NAME=documentserver ARG PRODUCT_NAME=documentserver
ARG PACKAGE_URL="http://download.onlyoffice.com/install/documentserver/linux/${COMPANY_NAME}-${PRODUCT_NAME}_amd64.deb" ARG PRODUCT_EDITION=
ARG PACKAGE_VERSION=
ARG TARGETARCH
ARG PACKAGE_BASEURL="http://download.onlyoffice.com/install/documentserver/linux"
ENV COMPANY_NAME=$COMPANY_NAME \ ENV COMPANY_NAME=$COMPANY_NAME \
PRODUCT_NAME=$PRODUCT_NAME PRODUCT_NAME=$PRODUCT_NAME \
PRODUCT_EDITION=$PRODUCT_EDITION \
DS_DOCKER_INSTALLATION=true
RUN PACKAGE_FILE="${COMPANY_NAME}-${PRODUCT_NAME}${PRODUCT_EDITION}${PACKAGE_VERSION:+_$PACKAGE_VERSION}_${TARGETARCH:-$(dpkg --print-architecture)}.deb" && \
wget -q -P /tmp "$PACKAGE_BASEURL/$PACKAGE_FILE" && \
apt-get -y update && \
service postgresql start && \
apt-get -yq install /tmp/$PACKAGE_FILE && \
service postgresql stop && \
chmod 755 /etc/init.d/supervisor && \
sed "s/COMPANY_NAME/${COMPANY_NAME}/g" -i /etc/supervisor/conf.d/*.conf && \
service supervisor stop && \
chmod 755 /app/ds/*.sh && \
rm -f /tmp/$PACKAGE_FILE && \
rm -rf /var/log/$COMPANY_NAME && \
rm -rf /var/lib/apt/lists/*
VOLUME /var/log/$COMPANY_NAME /var/lib/$COMPANY_NAME /var/www/$COMPANY_NAME/Data /var/lib/postgresql /var/lib/rabbitmq /var/lib/redis /usr/share/fonts/truetype/custom VOLUME /var/log/$COMPANY_NAME /var/lib/$COMPANY_NAME /var/www/$COMPANY_NAME/Data /var/lib/postgresql /var/lib/rabbitmq /var/lib/redis /usr/share/fonts/truetype/custom
ENTRYPOINT ["/app/ds/run-document-server.sh"] ENTRYPOINT ["/app/ds/run-document-server.sh"]

66
Makefile Normal file

@ -0,0 +1,66 @@
COMPANY_NAME ?= ONLYOFFICE
GIT_BRANCH ?= develop
PRODUCT_NAME ?= documentserver
PRODUCT_EDITION ?=
PRODUCT_VERSION ?= 0.0.0
BUILD_NUMBER ?= 0
BUILD_CHANNEL ?= nightly
ONLYOFFICE_VALUE ?= onlyoffice
COMPANY_NAME_LOW = $(shell echo $(COMPANY_NAME) | tr A-Z a-z)
PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)$(PRODUCT_EDITION)
PACKAGE_VERSION ?= $(PRODUCT_VERSION)-$(BUILD_NUMBER)~stretch
PACKAGE_BASEURL ?= https://s3.eu-west-1.amazonaws.com/repo-doc-onlyoffice-com/server/linux/debian
ifeq ($(BUILD_CHANNEL),$(filter $(BUILD_CHANNEL),nightly test))
DOCKER_TAG := $(PRODUCT_VERSION).$(BUILD_NUMBER)
else
DOCKER_TAG := $(PRODUCT_VERSION).$(BUILD_NUMBER)-$(subst /,-,$(GIT_BRANCH))
endif
DOCKER_ORG ?= $(COMPANY_NAME_LOW)
DOCKER_IMAGE := $(DOCKER_ORG)/4testing-$(PRODUCT_NAME)$(PRODUCT_EDITION)
DOCKER_DUMMY := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)$(PRODUCT_EDITION)__$(DOCKER_TAG).dummy
DOCKER_ARCH := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME)_$(DOCKER_TAG).tar.gz
.PHONY: all clean clean-docker image deploy docker
$(DOCKER_DUMMY):
docker pull ubuntu:22.04
docker build \
--build-arg COMPANY_NAME=$(COMPANY_NAME_LOW) \
--build-arg PRODUCT_NAME=$(PRODUCT_NAME) \
--build-arg PRODUCT_EDITION=$(PRODUCT_EDITION) \
--build-arg PACKAGE_VERSION=$(PACKAGE_VERSION) \
--build-arg PACKAGE_BASEURL=$(PACKAGE_BASEURL) \
--build-arg TARGETARCH=amd64 \
--build-arg ONLYOFFICE_VALUE=$(ONLYOFFICE_VALUE) \
-t $(DOCKER_IMAGE):$(DOCKER_TAG) . && \
mkdir -p $$(dirname $@) && \
echo "Done" > $@
$(DOCKER_ARCH): $(DOCKER_DUMMY)
docker save $(DOCKER_IMAGE):$(DOCKER_TAG) | \
gzip > $@
all: image
clean:
rm -rfv *.dummy *.tar.gz
clean-docker:
docker rmi -f $$(docker images -q $(COMPANY_NAME_LOW)/*) || exit 0
image: $(DOCKER_DUMMY)
deploy: $(DOCKER_DUMMY)
for i in {1..3}; do \
docker push $(DOCKER_IMAGE):$(DOCKER_TAG) && break || sleep 1m; \
done
ifeq ($(BUILD_CHANNEL),nightly)
docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest
for i in {1..3}; do \
docker push $(DOCKER_IMAGE):latest && break || sleep 1m; \
done
endif

255
README.md

@ -1,48 +1,103 @@
# FOR ARM64 ONLY [![Docker Pulls](https://img.shields.io/docker/pulls/jiriks74/onlyoffice-documentserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/jiriks74/onlyoffice-documentserver)
[![Docker Stars](https://img.shields.io/docker/stars/jiriks74/onlyoffice-documentserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/jiriks74/onlyoffice-documentserver)
[![Docker Size](https://img.shields.io/docker/image-size/jiriks74/onlyoffice-documentserver/latest.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Size&logo=docker)](https://hub.docker.com/r/jiriks74/onlyoffice-documentserver)
## Onlyoffice-Documentserver with `arm64` support #### This repository is based on the official `Dockerfile` and `docker-compose.yml` files with all the needed files as well
### This runs a modified version of the official deb package with the help of `qemu` and `binfmt` # Table of contents
### It's also based on the official `Dockerfile` and `docker-compose.yml` files with all the needed files as well
### To see how I did it, look [at this comment](https://github.com/ONLYOFFICE/DocumentServer/issues/152#issuecomment-1061902836) - I used this method and put it in `Dockerfile` so you don't have to mess aroud with your system in any weird ways (like in the mentioned comment) - [Usage](#usage)
- [Setting up secret key with nextcloud](#setting-up-secret-key-with-nextcloud)
- [Larger file limits](#setting-up-larger-file-limits)
- [Generating custom presentation themes](#generating-custom-presentation-themes)
- [Tags on DockerHub](#tags-used-on-dockerhub)
- [Building the image from source](#building-the-image-yourself-not-recommended---may-take-a-lot-of-time)
- [Updating the image yourself](#updating-the-image-yourself)
## Installation ## Usage
#### 1. Clone the repository (for example to your home directory `cd /home/$USER/`)
`git clone https://github.com/jiriks74/Docker-DocumentServer-Arm64.git && cd Docker-DocumentServer-Arm64` #### docker-compose with prebuilt image (recommended)
#### 2. Build the docker image - Docker will pull the correct architecture automatically
`docker-compose build` - Below in `Details` you'll find a `docker-compose.yml` templete.
- This will take a long time. The things that takte the longes are `dpkg-deb: building package 'onlyoffice-documentserver' in 'onlyoffice-documentserver-modified.deb'` and `Generating presentation themes...` - Both of them take like 20 minutes, it's not stuck, it's just slow (SSD will probably help, I'm running only on HDD) To use it, make a directory where data from the container will be saved, create
`docker-compose.yml` file in it and put the template from below in it.
Then modify the template to your needs.
#### 3. Create and start the container <details>
`docker-compose up -d`
- This will start the server. It is set to be automatically started/restarted so as long you have docker running on startup this will start automatically
## Updating ```yml
#### 1. Stop and delete the old container version: '2'
services:
onlyoffice-documentserver:
image: jiriks74/onlyoffice-documentserver:latest
container_name: onlyoffice-documentserver
depends_on:
- onlyoffice-postgresql
- onlyoffice-rabbitmq
environment:
- DB_TYPE=postgres
- DB_HOST=onlyoffice-postgresql
- DB_PORT=5432
- DB_NAME=onlyoffice
- DB_USER=onlyoffice
- AMQP_URI=amqp://guest:guest@onlyoffice-rabbitmq
# Uncomment strings below to enable the JSON Web Token validation.
#- JWT_ENABLED=true
#- JWT_SECRET=secret
#- JWT_HEADER=AuthorizationJwt
#- JWT_IN_BODY=true
# Uncomment the line below to set larger file limits (about 1GB)
#- LARGER_FILE_LIMITS=true
ports:
- '80:80'
- '443:443'
stdin_open: true
restart: always
stop_grace_period: 120s
volumes:
# Uncomment the line below to get access to the slide themes directory.
# To use the themes, copy them to the slideThemes directory and run `docker exec -it <container-name> /usr/bin/documentserver-generate-allfonts.sh`
#- ./slideThemes:/var/www/onlyoffice/documentserver/sdkjs/slide/themes/src
- /var/www/onlyoffice/Data
- /var/log/onlyoffice
- /var/lib/onlyoffice/documentserver/App_Data/cache/files
- /var/www/onlyoffice/documentserver-example/public/files
- /usr/share/fonts
onlyoffice-rabbitmq:
container_name: onlyoffice-rabbitmq
image: rabbitmq
restart: always
expose:
- '5672'
`docker-compose down` onlyoffice-postgresql:
container_name: onlyoffice-postgresql
#### 2. (optional) Clear the docker cache image: postgres:9.5
#### - ! This will remove all unused cache images ! (good for saving space, bad if you develop with and need cache, but you understand it at that point) environment:
- POSTGRES_DB=onlyoffice
- POSTGRES_USER=onlyoffice
- POSTGRES_HOST_AUTH_METHOD=trust
restart: always
expose:
- '5432'
volumes:
- postgresql_data:/var/lib/postgresql
`docker rmi $(docker images -f "dangling=true" -q)` volumes:
postgresql_data:
```
#### 4. Rebuild the image without cache </details>
`docker-compose build --no-cache` ### Setting up `Secret key` with Nextcloud
#### 3. Create and start the new container
`docker-compose up -d`
## Setup `Secret key`with Nextcloud
1. Uncomment four lines starting with `JWT` in `docker-compose` 1. Uncomment four lines starting with `JWT` in `docker-compose`
2. Set your secret on line `JWT_SECRET=yourSecret` 2. Set your secret on line `JWT_SECRET=yourSecret`
3. Open Nexcloud's `config.php` (by defauld `/var/www/nextcloud/config/config.php`) 3. Open Nexcloud's `config.php` (by default `/var/www/nextcloud/config/config.php`)
4. Add this to the 2nd last line (before the line with `);`) and paste in your secret (3rd last line) 4. Add this to the 2nd last line (before the line with `);`) and paste in your secret (3rd last line)
```php ```php
'onlyoffice' => 'onlyoffice' =>
array ( array (
@ -50,13 +105,82 @@
"jwt_header" => "AuthorizationJwt" "jwt_header" => "AuthorizationJwt"
) )
``` ```
5. Go to your Nextcloud settings, navigate to Onlyoffice settings 5. Go to your Nextcloud settings, navigate to Onlyoffice settings
6. Add your server Address and Secret key 6. Add your server Address and Secret key
7. Save 7. Save
### Setting up larger file limits
- Uncomment the `- LARGER_FILE_LIMITS=true` line in `docker-compose.yml`
### Generating custom presentation themes
1. Uncomment the
`- ./slideThemes:/var/www/onlyoffice/documentserver/sdkjs/slide/themes/src`
line in `docker-compose.yml`
2. Put your themes into the `slideThemes` directory
3. Run `docker exec -it <container-name> /usr/bin/documentserver-generate-allfonts.sh`
- (This will take some time. I have totally 35 themes and it took about 30 minutes to generate them on a Raspberry Pi 4 4GB on an external HDD - SSD may be faster)
4. If you want to add more themes later, repeat step 2 and 3.
## Tags used on DockerHub
- `latest` - the latest version of the Documentserver
- Version tags (eg. `7.0.1-37`) - these tags are equal to the Documentserver
version of the `onlyoffice-documentserver` debian package used in the image
## Building the image yourself (not recommended - may take a lot of time)
#### 1. Clone the repository (for example to your home directory `cd /home/$USER/`)
`git clone https://github.com/jiriks74/Docker-DocumentServer.git && cd Docker-DocumentServer`
#### 2. Build the docker image
##### Building only for the architecture you are building the image on (when building on Raspberry Pi result will be `arm64`, when on pc result will be `amd64`)
`docker-compose build`
##### Building for all supported architectures (you have to have your environment setup for emulation of arm64 with `qemu` and build it on `amd64`) - you have to push to DockerHub
`docker buildx build --push --platform linux/arm64,linux/amd64,linux/386 .`
#### 3. Create and start the container
`docker-compose up -d`
- This will start the server. It is set to be automatically started/restarted so as long you have docker running on startup this will start automatically
### Updating the image yourself
#### 1. Stop and delete the old container
`docker-compose down`
#### 2. (optional) Clear the docker cache
#### - ! This will remove all unused cache images ! (good for saving space, bad if you develop with and need cache, but you understand it at that point)
`docker rmi $(docker images -f "dangling=true" -q)`
#### 4. Rebuild the image without cache
##### Building only for the architecture you are building the image on (when building on Raspberry Pi result will be `arm64`, when on pc result will be `amd64`)
`docker-compose build`
##### Building for all supported architectures (you have to have your environment setup for emulation of arm64 with `qemu`) - you'll have to push to DockerHub, multiplatform images cannot be saved locally (for whatever reason)
`docker buildx build --push --platform linux/arm64,linux/amd64,linux/386 .`
#### 3. Create and start the new container
`docker-compose up -d`
--- ---
## The rest of this file is the official `README.md`. I will not change anything in it, it may not work. If you care about something, make a pull request and we'll figure it out. ## The rest of this file is the official [`README.md` from OnlyOffice-Documentserver repository](https://github.com/ONLYOFFICE/Docker-DocumentServer). I will not change anything in it, it may not work, but considering the changes I made, it should be fully compatible (beware that you must change the `docker-compose.yml` from building the image locally to using this repository). If you want to change something, make a issue on my repository and we'll figure it out.
<details> <details>
@ -74,6 +198,7 @@
+ [Installation of the SSL Certificates](#installation-of-the-ssl-certificates) + [Installation of the SSL Certificates](#installation-of-the-ssl-certificates)
+ [Available Configuration Parameters](#available-configuration-parameters) + [Available Configuration Parameters](#available-configuration-parameters)
* [Installing ONLYOFFICE Document Server integrated with Community and Mail Servers](#installing-onlyoffice-document-server-integrated-with-community-and-mail-servers) * [Installing ONLYOFFICE Document Server integrated with Community and Mail Servers](#installing-onlyoffice-document-server-integrated-with-community-and-mail-servers)
* [ONLYOFFICE Document Server ipv6 setup](#onlyoffice-document-server-ipv6-setup)
* [Issues](#issues) * [Issues](#issues)
- [Docker Issues](#docker-issues) - [Docker Issues](#docker-issues)
- [Document Server usage Issues](#document-server-usage-issues) - [Document Server usage Issues](#document-server-usage-issues)
@ -88,6 +213,8 @@ Starting from version 6.0, Document Server is distributed as ONLYOFFICE Docs. It
ONLYOFFICE Docs can be used as a part of ONLYOFFICE Workspace or with third-party sync&share solutions (e.g. Nextcloud, ownCloud, Seafile) to enable collaborative editing within their interface. ONLYOFFICE Docs can be used as a part of ONLYOFFICE Workspace or with third-party sync&share solutions (e.g. Nextcloud, ownCloud, Seafile) to enable collaborative editing within their interface.
***Important*** Please update `docker-engine` to latest version (`20.10.21` as of writing this doc) before using it. We use `ubuntu:22.04` as base image and it older versions of docker have compatibility problems with it
## Functionality ## ## Functionality ##
* ONLYOFFICE Document Editor * ONLYOFFICE Document Editor
* ONLYOFFICE Spreadsheet Editor * ONLYOFFICE Spreadsheet Editor
@ -248,13 +375,17 @@ Below is the complete list of parameters that can be set using environment varia
- **AMQP_TYPE**: The message broker type. Supported values are `rabbitmq` or `activemq`. Defaults to `rabbitmq`. - **AMQP_TYPE**: The message broker type. Supported values are `rabbitmq` or `activemq`. Defaults to `rabbitmq`.
- **REDIS_SERVER_HOST**: The IP address or the name of the host where the Redis server is running. - **REDIS_SERVER_HOST**: The IP address or the name of the host where the Redis server is running.
- **REDIS_SERVER_PORT**: The Redis server port number. - **REDIS_SERVER_PORT**: The Redis server port number.
- **REDIS_SERVER_PASS**: The Redis server password. The password is not set by default.
- **NGINX_WORKER_PROCESSES**: Defines the number of nginx worker processes. - **NGINX_WORKER_PROCESSES**: Defines the number of nginx worker processes.
- **NGINX_WORKER_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened by a nginx worker process. - **NGINX_WORKER_CONNECTIONS**: Sets the maximum number of simultaneous connections that can be opened by a nginx worker process.
- **JWT_ENABLED**: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Document Server. Defaults to `false`. - **SECURE_LINK_SECRET**: Defines secret for the nginx config directive [secure_link_md5](https://nginx.org/en/docs/http/ngx_http_secure_link_module.html#secure_link_md5). Defaults to `random string`.
- **JWT_SECRET**: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Document Server. Defaults to `secret`. - **JWT_ENABLED**: Specifies the enabling the JSON Web Token validation by the ONLYOFFICE Document Server. Defaults to `true`.
- **JWT_SECRET**: Defines the secret key to validate the JSON Web Token in the request to the ONLYOFFICE Document Server. Defaults to random value.
- **JWT_HEADER**: Defines the http header that will be used to send the JSON Web Token. Defaults to `Authorization`. - **JWT_HEADER**: Defines the http header that will be used to send the JSON Web Token. Defaults to `Authorization`.
- **JWT_IN_BODY**: Specifies the enabling the token validation in the request body to the ONLYOFFICE Document Server. Defaults to `false`. - **JWT_IN_BODY**: Specifies the enabling the token validation in the request body to the ONLYOFFICE Document Server. Defaults to `false`.
- **WOPI_ENABLED**: Specifies the enabling the wopi handlers. Defaults to `false`. - **WOPI_ENABLED**: Specifies the enabling the wopi handlers. Defaults to `false`.
- **ALLOW_META_IP_ADDRESS**: Defines if it is allowed to connect meta IP address or not. Defaults to `false`.
- **ALLOW_PRIVATE_IP_ADDRESS**: Defines if it is allowed to connect private IP address or not. Defaults to `false`.
- **USE_UNAUTHORIZED_STORAGE**: Set to `true`if using selfsigned certificates for your storage server e.g. Nextcloud. Defaults to `false` - **USE_UNAUTHORIZED_STORAGE**: Set to `true`if using selfsigned certificates for your storage server e.g. Nextcloud. Defaults to `false`
- **GENERATE_FONTS**: When 'true' regenerates fonts list and the fonts thumbnails etc. at each start. Defaults to `true` - **GENERATE_FONTS**: When 'true' regenerates fonts list and the fonts thumbnails etc. at each start. Defaults to `true`
- **METRICS_ENABLED**: Specifies the enabling StatsD for ONLYOFFICE Document Server. Defaults to `false`. - **METRICS_ENABLED**: Specifies the enabling StatsD for ONLYOFFICE Document Server. Defaults to `false`.
@ -279,18 +410,28 @@ Then launch containers on it using the 'docker run --net onlyoffice' option:
Follow [these steps](#installing-mysql) to install MySQL server. Follow [these steps](#installing-mysql) to install MySQL server.
**STEP 3**: Install ONLYOFFICE Document Server. **STEP 3**: Generate JWT Secret
JWT secret defines the secret key to validate the JSON Web Token in the request to the **ONLYOFFICE Document Server**. You can specify it yourself or easily get it using the command:
```
JWT_SECRET=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12);
```
**STEP 4**: Install ONLYOFFICE Document Server.
```bash ```bash
sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \ sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -e JWT_ENABLED=true \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ -e JWT_SECRET=${JWT_SECRET} \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \ -e JWT_HEADER=AuthorizationJwt \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
onlyoffice/documentserver -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
-v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
onlyoffice/documentserver
``` ```
**STEP 4**: Install ONLYOFFICE Mail Server. **STEP 5**: Install ONLYOFFICE Mail Server.
For the mail server correct work you need to specify its hostname 'yourdomain.com'. For the mail server correct work you need to specify its hostname 'yourdomain.com'.
@ -312,10 +453,10 @@ The additional parameters for mail server are available [here](https://github.co
To learn more, refer to the [ONLYOFFICE Mail Server documentation](https://github.com/ONLYOFFICE/Docker-MailServer "ONLYOFFICE Mail Server documentation"). To learn more, refer to the [ONLYOFFICE Mail Server documentation](https://github.com/ONLYOFFICE/Docker-MailServer "ONLYOFFICE Mail Server documentation").
**STEP 5**: Install ONLYOFFICE Community Server **STEP 6**: Install ONLYOFFICE Community Server
```bash ```bash
sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 \ sudo docker run --net onlyoffice -i -t -d --privileged --restart=always --name onlyoffice-community-server -p 80:80 -p 443:443 -p 5222:5222 --cgroupns=host \
-e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_SERVER_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_SERVER_DB_NAME=onlyoffice \ -e MYSQL_SERVER_DB_NAME=onlyoffice \
-e MYSQL_SERVER_HOST=onlyoffice-mysql-server \ -e MYSQL_SERVER_HOST=onlyoffice-mysql-server \
@ -323,6 +464,9 @@ sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-com
-e MYSQL_SERVER_PASS=onlyoffice_pass \ -e MYSQL_SERVER_PASS=onlyoffice_pass \
-e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \ -e DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-document-server \
-e DOCUMENT_SERVER_JWT_ENABLED=true \
-e DOCUMENT_SERVER_JWT_SECRET=${JWT_SECRET} \
-e DOCUMENT_SERVER_JWT_HEADER=AuthorizationJwt \
-e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP} \ -e MAIL_SERVER_API_HOST=${MAIL_SERVER_IP} \
-e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server \ -e MAIL_SERVER_DB_HOST=onlyoffice-mysql-server \
@ -333,12 +477,14 @@ sudo docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-com
-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data \
-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/CommunityServer/letsencrypt:/etc/letsencrypt \
-v /sys/fs/cgroup:/sys/fs/cgroup:rw \
onlyoffice/communityserver onlyoffice/communityserver
``` ```
Where `${MAIL_SERVER_IP}` is the IP address for **ONLYOFFICE Mail Server**. You can easily get it using the command: Where `${MAIL_SERVER_IP}` is the IP address for **ONLYOFFICE Mail Server**. You can easily get it using the command:
``` ```
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server MAIL_SERVER_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' onlyoffice-mail-server)
``` ```
Alternatively, you can use an automatic installation script to install the whole ONLYOFFICE Community Edition at once. For the mail server correct work you need to specify its hostname 'yourdomain.com'. Alternatively, you can use an automatic installation script to install the whole ONLYOFFICE Community Edition at once. For the mail server correct work you need to specify its hostname 'yourdomain.com'.
@ -362,6 +508,30 @@ wget https://raw.githubusercontent.com/ONLYOFFICE/Docker-CommunityServer/master/
docker-compose up -d docker-compose up -d
``` ```
## ONLYOFFICE Document Server ipv6 setup
(Works and is supported only for Linux hosts)
Docker does not currently provide ipv6 addresses to containers by default. This function is experimental now.
To set up interaction via ipv6, you need to enable support for this feature in your Docker. For this you need:
- create the `/etc/docker/daemon.json` file with the following content:
```
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:abc1::/64"
}
```
- restart docker with the following command: `systemctl restart docker`
After that, all running containers receive an ipv6 address and have an inet6 interface.
You can check your default bridge network and see the field there
`EnableIPv6=true`. A new ipv6 subnet will also be added.
For more information, visit the official [Docker manual site](https://docs.docker.com/config/daemon/ipv6/)
## Issues ## Issues
### Docker Issues ### Docker Issues
@ -400,6 +570,5 @@ If you have any problems with or questions about this image, please visit our of
[1]: https://forum.onlyoffice.com [1]: https://forum.onlyoffice.com
[2]: https://stackoverflow.com/questions/tagged/onlyoffice [2]: https://stackoverflow.com/questions/tagged/onlyoffice
</details> </details>

@ -0,0 +1,18 @@
import requests
import os
response = requests.get("https://api.github.com/repos/ONLYOFFICE/DocumentServer/releases/latest")
print('docker buildx build --push --platform linux/arm64,linux/amd64 --tag jiriks74/onlyoffice-documentserver:latest .')
os.system(f'docker buildx build --push --platform linux/arm64,linux/amd64 --tag jiriks74/onlyoffice-documentserver:latest .')
print("///////////////////////////////////////////////////////////////////////////")
print('Build and push ":latest" .........................................finished')
print("///////////////////////////////////////////////////////////////////////////")
print()
print(f'docker buildx build --push --platform linux/arm64,linux/amd64 --tag jiriks74/onlyoffice-documentserver:{response.json()["name"].replace("ONLYOFFICE-DocumentServer-", "")} .')
os.system(f'docker buildx build --push --platform linux/arm64,linux/amd64 --tag jiriks74/onlyoffice-documentserver:{response.json()["name"].replace("ONLYOFFICE-DocumentServer-", "")} .')
print("///////////////////////////////////////////////////////////////////////////")
print(f'Build and push ":{response.json()["name"].replace("ONLYOFFICE-DocumentServer-", "")}".........................................finished')
print("///////////////////////////////////////////////////////////////////////////")

@ -0,0 +1,13 @@
[program:converter]
command=/var/www/COMPANY_NAME/documentserver/server/FileConverter/converter
directory=/var/www/COMPANY_NAME/documentserver/server/FileConverter
user=ds
environment=NODE_ENV=production-linux,NODE_CONFIG_DIR=/etc/COMPANY_NAME/documentserver,NODE_DISABLE_COLORS=1,APPLICATION_NAME=COMPANY_NAME
stdout_logfile=/var/log/COMPANY_NAME/documentserver/converter/out.log
stdout_logfile_backups=0
stdout_logfile_maxbytes=0
stderr_logfile=/var/log/COMPANY_NAME/documentserver/converter/err.log
stderr_logfile_backups=0
stderr_logfile_maxbytes=0
autostart=true
autorestart=true

@ -0,0 +1,13 @@
[program:docservice]
command=/var/www/COMPANY_NAME/documentserver/server/DocService/docservice
directory=/var/www/COMPANY_NAME/documentserver/server/DocService
user=ds
environment=NODE_ENV=production-linux,NODE_CONFIG_DIR=/etc/COMPANY_NAME/documentserver,NODE_DISABLE_COLORS=1
stdout_logfile=/var/log/COMPANY_NAME/documentserver/docservice/out.log
stdout_logfile_backups=0
stdout_logfile_maxbytes=0
stderr_logfile=/var/log/COMPANY_NAME/documentserver/docservice/err.log
stderr_logfile_backups=0
stderr_logfile_maxbytes=0
autostart=true
autorestart=true

@ -0,0 +1,14 @@
[program:example]
command=/var/www/COMPANY_NAME/documentserver-example/example
directory=/var/www/COMPANY_NAME/documentserver-example/
user=ds
environment=NODE_ENV=production-linux,NODE_CONFIG_DIR=/etc/COMPANY_NAME/documentserver-example,NODE_DISABLE_COLORS=1
stdout_logfile=/var/log/COMPANY_NAME/documentserver-example/out.log
stdout_logfile_backups=0
stdout_logfile_maxbytes=0
stderr_logfile=/var/log/COMPANY_NAME/documentserver-example/err.log
stderr_logfile_backups=0
stderr_logfile_maxbytes=0
autostart=false
autorestart=true
redirect_stderr=true

@ -0,0 +1,13 @@
[program:metrics]
command=/var/www/COMPANY_NAME/documentserver/server/Metrics/metrics ./config/config.js
directory=/var/www/COMPANY_NAME/documentserver/server/Metrics
user=ds
environment=NODE_DISABLE_COLORS=1
stdout_logfile=/var/log/COMPANY_NAME/documentserver/metrics/out.log
stdout_logfile_backups=0
stdout_logfile_maxbytes=0
stderr_logfile=/var/log/COMPANY_NAME/documentserver/metrics/err.log
stderr_logfile_backups=0
stderr_logfile_maxbytes=0
autostart=true
autorestart=true

@ -0,0 +1,2 @@
[group:ds]
programs=docservice,converter,metrics,example

@ -1,27 +0,0 @@
; supervisor config file
[inet_http_server]
port = 127.0.0.1:9001
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl = http://localhost:9001 ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf

11
default.nix Normal file

@ -0,0 +1,11 @@
{ pkgs ? (import <nixpkgs> {
config.allowUnfree = true;
}),
}:
pkgs.mkShell {
pure = true;
packages = with pkgs; [
# Choose the build tools that you need
act
];
}

169
docker-bake.hcl Normal file

@ -0,0 +1,169 @@
variable "TAG" {
default = ""
}
variable "SHORTER_TAG" {
default = ""
}
variable "SHORTEST_TAG" {
default = ""
}
variable "PULL_TAG" {
default = ""
}
variable "COMPANY_NAME" {
default = ""
}
variable "PREFIX_NAME" {
default = ""
}
variable "PRODUCT_EDITION" {
default = ""
}
variable "PRODUCT_NAME" {
default = ""
}
variable "PACKAGE_VERSION" {
default = ""
}
variable "DOCKERFILE" {
default = ""
}
variable "PLATFORM" {
default = ""
}
variable "PACKAGE_BASEURL" {
default = ""
}
variable "PACKAGE_FILE" {
default = ""
}
variable "BUILD_CHANNEL" {
default = ""
}
variable "PUSH_MAJOR" {
default = "false"
}
variable "LATEST" {
default = "false"
}
### Variables for UCS build
variable "BASE_IMAGE" {
default = ""
}
variable "PG_VERSION" {
default = ""
}
variable "UCS_REBUILD" {
default = ""
}
variable "UCS_PREFIX" {
default = ""
}
### Variables for UCS build
target "documentserver" {
target = "documentserver"
dockerfile = "${DOCKERFILE}"
tags = [
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}",
equal("nightly",BUILD_CHANNEL) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "",
]
platforms = ["${PLATFORM}"]
args = {
"COMPANY_NAME": "${COMPANY_NAME}"
"PRODUCT_NAME": "${PRODUCT_NAME}"
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
"PACKAGE_VERSION": "${PACKAGE_VERSION}"
"PACKAGE_BASEURL": "${PACKAGE_BASEURL}"
"PLATFORM": "${PLATFORM}"
}
}
target "documentserver-stable" {
target = "documentserver-stable"
dockerfile = "production.dockerfile"
tags = ["docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}",
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTER_TAG}",
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTEST_TAG}",
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest",
equal("-ee",PRODUCT_EDITION) ? "docker.io/${COMPANY_NAME}4enterprise/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}": "",]
platforms = ["linux/amd64", "linux/arm64"]
args = {
"PULL_TAG": "${PULL_TAG}"
"COMPANY_NAME": "${COMPANY_NAME}"
"PRODUCT_NAME": "${PRODUCT_NAME}"
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
}
}
target "documentserver-ucs" {
target = "documentserver"
dockerfile = "${DOCKERFILE}"
tags = [
"docker.io/${COMPANY_NAME}/${PRODUCT_NAME}${PRODUCT_EDITION}-ucs:${TAG}"
]
platforms = ["linux/amd64", "linux/arm64"]
args = {
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
"PRODUCT_NAME": "${PRODUCT_NAME}"
"COMPANY_NAME": "${COMPANY_NAME}"
"PACKAGE_VERSION": "${PACKAGE_VERSION}"
"PACKAGE_BASEURL": "${PACKAGE_BASEURL}"
"BASE_IMAGE": "${BASE_IMAGE}"
"PG_VERSION": "${PG_VERSION}"
}
}
target "documentserver-nonexample" {
target = "documentserver-nonexample"
dockerfile = "production.dockerfile"
tags = [ "docker.io/${COMPANY_NAME}/${PRODUCT_NAME}${PREFIX_NAME}${PRODUCT_EDITION}:${TAG}-nonexample" ]
platforms = ["linux/amd64", "linux/arm64"]
args = {
"PULL_TAG": "${PULL_TAG}"
"COMPANY_NAME": "${COMPANY_NAME}"
"PRODUCT_NAME": "${PRODUCT_NAME}"
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
}
}
target "documentserver-stable-rebuild" {
target = "documentserver-stable-rebuild"
dockerfile = "production.dockerfile"
tags = equal("true",UCS_REBUILD) ? ["docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}-ucs:${TAG}",] : [
"docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}",
equal("",PREFIX_NAME) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTER_TAG}": "",
equal("true",PUSH_MAJOR) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${SHORTEST_TAG}": "",
equal("",PREFIX_NAME) && equal("true",LATEST) ? "docker.io/${COMPANY_NAME}/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:latest": "",
equal("-ee",PRODUCT_EDITION) && equal("",PREFIX_NAME) ? "docker.io/${COMPANY_NAME}4enterprise/${PREFIX_NAME}${PRODUCT_NAME}${PRODUCT_EDITION}:${TAG}": "",
]
platforms = ["linux/amd64", "linux/arm64"]
args = {
"UCS_PREFIX": "${UCS_PREFIX}"
"PULL_TAG": "${PULL_TAG}"
"COMPANY_NAME": "${COMPANY_NAME}"
"PRODUCT_NAME": "${PRODUCT_NAME}"
"PRODUCT_EDITION": "${PRODUCT_EDITION}"
}
}

@ -19,11 +19,8 @@ services:
#- JWT_SECRET=secret #- JWT_SECRET=secret
#- JWT_HEADER=AuthorizationJwt #- JWT_HEADER=AuthorizationJwt
#- JWT_IN_BODY=true #- JWT_IN_BODY=true
# Uncomment the line below to set larger file limits (about 1GB)
# Uncomment strings below to enable larger files #- LARGER_FILE_LIMITS=true
#- LARGER_FILES=true
#- MAX_DOWNLOAD_SIZE=104857600 # Download size in bytes
#- MAX_UNCOMPRESSED_SIZE=300 # Uncompressed of a file in MB
ports: ports:
- '80:80' - '80:80'
- '443:443' - '443:443'
@ -31,6 +28,9 @@ services:
restart: always restart: always
stop_grace_period: 120s stop_grace_period: 120s
volumes: volumes:
# Uncomment the line below to get access to the slide themes directory.
# To use the themes, copy them to the slideThemes directory and run `docker exec -it <container-name> /usr/bin/documentserver-generate-allfonts.sh`
#- ./slideThemes:/var/www/onlyoffice/documentserver/sdkjs/slide/themes/src
- /var/www/onlyoffice/Data - /var/www/onlyoffice/Data
- /var/log/onlyoffice - /var/log/onlyoffice
- /var/lib/onlyoffice/documentserver/App_Data/cache/files - /var/lib/onlyoffice/documentserver/App_Data/cache/files
@ -46,7 +46,7 @@ services:
onlyoffice-postgresql: onlyoffice-postgresql:
container_name: onlyoffice-postgresql container_name: onlyoffice-postgresql
image: postgres:9.5 image: postgres:12
environment: environment:
- POSTGRES_DB=onlyoffice - POSTGRES_DB=onlyoffice
- POSTGRES_USER=onlyoffice - POSTGRES_USER=onlyoffice

@ -1,22 +0,0 @@
#!/usr/bin/env bash
LARGER_FILES=${LARGER_FILES:-false}
MAX_DOWNOAD_SIZE=${MAX_DOWNLOAD_SIZE:-104857600}
MAX_UNCOMPRESSED_SIZE=${MAX_UNCOMPRESSED_SIZE:-300}
if [ "$LARGER_FILES" = true ]; then
sed -i -e "s/104857600/${MAX_DOWNLOAD_SIZE}/g" /etc/onlyoffice/documentserver-example/production-linux.json
sed -i "9iclient_max_body_size ${MAX_DOWNLOAD_SIZE};" /etc/onlyoffice/documentserver-example/nginx/includes/ds-example.conf
sed -i "16iclient_max_body_size ${MAX_DOWLOAD_SIZE};" /etc/nginx/nginx.conf
sed -i -e "s/104857600/${MAX_DOWNLOAD_SIZE}/g" /etc/onlyoffice/documentserver/default.json
sed -i -e "s/50MB/${MAX_UNCOMPRESSED_SIZE}MB/g" /etc/onlyoffice/documentserver/default.json
sed -i -e "s/300MB/${MAX_UNCOMPRESSED_SIZE}MB/g" /etc/onlyoffice/documentserver/default.json
sed -i "s/^client_max_body_size 100m;$/client_max_body_size ${MAX_DOWNLOAD_SIZE};/" /etc/onlyoffice/documentserver/nginx/includes/ds-common.conf
fi
touch /app/ds/largeFiles.lck
#service nginx restart
#supervisorctl restart all

33
production.dockerfile Normal file

@ -0,0 +1,33 @@
### Arguments avavlivable only for FROM instruction ###
ARG PULL_TAG=latest
ARG COMPANY_NAME=onlyoffice
ARG PRODUCT_EDITION=
### Rebuild arguments
ARG UCS_PREFIX=
ARG IMAGE=${COMPANY_NAME}/documentserver${PRODUCT_EDITION}${UCS_PREFIX}:${PULL_TAG}
### Build main-release ###
FROM ${COMPANY_NAME}/4testing-documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-stable
### Rebuild stable images with secure updates
FROM ${IMAGE} as documentserver-stable-rebuild
RUN echo "This is rebuild" \
&& apt-get update -y \
&& apt-get upgrade -y
### Build nonexample ###
FROM ${COMPANY_NAME}/documentserver${PRODUCT_EDITION}:${PULL_TAG} as documentserver-nonexample
ARG COMPANY_NAME=onlyoffice
ARG PRODUCT_NAME=documentserver
ARG DS_SUPERVISOR_CONF=/etc/supervisor/conf.d/ds.conf
### Remove all documentserver-example data ###
RUN rm -rf /var/www/$COMPANY_NAME/$PRODUCT_NAME-example \
&& rm -rf /etc/$COMPANY_NAME/$PRODUCT_NAME-example \
&& rm -f $DS_SUPERVISOR_CONF \
&& rm -f /etc/nginx/includes/ds-example.conf \
&& ln -s /etc/$COMPANY_NAME/$PRODUCT_NAME/supervisor/ds.conf $DS_SUPERVISOR_CONF

152
run-document-server.sh Executable file → Normal file

@ -1,11 +1,12 @@
#!/bin/bash #!/bin/bash
if [[ ! -e /app/ds/largeFiles.lck ]]; then umask 0022
/app/ds/largeFiles.sh
fi
function clean_exit { function clean_exit {
/usr/bin/documentserver-prepare4shutdown.sh if [ ${ONLYOFFICE_DATA_CONTAINER} == "false" ] && \
[ ${ONLYOFFICE_DATA_CONTAINER_HOST} == "localhost" ]; then
/usr/bin/documentserver-prepare4shutdown.sh
fi
} }
trap clean_exit SIGTERM trap clean_exit SIGTERM
@ -41,14 +42,21 @@ if [ "${RELEASE_DATE}" != "${PREV_RELEASE_DATE}" ]; then
fi fi
fi fi
SSL_CERTIFICATES_DIR="${DATA_DIR}/certs" SSL_CERTIFICATES_DIR="/usr/share/ca-certificates/ds"
if [[ -z $SSL_CERTIFICATE_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/onlyoffice.crt ]]; then mkdir -p ${SSL_CERTIFICATES_DIR}
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATES_DIR}/onlyoffice.crt if [[ -d ${DATA_DIR}/certs ]] && [ -e ${DATA_DIR}/certs/*.crt ]; then
cp -f ${DATA_DIR}/certs/* ${SSL_CERTIFICATES_DIR}
chmod 644 ${SSL_CERTIFICATES_DIR}/*.crt ${SSL_CERTIFICATES_DIR}/*.pem
chmod 400 ${SSL_CERTIFICATES_DIR}/*.key
fi
if [[ -z $SSL_CERTIFICATE_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/${COMPANY_NAME}.crt ]]; then
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATES_DIR}/${COMPANY_NAME}.crt
else else
SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/tls.crt} SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/tls.crt}
fi fi
if [[ -z $SSL_KEY_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/onlyoffice.key ]]; then if [[ -z $SSL_KEY_PATH ]] && [[ -f ${SSL_CERTIFICATES_DIR}/${COMPANY_NAME}.key ]]; then
SSL_KEY_PATH=${SSL_CERTIFICATES_DIR}/onlyoffice.key SSL_KEY_PATH=${SSL_CERTIFICATES_DIR}/${COMPANY_NAME}.key
else else
SSL_KEY_PATH=${SSL_KEY_PATH:-${SSL_CERTIFICATES_DIR}/tls.key} SSL_KEY_PATH=${SSL_KEY_PATH:-${SSL_CERTIFICATES_DIR}/tls.key}
fi fi
@ -68,18 +76,31 @@ NGINX_ONLYOFFICE_EXAMPLE_CONF="${NGINX_ONLYOFFICE_EXAMPLE_PATH}/includes/ds-exam
NGINX_CONFIG_PATH="/etc/nginx/nginx.conf" NGINX_CONFIG_PATH="/etc/nginx/nginx.conf"
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-1} NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-1}
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)} # Limiting the maximum number of simultaneous connections due to possible memory shortage
[ $(ulimit -n) -gt 1048576 ] && NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-1048576} || NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)}
JWT_ENABLED=${JWT_ENABLED:-false} JWT_ENABLED=${JWT_ENABLED:-true}
JWT_SECRET=${JWT_SECRET:-secret}
# validate user's vars before usinig in json
if [ "${JWT_ENABLED}" == "true" ]; then
JWT_ENABLED="true"
else
JWT_ENABLED="false"
fi
[ -z $JWT_SECRET ] && JWT_MESSAGE='JWT is enabled by default. A random secret is generated automatically. Run the command "docker exec $(sudo docker ps -q) sudo documentserver-jwt-status.sh" to get information about JWT.'
JWT_SECRET=${JWT_SECRET:-$(pwgen -s 32)}
JWT_HEADER=${JWT_HEADER:-Authorization} JWT_HEADER=${JWT_HEADER:-Authorization}
JWT_IN_BODY=${JWT_IN_BODY:-false} JWT_IN_BODY=${JWT_IN_BODY:-false}
WOPI_ENABLED=${WOPI_ENABLED:-false} WOPI_ENABLED=${WOPI_ENABLED:-false}
ALLOW_META_IP_ADDRESS=${ALLOW_META_IP_ADDRESS:-false}
ALLOW_PRIVATE_IP_ADDRESS=${ALLOW_PRIVATE_IP_ADDRESS:-false}
GENERATE_FONTS=${GENERATE_FONTS:-true} GENERATE_FONTS=${GENERATE_FONTS:-true}
if [[ ${PRODUCT_NAME} == "documentserver" ]]; then if [[ ${PRODUCT_NAME}${PRODUCT_EDITION} == "documentserver" ]]; then
REDIS_ENABLED=false REDIS_ENABLED=false
else else
REDIS_ENABLED=true REDIS_ENABLED=true
@ -184,7 +205,7 @@ parse_rabbitmq_url(){
# extract the host # extract the host
local hostport="$(echo ${url/$userpass@/} | cut -d/ -f1)" local hostport="$(echo ${url/$userpass@/} | cut -d/ -f1)"
# by request - try to extract the port # by request - try to extract the port
local port="$(echo $hostport | sed -e 's,^.*:,:,g' -e 's,.*:\([0-9]*\).*,\1,g' -e 's,[^0-9],,g')" local port="$(echo $hostport | grep : | sed -r 's_^.*:+|/.*$__g')"
local host local host
if [ -n "$port" ]; then if [ -n "$port" ]; then
@ -288,33 +309,37 @@ update_rabbitmq_setting(){
} }
update_redis_settings(){ update_redis_settings(){
${JSON} -I -e "if(this.services.CoAuthoring.redis===undefined)this.services.CoAuthoring.redis={};"
${JSON} -I -e "this.services.CoAuthoring.redis.host = '${REDIS_SERVER_HOST}'" ${JSON} -I -e "this.services.CoAuthoring.redis.host = '${REDIS_SERVER_HOST}'"
${JSON} -I -e "this.services.CoAuthoring.redis.port = '${REDIS_SERVER_PORT}'" ${JSON} -I -e "this.services.CoAuthoring.redis.port = '${REDIS_SERVER_PORT}'"
if [ -n "${REDIS_SERVER_PASS}" ]; then
${JSON} -I -e "this.services.CoAuthoring.redis.options = {'password':'${REDIS_SERVER_PASS}'}"
fi
} }
update_ds_settings(){ update_ds_settings(){
if [ "${JWT_ENABLED}" == "true" ]; then ${JSON} -I -e "this.services.CoAuthoring.token.enable.browser = ${JWT_ENABLED}"
${JSON} -I -e "this.services.CoAuthoring.token.enable.browser = ${JWT_ENABLED}" ${JSON} -I -e "this.services.CoAuthoring.token.enable.request.inbox = ${JWT_ENABLED}"
${JSON} -I -e "this.services.CoAuthoring.token.enable.request.inbox = ${JWT_ENABLED}" ${JSON} -I -e "this.services.CoAuthoring.token.enable.request.outbox = ${JWT_ENABLED}"
${JSON} -I -e "this.services.CoAuthoring.token.enable.request.outbox = ${JWT_ENABLED}"
${JSON} -I -e "this.services.CoAuthoring.secret.inbox.string = '${JWT_SECRET}'" ${JSON} -I -e "this.services.CoAuthoring.secret.inbox.string = '${JWT_SECRET}'"
${JSON} -I -e "this.services.CoAuthoring.secret.outbox.string = '${JWT_SECRET}'" ${JSON} -I -e "this.services.CoAuthoring.secret.outbox.string = '${JWT_SECRET}'"
${JSON} -I -e "this.services.CoAuthoring.secret.session.string = '${JWT_SECRET}'" ${JSON} -I -e "this.services.CoAuthoring.secret.session.string = '${JWT_SECRET}'"
${JSON} -I -e "this.services.CoAuthoring.token.inbox.header = '${JWT_HEADER}'" ${JSON} -I -e "this.services.CoAuthoring.token.inbox.header = '${JWT_HEADER}'"
${JSON} -I -e "this.services.CoAuthoring.token.outbox.header = '${JWT_HEADER}'" ${JSON} -I -e "this.services.CoAuthoring.token.outbox.header = '${JWT_HEADER}'"
${JSON} -I -e "this.services.CoAuthoring.token.inbox.inBody = ${JWT_IN_BODY}" ${JSON} -I -e "this.services.CoAuthoring.token.inbox.inBody = ${JWT_IN_BODY}"
${JSON} -I -e "this.services.CoAuthoring.token.outbox.inBody = ${JWT_IN_BODY}" ${JSON} -I -e "this.services.CoAuthoring.token.outbox.inBody = ${JWT_IN_BODY}"
if [ -f "${ONLYOFFICE_EXAMPLE_CONFIG}" ] && [ "${JWT_ENABLED}" == "true" ]; then if [ -f "${ONLYOFFICE_EXAMPLE_CONFIG}" ]; then
${JSON_EXAMPLE} -I -e "this.server.token.enable = ${JWT_ENABLED}" ${JSON_EXAMPLE} -I -e "this.server.token.enable = ${JWT_ENABLED}"
${JSON_EXAMPLE} -I -e "this.server.token.secret = '${JWT_SECRET}'" ${JSON_EXAMPLE} -I -e "this.server.token.secret = '${JWT_SECRET}'"
${JSON_EXAMPLE} -I -e "this.server.token.authorizationHeader = '${JWT_HEADER}'" ${JSON_EXAMPLE} -I -e "this.server.token.authorizationHeader = '${JWT_HEADER}'"
fi
fi fi
if [ "${USE_UNAUTHORIZED_STORAGE}" == "true" ]; then if [ "${USE_UNAUTHORIZED_STORAGE}" == "true" ]; then
${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults===undefined)this.services.CoAuthoring.requestDefaults={}" ${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults===undefined)this.services.CoAuthoring.requestDefaults={}"
${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults.rejectUnauthorized===undefined)this.services.CoAuthoring.requestDefaults.rejectUnauthorized=false" ${JSON} -I -e "if(this.services.CoAuthoring.requestDefaults.rejectUnauthorized===undefined)this.services.CoAuthoring.requestDefaults.rejectUnauthorized=false"
@ -324,6 +349,12 @@ update_ds_settings(){
${JSON} -I -e "if(this.wopi===undefined)this.wopi={}" ${JSON} -I -e "if(this.wopi===undefined)this.wopi={}"
${JSON} -I -e "this.wopi.enable = true" ${JSON} -I -e "this.wopi.enable = true"
fi fi
if [ "${ALLOW_META_IP_ADDRESS}" = "true" ] || [ "${ALLOW_PRIVATE_IP_ADDRESS}" = "true" ]; then
${JSON} -I -e "if(this.services.CoAuthoring['request-filtering-agent']===undefined)this.services.CoAuthoring['request-filtering-agent']={}"
[ "${ALLOW_META_IP_ADDRESS}" = "true" ] && ${JSON} -I -e "this.services.CoAuthoring['request-filtering-agent'].allowMetaIPAddress = true"
[ "${ALLOW_PRIVATE_IP_ADDRESS}" = "true" ] && ${JSON} -I -e "this.services.CoAuthoring['request-filtering-agent'].allowPrivateIPAddress = true"
fi
} }
create_postgresql_cluster(){ create_postgresql_cluster(){
@ -338,9 +369,8 @@ create_postgresql_cluster(){
} }
create_postgresql_db(){ create_postgresql_db(){
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;"
sudo -u postgres psql -c "CREATE USER $DB_USER WITH password '"$DB_PWD"';" sudo -u postgres psql -c "CREATE USER $DB_USER WITH password '"$DB_PWD"';"
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE $DB_NAME TO $DB_USER;" sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"
} }
create_db_tbl() { create_db_tbl() {
@ -407,11 +437,16 @@ update_welcome_page() {
WELCOME_PAGE="${APP_DIR}-example/welcome/docker.html" WELCOME_PAGE="${APP_DIR}-example/welcome/docker.html"
if [[ -e $WELCOME_PAGE ]]; then if [[ -e $WELCOME_PAGE ]]; then
DOCKER_CONTAINER_ID=$(basename $(cat /proc/1/cpuset)) DOCKER_CONTAINER_ID=$(basename $(cat /proc/1/cpuset))
if [[ -x $(command -v docker) ]]; then (( ${#DOCKER_CONTAINER_ID} < 12 )) && DOCKER_CONTAINER_ID=$(hostname)
DOCKER_CONTAINER_NAME=$(docker inspect --format="{{.Name}}" $DOCKER_CONTAINER_ID) if (( ${#DOCKER_CONTAINER_ID} >= 12 )); then
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/' -i $WELCOME_PAGE if [[ -x $(command -v docker) ]]; then
else DOCKER_CONTAINER_NAME=$(docker inspect --format="{{.Name}}" $DOCKER_CONTAINER_ID)
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/' -i $WELCOME_PAGE sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/' -i $WELCOME_PAGE
JWT_MESSAGE=$(echo $JWT_MESSAGE | sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_NAME#/}"'/')
else
sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/' -i $WELCOME_PAGE
JWT_MESSAGE=$(echo $JWT_MESSAGE | sed 's/$(sudo docker ps -q)/'"${DOCKER_CONTAINER_ID::12}"'/')
fi
fi fi
fi fi
} }
@ -463,13 +498,8 @@ update_nginx_settings(){
if [ -f "${NGINX_ONLYOFFICE_EXAMPLE_CONF}" ]; then if [ -f "${NGINX_ONLYOFFICE_EXAMPLE_CONF}" ]; then
sed 's/linux/docker/' -i ${NGINX_ONLYOFFICE_EXAMPLE_CONF} sed 's/linux/docker/' -i ${NGINX_ONLYOFFICE_EXAMPLE_CONF}
fi fi
}
update_supervisor_settings(){ documentserver-update-securelink.sh -s ${SECURE_LINK_SECRET:-$(pwgen -s 20)} -r false
# Copy modified supervisor start script
cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/
# Copy modified supervisor config
cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf
} }
update_log_settings(){ update_log_settings(){
@ -498,7 +528,7 @@ for i in ${DS_LIB_DIR}/App_Data/cache/files ${DS_LIB_DIR}/App_Data/docbuilder ${
done done
# change folder rights # change folder rights
for i in ${LOG_DIR} ${LIB_DIR} ${DATA_DIR}; do for i in ${LOG_DIR} ${LIB_DIR}; do
chown -R ds:ds "$i" chown -R ds:ds "$i"
chmod -R 755 "$i" chmod -R 755 "$i"
done done
@ -572,6 +602,8 @@ else
update_welcome_page update_welcome_page
fi fi
find /etc/${COMPANY_NAME} ! -path '*logrotate*' -exec chown ds:ds {} \;
#start needed local services #start needed local services
for i in ${LOCAL_SERVICES[@]}; do for i in ${LOCAL_SERVICES[@]}; do
service $i start service $i start
@ -595,8 +627,7 @@ if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
fi fi
update_nginx_settings update_nginx_settings
update_supervisor_settings
service supervisor start service supervisor start
# start cron to enable log rotating # start cron to enable log rotating
@ -620,5 +651,32 @@ if [ "${GENERATE_FONTS}" == "true" ]; then
fi fi
documentserver-static-gzip.sh ${ONLYOFFICE_DATA_CONTAINER} documentserver-static-gzip.sh ${ONLYOFFICE_DATA_CONTAINER}
echo "${JWT_MESSAGE}"
# Check if lager file limits should be set
if [ "$LARGER_FILE_LIMITS" = "true" ]; then
if [ -e /app/ds/file_limits_set ]; then
echo ""
else
touch /app/ds/file_limits_set
sed -i -e 's/104857600/10485760000/g' /etc/onlyoffice/documentserver-example/production-linux.json
sed -i '9iclient_max_body_size 1000M;' /etc/onlyoffice/documentserver-example/nginx/includes/ds-example.conf
sed -i '16iclient_max_body_size 1000M;' /etc/nginx/nginx.conf
sed -i -e 's/104857600/10485760000/g' /etc/onlyoffice/documentserver/default.json
sed -i -e 's/50MB/5000MB/g' /etc/onlyoffice/documentserver/default.json
sed -i -e 's/300MB/3000MB/g' /etc/onlyoffice/documentserver/default.json
sed -i 's/^client_max_body_size 100m;$/client_max_body_size 1000m;/' /etc/onlyoffice/documentserver/nginx/includes/ds-common.conf
service nginx restart
supervisorctl restart all
fi
fi
tail -f /var/log/${COMPANY_NAME}/**/*.log & tail -f /var/log/${COMPANY_NAME}/**/*.log &
wait $! wait $!

BIN
slideThemes/01_blank.pptx Normal file

Binary file not shown.

BIN
slideThemes/02_basic.pptx Normal file

Binary file not shown.

BIN
slideThemes/03_classic.pptx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
slideThemes/06_lines.pptx Normal file

Binary file not shown.

BIN
slideThemes/07_office.pptx Normal file

Binary file not shown.

BIN
slideThemes/08_safari.pptx Normal file

Binary file not shown.

BIN
slideThemes/09_dotted.pptx Normal file

Binary file not shown.

BIN
slideThemes/10_corner.pptx Normal file

Binary file not shown.

BIN
slideThemes/11_tort.pptx Normal file

Binary file not shown.

35
tests/postgres.yml Normal file

@ -0,0 +1,35 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
depends_on:
- onlyoffice-postgresql
environment:
- DB_TYPE=${DB_TYPE:-postgres}
- DB_HOST=${DB_HOST:-onlyoffice-postgresql}
- DB_PORT=${DB_PORT:-5432}
- DB_NAME=${DB_NAME:-onlyoffice}
- DB_USER=${DB_USER:-onlyoffice}
- DB_PWD=${DB_PWD:-onlyoffice}
stdin_open: true
restart: always
ports:
- '80:80'
onlyoffice-postgresql:
container_name: onlyoffice-postgresql
image: postgres:${POSTGRES_VERSION:-12}
environment:
- POSTGRES_DB=${POSTGRES_DB:-onlyoffice}
- POSTGRES_USER=${POSTGRES_USER:-onlyoffice}
- POSTGRES_HOST_AUTH_METHOD=${POSTGRES_HOST_AUTH_METHOD:-trust}
restart: always
expose:
- '5432'
volumes:
- postgresql_data:/var/lib/postgresql
volumes:
postgresql_data:

46
tests/prometheus.yml Normal file

@ -0,0 +1,46 @@
version: '2.1'
services:
onlyoffice-documentserver:
container_name: onlyoffice-documentserver
build:
context: ../.
depends_on:
- onlyoffice-statsd-exporter
environment:
- METRICS_ENABLED=${METRICS_ENABLED:-true}
- METRICS_HOST=${METRICS_HOST:-onlyoffice-statsd-exporter}
- METRICS_PORT=${METRICS_PORT:-9125}
- METRICS_PREFIX=${METRICS_PREFIX:-ds.}
stdin_open: true
restart: always
ports:
- '80:80'
onlyoffice-statsd-exporter:
container_name: onlyoffice-statsd-exporter
image: prom/statsd-exporter
command: --statsd.event-flush-interval=30000ms
ports:
- '9102:9102'
- '9125:9125/tcp'
- '9125:9125/udp'
onlyoffice-prometheus:
container_name: onlyoffice-prometheus
image: prom/prometheus
ports:
- '9090:9090'
volumes:
- ./prometheus/prometheus-scrape/statsd-exporter.yml:/etc/prometheus/prometheus.yml
grafana:
container_name: onlyoffice-grafana
image: bitnami/grafana
ports:
- '3000:3000'
environment:
- 'GF_SECURITY_ADMIN_PASSWORD=G0pGE4'
volumes:
- ./prometheus/grafana/conf/prometheus.yml:/opt/bitnami/grafana/conf/provisioning/datasources/prometheus.yml
- ./prometheus/grafana/conf/default-provider.yaml:/opt/bitnami/grafana/conf/provisioning/dashboards/default-provider.yaml
- ./prometheus/grafana/dashboards:/opt/bitnami/grafana/dashboards

@ -0,0 +1,23 @@
apiVersion: 1
providers:
# <string> an unique provider name
- name: 'default-provider'
# <int> org id. will default to orgId 1 if not specified
orgId: 1
# <string, required> name of the dashboard folder. Required
folder: dashboards
# <string> folder UID. will be automatically generated if not specified
folderUid: ''
# <string, required> provider type. Required
type: file
# <bool> disable dashboard deletion
disableDeletion: false
# <bool> enable dashboard editing
editable: true
# <int> how often Grafana will scan for changed dashboards
updateIntervalSeconds: 10
options:
# <string, required> path to dashboard files on disk. Required
path: /opt/bitnami/grafana/dashboards
# <bool> enable folders creation for dashboards
#foldersFromFilesStructure: true

@ -0,0 +1,6 @@
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://onlyoffice-prometheus:9090
editable: true

File diff suppressed because it is too large Load Diff

@ -0,0 +1,6 @@
scrape_configs:
- job_name: 'statsd'
scrape_interval: 30s
static_configs:
- targets:
- onlyoffice-statsd-exporter:9102