HowTo: Install Onlineoffice on Ubuntu/Debian (No Docker No Limitation)

Thank you for testing. After installing if loolwsd service not running, means no ARM support.

1 Like

No, not yet.
I tried very everything that i can but its showing same message.

Itā€™s great to have the option to avoid Docker if wanted. You also mention ā€œno limitationā€. What other limitations does this avoid, and are there any other benefits worth knowing about? Thanks.

Thanks a lot, I see the changes, the git repository is yours for lool. I tried compiling but I get the same error.

make: Entering directory /opt/online' make all-recursive make[1]: Entering directory/opt/onlineā€™
Making all in .
make[2]: Entering directory /opt/online' CXX wsd/loolwsd_fuzzer-Admin.o CXX wsd/loolwsd_fuzzer-AdminModel.o In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/AdminModel.cpp:10: ./common/Protocol.hpp: In function ā€˜std::string LOOLProtocol::getAbbreviatedMessage(const string&)ā€™: ./common/Protocol.hpp:268:93: error: no matching function for call to ā€˜min(std::basic_string<char>::size_type, long unsigned int)ā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ ./common/Protocol.hpp:268:93: note: candidates are: In file included from /usr/include/c++/4.9/memory:62:0, from wsd/AdminModel.hpp:13, from wsd/AdminModel.cpp:10: /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/AdminModel.cpp:10: ./common/Protocol.hpp:268:93: note: deduced conflicting types for parameter ā€˜const _Tpā€™ (ā€˜unsigned intā€™ and ā€˜long unsigned intā€™) const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/memory:62:0, from wsd/AdminModel.hpp:13, from wsd/AdminModel.cpp:10: /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare) min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/AdminModel.cpp:10: ./common/Protocol.hpp:268:93: note: deduced conflicting types for parameter ā€˜const _Tpā€™ (ā€˜unsigned intā€™ and ā€˜long unsigned intā€™) const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/algorithm:62:0, from /usr/local/include/Poco/Any.h:23, from /usr/local/include/Poco/Format.h:24, from /usr/local/include/Poco/Logger.h:26, from ./common/Log.hpp:20, from wsd/AdminModel.hpp:19, from wsd/AdminModel.cpp:10: /usr/include/c++/4.9/bits/stl_algo.h:3439:5: note: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>) min(initializer_list<_Tp> __l) ^ /usr/include/c++/4.9/bits/stl_algo.h:3439:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/AdminModel.cpp:10: ./common/Protocol.hpp:268:93: note: mismatched types ā€˜std::initializer_list<_Tp>ā€™ and ā€˜unsigned intā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/algorithm:62:0, from /usr/local/include/Poco/Any.h:23, from /usr/local/include/Poco/Format.h:24, from /usr/local/include/Poco/Logger.h:26, from ./common/Log.hpp:20, from wsd/AdminModel.hpp:19, from wsd/AdminModel.cpp:10: /usr/include/c++/4.9/bits/stl_algo.h:3444:5: note: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare) min(initializer_list<_Tp> __l, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algo.h:3444:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/AdminModel.cpp:10: ./common/Protocol.hpp:268:93: note: mismatched types ā€˜std::initializer_list<_Tp>ā€™ and ā€˜unsigned intā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/Admin.hpp:23, from wsd/Admin.cpp:28: ./common/Protocol.hpp: In function ā€˜std::string LOOLProtocol::getAbbreviatedMessage(const string&)ā€™: ./common/Protocol.hpp:268:93: error: no matching function for call to ā€˜min(std::basic_string<char>::size_type, long unsigned int)ā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ ./common/Protocol.hpp:268:93: note: candidates are: In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/string:40, from /usr/include/c++/4.9/stdexcept:39, from /usr/include/c++/4.9/array:38, from /usr/include/c++/4.9/tuple:39, from /usr/include/c++/4.9/mutex:38, from wsd/Admin.cpp:13: /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/4.9/bits/stl_algobase.h:194:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/Admin.hpp:23, from wsd/Admin.cpp:28: ./common/Protocol.hpp:268:93: note: deduced conflicting types for parameter ā€˜const _Tpā€™ (ā€˜unsigned intā€™ and ā€˜long unsigned intā€™) const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/bits/char_traits.h:39:0, from /usr/include/c++/4.9/string:40, from /usr/include/c++/4.9/stdexcept:39, from /usr/include/c++/4.9/array:38, from /usr/include/c++/4.9/tuple:39, from /usr/include/c++/4.9/mutex:38, from wsd/Admin.cpp:13: /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare) min(const _Tp& __a, const _Tp& __b, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algobase.h:240:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/Admin.hpp:23, from wsd/Admin.cpp:28: ./common/Protocol.hpp:268:93: note: deduced conflicting types for parameter ā€˜const _Tpā€™ (ā€˜unsigned intā€™ and ā€˜long unsigned intā€™) const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/algorithm:62:0, from /usr/local/include/Poco/String.h:26, from /usr/local/include/Poco/Net/NameValueCollection.h:24, from /usr/local/include/Poco/Net/MessageHeader.h:24, from /usr/local/include/Poco/Net/HTTPMessage.h:24, from /usr/local/include/Poco/Net/HTTPRequest.h:24, from wsd/Admin.cpp:17: /usr/include/c++/4.9/bits/stl_algo.h:3439:5: note: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>) min(initializer_list<_Tp> __l) ^ /usr/include/c++/4.9/bits/stl_algo.h:3439:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/Admin.hpp:23, from wsd/Admin.cpp:28: ./common/Protocol.hpp:268:93: note: mismatched types ā€˜std::initializer_list<_Tp>ā€™ and ā€˜unsigned intā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ In file included from /usr/include/c++/4.9/algorithm:62:0, from /usr/local/include/Poco/String.h:26, from /usr/local/include/Poco/Net/NameValueCollection.h:24, from /usr/local/include/Poco/Net/MessageHeader.h:24, from /usr/local/include/Poco/Net/HTTPMessage.h:24, from /usr/local/include/Poco/Net/HTTPRequest.h:24, from wsd/Admin.cpp:17: /usr/include/c++/4.9/bits/stl_algo.h:3444:5: note: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare) min(initializer_list<_Tp> __l, _Compare __comp) ^ /usr/include/c++/4.9/bits/stl_algo.h:3444:5: note: template argument deduction/substitution failed: In file included from ./wsd/LOOLWebSocket.hpp:22:0, from wsd/AdminModel.hpp:20, from wsd/Admin.hpp:23, from wsd/Admin.cpp:28: ./common/Protocol.hpp:268:93: note: mismatched types ā€˜std::initializer_list<_Tp>ā€™ and ā€˜unsigned intā€™ const auto pos = getDelimiterPosition(message.data(), std::min(message.size(), 500UL), '\n'); ^ make[2]: *** [wsd/loolwsd_fuzzer-AdminModel.o] Error 1 make[2]: *** Waiting for unfinished jobs.... wsd/Admin.cpp: In member function ā€˜virtual void MemoryStatsTask::run()ā€™: wsd/Admin.cpp:336:18: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (totalMem != _lastTotalMemory) ^ cc1plus: all warnings being treated as errors make[2]: *** [wsd/loolwsd_fuzzer-Admin.o] Error 1 make[2]: Leaving directory/opt/onlineā€™
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/onlineā€™
make: *** [all] Error 2

I just tested it again and it works. Did you use the last script Version?
Try to delete /opt/libreo* online poco* and run the new script again.
Good luck

With Collabora Online you can not open more than 10 docs in parallel or more than 20 connections.
That is the reason why the script exists:

1 Like

Thanks for your work on this.

I wish Iā€™d known that CODE was essentially shareware for a paid product before I wasted time wrestling with bugs in the integration.

Should we look at creating a LibreOffice Online docker image, as an alternative to the restricted closed binary Collabora version?

Builds failed for me too so I forked the script and now it works for me. Hereā€™s the script: https://github.com/methuselah-0/libreoffice-online-install.sh

1 Like

Of course! But what is the advantage of Docker? I use Docker for our developer. But if I need resources and security then preferably root server. This is my opinion but anyway we can create a LibreOffice Online docker image.

Thanks. For the likes of me, the docker way is quite a (time) efficient way of managing things. It would also avoid the complications of compiling from source. With a good compose script, it makes a reliable and easily updated setup straightforward. Iā€™m also not too keen on the advertised online editing features being essentially a gimped closed binary - it would be good to make a more libre solution more accessible to the community.

In terms of security, Iā€™m inclined to keep Nextcloud behind a VPN anyway. Plenty of bugs around, and Iā€™m not anywhere enough of an expert in web application security to have sufficient confidence that I wonā€™t make a serious mistake sooner or later.

There is already a libreoffice online docker image : docker pull libreoffice/online:master

But with the same limitation : no more than 10 differents documents open at the same time or no more than 20 connections to any documents at the same time.

Itā€™s really important to compile by ourself to write the limitation we want for our server. If your server can scale 100docs at the same time itā€™s good. If you have a slow server with low ram, you should try libreoffice docker because the limitation fit your scale.
But Docker is easy on a side and have a lot of bad things on the other side.

@husisusi : when compiling is done what are the folders and file we can copy to a pen drive or hdd drive to copy on another sever

I think of /opt/online /opt/poco create a user lool create loolwsd service.
But what about the /opt/libreoffice folder itā€™s 10Go, do we need all this folder or just /opt/libreoffice/installdir ?

1 Like

Yes, I saw the existing docker, but noted the same limits. Itā€™s a horrible decision to make the limitation settings written in stone at compile time. TBH, I fear that this is due to the considerable influence of Collabora on the Libreoffice project.

I do think that a docker with a much higher hard limit compiled would be a benefit to many people. We can always add the caveat that server hardware must be taken into consideration for the number of users, and perhaps also develop some knowledge on the recommendations. The default limit is so restrictive as to make it unusable for any but the smallest group.

Are there any chances to reduce size to get it on pi as on pi it will take all space.

Quote

(There is already a libreoffice online docker image : docker pull libreoffice/online:master)

Does this work on arm device

If you can write this command :
apt install docker (or docker.io)

And if it comes to the end, you will have libreoffice online on your pi

1 Like

Problem is docker canā€™t start container.Thatā€™s why I am askingWill it work on arm device.Anyone here got office on arm device?

@earth i would focus on running the Hello World container first, if possible then the world is endless. If you donā€™t wanna waste time finding out manually, remember Google is your friend.

Docker canā€™t start hello-world but it can start armhf/hello-world.

Kiran

Then it only runs a very special kind of containers build for arm.
I think you have your answer right there.

I will check what we can delete and integrate it in the script.

1 Like

thats why my first point was,
Is it possible to reduce size of integration?