İçeriğe geç
Gitupcms
Esc
↑↓gezin↵aç⌘Jönizle
Bu sayfada

Sunucu

Gitupcms'i systemd ve Caddy ile bir Linux VM üzerinde çalıştırın. app.gitupcms.com da bu şekilde çalışıyor.

app.gitupcms.com, HTTPS için önünde Caddy bulunan bir AWS Lightsail sunucusunda (4 GB, Ubuntu) çalışıyor. Başka herhangi bir Linux VM’de de kurulum aynı şekilde yapılır.

Install Node, pnpm and Caddy

curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential git rsync
sudo npm i -g pnpm@10
# Caddy: see caddyserver.com/docs/install

Create a service user and folders

sudo useradd --system --home /var/lib/gitupcms --shell /usr/sbin/nologin gitupcms
sudo mkdir -p /opt/gitupcms /var/lib/gitupcms/data /var/lib/gitupcms/previews
sudo chown -R gitupcms:gitupcms /opt/gitupcms /var/lib/gitupcms

Write the environment

BETTER_AUTH_URL=https://cms.example.com
BETTER_AUTH_SECRET=...
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
DB_PATH=/var/lib/gitupcms/data/gitupcms.db
HOST=127.0.0.1
PORT=4321
PREVIEW_RUNNER=1
PREVIEW_DIR=/var/lib/gitupcms/previews
PREVIEW_DOCKER=node:24-bookworm-slim

Dosyayı yalnızca root ve servis okuyabilsin: chown root:gitupcms, chmod 640.

PREVIEW_DOCKER, her sitenin kurulumunu ve astro dev komutunu bir container içinde çalıştırır. Docker’ı kurun, servisin onu kullanmasına izin verin ve container’ların bulut metadata adresine erişmesini engelleyin:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker gitupcms
sudo docker pull node:24-bookworm-slim
sudo iptables -I DOCKER-USER -d 169.254.169.254 -j DROP   # persist with iptables-persistent

Docker grubuna üye olmak, servis kullanıcısına fiilen root yetkisi verir. Önizleme çalıştırmıyorsanız PREVIEW_DOCKER değerini boş bırakın.

Copy and build

rsync -az --exclude node_modules --exclude dist --exclude .env --exclude data ./cms/ server:/opt/gitupcms/
sudo -u gitupcms sh -c 'cd /opt/gitupcms && pnpm install --frozen-lockfile && pnpm build'

Run it with systemd

[Unit]
Description=Gitupcms
After=network.target

[Service]
User=gitupcms
Group=gitupcms
WorkingDirectory=/opt/gitupcms
EnvironmentFile=/etc/gitupcms.env
Environment=NODE_ENV=production
ExecStart=/usr/bin/node ./dist/server/entry.mjs
Restart=always
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/gitupcms /opt/gitupcms /tmp

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now gitupcms

HTTPS with Caddy

cms.example.com {
  encode zstd gzip
  reverse_proxy 127.0.0.1:4321 {
    flush_interval -1
  }
}

flush_interval -1, AI Editor’ün akış halinde gelen yanıtlarının kesintisiz iletilmesini sağlar. Bir DNS A kaydını sunucuya yönlendirin ve Caddy’yi yeniden yükleyin. Caddy sertifikayı kendisi alır.

Canlı önizleme (isteğe bağlı)

PREVIEW_HOST=https://*.preview.cms.example.com ile AI Editör her sayfanın script’lerini kendi alt alan adında çalıştırır. Bir wildcard A kaydı (*.preview.cms.example.com) ve wildcard sertifika gerekir. Wildcard sertifika DNS doğrulaması ister, yani DNS sağlayıcınızın eklentisiyle derlenmiş bir Caddy (caddy-dns). Route 53 örneği:

*.preview.cms.example.com {
  tls {
    dns route53
  }
  reverse_proxy 127.0.0.1:4322 {
    flush_interval -1
  }
}

DNS erişim bilgilerini Caddy’ye systemd EnvironmentFile ile verin ve ExecStart’tan --environ’u kaldırın. Yoksa Caddy bu bilgileri log’a yazar.

Güncelleme

Yeni kaynak kodu kopyalayın, ardından derleyip yeniden başlatın:

sudo -u gitupcms sh -c 'cd /opt/gitupcms && pnpm install --frozen-lockfile && pnpm build'
sudo systemctl restart gitupcms

Loglar ve yedekler

  • Loglar: journalctl -u gitupcms -f. SMTP_URL tanımlı değilse e-posta ile giriş kodları burada görünür.
  • DB_PATH içindeki SQLite dosyasını yedekleyin (örneğin sqlite3 gitupcms.db ".backup backup.db" ile). İçerik git’te durur. Veritabanında ise kullanıcılar, workspace’ler, ayarlar, medya metadata’sı, yorumlar ve geri bildirimler tutulur.

Bu sayfa yardımcı oldu mu?