Ten artykuł stanowi uzupełnienie dla artykułu Podręcznik: Konwerter Comarch e-Faktura (zwany dalej podręcznikiem głównym) o informacje dotyczące działania narzędzia na środowisku Linux.
Wymagania systemowe
System Linux powinien spełniać wymagania opisane w niniejszym rozdziale.
Na serwerze Linux muszą być zainstalowane:
- Java w wersji obsługiwanej zgodnie z podręcznikiem głównym,
- serwer SSH.
Do kokpitu sterującego potrzebne jest wsparcie GUI. Jest to szczególnie konieczne, ponieważ za pomocą kokpitu sterującego obsługuje się listy kodów i specyficzne wdrożenia.
Do wsparcia GUI na serwerze Linux wymagane jest aktywne X11 Forwarding na serwerze SSH.
Ponadto wymagane są: interfejs graficzny, przykładowo KDE, GNOME, który jest uruchamiany jako serwer, oraz RDP (ang. Remote Desktop Protocol), przykładowo xrdp.
W celu wsparcia sieciowego na serwerze Linux, port Webcockpitu musi być odblokowany.
Oprócz tych specjalnych wymagań dla Linux, obowiązują również pozostałe wymagania z podręcznika głównego.
Narzędzia do pracy z serwerami Linux
W tym rozdziale opisane zostały narzędzia wykorzystywane do pracy z serwerami Linux.
Zarządzanie serwerem
Dostęp do serwera najlepiej uzyskiwać przez SSH i CLI (ang. Command Line Interface). W tym celu wykorzystywane są następujące aplikacje:
- Putty – klientem jest wyłącznie CLI
- WinSCP – wykorzystywane do przesyłania plików. Działa również z oprogramowaniem MobaXterm.
- Unzip – wykorzystywane do rozpakowywania plików podczas instalacji lub aktualizacji
Aplikacje graficzne
Aplikacje graficzne nie mogą być wyświetlane bezpośrednio na serwerze Linux, dlatego ich interfejs uruchamia się na komputerze z obsługą grafiki, np. z systemem Windows.
Aby GUI aplikacji graficznych uruchamianych w terminalu klienta SSH mogło być wyświetlane na lokalnym systemie, muszą być spełnione następujące warunki:
- na połączonym serwerze Linux musi być aktywne X11 Forwarding na serwerze SSH,
- na lokalnym systemie musi być zainstalowany serwer X11,
- X11 Forwarding musi być włączone na kliencie SSH.
Jedną z aplikacji, która już obsługuje te funkcje, jest MobaXterm. Jest to klient terminala z wieloma dodatkowymi funkcjami. Umożliwia m.in. uruchamianie aplikacji graficznej działającej na serwerze Linux i wyświetlanie jej na lokalnym komputerze. Wersja Home Edition może być wykorzystywana komercyjnie, jeśli została samodzielnie zainstalowana przez użytkownika.
Przygotowanie MobaXterm
Instalacja
Poniższe zrzuty ekranu przedstawiają instalację MobaXterm za pomocą pliku .msi.






Sesja RDP z MobaXterm
Aby uruchomić kokpit sterujący, potrzebna jest sesja RDP, którą definiuje się w MobaXterm.
Przy pierwszym uruchomieniu pojawia się ten ekran przedstawiony poniżej.

Klikając prawym przyciskiem myszy na zakładkę User sessions, definiuje się nowe połączenie (sesję) z serwerem Linux typu RDP.


Następnie wymagane jest także podanie hasła użytkownika dla tej sesji. Po zdefiniowaniu sesji RDP można ją uruchomić podwójnym kliknięciem. Uruchomienie sesji powoduje zalogowanie się do sesji RDP.
W tym przypadku dostępne aplikacje są wyświetlone w panelu bocznym. Panel ten pojawia się po wybraniu przycisku [Activities].

Poprawne wylogowanie następuje po kliknięciu strzałki w prawym górnym rogu i wybraniu przycisku [Log Out], dostępnym pod nazwą użytkownika.

Konfiguracja połączenia SSH z MobaXterm
Za pomocą sesji SSH można wydawać polecenia w wierszu poleceń na serwerze Linux. Analogicznie do sesji RDP tworzy się ją za pomocą metody PopUp i nowej sesji.

Następnie pojawia się następujące okno do wprowadzania poleceń:

Informacja na temat typu przeglądarki wprowadzonej w ustawieniach Advanced SSH Settings znajduje się na obrazku w opisie ostatniej zakładki z systemem folderów po lewej stronie.
Wykorzystując opcję SCP normal speed można kopiować pliki do aktualnego folderu metodą Drag&Drop (w innych trybach czasami występowały problemy).
Uruchamianie kokpitu stertującego
Jeśli centralne narzędzie Comarch e-Faktura jest zainstalowane zgodnie z rozdziałem Instalacja, kokpit sterujący można uruchomić w następujący sposób:
- Należy uruchomić oprogramowanie.
- Należy zalogować się do sesji.
- Z poziomu Activities należy wybrać aplikację Terminal (jest to sesja CLI w RDP).
- W terminalu należy zmienić katalog na katalog instalacyjny, przykładowo cd/opt/comarch/eInvoice/Application.
- Aplikacja uruchamia się za pomocą polecenia ./cockpit_start.sh.
W terminalu przed wybraniem przycisku [Enter] wygląda to w następujący sposób:

Aplikacja zostaje uruchomiona po wybraniu przycisku [Enter].

Przed aktualizacją należy zmienić użytkownika za pomocą su – e-Invoice a następnie pod tym użytkownikiem uruchamiana jest aktualizacja, przedstawiona poniżej:

Instalacja
Pierwsza instalacja
Użytkownik i uprawnienia
Zaleca się utworzenie własnego użytkownika i powiązanej z nim własnej grupy użytkowników. Użytkownik powinien posiadać przypisanie do grupy użytkowników jako do grupy głównej. Więcej informacji na ten temat można znaleźć pod linkiem https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/ .
Instalacja i aktualizacje odbywają się za pośrednictwem kokpitu sterującego i powinny być wykonywane przez utworzonego w tym celu użytkownika.
Daje to gwarancję, że po instalacji lub aktualizacji obiekty będą miały tego samego użytkownika i tę samą grupę jako właściciela.
Użytkownicy, którzy pracują z kokpitem sterującym, lub pod którymi działa serwer centralnego narzędzia, również potrzebują przynależności do tej grupy, nawet jeśli nie jest to ich grupa główna.
Instalacja obiektów
Instalacja i konfiguracja przebiegają zasadniczo zgodnie z opisem w artykule Podręcznik: Konwerter Comarch e-Faktura.
Na początku tworzony jest folder instalacyjny, przykładowo /opt/comarch/eInvoice/Application, do którego kopiowany jest plik ComarchERechnung.zip (można do tego wykorzystać np. WinSCP).
- Na początku tworzony jest folder instalacyjny, przykładowo /opt/comarch/eInvoice/Application, do którego kopiowany jest plik ComarchERechnung.zip (można do tego wykorzystać np. WinSCP).
- W terminalu należy przejść do folderu, a następnie rozpakować plik poleceniem unzip ComarchERechnung.zip
- Następnie za pomocą ./Copy_CEE_DefaultSpecifiactions_To_InstallFolder.sh kopiuje się pozostałe niezbędne obiekty.
- Następnie ustawia się uprawnienia za pomocą poniższej sekwencji poleceń chmod -R ug=rwx /opt/comarch/eInvoice/Application
Dzięki temu użytkownik, który jest właścicielem, oraz grupa, która jest właścicielem, otrzymują pełne prawa do wszystkich obiektów w folderze instalacyjnym i podfolderach.
Jeśli istnieje już instalacja na systemie Windows, możliwe jest przeniesienie jej lub jej części na Linuxa. Dodatkowe informacje, które należy wziąć pod uwagę, opisano w rozdziale Przenoszenie z Windows na Linux.
Nadawanie uprawnień do obiektów
Jeśli użytkownik i grupa użytkowników dla obiektów w folderze instalacyjnym nie są zgodne, należy je zmienić na właściwe w następujący sposób (np. z root-User):
chown -R (nazwa użytkownika) /opt/comarch/eInvoice/Application
zmienia właścicieli wszystkich obiektów w folderze rekursywnie na podanego użytkownika i
chown -R :(nazwa grupy użytkowników) /opt/comarch/eInvoice/Application
zmienia grupę/właściciela grupy dla wszystkich obiektów w folderze rekursywnie na podaną grupę
Sekwencją poleceń
chmod -R 770 /opt/comarch/eInvoice/Application
nadaje się natomiast rekursywnie uprawnienia rwx dla użytkownika i grupy, które są aktualnie właścicielami.
Dlatego w tym przypadku zaleca się:
- uruchamiać kokpit i serwer zawsze pod tym samym, zdefiniowanym użytkownikiem
- używać oddzielnych plików log4j (można zmienić w ustawieniach), aby zapisywać logi w różnych folderach dla kokpitu i serwera.
Jeśli różni użytkownicy korzystają z kokpitu, zaleca się wyłączenie tworzenia codziennie nowych plików i nadanie uprawnień do pliku logowania zgodnie z opisem powyżej.
Konfiguracja
Ustawienia dla centralnego narzędzia są wprowadzane za pośrednictwem kokpitu sterującego. Sposób jego uruchomienia opisano w rozdziale Uruchamianie kokpitu sterującego.
Należy pamiętać, że zgodnie z rozdziałem Nadawanie uprawnień do obiektów, wszystkie foldery (takie jak foldery robocze i wyjściowe), a także używane w nich obiekty (np. certyfikat Comarch ERP Enterprise), które są wykorzystywane w ustawieniach, muszą mieć nadane uprawnienia.
Interaktywne uruchamianie serwera narzędzia do konwersji
Serwer narzędzia do konwersji można uruchomić interaktywnie, tzn. w sesji SSH lub terminala za pomocą komend:
- cd /opt/comarch/eInvoice/Application
- ./run_conversion_server.sh
Dzięki temu można od razu sprawdzić, czy ustawienia działają.
Interaktywne uruchamianie serwera Webcockpit
Serwer narzędzia do konwersji można uruchomić interaktywnie, tzn. w sesji SSH lub terminala za pomocą komend:
- cd /opt/comarch/eInvoice/Application
- ./run_webcockpit server.sh
Dzięki temu można od razu dokonać ustawień.
Serwer narzędzia do konwersji jako usługa systemd
W katalogu instalacyjnym znajduje się plik linux_conversion_service.service, który należy skopiować lub zmienić jego nazwę na einvoice_conversion.service. Zawiera on dane do uruchomienia usługi i ewentualnie może zostać dostosowany:
- Jako nazwa użytkownika do uruchomienia podano nazwę użytkownika, pod którym działa usługa, niezależnie od tego, kto ją uruchomił.
- Jeśli java -version nie zwraca żadnego wyniku, należy podać pełną ścieżkę do java (/bin/java).
- Jeśli nie użyto zalecanego folderu instalacyjnego, należy dostosować ścieżki do folderów.
Następnie:
- Plik service należy skopiować do /etc/systemd/system.
- Zmianę należy zgłosić systemowi za pomocą polecenia systemctl daemon-reload.
- Za pomocą polecenia systemctl enable einvoice_conversion.service należy aktywować automatyczne uruchamianie przy starcie systemu.
Usługa może zostać dezaktywowana za pomocą polecenia:
- systemctl disable einvoice_conversion.service
Ręcznie usługa jest zarządzana za pomocą poleceń:
- systemctl status einvoice_conversion.service
- systemctl start einvoice_conversion.service
- systemctl stop einvoice_conversion.service
Serwer Webcockpit jako usługa systemd
W katalogu instalacyjnym znajduje się plik linux_webcockpit_service.service, który należy skopiować lub zmienić jego nazwę na einvoice_webcockpit.service.
Aby z poziomu Webcockpitu można było sterować usługami narzędzia do konwersji/ Webcockpitu, należy w następujących skryptach zdefiniować odpowiednie polecenie.
| Skrypt | Akcja | Usługa dla | Uwagi |
| RestartConversionService.sh | Restart (tzn. w razie potrzeby zakończenie, a następnie ponowne uruchomienie) | Narzędzie konwersji | Przykładowo:systemctl restart einvoice_conversion.service |
| RestartWebCockpitService.sh | Restart | Webcockpit | |
| StartConversionService.sh | Start | Narzędzie konwersji | |
| StartWebCockpitService.sh | Start | Webcockpit | |
| StopConversionService.sh | Zakończenie | Narzędzie konwersji | |
| StopWebCockpitService.sh | Zakończenie | Webcockpit |
Przed przejściem do kolejnego kroku, wykorzystywane polecenia powinny zakończyć swoje działanie. Jeśli przykładowo wykonuje się polecenie zakończenia usługi, to po jego zakończeniu usługa powinna być zatrzymana.
Dodatkowo, w pliku webcockpit-users.properties należy wprowadzić użytkowników (z hasłem) do logowania się do Webcockpitu.
Kokpit satelitarny
Tworzenie folderu z obiektami dla kokpitu satelitarnego odbywa się za pomocą pliku .sh Create_Installationfolder_For_Satellite.sh (przejście do folderu instalacyjnego i wywołanie za pomocą ./sh-nazwa pliku).
Utworzony folder można następnie skopiować na inny system Windows lub Linux.
Przenoszenie z Windows na Linux
Jeśli istnieje już działająca i skonfigurowana instalacja centralnego narzędzia, należy postępować w następujący sposób, wykorzystując użytkownikiem zgodnie z rozdziałem Użytkownik i uprawnienia:
- Jeśli istniejąca wersja centralnego narzędzia jest już przystosowana do Linuxa, co ma miejsce od wersji 1.5.7, to zamiast polecenia unzip z rozdziału Instalacja obiektów można skopiować folder instalacyjny z systemu Windows wraz ze wszystkimi podfolderami do folderu instalacyjnego na systemie Linux. Następnie należy wykonać pozostałe polecenia opisane w rozdziale Instalacja obiektów.
- Jeśli nie ma jeszcze wersji przystosowanej do Linuxa postępuje się zgodnie z instrukcją, zawartą w rozdziale Instalacja obiektów. Następnie z systemu Windows kopiuje się wszystkie pliki konfiguracyjne, tj. pliki .xml i .properties, do folderu instalacyjnego. W kolejnym kroku przechodzi się do realizacji punktów, opisanych w rozdziale Nadawanie uprawnień do obiektów.
- W plikach konfiguracyjnych ścieżki dostępu nadal odnoszą się do Windowsa. Należy je odpowiednio skonfigurować. Można to zrobić z poziomu kokpitów, ponieważ ścieżki są tam sprawdzane pod kątem poprawności.
Informacje dodatkowe
Problemy z sesją RDP w MobaXterm (sesja GNOME)
Czasami sesja RDP sprawia kłopoty, przykładowo:
- Sesja nie odpowiada
- Nowa sesja znika natychmiast po jej uruchomieniu
Jeśli jest to blokada wygaszacza ekranu, należy przejść na zakładkę i wybrać przycisk [Enter], aby ponownie wprowadzić hasło. Na takie blokady można wpływać, klikając prawym przyciskiem myszy na pulpicie i w Ustawieniach w sekcjach Privacy i Power.
Jeśli problemu nie można rozwiązać w inny sposób, ostateczną możliwością jest zalogowanie się za pomocą sesji SSH, ewentualnie przyjęcie uprawnień administratora root (sudo -i), a następnie zakończenie wszystkich własnych procesów lub procesów danego użytkownika:
- Za pomocą ps aux | grep username można zobaczyć wszystkie sesje, które dotyczą danego użytkownika
- Jego sesje / procesy są kończone poleceniem pkill: pkill -9 -u username, gdzie username to wartość w pierwszej kolumnie wyniku polecenia ps aux
Jeśli nie dotyczy to innych aplikacji lub użytkowników, można również wykonać reboot.
Wykorzystanie dysków sieciowych
W ustawieniach e-faktury jako foldery wyjściowe, np. dla plików faktur FatturaPA, można podać dyski sieciowe.
Na Linuxie te dyski muszą oczywiście wcześniej zostać udostępnione przez mount.
Problemy z dostępem do serwera rozliczeniowego
W systemie Linux występowały problemy z szyfrowaniem TLS, ponieważ obowiązywały tu inne ustawienia domyślne niż w systemie Windows. Aby temu zapobiec, przy bezpośrednim wywołaniu serwera oraz w definicji usługi właściwa wersja protokołu TLS jest od razu przekazywana jako właściwość systemowa Javy z opcją -D, za pomocą:
-Dtls.versions=TLSv1.2
poprzez wstawienie tej informacji przed -jar (w plikach run_conversion_server.sh, einvoice_conversion.service). Standardowe wywołanie jest w tych plikach zakomentowane i zostało zastąpione wywołaniem z tą opcją.



