Brave Sync Server
Beschreibung:
Mann kann den Brave Sync Server.
Auch selbst betreiben, gibt ein Projekt auf Github im docker-container dafür.
https://github.com/brave/go-sync
✅ Was Brave Sync aktuell synchronisiert (Stand 2025):
| Kategorie | Synchronisiert? | Beschreibung |
|---|---|---|
| 🔖 Lesezeichen | ✅ Ja | Alle Lesezeichen inkl. Ordnerstruktur |
| 📂 Lesezeichen-Favoritenleiste | ✅ Ja | Auch diese wird übernommen |
| 📄 Chronik (Verlauf) | ✅ Ja | Browser-Historie |
| 🧠 Formulardaten (Autofill) | ✅ Ja | Namen, Adressen, Telefonnummern, etc. |
| 🔐 Passwörter | ✅ Ja | Gespeicherte Anmeldedaten |
| 🎨 Designs/Themes | ✅ Ja | Farbthema des Browsers |
| 🧩 Erweiterungen/Add-ons | ✅ Ja | Installierte Chrome-Extensions |
| ⚙️ Einstellungen | ✅ Ja | Viele (nicht alle) Einstellungen werden übernommen |
| 📱 Offene Tabs | ✅ Ja | Geräteübergreifender Tab-Verlauf |
| 🧭 Suchmaschinen-Einstellungen | ✅ Ja | Eigene oder angepasste Suchanbieter |
| 🔒 Zahlungsmethoden | ✅ Ja | Kreditkartendaten etc. (wenn aktiviert) |
💾 Und wie viel Speicherplatz verbraucht das?
| Datentyp | Typische Größe |
|---|---|
| Lesezeichen | ein paar KB |
| Passwörter | 10–100 KB |
| Formulardaten | 50–200 KB |
| Verlauf | einige 100 KB |
| Alles zusammen | < 2 MB pro Nutzer |
Vorrausetzung:
Public IP
Installation:
apt install docker.io docker-compose curl
Verzeichnis erstellen
mkdir /root/bravesync
Nun in das Verzeichnis gehen und Repo clonen
cd /root/bravesync/
git clone https://github.com/brave/go-sync
nun die .env Datei erstellen
nano /root/bravesync/go-sync/.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 Dateiersetzen
rm /root/bravesync/go-sync/docker-compose.yml
nano /root/bravesync/go-sync/docker-compose.yml
Inhalt
networks:
sync:
driver: bridge
services:
dev:
build:
context: .
target: builder
args:
VERSION: "${VERSION}"
COMMIT: "${COMMIT}"
BUILD_TIME: "${BUILD_TIME}"
depends_on:
- dynamo-local
- redis
networks:
- sync
environment:
- PPROF_ENABLED=true
- SENTRY_DSN
- ENV=local
- DEBUG=1
- AWS_ACCESS_KEY_ID=GOSYNC
- AWS_SECRET_ACCESS_KEY=GOSYNC
- AWS_REGION=us-west-2
- AWS_ENDPOINT=http://dynamo-local:8000
- REDIS_URL=redis:6379
web:
build:
context: .
target: artifact
args:
VERSION: "${VERSION}"
COMMIT: "${COMMIT}"
BUILD_TIME: "${BUILD_TIME}"
ports:
- "8295:8295"
depends_on:
- dynamo-local
- redis
networks:
- sync
environment:
- PPROF_ENABLED=true
- SENTRY_DSN
- ENV=local
- DEBUG=1
- AWS_ACCESS_KEY_ID=GOSYNC
- AWS_SECRET_ACCESS_KEY=GOSYNC
- AWS_REGION=us-west-2
- AWS_ENDPOINT=http://dynamo-local:8000
- TABLE_NAME=client-entity-dev
- REDIS_URL=redis:6379
volumes:
- ./brave-sync-logs:/var/log
dynamo-local:
build:
context: .
dockerfile: dynamo.Dockerfile
ports:
- "8000:8000"
volumes:
- ./data/dynamodb:/home/dynamodblocal/data
networks:
- sync
redis:
image: public.ecr.aws/docker/library/redis:6.2
ports:
- "6379:6379"
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- ./data/redis:/data
networks:
- sync
caddy:
image: caddy:latest
restart: always
ports:
- "80:80"
- "443:443"
command: caddy reverse-proxy --from ${PUBLIC_URL} --to web:8295
volumes:
- ./data/caddy/data:/data
- ./data/caddy/config:/config
networks:
- sync
Die Makefile anpassen
nano /root/bravesync/go-sync/Makefile
Inhalt
...
docker:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker compose build
docker-up:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker compose up
docker-test:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker compose -f docker-compose.yml run --rm dev ma>
...
alle docker compose in docker-compose abändern
...
docker:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker-compose build
docker-up:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker-compose up
docker-test:
COMMIT=$(GIT_COMMIT) VERSION=$(GIT_VERSION) BUILD_TIME=$(BUILD_TIME) docker-compose -f docker-compose.yml run --rm dev ma>
...
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
Brave konfigurieren:
🧪 Browser starten mit eigenem Sync-Server
Auf dem Gerät, das Brave nutzt, musst du Brave mit dem Custom-Sync-Server starten:
Du musst Brave mit dem Startparameter ausführen:
brave --sync-url=https://dein.sync.server
Unter Windows z. B. in der Verknüpfung hinter "C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe"
🛠️ Dauerhaft unter Linux:
Bearbeite z. B. den Desktop-Starter:
nano ~/.local/share/applications/brave-browser.desktop
Finde die Zeile:
Exec=/usr/bin/brave-browser-stable %U
Und ergänze:
Exec=/usr/bin/brave-browser-stable --sync-url=https://dein.sync.server/v2 %U
Überprüfen der Sync URL:
In der Browser Leiste eingeben:
brave://sync-internals
Dort steht die URL und viele weitere Dinge zum Sync Status
Schritt-für-Schritt: Brave Flatpak & Startparameter
1. Standard-Flatpak-Pfad prüfen
Der Brave-Flatpak wird in der Regel als:
org.brave.Browser
ausgeführt. Um zu prüfen, ob das bei dir stimmt:
flatpak list | grep Brave
2. .desktop-Datei anpassen (nur für dich)
Die Desktop-Startverknüpfung liegt für Benutzerinstallationen meistens hier:
~/.local/share/flatpak/exports/share/applications/org.brave.Browser.desktop
Wenn sie dort nicht liegt, dann:
find ~/.local/share -name "org.brave.Browser.desktop"
3. Datei editieren
Öffne sie z. B. mit Nano oder einem Editor:
nano ~/.local/share/flatpak/exports/share/applications/org.brave.Browser.desktop
Suche die Zeile:
Exec=flatpak run org.brave.Browser
Und ergänze sie:
Exec=flatpak run org.brave.Browser --sync-url=https://dein.sync.server/v2
4. Desktop neu einlesen (optional)
Manchmal musst du die Desktop-Datenbank neu laden:
update-desktop-database ~/.local/share/applications/
Oder einfach ab- und wieder anmelden.
