Skip to content

Environment Variables ​

Backend membaca konfigurasinya dari backend/.env (dimuat dengan dotenv). Halaman ini mencantumkan setiap variabel, default-nya, apakah wajib, dan kegunaannya.

Daftar ini disusun dari backend/.env.example dan dari setiap pembacaan process.env.* di backend/src. Jika kode dan contoh berbeda, perbedaannya dijelaskan pada kolom deskripsi.

Referensi lengkap ​

VariabelDefaultWajibDeskripsi
NODE_ENVdevelopmentTidakMode runtime. development mengaktifkan log query SQL di Sequelize; gunakan production di server.
PORT3001TidakPort HTTP tempat Express API mendengarkan.
DB_HOSTlocalhostYaHostname MySQL/MariaDB.
DB_PORT3306TidakPort MySQL/MariaDB.
DB_NAMEtele_storage_dbYaNama database (nilai berasal dari .env.example; kode membacanya langsung).
DB_USERrootYaUser database.
DB_PASSWORD(kosong)BersyaratPassword database. Boleh kosong untuk database lokal tanpa password; wajib bila user DB Anda memakai password.
JWT_SECRET(tidak ada)YaMenandatangani access token. Minimal 32 karakter dan bukan placeholder. Divalidasi saat boot.
JWT_EXPIRE15mTidakMasa berlaku access token.
REFRESH_TOKEN_SECRET(tidak ada)YaMenandatangani refresh token. Minimal 32 karakter, bukan placeholder. Divalidasi saat boot.
REFRESH_TOKEN_EXPIRE7dTidakMasa berlaku refresh token.
FILE_ACCESS_TOKEN_EXPIRE5mTidakMasa berlaku URL preview/download bertanda tangan. Dipakai di jwt.service.js.
ENCRYPTION_KEY(tidak ada)YaMengenkripsi kredensial Telegram per pengguna saat disimpan dan enkripsi file opsional. Minimal 32 karakter, bukan placeholder. Divalidasi saat boot. Jaga agar tetap stabil.
TELEGRAM_BOT_TOKEN(tidak ada)Dev sajaToken bot fallback yang hanya dipakai saat NODE_ENV bukan production, untuk pengembangan dan pengujian lokal. Bukan fallback produksi multi-user.
TELEGRAM_STORAGE_CHAT_ID(tidak ada)Dev sajaChat ID channel penyimpanan fallback yang hanya dipakai saat NODE_ENV bukan production.
TELEGRAM_API_URLhttps://api.telegram.org/bot<token>TidakTidak dibaca oleh kode. Ada di .env.example untuk Bot API server publik atau lokal di masa depan, tetapi backend memanggil https://api.telegram.org secara langsung (hardcoded di telegram-storage.service.js), jadi mengisinya tidak berpengaruh.
TELEGRAM_API_SERVER_URLhttp://localhost:8081TidakTidak dibaca oleh kode. Hanya ada di .env.example; mengisinya tidak berpengaruh.
REDIS_HOSTlocalhostTidakTidak dibaca oleh kode. Teldock tidak memiliki dependensi Redis maupun antrean preview; preview dihasilkan di dalam proses (lihat backend/src/routes/preview.routes.js). Mengisinya tidak berpengaruh.
REDIS_PORT6379TidakTidak dibaca oleh kode. Hanya ada di .env.example; mengisinya tidak berpengaruh.
CORS_ORIGINhttp://localhost:3000TidakOrigin browser yang diizinkan. Harus persis sama dengan origin frontend; tetapkan secara eksplisit di produksi.
BCRYPT_ROUNDS12TidakFaktor biaya hashing password. Dibaca oleh backend/src/config/security.js; nilai di luar rentang 4–15 akan kembali ke 12 disertai peringatan.
TG_PART_SIZE18874368 (~18 MB)TidakJumlah byte per potongan saat mengunggah ke Telegram. Dipakai di telegram-storage.service.js.
MAX_UPLOAD_BYTES2147483648 (2 GB)TidakUkuran unggahan maksimum yang diterima. Dipakai oleh jalur unggah HTTP dan WebDAV.
WEBDAV_RATE_LIMIT_MAX5000TidakJumlah request yang diizinkan per 15 menit pada router /webdav. Percobaan autentikasi yang gagal dibatasi terpisah sebanyak 20 per 15 menit.
FRONTEND_URLhttp://localhost:3000TidakBase URL untuk membentuk tautan pendek share absolut (misalnya <FRONTEND_URL>/s/<token>). Dibaca di SharedLink, share.controller.js, dan file-management.service.js. Setel ke origin frontend publik Anda di produksi; tanpa itu, tautan share dikembalikan sebagai path relatif.

Contoh .env ​

ini
# Server
NODE_ENV=development
PORT=3001
CORS_ORIGIN=http://localhost:3000
FRONTEND_URL=http://localhost:3000

# Database
DB_HOST=localhost
DB_PORT=3306
DB_NAME=tele_storage_db
DB_USER=root
DB_PASSWORD=

# Authentication secrets (required — the server refuses to boot with placeholders)
JWT_SECRET=<generate-random-secret>
JWT_EXPIRE=15m
REFRESH_TOKEN_SECRET=<generate-random-secret>
REFRESH_TOKEN_EXPIRE=7d
FILE_ACCESS_TOKEN_EXPIRE=5m

# Encryption (required, keep stable)
ENCRYPTION_KEY=<generate-random-secret>

# Telegram (local dev/testing only — production users connect their own bot in Settings)
TELEGRAM_BOT_TOKEN=
TELEGRAM_STORAGE_CHAT_ID=

# Storage / uploads
TG_PART_SIZE=18874368
MAX_UPLOAD_BYTES=2147483648
WEBDAV_RATE_LIMIT_MAX=5000

# Security
BCRYPT_ROUNDS=12

Buat ketiga secret dengan:

bash
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

Wajib di produksi ​

Wajib mutlak

JWT_SECRET, REFRESH_TOKEN_SECRET, dan ENCRYPTION_KEY bersifat wajib. Backend memvalidasinya saat startup dan berhenti bila tidak ada, kurang dari 32 karakter, atau masih berisi placeholder contoh. Lihat backend/src/config/secrets.js.

Variabel koneksi database (DB_HOST, DB_NAME, DB_USER, dan DB_PASSWORD bila berlaku) harus menunjuk ke database yang dapat diakses. CORS_ORIGIN sebaiknya diisi dengan origin frontend Anda yang sebenarnya di produksi, bukan dibiarkan pada default localhost.

Opsional di semua lingkungan:

  • BCRYPT_ROUNDS — faktor biaya hashing password (4–15; default 12).
  • TELEGRAM_BOT_TOKEN / TELEGRAM_STORAGE_CHAT_ID — hanya fallback pengembangan/pengujian.

Variabel berikut ada di backend/.env.example tetapi tidak dibaca oleh kode, sehingga tidak berpengaruh dan boleh dihilangkan: TELEGRAM_API_URL, TELEGRAM_API_SERVER_URL, REDIS_HOST, REDIS_PORT.

Lihat juga ​

Released under the MIT License.