# ===== Rclone + Google Cloud API + OpenMediaVault + Samba =====

# Opis: Poradnik opisuje instalację rclone, konfigurację projektu w Google Cloud Console (wraz z poprawnym przekierowaniem autoryzacji), bezpieczne przechowywanie konfiguracji w systemie, konfigurację na hoście OpenMediaVault (podanie Client ID i Secret), uzyskanie tokena na komputerze z GUI oraz stabilne uruchomienie natywnego montowania z pełnymi prawami dla Samby.
# Na przykładzie mojego OMV, u Ciebie ścieżki będą inne (/srv/dev-disk-by-uuid-fc8bec1c-d43d-4857-ba08-e071a17e3c89/)
# Utwórz główny udział sieciowy w panelu OMV o nazwie RCLONE (Magazyn – > Katalogi udostępnione), a w nim podkatalog GOOGLE/ na zamontowane zasoby.

# Krok 1: Instalacja Rclone na hoście OMV

Zainstaluj rclone bezpośrednio w systemie OMV za pomocą oficjalnego skryptu instalacyjnego:

sudo -c "$(curl -fsSL https://rclone.org/install.sh)"

# Krok 2: Konfiguracja Google Cloud Console (Client ID i Secret)

Aby rclone działał stabilnie z Twoim Dyskiem Google:

1. Wejdź na Google Cloud Console.
2. Utwórz nowy projekt.
3. Włącz Google Drive API w sekcji Enabled APIs & Services.
4. Skonfiguruj ekran zgody OAuth (OAuth consent screen):
  - Wybierz typ External (Zewnętrzny).
  - Podaj nazwę aplikacji i e-mail.
  - W sekcji użytkowników testowych (Test users) dodaj swój adres e-mail Google.
5. Przejdź do zakładki Credentials -> Create Credentials -> OAuth client ID.
6. Jako typ aplikacji wybierz Desktop app (Aplikacja na komputer).
7. Bardzo ważne (adres zwrotny): W sekcji Authorized redirect URIs upewnij się, że dodany jest lokalny adres zwrotny:

http://127.0.0.1:53682/

8. Skopiuj wygenerowany Client ID oraz Client Secret (będą Ci potrzebne na serwerze OMV).

# Krok 3: Konfiguracja początkowa na hoście OMV i wywołanie autoryzacji

1. Na serwerze OpenMediaVault uruchom w terminalu kreator konfiguracji (plik konfiguracyjny zostanie domyślnie zapisany w bezpiecznym katalogu systemowym):
2. Wybierz n (New remote), wpisz nazwę (np. SaperGoogleDrive), a jako typ magazynu wybierz drive (Google Drive).
3. Gdy rclone o to poprosi, wklej uzyskane w Google Cloud Client ID oraz Client Secret.
4. Wybierz odpowiedni poziom dostępu (zazwyczaj 1 dla pełnego dostępu full access).
5. Pozostałe opcje (np. root folder) możesz zostawić puste (wciskając Enter).
6. Gdy rclone zapyta, czy użyć konfiguracji automatycznej (Auto config), wybierz No (ponieważ OMV działa w trybie tekstowym bez przeglądarki).
7. W terminalu OMV pojawi się specjalna komenda autoryzacyjna (zaczynająca się od rclone authorize "drive" wraz z Twoim Client ID i Secret).

# Krok 4: Uzyskanie tokena na komputerze z GUI i powrót do OMV

1. Skopiuj wygenerowaną w poprzednim kroku komendę rclone authorize ... z terminala OMV i uruchom ją w terminalu komputera posiadającego interfejs graficzny i przeglądarkę (np. Twój laptop/Windows).
2. Otworzy się przeglądarka internetowa – zaloguj się na swoje konto Google i zezwól na dostęp aplikacji.
3. Po pomyślnym uwierzytelnieniu, w terminalu komputera z GUI pojawi się wygenerowany token dostępu w postaci bloku kodu zaczynającego się od { i kończącego na }.
4. Skopiuj ten token wraz z nawiasami klamrowymi { ... } włącznie i wklej go do terminala na OMV w miejscu, gdzie rclone czeka na wprowadzenie tokena.
5. Zatwierdź konfigurację do końca (zapisz remote). Plik konfiguracyjny zostanie bezpiecznie zapisany w katalogu systemowym:

/root/.config/rclone/rclone.conf

# Krok 5: Weryfikacja działania

Sprawdź, czy konfiguracja działa poprawnie, wywołując polecenie testowe w terminalu OMV:
# Jeśli zobaczysz listę katalogów swojego Dysku Google, autoryzacja powiodła się w 100%!

rclone lsd SaperGoogleDrive:

# Krok 6: Stabilne montowanie bezpośrednio w udziale RCLONE/GOOGLE

Aby pliki były w pełni widoczne, modyfikowalne i zapisywalne z poziomu udziału sieciowego Samba (w podkatalogu GOOGLE), zamontuj dysk przez natywne FUSE z odpowiednimi flagami uprawnień (korzystając z domyślnego, bezpiecznego pliku konfiguracyjnego):

rclone mount SaperGoogleDrive: /srv/dev-disk-by-uuid-fc8bec1c-d43d-4857-ba08-e071a17e3c89/RCLONE/GOOGLE \
  --vfs-cache-mode full \
  --allow-other \
  --allow-non-empty \
  --uid 1000 \
  --gid 100 \
  --umask 000 &

# ===== Wyjaśnienie kluczowych flag montowania =====

# --vfs-cache-mode full: Włącza buforowanie zapisu i odczytu, dzięki czemu pliki modyfikowane lokalnie natychmiast trafiają do chmury.
# --allow-other: Pozwala innym użytkownikom systemowym (w tym usłudze Samba) na dostęp do zamontowanego folderu.
# --allow-non-empty: Zezwala na montowanie w folderze, w którym znajdują się już pliki systemowe/poprzednie instancje.
# --uid 1000 --gid 100 --umask 000: Wymusza pełne uprawnienia do odczytu i zapisu dla użytkownika oraz Samby, omijając ograniczenia graficznych paneli www.