Eigener Sync-Server für Firefox: Difference between revisions
(added todos for ffplugin) |
(seitenstruktur überarbeitet) |
||
Line 1: | Line 1: | ||
= Theorie = |
= Theorie = |
||
== Überblick == |
|||
== Unsortierte == |
|||
https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/ |
https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/ |
||
Line 8: | Line 10: | ||
https://wiki.mozilla.org/Identity/Firefox-Accounts |
https://wiki.mozilla.org/Identity/Firefox-Accounts |
||
== Aufgabenbereiche der einzelnen Server == |
|||
==Module/Komponenten== |
|||
*'''Sync Server''' |
|||
*'''Firefox Accounts Server (fxa)''' |
|||
auth-server: manages accounts database |
auth-server: manages accounts database |
||
Line 18: | Line 16: | ||
content-server: web-based user interface |
content-server: web-based user interface |
||
'''TODO Datenbank/Backend?''' |
|||
==Variante 1 - läuft== |
|||
= Lösung = |
|||
== MVP: lokaler Syncserver angebunden an FXA-System == |
|||
Anleitung zu finden unter: |
|||
https://docs.services.mozilla.com/howtos/run-sync-1.5.html |
|||
'''eigener Sync Server + Firefox Accounts Server von Mozilla''' |
|||
'''TODO SSL-Konfig dieser Lösung?''' |
|||
Sync Daten werden auf eigenen Server gespeichert. |
|||
== Überblick == |
|||
== Manuelle Vorbereitung== |
|||
Zertifikate erstellen |
|||
Hosts Config |
|||
Anmeldung/Authentifizierung erfolgt über den Mozilla Server |
|||
== Einrichtung über [https://github.com/ansible/ansible Ansible] == |
|||
==Variante 2 - läuft (noch) nicht== |
|||
'''TODO yaml-file und templates packen und hochladen''' |
|||
'''eigener Sync Server + eigener Firefox Accounts Server''' |
|||
= Hindernisse = |
|||
benötigt SSL |
|||
== Content Server braucht nach npm install noch bower run == |
|||
Bower muss installiert werden (npm install -g bower) |
|||
= Work in Progress = |
|||
und dann im Verzeichnis ein "bower install" |
|||
1. Schritt: lokaler sync-server mit mozilla fx-Accounts |
|||
== Server nur über https ansprechbar == |
|||
Anleitung zu finden unter: |
|||
about:accounts gibt in der browser console folgenden Fehler aus: |
|||
https://docs.services.mozilla.com/howtos/run-sync-1.5.html |
|||
"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS |
|||
2. Schritt: fxa-auth-server aufsetzen |
|||
" aboutaccounts.js:28 |
|||
https://github.com/mozilla/fxa-auth-server |
|||
== Connection Reset == |
|||
3. Schritt: fxa-content-server aufsetzen |
|||
'''TODO silent connection reset bei nicht akzeptiertem zertifikat: Wireshark? Reproduzierbar?''' |
|||
https://github.com/mozilla/fxa-content-server |
|||
für Selbstgebaute Zertifikate: vorher manuell als Ausnahme hinzufügen (folgende Seiten besuchen) |
|||
https://sync.accounts.devlocal |
|||
'''Beachten:''' |
|||
https://api.accounts.devlocal |
|||
Bower muss installiert werden (npm install -g bower) |
|||
https://accounts.devlocal |
|||
und dann im Verzeichnis ein "bower install" |
|||
https://verify.accounts.devlocal |
|||
about:accounts gibt in der browser console folgenden Fehler aus: |
|||
== Cross Origin Ajax Calls == |
|||
"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS |
|||
Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server. |
|||
" aboutaccounts.js:28 |
|||
Bei Mozilla ist das kein problem, da die uris für API/Content Server subdomains von firefox.com sind: |
|||
Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler |
|||
4. Schritt: Firefox an eigenen fxa-server anbinden |
|||
fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem. |
|||
https://docs.services.mozilla.com/howtos/run-fxa.html |
|||
'''SSL-Config''' |
|||
Damit der Firefox mit den eigenen Servern spricht müssen diese über https erreichbar sein. Dies lässt sich wie folgt gewährleisten: |
|||
'''TODO Bild''' |
|||
Zertifikat erstellen (key.pem & cert.pem) |
|||
Lösungsansatz: NGINX, Apache reverse proxy |
|||
1. content-server |
|||
= TODOs = |
|||
Schlüssel und cert in Hauptordner |
|||
== Ansible == |
|||
https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu |
|||
./server/config/local.json => "use_https": true, |
|||
und: "fxaccount_url": <nowiki>"http://your.auth.server.here.org",</nowiki> |
|||
1. Firefox Services Installieren (+ Abhängigkeiten) |
|||
2. auth-server |
|||
- Syncserver |
|||
gunicorn |
|||
- fxa-account-server |
|||
- fxa-content-server |
|||
2. Services konfigurieren |
|||
Schlüssel und cert in Hauptordner |
|||
- Syncserver |
|||
- fxa-account-server |
|||
- fxa-content-server |
|||
3. CA/Zertifikate generieren |
|||
./config/config.js => use_https: true |
|||
4. Nginx Installieren |
|||
'''Probleme''' |
|||
sudo apt-get install nginx |
|||
/etc/nginx/sites-available/default |
|||
5. Nginx Konfig |
|||
Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server. |
|||
Bei ihnen ist das kein problem, da die uris: |
|||
6. Hosts datei |
|||
beide unter die gleiche Domain (firefox.com) fallen. |
|||
Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler |
|||
fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem. |
|||
== Firefox-Plugin == |
|||
'''WICHTIG''' |
|||
für Selbstgebaute Zertifikate: vorher manuel als Ausnahme hinzufügen (folgende Seiten besuchen) |
|||
https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/ |
|||
https://sync.accounts.devlocal |
|||
=== config-Einträge ändern per Plugin === |
|||
https://api.accounts.devlocal |
|||
http://stackoverflow.com/questions/6157173/a-firefox-extension-that-changes-a-value-in-the-aboutconfig |
|||
https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js |
|||
https://accounts.devlocal |
|||
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm |
|||
https://verify.accounts.devlocal |
|||
= Informationenhaufen = |
|||
'''Lösungsansätze:''' |
|||
== Links == |
|||
nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy |
|||
Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking |
|||
nginx für eigene domain der https verwaltet. |
|||
= Debug Optionen = |
|||
Firefox: about:sync-log |
|||
config: |
|||
tokenServerURI: https://sync.accounts.devlocal/1.0/sync/1.5 |
|||
= Notizenhaufen = |
|||
Evaluieren: bringt uns das was? |
|||
https://github.com/mozilla/fxa-dev |
https://github.com/mozilla/fxa-dev |
||
Line 119: | Line 125: | ||
http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/ |
http://www.ncalexander.net/blog/2014/07/05/how-to-connect-firefox-for-android-to-self-hosted-services/ |
||
== Debug Infos == |
|||
BrowserId Verifier? |
|||
Firefox: about:sync-log |
|||
Paketverkehr monitoring mit tshark |
|||
Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking |
|||
== Config == |
|||
=== Ports === |
|||
Ports: |
Ports: |
||
Line 135: | Line 141: | ||
verify: 7070 |
verify: 7070 |
||
=== Firefox === |
|||
nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy |
|||
'''syncserver:''' |
|||
= Info Austausch = |
|||
X-Frame-Options:"DENY" - "The page cannot be displayed in a frame, regardless of the site attempting to do so." |
|||
X-XSS-Protection:"1; mode=block" - https://www.owasp.org/index.php/List_of_useful_HTTP_headers |
|||
x-content-type-options:"nosniff" - https://www.owasp.org/index.php/List_of_useful_HTTP_headers |
|||
content-security-policy:"default-src 'self';img-src 'self' data: http://localhost:1112 https://secure.gravatar.com;connect-src 'self' https://localhost:9000 https://localhost:9010 https://localhost:1111;report-uri /_/csp-violation" |
|||
= about:config = |
|||
syncserver: |
|||
services.sync.tokenServerURI |
services.sync.tokenServerURI |
||
https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5 |
https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5 |
||
auth-services: |
'''auth-services:''' |
||
identity.fxaccounts.auth.uri |
identity.fxaccounts.auth.uri |
||
Line 172: | Line 167: | ||
https://accounts.devlocal/settings |
https://accounts.devlocal/settings |
||
== Ubuntu einrichtung == |
|||
Einrichtung über [https://github.com/ansible/ansible Ansible]: |
|||
'''TODO''' yaml file und templates packen und verlinken |
|||
https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu |
|||
1. Firefox Services Installieren (+ Abhängigkeiten) |
|||
- Syncserver |
|||
gunicorn |
|||
- fxa-account-server |
|||
- fxa-content-server |
|||
2. Services konfigurieren |
|||
- Syncserver |
|||
- fxa-account-server |
|||
- fxa-content-server |
|||
3. CA/Zertifikate generieren |
|||
4. Nginx Installieren |
|||
sudo apt-get install nginx |
|||
/etc/nginx/sites-available/default |
|||
5. Nginx Konfig |
|||
6. Hosts datei |
|||
== Firefox Plugin == |
|||
https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/ |
|||
= config-Einträge ändern per Plugin = |
|||
http://stackoverflow.com/questions/6157173/a-firefox-extension-that-changes-a-value-in-the-aboutconfig |
|||
https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js |
|||
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm |
Revision as of 21:17, 29 September 2014
Theorie
Überblick
Unsortierte
https://blog.mozilla.org/services/2014/02/07/a-better-firefox-sync/
https://github.com/mozilla/fxa-auth-server/wiki/onepw-protocol
https://developer.mozilla.org/en-US/Firefox_Accounts
https://wiki.mozilla.org/Identity/Firefox-Accounts
Aufgabenbereiche der einzelnen Server
auth-server: manages accounts database
content-server: web-based user interface
TODO Datenbank/Backend?
Lösung
MVP: lokaler Syncserver angebunden an FXA-System
Anleitung zu finden unter:
https://docs.services.mozilla.com/howtos/run-sync-1.5.html
TODO SSL-Konfig dieser Lösung?
Überblick
Manuelle Vorbereitung
Zertifikate erstellen
Hosts Config
Einrichtung über Ansible
TODO yaml-file und templates packen und hochladen
Hindernisse
Content Server braucht nach npm install noch bower run
Bower muss installiert werden (npm install -g bower)
und dann im Verzeichnis ein "bower install"
Server nur über https ansprechbar
about:accounts gibt in der browser console folgenden Fehler aus:
"Firefox Account Error: Couldn't init Firefox Account wrapper: Firefox Accounts server must use HTTPS " aboutaccounts.js:28
Connection Reset
TODO silent connection reset bei nicht akzeptiertem zertifikat: Wireshark? Reproduzierbar? für Selbstgebaute Zertifikate: vorher manuell als Ausnahme hinzufügen (folgende Seiten besuchen)
https://sync.accounts.devlocal
https://verify.accounts.devlocal
Cross Origin Ajax Calls
Firefox macht während des Logins AJAX Calls vom Content Server an den Auth Server. Bei Mozilla ist das kein problem, da die uris für API/Content Server subdomains von firefox.com sind:
Wenn die Server allerdings lokal laufen, schlägt der Ajax-Request mit einem Cross-Domain Fehler fehl (was ja eigentlich auch gut so ist). In unserem Fall ist das aber ein Problem.
TODO Bild
Lösungsansatz: NGINX, Apache reverse proxy
TODOs
Ansible
1. Firefox Services Installieren (+ Abhängigkeiten) - Syncserver gunicorn - fxa-account-server - fxa-content-server
2. Services konfigurieren - Syncserver - fxa-account-server - fxa-content-server
3. CA/Zertifikate generieren
4. Nginx Installieren sudo apt-get install nginx /etc/nginx/sites-available/default
5. Nginx Konfig
6. Hosts datei
Firefox-Plugin
https://blog.mozilla.org/addons/2014/06/05/how-to-develop-firefox-extension/
config-Einträge ändern per Plugin
https://addons.mozilla.org/en-US/firefox/files/browse/98518/file/bootstrap.js
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm
Informationenhaufen
Links
nginx rewrite: http://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy
Virtualbox HostNetwork: http://www.thomas-krenn.com/de/wiki/Netzwerkkonfiguration_in_VirtualBox#Host-only_networking
https://github.com/mozilla/fxa-dev
https://blog.mozilla.org/services/2014/05/08/firefox-accounts-sync-1-5-and-self-hosting/
http://comments.gmane.org/gmane.comp.mozilla.sync.devel/924
https://github.com/callahad/selfhosted-sync
https://github.com/mozilla-services/syncserver
Debug Infos
Firefox: about:sync-log
Config
Ports
Ports:
Sync: 5000
API: 9000
content: 3030
verify: 7070
Firefox
syncserver: services.sync.tokenServerURI
https://sync.accounts.devlocal/token/1.0/sync/1.5 --> https://accounts.devlocal/ffs/token/1.0/sync/1.5
auth-services: identity.fxaccounts.auth.uri
https://api.accounts.devlocal/v1 --> https://accounts.devlocal/api/v1
identity.fxaccounts.remote.force_auth.uri
https://accounts.devlocal/force_auth?service=sync&context=fx_desktop_v1
identity.fxaccounts.remote.signin.uri
https://accounts.devlocal/signin?service=sync&context=fx_desktop_v1
identity.fxaccounts.remote.signup.uri
https://accounts.devlocal/signup?service=sync&context=fx_desktop_v1
identity.fxaccounts.settings.uri