Bir Synology Diskstation kullanıcısı olarak Homelab ağımda birçok hizmet çalıştırıyorum. Gitlab’da yazılım dağıtıyorum, Confluence’da bilgi belgeliyorum ve Calibre web sunucusu aracılığıyla teknik referansları okuyorum.
Tüm ağ hizmetleri şifreli olarak iletişim kurar ve merkezi bir kullanıcı yönetimi aracılığıyla güvence altına alınır. Bugün Calibre hizmetimi SSL şifreleme, erişim günlüğü ve LDAP erişim kısıtlaması ile nasıl güvence altına aldığımı göstereceğim. Bu eğitim için “Atlassian ile harika şeyler: Tüm Atlassian araçlarını LDAP ile kullanın” ve “Kapsayıcılarla harika şeyler: Calibre’yi Docker Compose ile çalıştırma” ile ilgili ön bilgi gereklidir.
LDAP sunucum
Daha önce de yazdığım gibi, Docker konteynerinde merkezi bir openLDAP sunucusu çalıştırıyorum. Ayrıca birkaç uygulama grubu oluşturdum.
Ters proxy ile güvensiz uygulamayı güvenli hale getirin
“linuxserver/calibre-web” Docker görüntüsü SSL şifrelemesini ve LDAP’yi desteklemediğinden, “calibreweb” adında bir sanal ağ oluşturuyorum ve Calibre sunucusunun önüne bir NGINX ters proxy koyuyorum. Docker Compose dosyam bu şekilde görünüyor. Gelecekteki tüm erişim günlükleri günlük dizininde saklanır ve kendinden imzalı sertifikalarım certs dizinindedir.
version: '3.7'
services:
nginx:
image: weseek/nginx-auth-ldap:1.13.9-1-alpine
container_name: calibre-nginx
environment:
- 'TZ=Europe/Berlin'
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
- ./certs:/etc/certs
- ./logs:/var/log/nginx
ports:
- 8443:443
networks:
- calibreweb
restart: unless-stopped
calibre-web:
image: linuxserver/calibre-web
container_name: calibre-web
environment:
- PUID=.....
- PGID=....
- TZ=Europe/Berlin
volumes:
- /volume/docker/calibre/app.db:/app/calibre-web/app.db
- /volume/Buecher:/books
expose:
- 8083
restart: unless-stopped
networks:
- calibreweb
networks:
calibreweb:
Ev kullanımı için daha kullanışlı Docker görüntüleri Dockerverse‘da bulunabilir.
Nginx yapılandırması
“default.conf” dosyası tüm LDAP ve şifreleme yapılandırmalarını içerir. Tabii ki URL, binddn, sertifikalar, portlar ve şifre ve grup ayarlanmalıdır.
# ldap auth configuration
auth_ldap_cache_enabled on;
auth_ldap_cache_expiration_time 10000;
auth_ldap_cache_size 1000;
ldap_server ldap1 {
url ldaps://ldap.server.local:636/dc=homelab,dc=local?uid?sub?(&(objectClass=inetorgperson));
binddn "cn=root oder so,dc=homelab,dc=local";
binddn_passwd "password";
connect_timeout 5s;
bind_timeout 5s;
request_timeout 5s;
ssl_check_cert: off;
group_attribute memberUid;
group_attribute_is_dn off;
require group "cn=APP-Bibliothek,ou=Groups,dc=homelab,dc=local";
require valid_user;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/certs/fullchain.pem;
ssl_certificate_key /etc/certs/privkey.pem;
#weitere SSL-Einstellungen
location / {
auth_ldap "LDAP-ONLY";
auth_ldap_servers ldap1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://calibre-web:8083; #<- docker expose port
}
}
Şimdi “docker-compose -f …etc… up” ile kurulumu başlatırsanız, oturum açmış kullanıcıların erişimlerini de erişim günlüğünde görebilirsiniz:
LDAP kullanıcıları sadece misafir kullanıcılar olduğundan, Calibreweb’de misafir kullanıcı hakları ayarlanmalıdır:
Bu kurulumu aşağıdaki hizmetler için çalıştırıyorum: * Video kütüphanesi (Peertube)* Kütüphane (Calibreweb)* Gitlab (CE grupları desteklemiyor, bu nedenle 2 kez oturum açmanız gerekiyor)