NoctisNode
← RehberlerSelf-hosting2026-10-239 dk

Küçük bir VPS için self-hosting stack'i: 2 GB ve 4 GB RAM'e neler sığar

Küçük bir VPS'te gerçekçi bir self-hosted başlangıç stack'i: Docker Compose, Caddy, Vaultwarden, Uptime Kuma ve Forgejo, servis başına RAM bütçesi, yedekler ve temel güvenlik.

Kısaca: 2 GB'lık bir VPS, Docker Compose altında Caddy (HTTPS reverse proxy), Vaultwarden (şifreler), Uptime Kuma (izleme) ve Forgejo'dan (git) oluşan self-hosted bir çekirdeği yaklaşık 0,6 ile 1 GB RAM kullanarak rahatça çalıştırır. Nextcloud eklerseniz 4 GB istersiniz; Syncthing veya File Browser gibi daha hafif araçlar seçerseniz 2 GB hâlâ yeterlidir.

Bu rehber çalışan bir Compose dosyası, servis başına bir RAM bütçesi ve çoğu self-hosted kurulumun iş işten geçene kadar atladığı iki şeyi sunuyor: sunucu dışı yedekler ve kilitlenmiş bir ağ yüzeyi. Komutlar, Docker'ın resmî deposundan Docker Engine ve Compose eklentisi kurulmuş Debian 12/13 veya Ubuntu 24.04 varsayar.

Servis başına RAM bütçesi

Rakamlar, desteklenen yerlerde SQLite ile bir ila beş kullanıcı için boşta ile hafif kullanım arasındaki tipik resident bellek değerleridir. Yükseltmeler, büyük depoların git clone'ları veya Nextcloud önizlemeleri sırasındaki zirveler daha yüksek olabilir; bu yüzden en az %20 pay bırakın ve 1 ila 2 GB'lık bir swap dosyası ekleyin.

ServisGörevTipik RAMNotlar
OS + sshd + journaldTemel sistem150–250 MBDebian veya Ubuntu minimal
Docker Engine + containerdContainer runtime80–120 MBContainer kullanmanın sabit maliyeti
CaddyReverse proxy, otomatik HTTPS20–50 MBTek binary, veritabanı yok
VaultwardenBitwarden uyumlu şifre sunucusu20–60 MBRust ile yazılmış, SQLite
Uptime KumaUptime ve sertifika izleme100–200 MBNode.js; monitör sayısıyla büyür
ForgejoGit hosting, issue'lar, CI hook'ları150–300 MBGo, küçük ekipler için SQLite yeterli
Nextcloud + MariaDB + RedisDosyalar, takvim, kişiler600 MB–1.2 GBPHP-FPM worker'ları baskındır
SyncthingDosya senkronizasyonu, web paketi yok50–150 MBDaha hafif Nextcloud alternatifi
File BrowserWeb dosya yöneticisi20–40 MBHTTPS üzerinden dosya yükleme ve paylaşma
RadicaleCalDAV ve CardDAV30–50 MBNextcloud olmadan takvim ve kişiler

VPS boyutunu seçmek

Çekirdek stack (Caddy, Vaultwarden, Uptime Kuma, Forgejo) artı temel sistem yaklaşık 0,6 ile 1 GB'a denk gelir; bu da Syncthing ve Radicale'e yer bırakarak 2 vCPU / 2 GB'lık bir sunucuya sığar. MariaDB ve Redis ile Nextcloud toplamı yaklaşık 1,5 ile 2,2 GB'a çıkarır, dolayısıyla tam paketi ve diğer her şeyi istiyorsanız gerçekçi minimum 4 GB'tır. Disk de önemlidir: Forgejo depoları ve senkronize dosyalar büyür, servislerin kendileri ise yalnızca birkaç GB gerektirir.

NoctisNode'da Pulse planı (2 vCPU, 2 GB RAM, 40 GB NVMe, 28 gün için $10) çekirdek stack'e, Umbra (4 vCPU, 4 GB, 60 GB NVMe, 28 gün için $15) ise çekirdek artı Nextcloud'a uyar. Her ikisi de tam root ve dedicated IPv4'lü KVM'dir ve Monero veya diğer kriptolarla ödenebilir. Bu rehberdeki hiçbir şey sağlayıcıya bağlı değildir.

Docker Compose dosyası

Yalnızca Caddy web portlarını yayınlar; uygulamalara yalnızca dahili Compose ağı üzerinden erişilebilir. Forgejo ayrıca SSH üzerinden git için 2222 portunu yayınlar, böylece hosttaki OpenSSH kendi portunda kalır. Bir `.env` dosyasında `FORGEJO_TAG`'i güncel Forgejo ana sürümüne ayarlayın ve örnek alan adlarını kendi DNS kayıtlarınızla değiştirin.

# /srv/stack/compose.yaml
services:
  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy/data:/data
      - ./caddy/config:/config

  vaultwarden:
    image: vaultwarden/server:latest
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"   # set to "false" after creating your account
    volumes:
      - ./vaultwarden:/data

  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./uptime-kuma:/app/data

  forgejo:
    image: codeberg.org/forgejo/forgejo:${FORGEJO_TAG}
    restart: unless-stopped
    environment:
      USER_UID: "1000"
      USER_GID: "1000"
      FORGEJO__service__DISABLE_REGISTRATION: "true"
    volumes:
      - ./forgejo:/data
    ports:
      - "2222:22"

# /srv/stack/Caddyfile
# vault.example.com {
#     reverse_proxy vaultwarden:80
# }
# status.example.com {
#     reverse_proxy uptime-kuma:3001
# }
# git.example.com {
#     reverse_proxy forgejo:3000
# }

Ayağa kaldırmak

  1. 01.Caddy'nin ilk başlatmada sertifika alabilmesi için `vault`, `status` ve `git` için A (ve AAAA) kayıtlarını sunucunun IP'sine yönlendirin.
  2. 02.`/srv/stack` oluşturun, `compose.yaml`, `Caddyfile` ve `.env` dosyalarını oraya koyun ve `docker compose up -d` çalıştırın.
  3. 03.Forgejo URL'sini açın ve kurulumu tamamlayın; herkese açık kayıt devre dışı olduğu için kurulum üzerinden oluşturduğunuz ilk hesap admin olur.
  4. 04.Vaultwarden hesabınızı oluşturun, ardından `SIGNUPS_ALLOWED`'u `"false"` yapın ve `docker compose up -d`'yi tekrar çalıştırın. Argon2 ile hash'lenmiş bir `ADMIN_TOKEN` ayarlamadıysanız admin panelini devre dışı bırakın.
  5. 05.Uptime Kuma admin kullanıcısını başlatmanın hemen ardından oluşturun, çünkü siz oluşturana kadar kurulum sayfası herkese açıktır.
  6. 06.Her servis ve sertifika bitiş tarihi için monitörler ekleyin, ideal olarak ikinci bir konumdan; aynı sunucudaki bir monitör kendi kesintisini bildiremez.

Note · Caddy HTTPS'i otomatik olarak yönetir. Header'lar, rate limit'ler ve daha karmaşık yönlendirme için bkz. Caddy reverse proxy rehberi.

Gerçekten geri yüklenebilen yedekler

Saklamaya değer her şey `/srv/stack` altında yaşar: SQLite veritabanları, Forgejo depoları, Caddy sertifikaları ve yapılandırmanız. Sağlayıcı snapshot'larına güvenmeyin; restic yedekleme rehberinde anlatıldığı gibi restic ile kendi şifreli, sunucu dışı kopyanızı tutun.

Bir servis yazarken kopyalanan SQLite dosyaları tutarsız olabilir. Küçük bir sunucuda en basit güvenli yaklaşım, yedeğin sürdüğü bir dakika boyunca stack'i durdurmaktır. MariaDB ile Nextcloud eklerseniz restic çalışmadan önce veritabanını `mariadb-dump` ile dökün. En az bir kez geçici bir dizine geri yüklemeyi test edin; hiç geri yüklemediğiniz bir yedek yalnızca bir tahmindir.

#!/bin/sh
# /usr/local/sbin/stack-backup (run nightly from cron or a systemd timer)
# needs RESTIC_REPOSITORY and RESTIC_PASSWORD_FILE in the environment
cd /srv/stack || exit 1
docker compose stop
rc=0
restic backup /srv/stack --tag stack || rc=$?
docker compose start
[ "$rc" -eq 0 ] || exit "$rc"
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Temel güvenlik

  • ▹SSH: yalnızca anahtar, root şifresiyle giriş yok, isteğe bağlı olarak standart dışı bir port; bkz. [SSH sıkılaştırma rehberi](/guides/ssh-hardening).
  • ▹Firewall uyarısı: Docker'ın yayınladığı portlar `ufw` kurallarını atlar, çünkü Docker kendi iptables/nftables zincirlerini yazar. Yalnızca herkese açık olması gerekenleri (80, 443, 2222) yayınlayın ve veritabanı veya admin portlarını asla yayınlamayın.
  • ▹Güncellemeler: host için `unattended-upgrades`'i etkinleştirin ve `docker compose pull && docker compose up -d`'yi gerçekten uyduğunuz bir takvimle çalıştırın.
  • ▹Kayıt: Vaultwarden ve Forgejo'da herkese açık kaydı kapalı tutun; bunun yerine kullanıcıları davet edin.
  • ▹Disk şifreleme: kopyalanmış bir disk imajının hiçbir şey açığa çıkarmaması için `/srv`'yi [şifreli bir root](/guides/luks-encrypted-root) üzerine koyun; uzak bir sunucuda [SSH ile LUKS uzaktan kilit açma](/guides/luks-remote-unlock-ssh) kullanın ve [LUKS2 ve LUKS1](/guides/luks2-vs-luks1) yazısında açıklanan LUKS2 formatını tercih edin.
  • ▹Gizli bilgiler: `.env` ve Vaultwarden veri dizini yalnızca root tarafından okunabilir olmalıdır (`chmod 600`/`700`).

SSS

QSelf-hosting için ne kadar RAM gerekir?

ACaddy, Vaultwarden, Uptime Kuma ve Forgejo'dan oluşan çekirdek bir self-hosted stack, OS ve Docker dahil yaklaşık 0,6 ile 1 GB'ta çalışır; dolayısıyla 2 GB'lık bir VPS yeterlidir. MariaDB ve Redis ile Nextcloud eklemek pratik minimumu 4 GB yapar.

Q2 GB'lık bir VPS'te Nextcloud çalıştırabilir miyim?

AÇalışır, ama diğer servislerle birlikte çok az pay bırakır ve önizlemeler veya senkronizasyon patlamaları sırasında yavaşlar. 2 GB'ta Syncthing artı File Browser ve Radicale, belleğin çok küçük bir kısmıyla dosyaları, takvimi ve kişileri karşılar.

QVaultwarden'ı self-host etmek güvenli mi?

AVaultwarden yalnızca uçtan uca şifrelenmiş vault verilerini saklar, bu yüzden sunucunun ele geçirilmesi düz metin şifreleri doğrudan açığa çıkarmaz. Kaydı kapalı tutun, admin panelini devre dışı bırakın veya hash'lenmiş bir token ile koruyun, düzenli güncelleyin ve veri dizinini yedekleyin.

QSelf-hosted bir Docker stack'i için en iyi reverse proxy hangisi?

AKüçük kurulumlar için en kolayı Caddy'dir, çünkü birkaç satır yapılandırmayla HTTPS sertifikalarını otomatik olarak alır ve yeniler. Nginx ve Traefik de çalışır ama daha fazla yapılandırma gerektirir.

Qufw Docker container'larını korur mu?

AVarsayılan olarak hayır. Docker'ın `ports:` seçeneğiyle yayınlanan portlar ufw'yi atlar, çünkü Docker kendi firewall kurallarını ekler; bu yüzden yalnızca herkese açık olması gereken portları yayınlayın.

Küçük bir VPS için self-hosting stack'i: 2 GB ve 4 GB RAM'e neler sığar · NoctisNode