SIGNAL

1. Oficjalnie: pełna migracja Desktop → Desktop nie jest wspierana

Signal ma oficjalne procedury backupu/przenoszenia głównie dla telefonu. Dla Desktopa nie ma normalnej funkcji „eksportuj historię” / „przenieś historię na nowy komputer”. Signal w dokumentacji backupu/przywracania opisuje przenoszenie historii zależnie od urządzenia, ale migracja Desktopa jest ograniczona i nie działa jak klasyczny import pliku historii.

Czyli najbezpieczniejsza odpowiedź brzmi: nie ma wspieranej przez Signal metody pełnej migracji historii ze starego Windows PC na laptop.

Ale są obejścia.


2. Najprostsze obejście: skopiowanie profilu Signal Desktop

Możesz spróbować przenieść cały profil aplikacji ze starego PC na laptop. To jest metoda nieoficjalna, więc najpierw rób kopię, a nie przenoszenie „na żywo”.

Na starym PC

  1. Zamknij Signal Desktop.
  2. Sprawdź w Menedżerze zadań, czy nie działa proces Signal.
  3. Wejdź w:
C:\Users\TWOJA_NAZWA\AppData\Roaming\Signal

Szybciej: w pasku adresu Eksploratora Windows wpisz:

%APPDATA%\Signal
  1. Skopiuj cały folder Signal na pendrive / dysk / udział sieciowy.

Na laptopie

  1. Zainstaluj Signal Desktop, ale go nie uruchamiaj po instalacji — albo zamknij całkowicie, jeśli już się uruchomił.
  2. Wejdź w:
%APPDATA%
  1. Jeżeli istnieje tam folder Signal, zmień jego nazwę np. na:
Signal_NOWY_PUSTY_BACKUP
  1. Wklej skopiowany folder Signal ze starego PC.
  2. Uruchom Signal Desktop.

To czasem działa, ale nie ma gwarancji. Są zgłoszenia i dyskusje użytkowników, którzy kopiowali %AppData%\Signal między Windowsami, ale to nie jest oficjalnie stabilna procedura.


3. Kluczowy problem: klucz szyfrowania

Signal Desktop trzyma wiadomości lokalnie w zaszyfrowanej bazie. Sam plik bazy to za mało, bo potrzebny jest też lokalny klucz szyfrowania zapisany w profilu aplikacji / systemowym magazynie danych użytkownika.

Dlatego samo skopiowanie np.:

%APPDATA%\Signal\sql\db.sqlite

najczęściej nie wystarczy.

Trzeba kopiować cały folder Signal, a najlepiej robić to na tym samym koncie użytkownika Windows lub przynajmniej z zachowaniem pełnego profilu danych aplikacji.


4. Najbezpieczniejszy wariant praktyczny

Zrobiłbym tak:

Krok 1 — zabezpiecz stary komputer

Na starym PC:

%APPDATA%\Signal

Skopiuj cały folder w 2 miejsca, np.:

D:\Backup\Signal_PC_oryginal

oraz na pendrive / dysk zewnętrzny.

Nie usuwaj starego Signala.

Krok 2 — uruchom nowy laptop jako nowe urządzenie

Najpierw normalnie połącz Signal Desktop na laptopie z telefonem przez QR. Sprawdź, ile historii się zsynchronizuje.

Krok 3 — jeżeli brakuje starych wiadomości

Dopiero wtedy testuj wariant z podmianą folderu:

%APPDATA%\Signal

czyli:

  1. Zamknij Signal na laptopie.
  2. Zmień nazwę obecnego folderu Signal.
  3. Wklej stary folder Signal.
  4. Uruchom aplikację.
  5. Sprawdź, czy widzisz stare rozmowy.

5. Jeżeli celem jest tylko archiwum, a nie aktywna migracja

Jeśli zależy Ci na tym, żeby nie stracić starych rozmów, a niekoniecznie używać ich aktywnie na laptopie, najlepsze rozwiązanie to:

  1. Zostawić starego PC jako archiwum.
  2. Zrobić kopię folderu:
%APPDATA%\Signal
  1. Dodatkowo zrobić obraz całego dysku lub kopię profilu użytkownika Windows.

To jest bezpieczniejsze niż próba agresywnej migracji, bo Signal może po uruchomieniu na nowym urządzeniu nadpisać / wyczyścić część lokalnych danych, jeśli wykryje niespójność.


6. Metoda zaawansowana: odczyt / eksport bazy

Istnieją nieoficjalne metody odczytu lokalnej bazy Signal Desktop przez narzędzia do SQLite/SQLCipher albo narzędzia społecznościowe. To jest raczej droga techniczna do eksportu/odzysku, a nie czystej migracji do nowego Signala. Użytkownicy opisują np. pracę na pliku:

%APPDATA%\Signal\sql\db.sqlite

ale wymaga to dostępu do klucza i łatwo coś uszkodzić, więc nie robiłbym tego na oryginale.


Moja rekomendacja

Najrozsądniejsza kolejność:

  1. Zrób pełną kopię:
%APPDATA%\Signal
  1. Nie kasuj starego PC.
  2. Na laptopie najpierw połącz Signal normalnie przez QR.
  3. Jeżeli historia jest niewystarczająca, przetestuj podmianę całego folderu Signal.
  4. Jeśli to nie zadziała, traktuj stary PC jako archiwum albo idź w techniczny eksport z bazy.

Najważniejsze: nie instaluj i nie konfiguruj nowego Signala „na siłę” na kopii bez backupu, bo możesz stracić jedyną działającą wersję lokalnej historii.

Poniżej masz praktyczną procedurę eksportu/odczytu historii z Signal Desktop na Windows. To nie jest oficjalna migracja do nowego Signala — Signal oficjalnie podaje, że Desktop nie wspiera przenoszenia historii wiadomości do lub z innego urządzenia, a ręczne przenoszenie folderów może powodować błędy. (support.signal.org)

To jest metoda do odzysku / archiwizacji / eksportu do CSV/JSON, najlepiej na kopii.


1. Zrób kopię danych Signala

Na starym PC zamknij Signal Desktop.

Sprawdź w Menedżerze zadań, czy nie działa proces:

Signal.exe

Potem skopiuj cały folder:

%APPDATA%\Signal

Czyli zwykle:

C:\Users\TWOJA_NAZWA\AppData\Roaming\Signal

Najważniejsze pliki/foldery:

%APPDATA%\Signal\sql\db.sqlite
%APPDATA%\Signal\config.json
%APPDATA%\Signal\attachments.noindex

Baza wiadomości to zwykle:

%APPDATA%\Signal\sql\db.sqlite

Klucz do odszyfrowania bazy jest w konfiguracji Signala, zwykle w:

%APPDATA%\Signal\config.json

Taką lokalizację bazy i klucza opisują źródła techniczne dotyczące Signal Desktop. (BleepingComputer)


2. Pracuj tylko na kopii

Utwórz np. folder:

D:\Signal_export_test

I skopiuj tam:

db.sqlite
config.json

Nie otwieraj oryginalnej bazy bezpośrednio z folderu Signala.


3. Znajdź klucz w config.json

Otwórz plik:

config.json

np. Notatnikiem albo VS Code.

Szukaj pola podobnego do:

"key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

To będzie długi ciąg znaków hex. Zwykle ma 64 znaki.

Do DB Browser / SQLCipher często trzeba go podać jako raw key z prefiksem:

0xTUTAJ_KLUCZ_Z_CONFIG_JSON

Czyli np.:

0x1234567890abcdef...

Nie wklejamy cudzysłowów.


4. Zainstaluj DB Browser for SQLite z obsługą SQLCipher

Pobierz DB Browser for SQLite i uruchom wersję z obsługą SQLCipher, zwykle nazywa się podobnie do:

DB Browser for SQLCipher.exe

Ważne: zwykła wersja SQLite może nie otworzyć bazy, bo baza Signala jest szyfrowana. Źródła techniczne opisują otwieranie tej bazy właśnie przez SQLCipher z kluczem z config.json. (Hacker News)


5. Otwórz bazę db.sqlite

W DB Browser:

  1. Open Database
  2. Wybierz kopię pliku:
D:\Signal_export_test\db.sqlite
  1. Pojawi się okno hasła / szyfrowania.
  2. Wybierz tryb typu:
Raw key
  1. W polu hasła wpisz:
0xTWÓJ_KLUCZ_Z_CONFIG_JSON
  1. Zatwierdź.

Jeżeli zadziała, zobaczysz tabele bazy danych.


6. Gdzie są wiadomości

Najważniejsza tabela to zwykle:

messages

Możesz wejść w zakładkę:

Browse Data

i wybrać tabelę:

messages

Typowe interesujące kolumny mogą być podobne do:

body
timestamp
received_at
conversationId
source
type
hasAttachments
json

Nazwy kolumn mogą się różnić zależnie od wersji Signala.


7. Eksport do CSV

Najprościej:

  1. Wejdź w Browse Data.
  2. Wybierz tabelę messages.
  3. Użyj opcji:
File → Export → Table(s) as CSV file

albo podobnej.

Możesz wyeksportować całą tabelę messages, ale będzie ona techniczna i mało czytelna. Lepszy wariant to zrobić zapytanie SQL.


8. Proste zapytanie SQL do eksportu wiadomości

W DB Browser wejdź w:

Execute SQL

Spróbuj najpierw:

SELECT
  datetime(timestamp / 1000, 'unixepoch', 'localtime') AS message_time,
  body
FROM messages
WHERE body IS NOT NULL
ORDER BY timestamp ASC;

Jeżeli działa, możesz potem wyeksportować wynik zapytania do CSV.

Jeżeli timestamp jest w innej kolumnie, sprawdź strukturę tabeli messages.


9. Eksport z podziałem na rozmowy

W zależności od wersji Signala rozmowy mogą być w tabeli typu:

conversations

albo powiązane przez conversationId.

Spróbuj:

SELECT
  datetime(m.timestamp / 1000, 'unixepoch', 'localtime') AS message_time,
  c.title AS conversation_name,
  m.body
FROM messages m
LEFT JOIN conversations c
  ON m.conversationId = c.id
WHERE m.body IS NOT NULL
ORDER BY m.timestamp ASC;

Jeżeli pojawi się błąd, to znaczy, że u Ciebie nazwy tabel/kolumn są inne. Wtedy w DB Browser sprawdź listę tabel i kolumn po lewej stronie.


10. Załączniki

Same wiadomości tekstowe są w bazie, ale pliki/zdjęcia zwykle są osobno w folderach profilu Signala, np.:

%APPDATA%\Signal\attachments.noindex

W bazie mogą być tylko odwołania/metadane do załączników.

Dlatego do pełnego archiwum zachowaj cały folder:

%APPDATA%\Signal

a nie tylko db.sqlite.


11. Jeżeli DB Browser nie otwiera bazy

Najczęstsze przyczyny:

Problem 1: zły tryb klucza

Spróbuj obu wariantów:

Raw key: 0xKLUCZ

oraz, jeśli nie działa:

Passphrase: KLUCZ

Najczęściej właściwy jest Raw key z 0x.

Problem 2: skopiowałeś nie ten config.json

Na Windows powinien być zwykle w tym samym katalogu profilu:

%APPDATA%\Signal\config.json

Problem 3: Signal był uruchomiony podczas kopiowania

Zamknij Signal całkowicie i skopiuj bazę jeszcze raz.

Problem 4: zmienił się sposób przechowywania klucza

Nowsze wersje aplikacji mogą mieć dodatkowe mechanizmy powiązane z lokalnym profilem użytkownika Windows / Electron / DPAPI. W analizach forensic z 2025 r. wskazuje się, że oprócz config.json znaczenie mogą mieć też pliki takie jak Local State w katalogu Signal. (ScienceDirect)

W takim przypadku skopiuj cały folder:

%APPDATA%\Signal

i pracuj na kopii całego folderu, nie tylko na dwóch plikach.


12. Alternatywa: eksport całej odszyfrowanej bazy

Po otwarciu bazy w DB Browser możesz zrobić:

File → Export → Database to SQL file

albo eksport tabel do CSV.

Bardziej użyteczny wariant:

Export query result as CSV

czyli eksportujesz nie całą techniczną bazę, tylko wynik zapytania SQL z datą, rozmową i treścią.


13. Minimalna procedura, którą bym zrobił u Ciebie

  1. Na starym PC zamknij Signal.
  2. Skopiuj cały folder:
%APPDATA%\Signal
  1. Z kopii weź:
sql\db.sqlite
config.json
attachments.noindex
  1. Otwórz config.json, znajdź "key".
  2. Otwórz db.sqlite w DB Browser for SQLCipher.
  3. Wybierz Raw key.
  4. Wpisz:
0xKLUCZ_Z_CONFIG_JSON
  1. Wykonaj SQL:
SELECT
  datetime(timestamp / 1000, 'unixepoch', 'localtime') AS message_time,
  body
FROM messages
WHERE body IS NOT NULL
ORDER BY timestamp ASC;
  1. Wyeksportuj wynik do CSV.

To da Ci archiwum tekstowych wiadomości. Nie będzie to jednak „zaimportowana historia” w nowym Signal Desktop.