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


#41

error when installing sript
still installing
but find error so pasted
error: Problems running dot: exit code=127, command=‘dot’, arguments=’"/opt/libreoffice/workdir/CustomTarget/odk/docs/cpp/ref/a01063.dot" -Tpng -o “/opt/libreoffice/workdir/CustomTarget/odk/docs/cpp/ref/a01063.png”’

error: problems opening map file /opt/libreoffice/workdir/CustomTarget/odk/docs/cpp/ref/a00719.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run,
try deleting the output directory and rerun doxygen.


#42

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


#43

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


#44

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.


#45

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


#46

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


#47

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:


#48

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?


#49

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


#50

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.


#51

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.


#52

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 ?


#53

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.


#54

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


#55

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


#56

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?


#57

@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.


#58

Docker can’t start hello-world but it can start armhf/hello-world.

Kiran


#59

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


#60

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