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/installCreate 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/gitupcmsWrite 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-slimDosyayı 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-persistentDocker 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.targetsudo systemctl enable --now gitupcmsHTTPS 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_URLtanımlı değilse e-posta ile giriş kodları burada görünür. DB_PATHiçindeki SQLite dosyasını yedekleyin (örneğinsqlite3 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.