Skip to content

Add attachments to the performance and add attachment backup #24

@valasek

Description

@valasek

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)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions