Menyebarkan Repovio
Tumpukan Compose Repovio memulai PostgreSQL, menerapkan migrasi Prisma satu kali, lalu memulai API dan aplikasi web. Itu tidak menghentikan TLS. Letakkan layanan web dan API di belakang proxy terbalik yang memiliki nama host dan sertifikat publik.
Prasyarat
- Mesin Docker dengan Docker Compose v2.
- Catatan DNS untuk nama host publik.
- Proksi terbalik yang memperoleh dan memperbarui sertifikat TLS.
- Direktori server pribadi hanya dapat dibaca oleh administrator penempatan.
Tumpukan Compose menyimpan data PostgreSQL, termasuk gambar profil pengguna yang dinormalisasi, dalam volume bernama
repovio-postgres. Jangan hapus volume ini kecuali Anda sengaja ingin menghapus semua data Repovio.
Penerapan pertama
Langkah 1: Periksa versi Repovio yang dirilis dan buat file lingkungan pribadi:
cp .env.example .env
chmod 600 .env
Langkah 2: Ganti setiap placeholder di .env, terutama POSTGRES_PASSWORD, baik URL database, AUTH_JWT_SECRET, dan
TOKEN_ENCRYPTION_KEY. Hasilkan kunci enkripsi dengan:
openssl rand -base64 32
Langkah 3: Tetapkan URL yang terlihat secara eksternal. Untuk penerapan di https://repovio.example.com, gunakan:
PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
CORS_ORIGIN=https://repovio.example.com
NUXT_PUBLIC_API_BASE_URL=https://repovio.example.com/api/v1
OAUTH_CALLBACK_URL=https://repovio.example.com/api/v1/provider-accounts/oauth/callback
Langkah 4: Ikat port kontainer ke loopback ketika proksi terbalik berjalan pada host yang sama:
REPOVIO_API_PORT=127.0.0.1:3001
REPOVIO_WEB_PORT=127.0.0.1:3000
Jika tidak, batasi akses ke port 3000 dan 3001 dengan firewall host. Jangan pernah memaparkan wadah PostgreSQL.
Langkah 5: Atur REPOVIO_VERSION di .env ke pasangan gambar yang dirilis dengan tepat, lalu mulai tumpukan:
docker compose pull
docker compose up --detach --wait
Pertahankan nilai tersebut di .env sehingga setiap perintah Compose selanjutnya menggunakan API dan versi web yang
sama.
Langkah 6: Konfirmasikan titik akhir kesehatan API secara lokal:
curl --fail http://127.0.0.1:3001/api/health
Langkah 7: Buka URL Repovio publik dan lengkapi pengaturan yang dijalankan pertama kali untuk membuat yang pertama
administrator sistem.
Membalikkan proksi dan TLS
Proxy asal web publik ke port 3000, dan jalur API dan Socket.IO ke port 3001. Misalnya, blok situs Caddy dapat menggunakan:
repovio.example.com {
reverse_proxy /api/* 127.0.0.1:3001
reverse_proxy /socket.io/* 127.0.0.1:3001
reverse_proxy /mcp 127.0.0.1:3001
reverse_proxy 127.0.0.1:3000
}
Proksi harus mengalihkan HTTP ke HTTPS, memvalidasi koneksi upstream sesuai dengan kebijakan lokalnya, dan
mempertahankan nama host publik. Konfigurasikan penyedia OAuth dengan URL panggilan balik HTTPS yang sama yang diatur di
OAUTH_CALLBACK_URL.
Meningkatkan
Memigrasi instalasi sebelumnya
Ikuti peningkatan merek sebelum memulai tumpukan yang diganti namanya. Setel
REPOVIO_POSTGRES_VOLUME ke nama volume yang sudah ada. Pertahankan kredensial basis data dan kunci enkripsi; tidak
diperlukan salinan atau pengaturan ulang basis data untuk pencitraan merek.
Langkah 1: Buat dan verifikasi cadangan database sebelum mengubah gambar.
Langkah 2: Setel REPOVIO_VERSION ke versi rilis persisnya di .env.
Langkah 3: Tarik dan terapkan pelepasan:
docker compose pull
docker compose up --detach --wait
Layanan migrate menerapkan migrasi Prisma yang tertunda sebelum API dimulai. Periksa setelah setiap pembaruan:
docker compose logs migrate
Langkah 4: Verifikasi titik akhir kesehatan dan dasbor yang dilayani proxy sebelum menganggap pembaruan telah selesai.
Cadangan basis data
Jalankan pencadangan dari direktori penerapan. Ini menulis dump format khusus PostgreSQL ke host tanpa mencetak kredensial atau memasukkannya ke dalam baris perintah:
mkdir -p backups
backup_file="backups/repovio-$(date +%F-%H%M%S).dump"
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -Fc "$POSTGRES_DB"' \
> "$backup_file"
pg_restore --list "$backup_file"
Simpan salinan terenkripsi di luar host dan uji pemulihan secara berkala pada sistem terpisah.
Pemulihan basis data
Memulihkan menggantikan objek database saat ini. Ambil cadangan baru terlebih dahulu dan jadwalkan waktu henti.
docker compose stop api web
docker compose exec -T postgres sh -c 'pg_restore -U "$POSTGRES_USER" --clean --if-exists --no-owner -d "$POSTGRES_DB"' \
< backups/repovio-YYYY-MM-DD-HHMMSS.dump
docker compose up --detach --wait
Setelah itu, periksa docker compose logs migrate dan titik akhir kesehatan API. Pulihkan dump yang dibuat oleh versi
Repovio yang kompatibel saat memutar kembali seluruh perubahan skema.
Kembalikan
Langkah 1: Simpan cadangan yang dibuat segera sebelum pemutakhiran gagal.
Langkah 2: Atur REPOVIO_VERSION di .env ke versi gambar terakhir yang diketahui bagus.
Langkah 3: Jalankan docker compose pull dan docker compose up --detach --wait.
Langkah 4: Jika rilis yang lebih baru memigrasikan database secara tidak kompatibel, hentikan API dan web, pulihkan cadangan yang kompatibel, lalu
mulai lagi versi gambar sebelumnya.
Jangan pernah menggunakan docker compose down --volumes sebagai perintah pembaruan atau rollback: ini akan menghapus
volume bernama PostgreSQL.