Dokumentasi Resmi
|tulis.org

Arsitektur 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 .env

Required Variables

VariableDefaultDescription
DB_HOST127.0.0.1MySQL host address.
DB_PORT3306MySQL port.
DB_USERrootMySQL user.
DB_PASSWORD(kosong)MySQL password.
DB_NAMEkontentMySQL database name.
JWT_SECRETsuper-secret-keySecret untuk sign/verify JWT token (ganti dengan string acak kuat).
JWT_EXPIRY_HOURS24Masa berlaku token JWT dalam jam.
API_HOSTapi.tulis.orgHost API yang digunakan oleh APISubdomainGuard.
APP_ENVdevelopmentdevelopment atau production. Mode dev bypass subdomain guard.
APP_PORT8080Port server Fiber.
CORS_ORIGINShttp://localhost:3000Origin yang diizinkan CORS (pisahkan dengan koma).
FRONTEND_URLhttp://localhost:3000URL 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/.

VariableDefaultDescription
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

VariableDefaultDescription
SMTP_HOSTlocalhostSMTP server host.
SMTP_PORT1025SMTP port.
SMTP_USER(kosong)SMTP username.
SMTP_PASSWORD(kosong)SMTP password.
SMTP_FROMhello@tulis.orgAlamat email pengirim.
SMTP_FROM_NAMETulis CMSNama pengirim email.

OAuth

VariableDescription
GOOGLE_CLIENT_IDGoogle OAuth Client ID.
GOOGLE_CLIENT_SECRETGoogle OAuth Client Secret.
GOOGLE_REDIRECT_URLCallback URL Google (http://localhost:8080/api/auth/google/callback).
GITHUB_CLIENT_IDGitHub OAuth Client ID.
GITHUB_CLIENT_SECRETGitHub OAuth Client Secret.
GITHUB_REDIRECT_URLCallback URL GitHub.
GITLAB_CLIENT_IDGitLab OAuth Client ID.
GITLAB_CLIENT_SECRETGitLab OAuth Client Secret.
GITLAB_REDIRECT_URLCallback URL GitLab.

AI

VariableDescription
AI_API_KEYAPI key untuk AI provider.
AI_PROVIDERNama provider AI (misal: openai).

Link Checker

VariableDefaultDescription
LINK_CHECK_INTERVAL_HOURS24Interval pengecekan broken link (jam).
BROKEN_LINK_THRESHOLD5Batas kegagalan sebelum dianggap broken.

Database Connection Pool

VariableDefaultDescription
DB_MAX_IDLE_CONNS10Maksimal koneksi idle.
DB_MAX_OPEN_CONNS100Maksimal koneksi terbuka.
DB_CONN_MAX_LIFETIME_MINS60Maksimal umur koneksi (menit).

Registration & Workspace

VariableDefaultDescription
WORKSPACE_RESTRICTEDfalseBatasi pembuatan workspace.
ALLOW_REGISTRATIONtrueIzinkan 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=8080

Related

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.