# Portainer CE Docker üzerine nasıl kurulur ve nasıl gizli tutulur

> Portainer CE'yi resmi LTS imajıyla Docker'a kurun, kurulumu setup token ile tamamlayın, 9443 portunu gizli tutun; ardından güvenle yedekleyip güncelleyin.

Zorluk: Başlangıç\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

Portainer Community Edition (CE), Docker için bir web arayüzüdür. Konteynerleri, imajları, volume'ları, ağları ve Compose stack'lerini komut satırı yerine tarayıcıdan görebilir ve yönetebilirsiniz; aynı sunucuyla birden fazla kişi ilgilendiğinde bu oldukça pratiktir. Bu rehber Portainer Server'ı resmi `docker run` komutu ve `lts` imajıyla kurar, portlarını loopback adresinde tutar, ilk kurulumu setup token ile tamamlar ve iki güvenli erişim yolu gösterir: SSH tüneli veya Caddy üzerinden HTTPS'li kendi alan adınız. Ardından kurulumu yedeklemeyi, güncellemeyi ve sorunlarını gidermeyi öğrenirsiniz.

> **Uyarı**
>
> Portainer, Docker'ı Docker soketi (`/var/run/docker.sock`) üzerinden yönetir. Docker'ın güvenlik belgeleri Docker servisini yalnızca güvenilir kullanıcıların kontrol etmesi gerektiğini söyler; `docker` grubuna üyelik bile sunucuda root düzeyinde yetki verir. Bu nedenle Portainer'a yönetici olarak giriş yapan herkes sunucuyu ele geçirebilir. Arayüzü gizli tutun ve uzun, benzersiz bir parolayla koruyun.

## Ön koşullar

- Docker Engine'in Docker'ın kendi deposundan kurulduğu, **Ubuntu 26.04 LTS**, **Ubuntu 24.04 LTS**, **Debian 13** veya **Debian 12** çalıştıran bir sunucu. Önce [Ubuntu'ya Docker kurulumu](/guides/install-docker-ubuntu) veya [Debian'a Docker kurulumu](/guides/install-docker-debian) rehberini izleyin. Portainer belgeleri root olarak çalışan güncel bir Docker sürümü ister, Ubuntu'da Docker'ın snap paketine karşı uyarır ve rootless Docker'ın ek yapılandırma gerektirdiğini belirtir. Portainer güncel sürümünü x86_64 ve ARM64 üzerinde Docker 28.5.1 ve 29.8.1 ile doğrular.
- `sudo` yetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı; [Yeni bir Linux sunucusunu güvenli hale getirin](/guides/secure-a-new-linux-server) ve [SSH anahtarlarını ayarlayın](/guides/ssh-keys) rehberlerindeki gibi. Aşağıdaki komutlar bu kullanıcının `docker` komutunu `sudo` olmadan çalıştırabildiğini varsayar; aksi hâlde komutların başına `sudo` ekleyin.
- İsteğe bağlı, Adım 5 için: sunucuyu gösteren bir A (ve AAAA) kaydına sahip `portainer.example.com` gibi bir alan adı ve [Caddy reverse proxy](/guides/caddy-reverse-proxy) rehberindeki gibi kurulmuş Caddy.

| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Yayınlanmamış | Portainer'ın kendisi için 1 vCPU |
| Bellek | Yayınlanmamış | Portainer'ın kendisi için 1 GB boş bellek |
| Disk | `portainer_data` volume'u için kalıcı depolama; SSD sınıfı depolama önerilir | 5 GB boş alan; Git'ten stack dağıtıyorsanız daha fazlası |

Portainer en düşük CPU veya bellek değeri yayınlamaz. Sağ sütun yalnızca Portainer için temkinli bir başlangıç noktasıdır; resmi veya ölçülmüş bir değer değildir. Sunucuyu çalıştırmayı planladığınız konteynerlere göre boyutlandırın ve Git tabanlı stack dağıtımlarının depoları Portainer veri volume'una klonladığını unutmayın.

## Adım 1 — Veri volume'unu oluşturun

Portainer veritabanını, kullanıcılarını, ayarlarını ve sertifikalarını bir Docker volume'unda saklar. Volume'u resmi belgelerde kullanılan adla oluşturun:

```bash
docker volume create portainer_data
docker volume ls
```

İkinci komut `portainer_data` volume'unu listeler. Volume konteyner silindiğinde de korunur; sonraki güncellemeleri zahmetsiz kılan da budur.

## Adım 2 — Portainer Server'ı başlatın

Portainer'ın kendi komutu 8000 ve 9443 portlarını sunucunun tüm adreslerinde yayınlar. Docker'ın yayınladığı portlar ufw tarafından filtrelenmez; bu yüzden bu rehber portları `127.0.0.1` adresine bağlar ve yalnızca Edge agent'ların kullandığı 8000 portunu dışarıda bırakır:

```bash
docker run -d \
  --name portainer \
  --restart=always \
  -p 127.0.0.1:9443:9443 \
  -p 127.0.0.1:9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts
```

Seçeneklerin anlamı:

- `-p 127.0.0.1:9443:9443` HTTPS arayüzünü yalnızca loopback adresinde yayınlar. Portainer bu arayüzü kendinden imzalı bir sertifikayla korur.
- `-p 127.0.0.1:9000:9000` Portainer'ın eski kurulumlar için sakladığı düz HTTP arayüzünü yine yalnızca loopback adresinde yayınlar. Bunu yalnızca Adım 5'te aynı sunucudaki Caddy kullanır. Her zaman SSH tüneli kullanacaksanız bu satırı çıkarın.
- `-v /var/run/docker.sock:/var/run/docker.sock` Portainer'ın yerel Docker motorunu yönetmesini sağlar.
- `portainer/portainer-ce:lts` Portainer'ın kurulum rehberindeki imaj ve etikettir. `lts` etiketi her zaman en son Long Term Support sürümünü gösterir.

Konteynerin çalıştığını kontrol edin:

```bash
docker ps
```

`portainer` adlı ve durumu `Up` olan bir konteyner görmelisiniz.

> **Not**
>
> Yeni bir Portainer kurulumu, ilk yöneticinin oluşturulması için yalnızca **5 dakika** bekler. Bu süre dolunca güvenlik nedeniyle kurulumu kapatır. Hemen Adım 3'e geçin; süreyi kaçırırsanız ilk sorun giderme maddesi kurulumu nasıl yeniden açacağınızı gösterir.

## Adım 3 — Portainer'ı SSH tüneliyle açın ve yöneticiyi oluşturun

Kendi bilgisayarınızda, yerel bir portu sunucudaki Portainer loopback portuna yönlendiren bir SSH tüneli açın:

```bash
ssh -L 9443:127.0.0.1:9443 user@203.0.113.10
```

Bu oturumu açık bırakın ve tarayıcıda `https://localhost:9443` adresine gidin. Tarayıcı kendinden imzalı sertifika için uyarı verir; bu yerel bağlantı için beklenen bir durumdur.

Portainer 2.43'ten beri yeni bir kurulum, yeni başlatılmış bir sunucuyu başkasının sahiplenememesi için bir **setup token** da ister. Sunucudaki SSH oturumunuzda bu değeri konteyner loglarından okuyun:

```bash
docker logs portainer 2>&1 | grep setup_token
```

`setup_token=` ifadesinden sonraki değeri **Setup token** alanına kopyalayın. Ardından yönetici hesabını oluşturun:

1. Önerilen `admin` kullanıcı adını kendinize ait bir adla değiştirin.
2. En az 12 karakterlik bir parola girin; örneğin `openssl rand -base64 24` ile üretip parola yöneticinizde saklayabilirsiniz.
3. **Edge Compute** ekranında, uzak Edge agent'ları yönetmeyecekseniz **Skip** seçin.
4. Ortam sihirbazında **Get Started** seçin. Portainer yerel Docker ortamını algılar.

Ana sayfada artık `local` adlı bir ortam listelenir. Ortamı açın ve konteyner, imaj ve volume sayılarının `docker ps -a`, `docker images` ve `docker volume ls` çıktılarıyla eşleştiğini kontrol edin.

## Adım 4 — Güvenlik duvarını kapalı tutun

Portainer yalnızca `127.0.0.1` üzerinde dinlediği için kendisi açık bir port gerektirmez. SSH'ye ve Adım 5'te Caddy kullanacaksanız HTTP ile HTTPS'e izin verin:

```bash
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
```

Başka bir makineden Portainer portlarının kapalı olduğunu doğrulayın; örneğin `nc -vz sunucu-ip-adresiniz 9443` ile. Bağlantı reddedilmeli veya zaman aşımına uğramalıdır. İleride Edge agent eklerseniz 8000 portunu yayınlayın ve sağlayıcınızın ağ güvenlik duvarıyla veya `DOCKER-USER` zinciriyle kısıtlayın; çünkü ufw Docker'ın yayınladığı portları filtrelemez.

## Adım 5 — Portainer'ı alan adınızda HTTPS ile sunun (isteğe bağlı)

En gizli seçenek SSH tünelidir. Ekibinizin normal bir adrese ihtiyacı varsa Portainer'ın önüne Caddy koyun. Şu site bloğunu `/etc/caddy/Caddyfile` dosyasına ekleyin:

```caddyfile
portainer.example.com {
    reverse_proxy 127.0.0.1:9000
}
```

Caddy'yi yeniden yükleyin ve yeni adresi test edin:

```bash
sudo systemctl reload caddy
curl -I https://portainer.example.com
```

Caddy sertifikayı kendiliğinden alır ve `curl` HTTPS üzerinden Portainer'dan gelen bir yanıt yazdırır. Proxy 9000 portuna bağlanır; çünkü bu bağlantı sunucunun dışına çıkmaz ve Portainer'ın reverse proxy belgeleri tarayıcının özgün `Host` başlığını ve buna uygun bir `X-Forwarded-Proto` değerini ister. Caddy `Host` başlığını değiştirmeden iletir ve düz HTTP bir hedef için `X-Forwarded-Proto: https` ayarlar. Nginx kullanıyorsanız Portainer'ın önerdiği gibi `proxy_set_header Host $http_host;` kullanın; bu kurulumlar için [Nginx ve Certbot](/guides/nginx-reverse-proxy-certbot) veya [Traefik](/guides/traefik-reverse-proxy) rehberlerine bakın.

> **Uyarı**
>
> Caddy 9000 portunu kullanırken Portainer ayarlarında **Force HTTPS only** seçeneğini açmayın. Bu ayar 9000 portunu kapatır ve siz ayarı geri alana kadar proxy hata döndürür.

## Yedekleme ve geri yükleme

Portainer'ın kendi verileri `portainer_data` volume'unda durur. Bu verileri korumanın birbirini tamamlayan iki yolu vardır.

**Yerleşik yedek.** Portainer'da **Settings** sayfasını açın, **Back up Portainer** bölümünü bulun, **Password protect** seçeneğini açın, bir parola girin ve **Download backup** seçin. Tarayıcınız bir `tar.gz` dosyası kaydeder. Portainer belgelerine göre bu dosya yalnızca Portainer yapılandırmasını içerir; konteynerleri, stack'leri, servisleri veya volume'ları içermez.

**Volume arşivi.** Tam bir kopya için Portainer'ı kısa süreliğine durdurun ve volume'u `/opt/backups` klasörüne arşivleyin:

```bash
sudo mkdir -p /opt/backups
docker stop portainer
docker run --rm -v portainer_data:/data -v /opt/backups:/backup ubuntu tar czf /backup/portainer_data-$(date +%F).tar.gz -C /data .
docker start portainer
```

Yerleşik yedekten geri yüklemek için boş bir volume ile yeni bir Portainer başlatın. İlk kurulum sayfasında **Restore Portainer from backup** seçin, dosyayı seçin, parolasını ve loglardaki setup token değerini girin, ardından **Restore Portainer** seçin. Sonra eski bilgilerinizle giriş yaparsınız.

Bunun yerine bir volume arşivini geri yüklemek için konteyneri kaldırın, volume'u yeniden oluşturun ve arşivi açın.

> **Tehlike**
>
> Sonraki komutlar mevcut Portainer veri volume'unu siler. Geri yükleyeceğiniz arşivin eksiksiz olduğundan emin olun.

```bash
docker stop portainer
docker rm portainer
docker volume rm portainer_data
docker volume create portainer_data
docker run --rm -v portainer_data:/data -v /opt/backups:/backup ubuntu tar xzf /backup/portainer_data-2026-10-09.tar.gz -C /data
```

Ardından Adım 2'deki komutu yeniden çalıştırın. Konteyner verileri bu yedeklerin hiçbirine dahil değildir: her uygulamanın volume'larını ve veritabanlarını kendi rehberindeki yöntemle yedekleyin ve tüm yedekleri sunucunun dışına kopyalayın.

## Portainer güncelleme

Portainer'ın güncelleme yöntemi konteyneri değiştirir, volume'u korur. Önce yedek alın, sürüm notlarını okuyun, ardından şunu çalıştırın:

```bash
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:lts
```

Yeni sürümü Adım 2'deki `docker run` komutunun aynısıyla başlatın, giriş yapın ve arayüzde gösterilen sürümü kontrol edin. Konteyneri silmek `portainer_data` volume'una dokunmaz.

Etiketler hakkında: `lts` sürümleri daha kapsamlı test edilir ve bir sonraki LTS'e ek olarak üç aylık bir geçiş süresi boyunca (en fazla dokuz ay) desteklenir; yaklaşık dört ayda bir yeni bir LTS planlanır. `sts` sürümleri özellikleri daha erken getirir ama yalnızca bir sonraki sürüme kadar desteklenir. Ekim 2026 itibarıyla güncel CE sürümü 2.45 LTS'tir. Büyük bir sürüm değişikliği planlamadan önce Portainer'ın yaşam döngüsü sayfasını kontrol edin. İleride Portainer agent eklerseniz bunları sunucuyla aynı sürümde tutun.

## Sorun giderme

### Your Portainer instance has timed out for security purposes

İlk başlatmadan sonraki 5 dakika içinde kimse yönetici oluşturmadığı için Portainer kurulumu durdurdu. Yeni bir 5 dakikalık süre için konteyneri yeniden başlatın:

```bash
docker stop portainer
docker start portainer
```

Bu işe yaramazsa konteyneri `docker rm -f portainer` ile kaldırın ve Adım 2'deki komutu yeniden çalıştırın. Bu mesajı daha önce sorunsuz çalışan bir kurulumda görüyorsanız `portainer_data` volume'u büyük olasılıkla bağlanmamıştır ve Portainer kendini yeni bir kurulum sanmaktadır.

### Kurulum sayfası setup token değerini kabul etmiyor

Token şu anda çalışan konteynerin loglarından gelmelidir. Özellikle konteyneri yeniden oluşturduysanız `docker logs portainer 2>&1 | grep setup_token` komutunu tekrar çalıştırın ve değerin tamamını kopyalayın. Otomatik kurulumlar için Portainer, setup token SSS sayfasında anlatılan `--setup-token` ve `--admin-password` başlangıç seçeneklerini de destekler.

### Reverse proxy arkasında Origin invalid hatası veya giriş döngüsü

Portainer tarayıcının origin değerini aldığı `Host` başlığıyla karşılaştırır. Proxy'nizin Adım 5'teki gibi özgün host'u ve doğru bir `X-Forwarded-Proto` değerini ilettiğinden emin olun. Hata sürerse genel adresinizi güvenilir origin olarak ekleyin: konteyneri, `docker run` komutuna `-e TRUSTED_ORIGINS=https://portainer.example.com` ekleyerek yeniden oluşturun.

### Tarayıcı 9443 portundaki sertifika için uyarı veriyor

Portainer ilk başlangıçta kendinden imzalı bir sertifika oluşturur; SSH tüneli kullanırken bu uyarı beklenen bir durumdur. Güvenilir bir sertifika için Adım 5'teki Caddy kurulumunu kullanın veya **Settings** altındaki SSL certificate bölümünden kendi tam zincirli sertifikanızı yükleyin.

### Yerel ortam görünmüyor veya Docker'a ulaşamıyor

Portainer sunucuyu `/var/run/docker.sock` üzerinden yönetir. Bağlantıyı `docker inspect portainer | grep docker.sock` ile kontrol edin. Görünmüyorsa konteyneri Adım 2'deki komutla yeniden oluşturun. Rootless Docker ve enforcing modundaki SELinux, Portainer gereksinimlerinde anlatılan ek ayarları gerektirir.

### 9443 portuna internetten erişilebiliyor

Konteyner, portları tüm adreslerde yayınlayan Portainer'ın özgün komutuyla başlatılmış. `docker rm -f portainer` ile kaldırın ve Adım 2'deki `127.0.0.1` bağlamalarıyla yeniden başlatın; verileriniz volume'da kalır.

## Sonraki adımlar

- Çoğu uygulama rehberinin kullandığı dosya biçimini öğrenin: [Docker Compose temelleri](/guides/docker-compose-basics).
- Diğer uygulamaları [Caddy](/guides/caddy-reverse-proxy) ile HTTPS arkasına alın.
- Konteyner yönetimi için sunucuları [Portainer hosting](/portainer-hosting) ve [Docker hosting](/docker-hosting) sayfalarında karşılaştırın.
- Kullanıcılar, ekipler, stack'ler ve ortamlar için resmi [Portainer belgelerini](https://docs.portainer.io/) okuyun.

## Sık sorulan sorular

### Portainer imajında lts etiketini mi, sts etiketini mi kullanmalıyım?

Sunucularda lts kullanın. Portainer'ın kurulum rehberi portainer/portainer-ce:lts imajını kullanır; LTS sürümleri daha kapsamlı test edilir ve bir sonraki LTS'e ek olarak üç aylık geçiş süresi boyunca desteklenir. sts sürümleri yenilikleri daha erken getirir ama desteği kısadır.

### Portainer için 8000 portunu açmam gerekir mi?

Yalnızca Edge agent kullanıyorsanız. 8000 portu Edge Compute için Portainer'ın tünel sunucusudur. Yerel Docker soketi üzerinden yönetilen tek bir sunucu yalnızca web arayüzüne ihtiyaç duyar; bu rehber onu 127.0.0.1 üzerinde tutar.

### Portainer setup token değerini nerede bulurum?

Portainer 2.43'ten beri yeni bir kurulum, tek kullanımlık bir setup token değerini loglarına yazar. docker logs portainer komutunu çalıştırın, setup_token= içeren satırı bulun ve değeri kurulum sayfasına yapıştırın.

### Portainer yedeği konteynerlerimi ve volume'larımı içerir mi?

Hayır. Yerleşik yedek yalnızca Portainer'ın kendi yapılandırmasını kapsar. Konteyner verilerini, volume'ları ve veritabanlarını ayrıca yedekleyin; Portainer'ın tam kopyasını istiyorsanız portainer_data volume'unu da arşivleyin.

### Birine Portainer hesabı vermek güvenli mi?

Portainer Docker'ı soketi üzerinden yönettiği için Portainer yönetici erişimini sunucuda root erişimi gibi değerlendirin. Diğer kişilere standart kullanıcı hesabı verin, uzun parolalar kullanın ve arayüzü mümkün olduğunca genel internetten uzak tutun.

---

Kaynak: <https://hyperdc.com/tr/guides/tutorials/install-portainer>\
Son güncelleme: 2026-10-09
