Dokumentasi Resmi
|tulis.orgArsitektur Dokumentasi
Peta jalan panduan, SDK integration, dan API reference lengkap yang disiapkan secara terstruktur.
TULIS CMS/DEVELOPER HUB
/self-hosting-configuration
Backend Configuration
The Tulis backend (Go + Fiber) is configured through environment variables, typically loaded from a .env file in the project root. Copy .env.example to .env and fill in your values:
cp .env.example .envRequired Variables
| Variable | Default | Description |
|---|---|---|
DB_HOST | 127.0.0.1 | MySQL host address. |
DB_PORT | 3306 | MySQL port. |
DB_USER | root | MySQL user. |
DB_PASSWORD | (kosong) | MySQL password. |
DB_NAME | kontent | MySQL database name. |
JWT_SECRET | super-secret-key | Secret untuk sign/verify JWT token (ganti dengan string acak kuat). |
JWT_EXPIRY_HOURS | 24 | Masa berlaku token JWT dalam jam. |
API_HOST | api.tulis.org | Host API yang digunakan oleh APISubdomainGuard. |
APP_ENV | development | development atau production. Mode dev bypass subdomain guard. |
APP_PORT | 8080 | Port server Fiber. |
CORS_ORIGINS | http://localhost:3000 | Origin yang diizinkan CORS (pisahkan dengan koma). |
FRONTEND_URL | http://localhost:3000 | URL frontend untuk redirect callback. |
Optional Variables
Media Storage (Cloudflare R2)
Jika dikonfigurasi, upload media akan disimpan ke R2. Jika tidak, menggunakan local storage di folder uploads/.
| Variable | Default | Description |
|---|---|---|
R2_ACCOUNT_ID | (kosong) | Cloudflare R2 Account ID. |
R2_ACCESS_KEY_ID | (kosong) | R2 Access Key. |
R2_SECRET_ACCESS_KEY | (kosong) | R2 Secret Key. |
R2_BUCKET_NAME | (kosong) | Nama bucket R2. |
R2_PUBLIC_URL | (kosong) | URL publik R2 bucket. |
SMTP / Email
| Variable | Default | Description |
|---|---|---|
SMTP_HOST | localhost | SMTP server host. |
SMTP_PORT | 1025 | SMTP port. |
SMTP_USER | (kosong) | SMTP username. |
SMTP_PASSWORD | (kosong) | SMTP password. |
SMTP_FROM | hello@tulis.org | Alamat email pengirim. |
SMTP_FROM_NAME | Tulis CMS | Nama pengirim email. |
OAuth
| Variable | Description |
|---|---|
GOOGLE_CLIENT_ID | Google OAuth Client ID. |
GOOGLE_CLIENT_SECRET | Google OAuth Client Secret. |
GOOGLE_REDIRECT_URL | Callback URL Google (http://localhost:8080/api/auth/google/callback). |
GITHUB_CLIENT_ID | GitHub OAuth Client ID. |
GITHUB_CLIENT_SECRET | GitHub OAuth Client Secret. |
GITHUB_REDIRECT_URL | Callback URL GitHub. |
GITLAB_CLIENT_ID | GitLab OAuth Client ID. |
GITLAB_CLIENT_SECRET | GitLab OAuth Client Secret. |
GITLAB_REDIRECT_URL | Callback URL GitLab. |
AI
| Variable | Description |
|---|---|
AI_API_KEY | API key untuk AI provider. |
AI_PROVIDER | Nama provider AI (misal: openai). |
Link Checker
| Variable | Default | Description |
|---|---|---|
LINK_CHECK_INTERVAL_HOURS | 24 | Interval pengecekan broken link (jam). |
BROKEN_LINK_THRESHOLD | 5 | Batas kegagalan sebelum dianggap broken. |
Database Connection Pool
| Variable | Default | Description |
|---|---|---|
DB_MAX_IDLE_CONNS | 10 | Maksimal koneksi idle. |
DB_MAX_OPEN_CONNS | 100 | Maksimal koneksi terbuka. |
DB_CONN_MAX_LIFETIME_MINS | 60 | Maksimal umur koneksi (menit). |
Registration & Workspace
| Variable | Default | Description |
|---|---|---|
WORKSPACE_RESTRICTED | false | Batasi pembuatan workspace. |
ALLOW_REGISTRATION | true | Izinkan registrasi pengguna baru. |
Contoh .env minimal
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=tulis
DB_PASSWORD=password-kuat
DB_NAME=tulis
JWT_SECRET=random-string-panjang-dan-kuat
API_HOST=api.tulis.example.com
APP_ENV=development
APP_PORT=8080Related
Lini Masa Peluncuran Fitur
Fase 1: Setup Awal & KonfigurasiSELESAI
Docker Compose, pengaturan file environment, dan panduan setup lokal telah lengkap dibuat.
Fase 2: Referensi RESTful APISELESAI
Dokumentasi route endpoint publik, otentikasi JWT, dan kontrol hak akses telah selesai disusun.
Fase 3: Integrasi Frontend & Fitur LanjutSEDANG BERJALAN
Mempersiapkan boilerplate untuk Next.js client, manajemen revisi konten, dan optimasi query.