Instalacja i konfiguracja własnego serwera Firefox Sync – Weave – Debian

1. Instalacja paczek wymaganych do poprawnej instalacji i działania serwera Firefox Sync – Weave.

sudo apt-get install python-dev mercurial python-virtualenv libapache2-mod-wsgi 
sudo apt-get install libmysqlclient-dev php5-sqlite python make mercurial sqlite3

2. Tworzenie użytkownia i grupy fsync dla serwera Firefox Sync – Weave.

Tworzenie użytkownika:

  • katalog domowy – /opt/fsync,
  • bez hasła,
  • bez logowania się.

 

Dodanie użytkownika www-data (apache2) do grupy fsync.

sudo useradd -d /opt/fsync -m fsync
sudo adduser www-data fsync

 

3. Instalacja serwera Firefox Sync – Weave.

Pobranie i instalacja najnowszej wersji serwera Firefox Sync – Weave do katalogu np: /opt.

cd /opt
sudo hg clone https://hg.mozilla.org/services/server-full fsync
cd fsync
sudo make build
sudo bin/easy_install Mysql-Python

 

 

 

4. Konfiguracja serwera Firefox Sync – Weave.

Tworzenie kopii zapasowej plików konfiguracyjnych.

sudo cp -p etc/sync.conf etc/sync.conf-orig
sudo cp -p development.ini development.ini-orig
sudo cp -p sync.wsgi sync.wsgi-orig

 

4.1. Edycja pliku konfiguracyjnego sync.conf.

 

sudo nano etc/sync.conf

Odszukujemy parametry, edytujemy je lub dodajemy do konfiguracji:

  • quota_size – rozmiar quoty,
  •  sqluri – link do bazy danych – mysql://fsync:HASŁO@localhost:3306/fsync Ustawiamy hasło dla użytkownika MySQL,
  •  sender – nadawca poczty…

 

[captcha]
...
use_ssl = true
...

 

[storage]
...
sqluri = mysql://fsync:HASŁO@localhost:3306/fsync
quota_size = 10240 #(10MB)
...

 

[auth]
...
sqluri = mysql://fsync:HASŁO@localhost:3306/fsync
...

 

[nodes]
...
fallback_node = https://fsync.domena.pl/
...

 

[smtp]
...
sender = fsync@domena.pl
...

 

[reset_codes]
...
backend = services.resetcodes.rc_sql.ResetCodeSQL
sqluri = mysql://fsync:HASŁO@localhost:3306/fsync
create_tables = true

 

4.2. Edycja pliku konfiguracyjnego development.ini.

 

sudo nano development.ini

Odszukujemy parametry, edytujemy je lub dodajemy do konfiguracji:

[DEFAULT]
debug = False
...

Jeżeli informacje zawarte w logach nie bedą wyczerpujące, należy zmienić zmienną False na True przy debug.

[handler_syncserver_errors]
...
args = ('/opt/fsync/tmp/sync-error.log',)
...

 

4.3. Edycja pliku konfiguracyjnego sync.wsgi.

 

sudo nano sync.wsgi

Odszukujemy parametry, edytujemy je lub dodajemy do konfiguracji:

...
os.environ['PYTHON_EGG_CACHE'] = '/opt/fsync/tmp/python-eggs'
...

 

5. Zmiana uprawnień do plików i katalogów serwera Firefox Sync – Weave.

Tworzenie folderu tmp i zmiana uprawnień do plików i katalogów.

sudo mkdir tmp
sudo chown fsync:fsync /opt/fsync -R
sudo chmod 640 fsync/etc/sync.conf
sudo chmod 770 fsync/tmp

 

6. Tworzenie bazy danych MySQL.

Tworzenie bazy danych i użytkownika bazy danych o nazwie np: fsync.

sudo mysql -u root -p

 

create database fsync;
GRANT ALL PRIVILEGES ON fsync.* TO fsync@localhost IDENTIFIED BY 'HASŁO';
flush privileges;
quit

 

7. Konfiguracja serwera DNS – Bind9.

Tutorial – http://pl.terminal28.com/1-ip-bind-dns-buddysns-hosting-delegacja-debian-ubuntu Dodajemy do strefy np: domena.pl wpis:

fsync              CNAME        fsync.domena.pl
fsync   	IN       A      <adres IP>

 

sudo /etc/init.d/bind9 restart

 

8. Konfiguracja serwera pocztowego.

Należy dodać użytkownika: fsync do zaufanych – ustawienia zależne są od typu serwera. Patrz ptk. 4.1. Edycja pliku konfiguracyjnego sync.conf – sekcja [SMTP]: sender = fsync@domena.pl.  

9. Konfiguracja serwera Apache2.

Przed konfiguracją serwera WWW należy upewnić się że posiadamy prywatny certyfikat. Tutorial – http://pl.terminal28.com/instalacja-i-konfiguracja-apache-php5-ruby-python-webdav. – patrz pkt. 10. Tworzenie prywatnych certyfikatów. Jeżeli posiadamy już certyfikaty należy dostosować ścieżkę dostępu do nich w konfiguracji hosta na porcie 443. W konfiguracji serwera WWW Apache2 (np: /etc/apache2/httpd.conf) dodajemy dwa wirtualne hosty: Host na porcie 80 ze stałym przekierowaniem na port 443 (SSL).

# http://fsync.domena.pl/
#=================================================================================
<VirtualHost *:80>
ServerName fsync.domena.pl
ServerAdmin webmaster@domena.pl
Redirect permanent / https://fsync.domena.pl/
ErrorLog /var/log/apache2/fsync/error.log
CustomLog /var/log/apache2/fsync/access.log combined
</VirtualHost>

#=================================================================================

 

Host na porcie 443 (SSL)

 

# https://fsync.domena.pl/
#=================================================================================

<VirtualHost *:443>
Servername fsync.domena.pl
ServerAdmin webmaster@domena.pl
DocumentRoot /opt/fsync
WSGIProcessGroup fsync
WSGIDaemonProcess fsync user=fsync group=fsync processes=2 threads=25 python-path=/opt/fsync/local/lib/python2.7/site-packages
WSGIPassAuthorization On
WSGIScriptAlias / /opt/fsync/sync.wsgi

ErrorLog /var/log/apache2/fsync/error-ssl.log
CustomLog /var/log/apache2/fsync/access-ssl.log combined

SSLEngine on
SSLProtocol -ALL +SSLv3 +TLSv1
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
SSLCertificateFile /etc/apache2/ssl/domena.pl.crt
SSLCertificateKeyFile /etc/apache2/ssl/domena.pl.key
# SSLCertificateChainFile /etc/apache2/ssl/root_CA.crt
<Directory /opt/fsync>
  Order deny,allow
  Allow from all
</Directory>
</VirtualHost>

#=================================================================================

 

9.1. Ochrona serwera przed botami.

Utworzenie pliku .htaccess i blokada serwera przed botami.

sudo nano /opt/fsync/.htaccess

 

# OCHRONA PLIKU .htaccess
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>

# OCHRONA PRZED BOTAMI I RIPPErAMI STRON
RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] 
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] 
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] 
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] 
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] 
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] 
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
RewriteRule ^.* - [F,L]


sudo chmod 644 /opt/fsync/.htaccess
sudo mkdir /var/log/apache2/fsync/
sudo chmod 750 -R /var/log/apache2/fsync/

 

Test konfiguracji serwera WWW:

Jeżeli wszystko zostało poprawnie skonfigurowane to wynikiem testu powinno być: Syntax OK.

sudo apache2ctl configtest

Syntax OK

sudo /etc/init.d/apache2 restart

Test serwera Firefox Sync – Weave.

 sudo ps auxwww | grep fsync
root 3389 0.0 0.0 112300 860 pts/3 S+ 22:33 0:00 grep fsync
fsync 5930 0.0 1.1 665004 22728 ? Sl 18:01 0:02 /usr/sbin/apache2 -k start
fsync 5931 0.0 1.1 731160 23108 ? Sl 18:01 0:03 /usr/sbin/apache2 -k start

 

Dostęp do strony:

  • https://fsync.domena.pl/
    powinien pojawić się błąd – 404 Not Found – The resource could not be found.
  • https://fsync.domena.pl/__heartbeat__
    powinna pojawić się pusta strona, kod źródłowy również powinien być pusty.
  • https://fsync.domena.pl/weave-password-reset
    powinna pojawić się strona resetowania hasła:
  • https://fsync.domena.pl/weave-delete-account
    powinna pojawić się strona usuwania konta na serwerze:

 

10. Konfiguracja przegladarki Firefox.

Uruchamiamy przeglądarkę Firefox i wchodzimy w:

  • Menu Firefox -> Opcje -> Opcje -> Synchronizacja (zakładka).

Klikamy w Konfiguruj usługę Firefox Sync a następnie Utwórz nowe konto.
Wypełniamy pola:

  • Adres e-mailpodajemy prawdziwy e-mail adres – potrzebny jest do resetowania hasła,
  • Wybierz hasło – podajemy hasło,
  • Potwierdź hasło – ponownie podajemy hasło,
  • Serwer – rozwijamy pasek wyboru i wybieramy Użyj innego serwera.
    Uzupełniamy pole wpisując: fsync.domena.pl – adres powinien zmienić sie automatycznie na: https://fsync.domena.pl.
    Ramka kodu Captcha powinna zniknąć.
    Klikamy na Dalej.

Należy pamietać, aby zapisać w bezpiecznym miejscu Klucz prywatny.
Rozwijamy pasek wyboru Zarzadzaj kontem i klikamy na Mój klucz odzyskiwania.
Klikamy Zapisz. Klucz odzyskiwania potrzebny jest do przywracania, odzyskiwania konta.

 

11. Aktualizacja serwera Firefox Sync – Weave.

Dodanie użytkownika i grupy fsync do pliku /etc/mercurial/hgrc jako zaufanego, aby móc zaktualizować serwer za pomocą komendy hg.
sudo nano /etc/mercurial/hgrc

# system-wide mercurial configuration file
# See hgrc(5) for more information

[trusted]
users = fsync
groups = fsync

 

Tworzenie kopii zapasowej serwera Firefox Sync – Weave i aktualizacja.
Folder kopii zapasowej bedzie nosił nazwę: fsync z datą i godziną:
np: fsync-08.12.2021-18:43

cd /opt
cp -pr fsync fsync-`date +%d.%m.%Y-%H:%M`
cd /opt/fsync
sudo hg pull -uv

 

Jeżeli chcemy zaktualizować tylko zależne repozytoria, bez odbudowy jakichkolwiek zależności od innych firm „PyPI”, należy uruchomić:

sudo virtualenv --no-site-packages --distribute
sudo make update
sudo /etc/init.d/apache2 restart

 

Jeżeli z jakiegoś powodu aktualizacja nie powiedzie się, należy utworzyć kopię zapasową uszkodzonej aktualizacji i przywrócić poprzednią (dobrą) kopię.

cd /opt
sudo cp -pr fsync fsync-`date +%d.%m.%Y-%H:%M`-uszkodzony
sudo cp -pr fsync-`date +%d.%m.%Y-%H:%M`fsync
sudo /etc/init.d/apache2 restart

 

Przykład:

sudo cp -pr fsync fsync-08.12.2012-18:43-uszkodzony
sudo cp -pr fsync-22.10.2012-16:18 fsync
sudo /etc/init.d/apache2 restart

 

Źródło:
http://sathya.de/blog/how-tos/setup-your-own-firefox-sync-server-on-debian-with-apache2-and-mysql/,
http://www.wenks.ch/fabian/mozilla-custom-sync-server/,
https://docs.services.mozilla.com/howtos/run-sync.html.

Dodaj komentarz

Twój adres email nie będzie publikowany.