Pozrel som sa na repo. Tu je celý obraz situácie:
Čo Litestream zálohuje (a čo nie)
✅ Áno, Trix/Action Text je zálohovaný. Action Text ukladá obsah bohatého textu do SQLite tabuľky action_text_rich_texts — tá je súčasťou DB a Litestream ju streamuje do S3.
❌ Súborové prílohy (Active Storage) NIE SÚ zálohované. Active Storage ukladá:
- Metadáta (názov, typ, checksum) → do DB tabuliek
active_storage_blobs / active_storage_attachments → ✅ zálohované
- Samotné súbory → do adresára
storage/ na disku → ❌ nie zálohované
Riešenie: Active Storage priamo na S3
Keďže S3 už máš, najčistejší postup je presmerovať Active Storage tam. Súbory pôjdu priamo do S3 a záloha je automatická.
1. Pridaj gem
# Gemfile
gem "aws-sdk-s3", require: false
2. config/storage.yml
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: eu-central-1 # tvoj región
bucket: ensemble-storage # tvoj bucket (môže byť ten istý ako pre Litestream, iný prefix)
upload:
server_side_encryption: "AES256"
3. config/environments/production.rb
config.active_storage.service = :amazon
4. Credentials
VISUAL="code --wait" bin/rails credentials:edit
aws:
access_key_id: AKIA...
secret_access_key: xxx
5. Kamal — pridaj env premennú (ak nechceš credentials)
Alternatívne cez RAILS_MASTER_KEY a credentials je čistejšie. Ak chceš env premenné priamo, môžeš ich dať do .kamal/secrets.
Migrácia existujúcich súborov (ak nejaké máš)
Keď prepneš na S3, existujúce súbory z storage/ treba presunúť:
# Na serveri skopíruj storage/ do S3
aws s3 sync /var/lib/docker/volumes/ensemble_storage/_data/storage/ \
s3://ensemble-storage/ \
--exclude "production.sqlite3*"
Obnova po havárii
Po prechode na S3 máš dve nezávislé veci na obnovenie:
1. Databáza (existujúci postup cez Litestream):
litestream restore -config /etc/litestream.yml \
-o production.sqlite3 \
/var/lib/docker/volumes/ensemble_storage/_data/production.sqlite3
2. Súbory — už nie je treba nič obnovovať, sú priamo na S3. Active Storage si ich berie odtiaľ automaticky.
Zhrnutie
| Dáta |
Kde sídli |
Záloha |
| Trix obsah |
SQLite DB |
✅ Litestream |
| AS metadáta |
SQLite DB |
✅ Litestream |
| Obrázky / prílohy |
S3 (po zmene) |
✅ S3 natívne |
Chceš, aby som dopísal aj konkrétnu konfiguráciu CORS pre S3 bucket (potrebné ak budeš robiť direct uploads)?
Pozrel som sa na repo. Tu je celý obraz situácie:
Čo Litestream zálohuje (a čo nie)
✅ Áno, Trix/Action Text je zálohovaný. Action Text ukladá obsah bohatého textu do SQLite tabuľky
action_text_rich_texts— tá je súčasťou DB a Litestream ju streamuje do S3.❌ Súborové prílohy (Active Storage) NIE SÚ zálohované. Active Storage ukladá:
active_storage_blobs/active_storage_attachments→ ✅ zálohovanéstorage/na disku → ❌ nie zálohovanéRiešenie: Active Storage priamo na S3
Keďže S3 už máš, najčistejší postup je presmerovať Active Storage tam. Súbory pôjdu priamo do S3 a záloha je automatická.
1. Pridaj gem
2.
config/storage.yml3.
config/environments/production.rb4. Credentials
5. Kamal — pridaj env premennú (ak nechceš credentials)
Alternatívne cez
RAILS_MASTER_KEYa credentials je čistejšie. Ak chceš env premenné priamo, môžeš ich dať do.kamal/secrets.Migrácia existujúcich súborov (ak nejaké máš)
Keď prepneš na S3, existujúce súbory z
storage/treba presunúť:Obnova po havárii
Po prechode na S3 máš dve nezávislé veci na obnovenie:
1. Databáza (existujúci postup cez Litestream):
2. Súbory — už nie je treba nič obnovovať, sú priamo na S3. Active Storage si ich berie odtiaľ automaticky.
Zhrnutie
Chceš, aby som dopísal aj konkrétnu konfiguráciu CORS pre S3 bucket (potrebné ak budeš robiť direct uploads)?