# Firefox Sync Server

Beschreibung:

Mann kann den Firefox Sync Server.  
Auch selbst betreiben, gibt ein Projekt auf Github im docker-container dafür.  
Das macht das Floccus Addon obsolete.

Vorraussetzung:

Hier [https://accounts.firefox.com](https://accounts.firefox.com) ein Konto erstellen

Was wird Synchronisiert:

- Passwortsafe
- Formular Daten
- Lesezeichen
- Tabs
- Chronik

Was wird nicht synchronisiert

- Keine Add-ons oder komplette Einstellungen (leider)

Wenn das gewünscht ist müsste man das Firefox Profil auf dateiebene Syncen zum Beispiel mit Nextcloud synthing.  
Nachteil es darf immer nur eine Firefox Instanz auf sein.  
Aber in der Regel wollen wir ja, gar keine Firefox Einstellungen und Addons syncen

Vorrausetzung:

Public IP

Installation

```
apt install docker.io docker-compose curl
```

Verzeichnis erstellen

```
mkdir /root/mozillasync
```

nun die .env Datei erstellen

```
nano /root/mozillasync/.env
```

Inhalt

```
PUBLIC_URL ="http://localhost:5000"   
# ändere auf https://sync.example.com bei Proxy: "http://localhost:5000"   # ändere auf https://sync.example.com bei Proxy
```

Nun die Docker-compose Datei erstellen

```
nano /root/mozillasync/docker-compose.yml
```

Inhalt

```
version: '3.7'

services:
  firefox-sync:
    image: mozilla/syncserver
    container_name: firefox-sync
    restart: unless-stopped
    environment:
      SYNCSERVER_PUBLIC_URL: ${PUBLIC_URL}
      SYNCSERVER_SECRET: "supergeheimes-passwort-ändern"  # mind. 8 Zeichen, frei wählbar
      SYNCSERVER_SQLURI: 'sqlite:////data/syncserver.db'
      SYNCSERVER_BATCH_UPLOAD_ENABLED: "true"
      SYNCSERVER_FORCE_WSGI_ENVIRON: "true"
      PORT: '5000'
    volumes:
      - firefox-sync-data:/data
      
  caddy:
    image: caddy:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command: caddy reverse-proxy --from ${PUBLIC_URL} --to firefox-sync:5000
    volumes:
      - ./data/caddy/data:/data
      - ./data/caddy/config:/config  

volumes:
  firefox-sync-data:



```

nun Datenverzeichnis anlegen und rechte vergeben

```
mkdir -p /root/mozillasync/firefox-sync-data
chmod 777 /root/mozillasync/firefox-sync-data
```

Nun die container starten

```
docker-compose up -d
```

### Nun noch die ufw Firewall regeln anpassen.

Da hier der Docker container sowieso von außen erreichbar sein soll, brauchen wir hier keine Anspassung für docker.  
Aber ssh soll nur auf der lokalen Netzwerkkarte zur Verfügung stehen

ufw installieren

```
apt install ufw
```

Nun die Regeln setzten

```
ufw allow in on enp6s18 to any port 22
ufw enable
```

### Firefox-Konfiguration:

Mozilla Firefox Account erforderlich, aber daten laden aufm Server den wir gerade installiert haben

In Firefox unter `about:config`:

<div class="_tableContainer_80l1q_1" id="bkmrk-schl%C3%BCssel-wert-ident"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1535" data-start="1280"><thead data-end="1353" data-start="1280"><tr data-end="1353" data-start="1280"><th data-col-size="sm" data-end="1319" data-start="1280">Schlüssel</th><th data-col-size="md" data-end="1353" data-start="1319">Wert</th></tr></thead><tbody data-end="1535" data-start="1428"><tr data-end="1535" data-start="1428"><td data-col-size="sm" data-end="1467" data-start="1428">`identity.sync.tokenserver.uri`</td><td data-col-size="md" data-end="1535" data-start="1467">`http://localhost:5000/token/1.0/sync/1.5` *(oder deine Domain)*</td></tr></tbody></table>

</div></div>[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-07/scaled-1680-/niSMstVA1JJZnLfS-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-07/niSMstVA1JJZnLfS-grafik.png)

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-07/scaled-1680-/y0I5Wx5CKWm9Ed6A-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-07/y0I5Wx5CKWm9Ed6A-grafik.png)

## 🔐 🔄 Wie funktioniert Firefox Sync (mit eigenem Server)?

### ✅ Was du selbst hostest:

- **Speicher-Backend für Sync-Daten**
    
    
    - z. B. Lesezeichen, Passwörter, Chronik
    - liegt auf **deinem Server** (statt bei Mozilla)

### ❗ Was *nicht* selbst gehostet wird:

- **Mozilla-Konto-System (Accounts Server / Auth / OAuth)**  
    → Firefox-Login läuft weiterhin **über Mozilla**, außer du hostest auch den **Firefox Account Server** (aufwändig, meist unnötig)

---

## 🧠 Was bedeutet das konkret?

<div class="_tableContainer_80l1q_1" id="bkmrk-szenario-ergebnis-du"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1389" data-start="645"><thead data-end="748" data-start="645"><tr data-end="748" data-start="645"><th data-col-size="md" data-end="683" data-start="645">Szenario</th><th data-col-size="md" data-end="748" data-start="683">Ergebnis</th></tr></thead><tbody data-end="1389" data-start="853"><tr data-end="963" data-start="853"><td data-col-size="md" data-end="899" data-start="853">Du loggst dich mit deinem Mozilla-Konto ein</td><td data-col-size="md" data-end="963" data-start="899">Deine Daten landen auf deinem eigenen Server ✅</td></tr><tr data-end="1070" data-start="964"><td data-col-size="md" data-end="1006" data-start="964">Fremder kennt deine Sync-Server-Adresse</td><td data-col-size="md" data-end="1070" data-start="1006">Er kann sich **mit seinem eigenen Mozilla-Konto anmelden**</td></tr><tr data-end="1179" data-start="1071"><td data-col-size="md" data-end="1113" data-start="1071">Fremder hat nicht dein Mozilla-Passwort</td><td data-col-size="md" data-end="1179" data-start="1113">Er **kommt nicht an deine Daten** 🛡️</td></tr><tr data-end="1284" data-start="1180"><td data-col-size="md" data-end="1219" data-start="1180">Fremder nutzt deinen Server trotzdem</td><td data-col-size="md" data-end="1284" data-start="1219">**Ja, er kann dort seine eigenen Daten speichern** – isoliert</td></tr><tr data-end="1389" data-start="1285"><td data-col-size="md" data-end="1324" data-start="1285">Du willst das verhindern</td><td data-col-size="md" data-end="1389" data-start="1324">→ Mit **Basic Auth** oder IP-Filter abschotten 🔐</td></tr></tbody></table>

</div></div>## 🔄 🔧 Firefox zurücksetzen („Bereinigen“)

### ✅ So geht's Schritt für Schritt:

1. **Öffne diese Adresse in Firefox: about:support**
    
    <div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
    1. Klicke oben rechts auf den Button:
        
        > **„Firefox bereinigen…“**
    2. Bestätige den Dialog:
        
        > **„Firefox bereinigen“**
    3. Firefox wird neu gestartet – es wird:
        
        
        - ein neues Profil angelegt
        - Lesezeichen, Passwörter und Cookies **optional übernommen**
        - aber: **Add-ons, Einstellungen, about:config-Werte, Suchmaschinen, Themes etc.** werden gelöscht
    
    ---
    
    </div>## 💡 Was genau wird gelöscht?
    
    <div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="_tableContainer_80l1q_1"><div class="_tableWrapper_80l1q_14 group flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1363" data-start="810"><thead data-end="888" data-start="810"><tr data-end="888" data-start="810"><th data-col-size="sm" data-end="847" data-start="810">Wird behalten</th><th data-col-size="sm" data-end="888" data-start="847">Wird gelöscht</th></tr></thead><tbody data-end="1363" data-start="968"><tr data-end="1046" data-start="968"><td data-col-size="sm" data-end="1004" data-start="968">✔ Lesezeichen</td><td data-col-size="sm" data-end="1046" data-start="1004">❌ Add-ons</td></tr><tr data-end="1125" data-start="1047"><td data-col-size="sm" data-end="1083" data-start="1047">✔ Passwörter</td><td data-col-size="sm" data-end="1125" data-start="1083">❌ Themes</td></tr><tr data-end="1204" data-start="1126"><td data-col-size="sm" data-end="1162" data-start="1126">✔ Cookies</td><td data-col-size="sm" data-end="1204" data-start="1162">❌ Einstellungen (auch `about:config`)</td></tr><tr data-end="1283" data-start="1205"><td data-col-size="sm" data-end="1241" data-start="1205">✔ Chronik (optional)</td><td data-col-size="sm" data-end="1283" data-start="1241">❌ Suchmaschinen (benutzerdefiniert)</td></tr><tr data-end="1363" data-start="1284"><td data-col-size="sm" data-end="1320" data-start="1284"> </td><td data-col-size="sm" data-end="1363" data-start="1320">❌ Benutzerprofileinstellungen</td></tr></tbody></table>
    
    </div></div>  
    </div><div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">  
    </div>