Serwer Radicale czyli sposób na zsynchronizowany kalendarz i książkę adresową używając np. Thunderbirda na Windowsie i Linuksie

Kategoria: Artykuły, etykiety: radicale, kalendarz, lightning, książka adresowa, thunderbird

Dodany: 2015-04-04 01:20 (zmodyfikowany: 2015-04-05 20:34)
Przez: uzytkownikubunt

Wyświetleń: 34378

Serwer Radicale to aplikacja, które zapewnia za pomocą protokołów CalDav i CardDav usługi przechowywania i synchronizacji kalendarzy i książek adresowych. Obecnie wiele programów potrafi z niego korzystać m.in. Evolution, a używając odpowiednich wtyczek również Thunderbird. W tym HOWTO przedstawię jak na Linuksie i Windowsie uruchomić ten serwer, a także jak sprawić by móc z jego możliwości korzystać w klientach poczty Thunderbird i Evolution. Użyte w tym poradniku oprogramowanie:

Debian Jessie 8 amd64, Icedove 31.5.0-1 amd64 z repozytorium, serwer Radicale z repowersja 0.9-1

Windows 8.1 64 bit, zainstalowany 64 bitowy Python 2.7.9, serwer Radicale 0.9

W konfiguracji zastosowano HTTP basic access authentication do celu zachowania porządku. Oprócz tego różne klienty różnie implementują protokoły i czasem podczas zapisywania zmian potrafiły stworzyć duplikaty i przed tym można się ochronić w.w. uwierzytelnianiem. Poniższa konfiguracja nakazuje nasłuchiwania na interfejsie wewnętrznym, także nie będzie możliwe nawiązanie bezpośredniego połączenia z zewnątrz. Sugerowałbym jednak zabezpieczenie tego portu (zablokowanie nawiązywania połączeń na nim na interfejsach innych niż lo) również na firewallu. Dodatkowo wyłączona jest szyfrowana transmisja danych poprzez https i uwierzytelnianie serwera. Jeśli chcemy połączyć się zachowując tajność danych z serwerem nie zmieniając jego konfiguracji, możemy przekierować porty na tunel SSH. Więcej o tej metodzie tutaj.

Dane będą przechowywane w plikach tekstowych na partycji z systemem plików NTFS zamontowanej w katalogu /dyskF/ na Linuksie lub P:\ pod Windowsem. Dokładna ścieżka do kolekcji kalendarzy i książek adresowych: /dyskF/Radicale/collections lub P:\Radicale\collections.

Radicale na systemie Debian Jessie Gnu/Linux

Na początek oczywiście instalujemy serwer Radicale i tworzymy katalog dla naszej konfiguracji.

#apt-get install radicale
#mkdir /etc/default/radicaleKatalog

A co z katalogiem, w którym Radicale ma zapisywać dane?

Instalujemy również Thunderbird lub Icedove. Co i jak zainstalować zostawiam czytelnikowi.

Konfiguracja serwera Radicale. Konfigurację serwera należy zapisać do odpowiednich plików edytorem np nano uruchomionym na koncie roota.

Zawartość /etc/default/radicaleKatalog/config

# -*- mode: conf -*-
# vim:ft=cfg

# Plik konfiguracyjny dla Radicale - Prostego serwera kalendarza
#
# Umieść go w /etc/radicale/config (globalnie)
# lub ~/.config/radicale/config (konfiguracja lokalnego użytkownika)
# Konfiguracja do użytku osobistego, a nie dla np firmy. Brak uwierzytalniania autentyczności
# tożsamości przez serwer Radicale. Hasło używane dla zachowania porządku, by programy nie zaczęły
# nawzajem zmieniać sobie wpisów

[server]
# Adres IPv4 i port na którym nasłuchuje serwer.
hosts = 127.0.0.1:5232
# Flaga ustawiająca tryb działania w trybie daemon - używa forkowania procesów. Działa tylko na systemach Uniksopodobnych
daemon = True
# Ścieżka do pliku przechowującego numer identyfikujący proces Radicale
pid="/var/run/radicale/radicale.pid"
# Czy uruchomić działania poprzez protokół https
ssl = False
# Czy używać odwróconego DNS by w logach zapisać rozwiązany adres domenowy klienta
dns_lookup = False
# URL korzenia drzewa zasobów CalDAV i CardDav na serwerze Radicale
base_prefix = /
# Wiadomość wyświetlana u użytkownika klienta, gdy wyświetlana jest prośba o podanie hasła
realm = Serwer Radicale wymaga podania hasła, by móc kontynuować

[encoding]
# Kodowanie znaków w odpowiedziach na żądania
request = utf-8
# Kodowanie znaków przechowywanych danych
stock = utf-8

[auth]
# Metoda uwierzytelniania użytkownika
# Wartości: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
type = htpasswd

# Ścieżka do pliku Htpasswd
htpasswd_filename = /etc/default/radicaleKatalog/users
# Sposób hashowania hasła w htpasswd
# Wartości: plain | sha1 | crypt
# Plain to nie hashowane. Nie używa się go do tajnych haseł, ale w tym przypadku hasło w Radicale jest tylko do uniemożliwienia
# niektórym klientom wprowadzać niepotrzebne zmiany. Bardziej to pomoc przy zachowaniu porządku niż zapewnienie bezpieczeństwa.
htpasswd_encryption = plain


[git]
# Opcje git-a
# Wysyłający aktualizację
committer = Radicale <radicale@example.com>

[rights]
# Backend odpowiadający za uprawnienia
# Wartości: None | authenticated | owner_only | owner_write | from_file | custom
type = from_file
# Plik zapewniający informację o prawach, gdy używamy opcji from_file
file = /etc/default/radicaleKatalog/rights


[storage]
# Backend odpowiadający za przechowywanie danych
# Wartości: filesystem | multifilesystem | database | custom
type = filesystem
# Katalog do przechowywania kolekcji danych. Zostanie utworzony, jeśli nie istnieje.
filesystem_folder = /dyskF/Radicale/collections

[logging]
# Plik konfigurujący logowanie
# Jeśli nie podano pliku z konfiguracją, prosta informacja jest wyświetlana na standardowym wyjściu
# Jeśli chcesz wiedzieć więcej o składni pliku z konfiguracyjnego, przeczytaj:
# http://docs.python.org/library/logging.config.html
config = /etc/default/radicaleKatalog/logging
# Ustaw, by poziom logowania nie był debug (co oznacza, że będzie logował niewiele informacji_
debug = False

Zawartość pliku /etc/default/radicaleKatalog/users. W pliku tym wpisujemy loginy i hasła do HTTP basic access authentication.

uzytkownik:tajneHasloUzytkownika
gosc:gosc

Zawartość pliku /etc/default/radicaleKatalog/rights. Właściciel jest ustalany poprzez ścieżkę dostępu do zasobu (kalendarza/książki adresowej)

# Pozwój wszystkim odczytywać wszelkie kolekcje danych, nawet użytkownikowi nieautoryzowanemu (anonymous)
[allow-everyone-read]
user: .*
collection: .*
permission: r

# Nadaj uprawnienia do zapisu właścicielom
[owner-write]
user: .+
collection: ^%(login)s/.+$
permission: rw

Zawartość pliku /etc/default/radicaleKatalog/logging. Tutaj nudne ustawienia dotyczące logowania informacji.

# -*- mode: conf -*-
# vim:ft=cfg
# Plik konfigurujący logowanie w Radicale
#
#
# Inne uchwyty są dostępne. By znaleźć o nich więcej informacji, zajrzyj na:
# http://docs.python.org/library/logging.config.html


# Loggers, handlers and formatters keys

[loggers]
# Loggers names, main configuration slots
keys = root

[handlers]
# Logging handlers, defining logging output methods
keys = console,file

[formatters]
# Logging formatters
keys = simple,full


# Loggers

[logger_root]
# Root logger
level = DEBUG
handlers = file
# Enable the following instead if you also want console logging
#handlers = console,file


# Handlers

[handler_console]
# Console handler
class = StreamHandler
level = DEBUG
args = (sys.stdout,)
formatter = simple

[handler_file]
# File handler
class = FileHandler
args = ('/var/log/radicale/radicale.log',)
level = INFO
formatter = full


# Formatters

[formatter_simple]
# Simple output format
format = %(message)s

[formatter_full]
# Full output format
format = %(asctime)s - %(levelname)s: %(message)s

Tworzymy katalog, w którym przechowywana będzie kolekcja kalendarzy i książek adresowych:

mkdir /dyskF/Radicale/collections/ -p
chown radicale:radicale /dyskF/Radicale/collections/

Na koniec edytujemy plik /etc/default/radicale

# Linijka ta pozwala uruchomić usługę Radicale podczas startu systemu
ENABLE_RADICALE=yes

# Opcja dla Radicale, każąca czytać plik konfiguracyjny z odpowiedniej ścieżki
RADICALE_OPTS="--config=/etc/default/radicaleKatalog/config"

# Spraw by skrypt init był głośny (wypisywał dużo informacji)
# (Adnotacja: To sprawia, żę tylko skrypt init jest głośny, nie serwer sam w sobie)
VERBOSE=yes

Jak już pisałem, można dodatkowo zabezpieczyć serwer przed połączeniami na ten port na firewallu. Przykładowa regułka, która jednak powinna być za każdym razem przy bootowaniu systemu uruchamiana:

iptables -I INPUT 1 -p tcp ! -i lo  --dport 5232 -j REJECT

Przydzielamy odpowiednie uprawnienia dla pliku users

chown radicale:radicale /etc/default/radicaleKatalog/users
chmod u=rw,g=,o= /etc/default/radicaleKatalog/users

Uruchamiamy serwer Radicale:

/bin/systemctl restart radicale && echo "Sukces" || echo "Porażka"

Czy jakiś program słucha na porcie 5232 można sprawdzić poleceniem:

ss -ntlup | grep 5232

Za pomocą Gita zapisujemy historię zmian

/bin/systemctl stop radicale
#apt-get install python-dulwich
cd /dyskF/Radicale/collections/
git init

To wszystko. Radicale będzie korzystał z Gita (poprzez dulwich) do zapisywania wszelkich zmian. Za pomocą

git log

można odczytać historię zmian (daty zmian).

git log -4

Pokaże ostatnie cztery zmiany w kolekcjach. Gdy odczytamy numery interesujących commitów, można obejrzeć co robiły wpisując polecenie:

git diff długiNumerHeksadecymalnyCommitu^ długiNumerHeksadecymalnyCommitu pokaże co zmienił

Uruchamiamy ponownie serwer Radicale:

/bin/systemctl start radicale && echo "Sukces" || echo "Porażka"

Thunderbird - wyłączanie sprawdzania zgodności wersji dodatku z wersją klienta poczty.

Czasem może zajść potrzeba, by wyłączyć sprawdzanie zgodności dodatku np. gdy korzystamy z wersji beta klienta poczty. Oczywiście czasem może to być ryzykowne, tj. wtyczka przestanie działać stabilnie.

W Thunderbird/Icedove wyświetlamy menu (przycisk z trzema poziomymi liniami) -> Preferencje -> Preferencje. W nowo otwartym oknie Zakładka Zaawansowane, podzakładka Ogólne. Przycisk edytor ustawień.

Prawym przyciskiem myszy klikamy na obszarze z listą ustawień. Dodaj ustawienie typu -> Wartość logiczna (Boolean). Dla wersji programu Thunderbird 37.0 lub 37.0.1 wpisujemy nazwę

extensions.checkCompatibility.37.0 i wartość False

Thunderbird/Icedove instalacja dodatku Lightning (kalendarz) i połączenie z Radicale

Przechodzimy na stronę www pozwalającą pobrać dodatek Lightning Pobieramy dodatek za pomocą przeglądarki i zapisujemy w jakimś miejscu na dysku. Następnie w Thunderbird/Icedove wyświetlamy menu (przycisk z trzema poziomymi liniami) -> Dodatki (Add-ons). W otworzonej zakładce klikamy na przycisk obok pola wpisywania tytułu szukanego dodatku (przycisk z trzema ? wajchami ? o możliwości ruchu w górę i dół) -> Zainstaluj dodatek z pliku (Install Add-on from file) i wybieramy pobrany plik. Po instalacji uruchamiamy ponownie Thunderbird/Lightning.

Po udanej instalacji dodatku w oknie klienta poczty w prawym górnym rogu, pod przyciskiem X pozwalającym wyłączyć go, pojawiły się ikony pozwalające przejść do kalendarza i listy zadań. Klikamy na ikonę kalendarza. Pojawia się nowa zakładka. W lewej dolnej części okna (pod istniejącym już domyślnym kalendarzem) klikamy prawym przyciskiem myszy, wybieramy Nowy kalendarz (New Calendar). W oknie, które powinno się pojawić, wybieramy kalendarz zdalny (on the network), następnie CalDav i podajemy ścieżkę w formacie:

http://login:haslo@domena:numerPortu/wlasciciel/nazwaKalendarza.ics/

w tym poradniku przyjmuję:

login to uzytkownik

haslo to tajneHasloUzytkownika

domena to adres IP loopback (pętli zwrotnej) czyli 127.0.0.1

numerPortu to 5232

wlasciciel to uzytkownik

nazwaKalendarza to glownyKalendarz

Należy pamiętać o slashu na końcu, gdyż wskazujemy na katalog! W takim razie ścieżka, którą wpisujemy do pola przyjmie postać:

http://uzytkownik:tajneHasloUzytkownika@127.0.0.1:5232/uzytkownik/glownyKalendarz.ics/

Następnie wpisujemy nazwę np. Główny kalendarz. Można zakończyć tworzenie kalendarza. Można teraz odznaczyć poprzedni kalendarz i pozostawić zaznaczony tylko nowo utworzony.

Thunderbird/Icedove instalacja dodatku SOGo Connector (książka adresowa) i połączenie z Radicale

SOGo Connector jest dodatkiem, który pozwala tworzyć książkę adresową zsynchronizowaną z serwerem za pomocą protokołu CardDav. Został napisany przez Inverse inc. Można go pobrać z repozytorium (pakiet nazywa się xul-ext-sogo-connector) lub ze strony tej lub tej. Podobnie jak w przypadku wcześniejszego dodatku pobieramy plik na dysk (obecnie najnowsza wersja sogo-connector-31.0.1.xpi), a następnie w Thunderbirdzie/Icedove instalujemy dodatek i restartujemy klienta poczty.

W kliencie poczty z menu wybieramy Narzędzia -> Książka adresowa (lub skrót na klawiaturze ctrl-shift-b). W nowo otworzonym oknie wybieramy Plik -> Utwórz -> Remote Address Book. Wpisujemy nazwę np. Główna książka adresowa i ścieżkę dostępu (URL) w formacie takim jak poprzednio, oprócz końcówki. Tym razem ścieżka przyjmie postać:

http://uzytkownik:tajneHasloUzytkownika@127.0.0.1:5232/uzytkownik/glownaKsiazkaAdresowa.vcf/

Ja zwykle zaznaczam jeszcze opcję "Show notifications when saving a card". Klikamy ok. W tym momencie można ręcznie jeszcze wymusić synchronizację (która powinna jednak już być) przez kliknięcie prawym przyciskiem myszy na nazwę nowo utworzonej książki adresowej w lewym obszarze okna i wybranie Synchronize.

Możemy utworzyć nową wizytówkę. Po jej wypełnieniu i zatwierdzeniu powinna się pojawić chmurka z napisem: "1 upload, 0 download, 0 delete".

Integracja kalendarza w kliencie poczty Evolution, a co za tym idzie również i aplecie kalendarza w środowisku graficznym Gnome 3.

W środowisku graficznym Gnome 3 na środku górnej belki znajduje się początek nazwy dnia tygodnia i aktualny czas. Gdy się na ten napis kliknie wyświetli się aplet kalendarza. Użytkownicy Gnome powinni być zadowolenie z możliwości integracji kalendarza z serwerem Radicale i co za tym idzie wyświetlaniem się w nim wydarzeń wprowadzonych w kalendarzu Lightning w kliencie poczty Thunderbird/Icedove.

Uruchamiamy program Evolution. W lewym dolnym obszarze okna Evolution klikamy na Kalendarz. Następnie wybieramy: Plik -> Nowy -> Kalendarz. Typ: CalDav. Nazwa np. Główny kalendarz. Zaznaczmy: "Ustaw jako domyślny kalendarz". Adres URL tym razem bez loginu i hasła czyli ścieżka ma wyglądać tak:

http://127.0.0.1:5232/uzytkownik/glownyKalendarz.ics/

Jako użytkownik możemy podać gosc lub uzytkownik w zależności od tego czy chcemy móc edytować kalendarz w Evolution. Ja nie chcę, więc wybrałem gosc. Proponuję zmniejszyć odstęp czasowy odświeżania kalendarza do kilku minut.


Serwer Radicale na systemie Windows 8.1 64 bit

Instalacja Pythona 2.*

Ze względu na to, że serwer Radicale napisany jest w Pythonie, należy zainstalować jego interpreter. Według dokumentacji dla użytkownika działa on na wersjach 2.7 i wielu wersjach 3.*, ale dodatki najlepiej działają z wersją 2.7.*, dlatego polecam taką zainstalować. Podczas instalacji wersji 2.7 miałem problem. Strona odsyłała do wersji 32 bitowej instalatora msi. Po jej zainstalowaniu nie udało się go uruchomić. Po próbie odinstalowania (nie zakończonej powodzeniem), a następnie instalacji 64 bitowej wersji interpretera udało się uruchomić interpreter. Polecam się zainstalować z gałęzi 2.7.* najnowszą wersję 64 bit dla 64 bitowych systemów ze strony. Plik obecnie nazywa się python-2.7.9.amd64.msi

Jeśli chodzi o sam proces instalacji Pythona, to wartości domyślne są prawie ok, to znaczy warto zaznaczyć Add python.exe to Path.

Pobieranie i rozpakowanie/instalowanie Radicale

Strona obecnie wyświetla do pobrania najnowszą wersję 1.0, ale ze względu na to, że na Debianie zainstalowana wersja to 0.9, również tutaj pobiorę 0.9.

Pobrany plik należy rozpakować. Ja rozpakowałem go do C:\Program Files\, więc po rozpakowaniu w katalogu C:\Program Files\Radicale-0.9\ mam m.in. plik README.

Pliki konfiguracyjne

Do tworzenia i edycji plików używałem programu notepad++.

Plik C:\Program Files\Radicale-0.9\config

# -*- mode: conf -*-
# vim:ft=cfg

# Plik konfiguracyjny dla Radicale - Prostego serwera kalendarza
# Windows
#
# Umieść go w /etc/radicale/config (globalnie)
# lub ~/.config/radicale/config (konfiguracja lokalnego użytkownika)
# Konfiguracja do użytku osobistego, a nie dla np firmy. Brak uwierzytalniania autentyczności
# tożsamości przez serwer Radicale. Hasło używane dla zachowania porządku, by programy nie zaczęły
# nawzajem zmieniać sobie wpisów

[server]
# Adres IPv4 i port na którym nasłuchuje serwer.
hosts = 127.0.0.1:5232
# Flaga ustawiająca tryb działania w trybie daemon - używa forkowania procesów. Działa tylko na systemach Uniksopodobnych
daemon = False
# Ścieżka do pliku przechowującego numer identyfikujący proces Radicale
#pid="/var/run/radicale/radicale.pid"
# Czy uruchomić działania poprzez protokół https
ssl = False
# Czy używać odwróconego DNS by w logach zapisać rozwiązany adres domenowy klienta
dns_lookup = False
# URL korzenia drzewa zasobów CalDAV i CardDav na serwerze Radicale
base_prefix = /
# Wiadomość wyświetlana u użytkownika klienta, gdy wyświetlana jest prośba o podanie hasła
realm = Serwer Radicale wymaga podania hasła, by móc kontynuować

[encoding]
# Kodowanie znaków w odpowiedziach na żądania
request = utf-8
# Kodowanie znaków przechowywanych danych
stock = utf-8

[auth]
# Metoda uwierzytelniania użytkownika
# Wartości: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
type = htpasswd

# Ścieżka do pliku Htpasswd
htpasswd_filename = C:\Program Files\Radicale-0.9\users
# Sposób hashowania hasła w htpasswd
# Wartości: plain | sha1 | crypt
# Plain to nie hashowane. Nie używa się go do tajnych haseł, ale w tym przypadku hasło w Radicale jest tylko do uniemożliwienia
# niektórym klientom wprowadzać niepotrzebne zmiany. Bardziej to pomoc przy zachowaniu porządku niż zapewnienie bezpieczeństwa.
htpasswd_encryption = plain


#[git]
# Opcje git-a
# Wysyłający aktualizację
#committer = Radicale <radicale@example.com>

[rights]
# Backend odpowiadający za uprawnienia
# Wartości: None | authenticated | owner_only | owner_write | from_file | custom
type = from_file
# Plik zapewniający informację o prawach, gdy używamy opcji from_file
file = C:\Program Files\Radicale-0.9\rights


[storage]
# Backend odpowiadający za przechowywanie danych
# Wartości: filesystem | multifilesystem | database | custom
type = filesystem
# Katalog do przechowywania kolekcji danych. Zostanie utworzony, jeśli nie istnieje.
filesystem_folder = P:\Radicale\collections

[logging]
# Plik konfigurujący logowani
# Jeśli nie podano pliku z konfiguracją, prosta informacja jest wyświetlana na standardowym wyjściu
# Jeśli chcesz wiedzieć więcej o składni pliku z konfiguracyjnego, przeczytaj:
# http://docs.python.org/library/logging.config.html
config = C:\Program Files\Radicale-0.9\logging
# Ustaw, by poziom logowania nie był debug (co oznacza, że będzie logował niewiele informacji)
debug = False

Plik C:\Program Files\Radicale-0.9\users

uzytkownik:tajneHasloUzytkownika
gosc:gosc

Plik C:\Program Files\Radicale-0.9\rights

# Pozwój wszystkim odczytywać wszelkie kolekcje danych
[allow-everyone-read]
user: .*
collection: .*
permission: r

# Nadaj uprawnienia do zapisu właścicielom
[owner-write]
user: .+
collection: ^%(login)s/.+$
permission: rw

Plik C:\Program Files\Radicale-0.9\logging

# -*- mode: conf -*-
# vim:ft=cfg

# Plik konfigurujący zapisujący informacje Radicale na Windowsie
# 
# Jeśli chcesz więcej informacji, przeczytaj:
# http://docs.python.org/library/logging.config.html


# Loggers, handlers and formatters keys

[loggers]
# Loggers names, main configuration slots
keys = root

[handlers]
# Logging handlers, defining logging output methods
keys = console,file

[formatters]
# Logging formatters
keys = simple,full


# Loggers

[logger_root]
# Root logger
level = DEBUG
handlers = file
# Enable the following instead if you also want console logging
#handlers = console,file


# Handlers

[handler_console]
# Console handler
class = StreamHandler
level = DEBUG
args = (sys.stdout,)
formatter = simple

[handler_file]
# File handler
class = FileHandler
args = ('P:/Radicale/logi/radicale.log',)
level = INFO
formatter = full


# Formatters

[formatter_simple]
# Simple output format
format = %(message)s

[formatter_full]
# Full output format
format = %(asctime)s - %(levelname)s: %(message)s

Przykład blokowania połączeń przychodzących na port 5232

Ze względu na to, że serwer Radicale będzie nasłuchiwał połączeń przychodzących, warto zablokować połączenia na jego port z zewnątrz. To tylko przykład. To czy odpowiednio zadziała zależy od tego, jak skonfigurowany jest firewall w Windowsie:

netsh advfirewall firewall add rule name="Port Radicale" dir=in action=block protocol=TCP localport=5232 interfacetype=wireless,lan,ras

Tworzenie usługi Radicale

Ze względu na to, że chcemy niedługo po uruchomieniu systemu mieć dostęp do kalendarza i książki adresowej bez dodatkowego klikania, najlepiej rozwiązać uruchamianie serwera jako usługi.

Potrzebny będzie nam program open source zwany NSSM - the Non-Sucking Service Manager. Ja pobrałem go stąd w wersji 2.24. Program pobieramy, rozpakowujemy programem do rozpakowywania archiwów do jakiegoś katalogu (tymczasowo). Z katalogu tego, zależnie od wersji systemu (32 czy 64 bit) wchodzimy do katalogu win64 lub win32 i kopiujemy plik nssm.exe do katalogu C:\Windows\System32. Zainstalowaliśmy nssm.

Tworzymy usługę. Tworzymy katalog C:\Windows\uslugi. W nim umieszczamy plik radicale.bat (zwróć uwagę na rozszerzenie) z zawartością:

C:\Python27\python.exe  "C:\Program Files\Radicale-0.9\radicale.py" --config="C:\Program Files\Radicale-0.9\config"

Za pomocą nssm tworzymy z tego usługę. Wykonujemy polecenia:

nssm install Radicale C:\Windows\uslugi\radicale.bat
nssm set Radicale AppDirectory P:\Radicale
nssm set Radicale AppPriority BELOW_NORMAL_PRIORITY_CLASS
nssm set Radicale Start SERVICE_DELAYED_AUTO_START
nssm start Radicale

Aby sprawdzić czy usługa działą (według nssm) wykonaj:

nssm status Radicale

Aby sprawdzić czy jakiś program nasłuchuje na porcie 5232 (jeśli port jest zablokowany na firewallu, nie oznacza to możliwości połączenia z zewnątrz):

netstat -ao | findstr 5232

Aby sprawdzić czy uruchomiony jest jakiś proces zawierający w którymś miejscu (nazwa, argumenty) wyraz radicale:

wmic process list  | findstr /I radicale

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks