Ο διακομιστής Brave go-sync v2 στοχεύει να δημιουργήσει ένα συμβατό πρωτόκολο που κατανοεί τα συστατικά στοιχεία /sync/protocol/sync.proto που χρησιμοποιούνται από την επίσημη υπηρεσία συγχρονισμού στον chromium της Google.
Διαφορές από το chrome sync
-
Επιβολή κρυπτογράφησης από την πλευρά του πελάτη
-
Δεν απαιτεί σύνδεση για τη χρήση του συγχρονισμού (Χρησιμοποιεί το “Sync Chain” concept )
-
Open source αυτονομος διακομιστής συγχρονισμού που λειτουργεί με τον Brave, ώστε να μην αποστέλλονται δεδομένα στους διακομιστές της Google
Αυθεντικοποίηση
Μια “αλυσίδα συγχρονισμού” διαμορφώνεται χρησιμοποιώντας έναν τυχαίο seed 32 byte που δημιουργείται από τον αρχικό πελάτη. Στη συνέχεια, το seeda κωδικοποιείται χρησιμοποιώντας BIP39. Εάν κάποιος άλλος πελάτης θέλει να συμμετάσχει στην αλυσίδα συγχρονισμού, μπορεί να εισαγάγει τη φράση-κλειδί BIP39 από τον αρχικό πελάτη εισάγοντας τις λέξεις με μη αυτόματο τρόπο ή σαρώνοντας έναν κωδικό QR.
- Το source code ειναι διαθέσιμο στο GitHub
Dynamo.Dockerfile
ARG DB_LOCATION=/home/dynamodblocal/db
FROM amazon/dynamodb-local:1.12.0 AS install
USER root
RUN yum -y install awscli
USER dynamodblocal
ENV AWS_ACCESS_KEY_ID=#
ENV AWS_SECRET_ACCESS_KEY=#
ARG AWS_ENDPOINT=http://localhost:8000
ARG AWS_REGION=us-west-2
ARG DB_LOCATION
ARG TABLE_NAME=client-entity-dev
COPY schema/dynamodb/ .
RUN mkdir -p ${DB_LOCATION} && \
java -jar DynamoDBLocal.jar -sharedDb -dbPath ${DB_LOCATION} & \
DYNAMO_PID=$! && \
aws dynamodb create-table --cli-input-json file://table.json \
--endpoint-url ${AWS_ENDPOINT} --region ${AWS_REGION} && \
kill $DYNAMO_PID
FROM amazon/dynamodb-local:1.12.0
ARG DB_LOCATION
COPY --chown=dynamodblocal:dynamodblocal --from=install ${DB_LOCATION} /db
CMD ["-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/db"]
Dockerfile
FROM bitnami/golang:1.18 as builder
ARG VERSION
ARG BUILD_TIME
ARG COMMIT
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build \
-ldflags "-X github.com/brave/go-sync/server.version=${VERSION} -X github.com/brave/go-sync/server.buildTime=${BUILD_TIME} -X github.com/brave/go-sync/server.commit=${COMMIT}" \
-o main .
FROM alpine:3.6 as artifact
RUN apk add --update ca-certificates # Certificates for SSL
COPY --from=builder /src/main main
EXPOSE 8295
CMD ["./main"]
docker-compose.yml
---
networks:
sync:
driver: bridge
services:
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=#
- AWS_SECRET_ACCESS_KEY=#
- AWS_REGION=us-west-2
- AWS_ENDPOINT=http://dynamo-local:8000
- TABLE_NAME=client-entity-dev
- REDIS_URL=redis:6379
dynamo-local:
build:
context: .
dockerfile: dynamo.Dockerfile
ports:
- "8000:8000"
networks:
- sync
redis:
image: public.ecr.aws/ubuntu/redis:latest
ports:
- "6379:6379"
environment:
- ALLOW_EMPTY_PASSWORD=yes
networks:
- sync
Tips and Tricks
Dynamodb image για ARM
- Το dynamo.Dockerfile χρησιμοποιεί το image amazon/dynamodb-local:1.12.0 για την dynamo db. Αν και κανει build μια χαρά για επεξεργαστές x86, και υπάρχει image για επεξεργαστες ARM64 το συγκεκριμένο version κανει “exit” σε ARM (δοκιμασμένο σε raspberry pi 400) .
To docker image amazon/dynamodb-local:1.13.5@sha256:d39583bcf1a5aab6e9276e15ff681c83f2dac055e1d6604bc0dcd0092c305911 κανει build και τρέχει μια χαρά στο ARM.
Πιο πρόσφατες εικόνες μπορεί επίσης να λειτουργήσουν.
Πώς να επιλέξετε τον αυτοφιλοξενούμενο διακομιστή συγχρονισμού
- Ακολουθήστε το “Run Chromium with command-line switches” στο wiki του chromium
Στο android Ενεργοποιήστε τη “command line on non-rooted devices” στο brave://flags και, στη συνέχεια, δημιουργήστε το αρχείο /data/local/tmp/chrome-command-line μέσω του adb.
adb shell
echo "_ --sync-url=192.168.1.24:8295/v2" > /data/local/tmp/chrome-command-line
Λάβετε υπόψη ότι το πρώτο στοιχείο της γραμμής εντολών θα πρέπει να είναι ένα “_” (underscore) ακολουθούμενο από τα switches που χρειάζεστε. Το “/v2” θα πρέπει να ακολουθεί τη διαδρομή URL σας.
- Τέλος, επανεκκινήστε χειροκίνητα το Brave
Επαληθεύστε την κατάσταση συγχρονισμού
- Επισκεφτείτε το
brave://sync-internals
Προειδοποιητικό μήνυμα
- Το Brave εμφανίζει ένα προειδοποιητικό μήνυμα σε κάθε νέα καρτέλα για μερικά δευτερόλεπτα αφού ενεργοποιησουμε τα commands line switches που λέει ότι δεν υποστηρίζεται.
Μπορείτε να το αγνοήσετε.
Δεν βρήκα τρόπο να το απενεργοποιήσω.
docker compose services
- Έχω αφαιρέσει το Dev service και κράτησα μονο τα web,dynamo,redis
Πως να δημιουργήσετε τα docker images
git clone https://github.com/brave/go-sync.git
cd go-sync
Κάνουμε αν θέλουμε τις ανωτέρω αλλαγές στα Dockerfile,dynamo.Dockerfile,docker-compose
docker compose up -d
O server τρέχει στην localhost:8295/v2