Pomoc Reverse proxy Qnap

goruss

System Engineer
Q Specialist
20 Październik 2020
114
7
18
24
QNAP
null
Ethernet
null
Witam,
W ustawieniach WEB Serwer jest zakładka tak jak tu Udostępnianie wielu witryn internetowych na serwerze QNAP NAS przy użyciu funkcji Wirtualny host
Czy w ten sposób powinno zadziałać ustawienie dla protokołu https ze wskazaniem katalogu Nextcloud na dokerze?
Pytam ponieważ u mnie to nie działa, a porty są odpowiednio przekierowane.
Bardo mi zależy na ustawieniu szyfrowanej komunikacji do NC z zewnątrz i już podpytywałem w innym temacie Rozwiązany - Migracja NextCloud do docker`a (został zamknięty) w kontekście ustawienia rev proxy, ale za nic nie wiem gdzie mam "wklepać" te ustawienia, które wskazał pigers dla vhosta

Bash:
cat 999-default.conf
Kod:
#https://www.prettifier.net/apache/
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                use SSLed
                ServerName XXXX.ovh
                DocumentRoot /var/www/html


                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyRequests Off
        ProxyPreserveHost Off
DirectoryIndex index.html index.php /_h5ai/public/index.php
 <FilesMatch \.php$>
        # 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
    </FilesMatch>




     <Proxy *>
         Order deny,allow
         Allow from all
     </Proxy>


########################################################### migrated to dockerz ##############
# qbit - 2nd kill zone !!!!!
  RewriteEngine On
  RewriteRule ^/command/?(.*)$ /torrent/command/$1 [P]


  <Location /qbt/>
        ProxyPass http://192.168.88.248:9092/
        ProxyPassReverse http://192.168.88.248:9092/
  </Location>
# end of killzone !!!!


    <Location /lidarr>
         ProxyPass        http://192.168.88.248:8686/lidarr connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:8686/lidarr
    </Location>
...............

Wersja oprogramowania Firmware: 4.5
Model serwera: QNAP TS-131K
 
To jest kontener z Nextcloud, a ścieżka prowadzi właśnie do plików nextcloud.
 

Załączniki

  • nextcloud_docker.jpg
    nextcloud_docker.jpg
    136,3 KB · Wyświetleń: 68
Katalogu kontenera, w którym zainstalowany jest Nextcloud.
... ale teraz wiem troszkę więcej tj. zainstalowałem wordpress i za pomocą tej sekcji z vhostami jak na zdjęciu powżej udało mi się wymusić ssl przekierowując domenę jak w załączonym obrazku.
Analogicznie chcę zrobić dla aplikacji Nextcloud zainstalowanej w kontenerze (uwzględniam porty dockera), ale to nie działa.
Naczytałem się już sporo na temat samego nextcloud docker, ale nie wiem jak to dalej ugryźć.
 

Załączniki

  • vh.jpg
    vh.jpg
    91,3 KB · Wyświetleń: 68
Tak, wiem, ale w takim układzie podmieniłbym certyfikaty na swoje (zamienił ścieżki)...
lheim/qnap-nextcloud
to chyba byłoby to...
Jednak ciągle się mam zagwozdkę (aż mam obawę się przyznać) - przy configu apache i vhosta natykam się na ścieżkę /etc/apache2...
- kurde, ja u siebie nie mam takiej ścieżki.
Poniżej lista zawartości katalogu /etc
Kod:
[~] # ls /etc
IS_STORAGE_V2                     model_QW430_QW460_12_11.conf
QTS_SNAPSHOT                      model_QW430_QW460_1_0_13_11.conf
TZ*                               model_QW430_QX070_12_10.conf
acpi/                             model_QW430_QX070_1_0_13_10.conf
afp.conf                          model_QY421_QY440_10_10.conf
apache-sys-proxy-ssl.conf         model_QY421_QY520_10_10.conf
apache-sys-proxy.conf             model_QY422_QY440_12_10.conf
apcupsd/                          model_QY422_QY520_12_10.conf
app_proxy.conf                    model_QY560_QW610_10_10.conf
avahi/                            model_QY561_QW610_10_11.conf
bandwidth_record.conf             model_TLSATA_JBOD.conf
bdqd_blacklist*                   model_ext.conf
blkid.tab                         mtab
blkid.tab.old                     my.cnf@
bluetooth/                        ncq_blacklist/
burntest.sym                      netconfig*
config@                           network/
container-proxy.d@                nic_model.conf
daemon_mgr.conf                   nsswitch.conf
dbus-1@                           ntp.conf@
default-tz-list.json              openldap/
default_config/                   opentftpd.ini
dhcp/                             os-release
dhcp6s/                           pam.d/
dhcpc/                            passwd@
dnsmasq.conf                      pci_list
dnsmasq.conf.bak                  php-fpm-sys-proxy.conf
docker@                           platform.conf
docker.json@                      printcap@
enclosure_0.conf                  profile
extra_task.conf                   protocols
filemanager.conf                  qbox-mariadb.cnf
filesystems                       qbus@
fstab                             qmonitor@
group@                            qnap_pci_list
gssapi_mech.conf                  qos.ui.cp.conf
hal.conf                          qos.ui.sm.conf
hal_dev_pos.conf                  qpkg_run_status
hal_modules/                      qsync@
hal_util.conf@                    raddb@
hal_util_QW430_QW460_11_11.conf   raidtab@
hal_util_QW430_QW460_12_11.conf   random-seed
hal_util_QW430_QX070_12_10.conf   rcK.d/
hal_util_QY422_QY440_12_10.conf   rcK_init.d/
hal_util_QY422_QY520_12_10.conf   rcS.d/
hal_util_QY561_QW610_10_11.conf   rcS_init.d/
hal_util_ext.conf*                resolv.conf
hostname                          resolv.dnsmasq
hosts                             rfsd.conf
hotplug/                          rsyncd.conf@
hotplug.d/                        rsyslog_only_klog.conf
idmapd.conf                       samba4_flag
init.d/                           sdmd.conf
inittab@                          securetty
inittab.disable                   service.home.lst
inittab.enable                    service.smb.lst
inittab.enable.tolapai            services
inputrc                           shadow@
iscsi/                            smart_selftest_blacklist/
issue                             smb.conf@
krb5.conf@                        ssh/
krb5.keytab                       ssl/
krb5_tmpl.conf                    stunnel@
lcd_disable_install               tfan_test_case.conf
ld.so.cache                       thttpd.conf
ld.so.conf                        tls_version.conf
linuxigd/                         tr_version.conf
localtime@                        tzlist
login.defs                        updatedb.conf
logs@                             upnpd.conf
lunporter@                        version_info
lvm/                              volume.conf
mdadm.conf@                       wwn_blacklist/
model.conf@                       zoneinfo/
model_QW430_QW460_11_11.conf      zoneinfo.src/
Dobra, już jestem blisko - wiem, że to nie ssh na qnap, a ssh dockera...
Pytanie za sto punktów, czy jest jakaś możliwość dobrać się do plików dockera przez cifs (sprawdziłem w terminalu dockera i tam jest katalog /etc/apache2 :)?
 
Duże dzięki za odpowiedź.
Od wczoraj jestem już dużo bliżej od osiągnięcia celu min. zakumaem w końcu jak działają te dockery i min. wiem skąd ten katalog apache2 :)
Poszperałem w necie i korzystam z docker compose.yml co pozwala w niektórych przypadkach na prostsze konfigurowanie.
Jednak dopiero wieczorem zacznę zabawę jak również skorzystam z Twojej podopwiedzi.
 
Thx za art. (pkt. 1 warto wiedzieć, a pkt. 2 i 3 to właśnie testuję).
Po:)racam do tematu po chwili ucieczki co nie znaczy, że nie testowałem różnych config ów z docker nextlod.
Oczywiście żadnego z ssl nie udało mi się uruchomić, ale ten
Kod:
version: '3' 

services:

  proxy:
    image: jwilder/nginx-proxy
    container_name: nextcloud-proxy
    hostname: nextcloud-proxy
    networks:
      - nextcloud-network
    ports:
      - "443:443"
    volumes:
      - /volumes/nextcloud-proxy/certs:/etc/nginx/certs
      - /volumes/nextcloud-proxy/conf.d/upload.conf:/etc/nginx/conf.d/upload.conf
      - /var/run/docker.sock:/tmp/docker.sock:ro

  mariadb:
    image: mariadb
    container_name: nextcloud-mariadb
    hostname: nextcloud-mariadb
    networks:
      - nextcloud-network
    volumes:
      - /volumes/nextcloud-mariadb:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped
  
  server:
    image: nextcloud:latest
    container_name: nextcloud-server
    hostname: nextcloud-server
    networks:
      - nextcloud-network
    depends_on:
      - mariadb
      - proxy
    volumes:
      - /volumes/nextcloud-server/html:/var/www/html
      - /volumes/nextcloud-server/config:/var/www/html/config
      - /volumes/nextcloud-server/custom_apps:/var/www/html/custom_apps
      - /volumes/nextcloud-server/data:/var/www/html/data
      - /volumes/nextcloud-server/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=
    restart: unless-stopped

networks:
  nextcloud-network:
Nextcloud z SSL na Dockerze | Tomasz Szulborski wydaje się nie być skomplikowany, ale nawet nie mogę go uruchomić - pokazuje error jak w załączniku.
Przyznam, że temat docker compose na qnap nie jest dla mnie łatwym tematem - już prościej kiedyś było z uruchomieniem collabora onlline właśnie dla nextcloud na ubuntu serwer...
 

Załączniki

  • err.jpg
    err.jpg
    24,1 KB · Wyświetleń: 62
Tak, jak najbardziej.
Do rev. proxy używam kontenera nginx (gotowy config poniżej).
Kod:
server {
listen 80;
server_name TWOJA.DOMENA.PL; # Edit this to your domain name
rewrite ^ https://$host$request_uri permanent;
}

###
# This is all the configuration declarations that help SSL Function.
###

server {
listen 443 ssl;

server_name TWOJA.DOMENA.PL;
# Edit this to your domain name
client_max_body_size 1000M ;
ssl_certificate /etc/nginx/certum/TWOJCERTYFIKAT.crt;
# If you use Lets Encrypt, you should just need to change the domain.

ssl_certificate_key /etc/nginx/certum/TWOJKLUCZ.key;    
# If you use Let's Encrypt, you should just need to change the domain.

ssl_session_cache builtin:1000 shared:SSL:10m;                      
# Defining option to share SSL Connection with Passed Proxy

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                
# Defining used protocol versions.

ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
# Defining ciphers to use.

ssl_prefer_server_ciphers on;                                        
# Enabling ciphers

access_log /var/log/nginx/access.log;                                
# Log Location. Can be anywhere. Make sure the nginx user defined in /etc/nginx/nginx.conf has r/w permissions
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
###
# This is the juicey part of the config file, handing off relevant data to
# our back-end app running on port 3000
# Nothing should need to be changed here, unless port 3000 is not the port
# you're using.
# Furthermore, if you're using a socket to serve your app (PHP comes to
# mind), you can define a unix:.sock location here as well
###
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains" always;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://192.168.1.20:8080;
}
}
Ja używam własnych certyfikatów, ale gdybyś chciał użyć darmowych od Let's Encrypt to możesz skorzystać z tego poradnika
Update: Using Free Let’s Encrypt SSL/TLS Certificates with NGINX - NGINX - musisz jednak pamiętać, że po restarcie kontenera nginx wprowadzone zmiany (dotyczy certbota) znikną.
Jest jeszcze jedna opcja dla konfiguracji odwrotnego proxy tj. kontener Nginx Proxy Manager https://www.8px.pl/nginx-proxy-manager-jako-kontener-na-qnap-nas/
Pamiętaj jednak, że wszystkie kontenery muszą być w tej samej podsieci tzn. możesz mieć problem z komunikacją pomiędzy nimi jeżeli jeden będzie dodany automatycznie za pomocą docekr container station qnap, a drugi zbudowany poprzez docker compose lub w inny sposób (na tym ja się przewiozłem i straciłem sporo czasu nad rozwikłaniem problemu).
 
Dobra mam darmowy certyfikat Let's Encrypt, kontener Nextcloud oraz Nginx Proxy Manager w tej samej podsieci. do jakiego pliku powinienem wrzucić config podany przez ciebie ?
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. nginx
  2. domena
  3. certyfikat
  4. nginx proxy manager
  5. apache
  6. mod rewrite
  7. nextcloud apache
  8. host wirtualny
  9. nextcloud
  10. apache 8
  11. vpn bez stałego ip