Pomoc Jak podlinkować aplikację utworzoną w containerstation do wskazanej domeny?

panmirecki

Nowy użytkownik
Noobie
7 Kwiecień 2020
9
1
3
39
QNAP
null
Ethernet
802.11n (Wi-Fi 4)
Szanowni Państwo, uprzejmie proszę o pomoc.

Zainstalowałem na moim qnapie contenerstation. Na nim zainstalowałem CodiMD, Redmine i Wordpressa. Wszystkie te aplikacjie uruchomiłem na adresie publicznego IP plus odpowiedni port. Na tym etapie wszystko działa. Nie wiem jednak jak podłączyć te aplikacje pod domeny, których jestem właścicielem. Rozumiem, że muszę przekierować DNSy na moje urządzenie (to zrobiłem). Ale nie wiem, jakie (i gdzie) mam wprowadzić ustawienia. Jak korzystam z aplikacji serwer WWW i próbuję znaleźć katalog, w którym jest dana aplikacja, to program odpowiada, że moja ścieżka jest za długa. Poza tym wydaje mi się, że ta aplikacja nie pozwala linkować poza katalogiem WEB.

Czy mogę prosić o jakąkolwiek wskazówkę?

Z góry dziękuję.
 
Moja aplikacja ma adres: [numer_publicznego_IP] : [numer_portu], jak próbuję definiować adres w takiej formie rekord DNS, to dostaję informację, że nie mogę dodaź rekordu (Wartością musi być adres IP)
 
nie wiem co tutaj za herezje robicie ... przekierowanie na dnsie do portu ?

wg opisu @panmirecki , wpis A DNS ma być przekierowany na adres WAN sieci gdzie jest qnap , a tam port WWW/SSL ma być przekierowany na właściwy port(y) QNAPa, mając to na serwerze WWW ustawia się vhosty/foldery , co tam potrzeba

polecałbym prefixy , bo wtedy robi się adres : redmin.qpa.pl czy blog.qpa.pl
w przeciwieństwie do suffixów qpa.pl/redmin czy qpa.pl/blog

@Silas Mariusz - czy masz gdzieś guide jak do qnapowego apache wrzucić sufixy/prefixy ? Bo na normalnym apache ogarniam ;)
 
  • Lubię to
Reakcje: 1 osoba
Wydaje mi się, że to o czym pisał @Spooky jest możliwe. Należy dodatkowo prolągować DNSy typu SRV wg tego poradnika: Adding a SRV record

Ale mnie się ta szuka jeszcze nie udała. Jestem na łączach z dostawcą hostingu.

Ale, odnośnie tego o czym pisał @pigers, czy mogę prosić o więcej wskazówek? Faktycznie pracuję na prefixach. Ale nie wiem jak na serwerze ustawić vhosty/foldery?
 
Wiesz... Moj przypadek jest troche inny bo ja mam dynamiczne ip i uzywam DynDNS w serwisie OVH.
Ale jak masz stale ip to robisz wpis A na twoj publiczny adres ip i tyle.
Jedyne wpisy w dns ktore mam to 2x typ NS (to sa DNS)
I jeden wpis A.
 
Moja aplikacja ma adres: [numer_publicznego_IP] : [numer_portu], jak próbuję definiować adres w takiej formie rekord DNS, to dostaję informację, że nie mogę dodaź rekordu (Wartością musi być adres IP)
Nie możesz dodać rekordu A zawierającego jednocześnie adres IP i port. Musi to być tylko adres IP.
I wtedy do usługi dostajesz się po adresie https://domena:port/

Jedynym rozwiązaniem jest to co pigers sugeruje czyli reverse proxy usług jeśli działają one na innym niż standardowym porcie.
No ale, to raczej dla zaawansowanych użytkowników.
How-To - Tunelowanie aplikacji Web na dowolny host i port 80
 
Ja może źle zadałem pytanie. Bo @Silas Mariusz odpowiada, że jedynym sposobem na moją aplikacje jest to, co napisał, co faktycznie dla mnie jest trochę za trudne, ale może ja tego nie potrzebuję, bo jest jakiś łatwiejszy sposób?

Mam aplikację w containterstation, która łączy się Network Mode : NAT . A może będę miał prościej jak ustawię ją w Host lub bridge? Jeżeli tak zrobię, to jak dojść do żądanego efektu, czyli podlinkować wybraną aplikację pod podaną domenę?

Wiem, że męczę, ale walczę już drugi dzień z tym.
 
ja się wypiąłem na qnapowego apache, mam w wirtualce debiana, na którym robię tę całą magię

Bash:
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                use SSLed
                ServerName XXXXXXX
                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyRequests Off
        ProxyPreserveHost Off

 <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>

  <Location /ombi>
         ProxyPass        http://192.168.88.248:3579/ombi connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:3579/ombi
    </Location>

     <Location /radarr>
         ProxyPass        http://192.168.88.248:7878/radarr connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:7878/radarr
     </Location>

    <Location /jackett>
        ProxyPreserveHost On
        Allow from 0.0.0.0
        ProxyPass "http://192.168.88.248:9117/jackett"
        ProxyPassReverse "http://192.168.88.248:9117/jackett"
    </Location>

     <Location /sonarr>
         ProxyPass        http://192.168.88.248:8989/sonarr connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:8989/sonarr
     </Location>
     <Location /embystat>
         ProxyPass        http://192.168.88.248:6555/ connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:6555/
     </Location>

# portainer zone - touch and will kill on sight !
<Location /portainer/>
ProxyPass http://192.168.88.248:9000/
ProxyPassReverse http://192.168.88.248:9000/
</Location>

<Location /portainer/api/websocket/>
    RequestHeader set Upgrade $http_upgrade;
    RequestHeader set Connection "upgrade"
    ProxyPass ws://192.168.88.248:9000/api/websocket/
</Location>
# end of killzone

<Location /speedtest2/>
ProxyPass http://192.168.88.248:78/
ProxyPassReverse http://192.168.88.248:78/
</Location>

####################################################### end of dockerz ##################
 # DISABLE ALL CACHING WHILE DEVELOPING
  <FilesMatch "\.(html|htm|js|css|json)$">
    FileETag None
 AddOutputFilterByType BROTLI_COMPRESS text/html
    <IfModule mod_headers.c>
      Header unset ETag
      Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
      Header set Pragma "no-cache"
      Header set Note "CACHING IS DISABLED ON LOCALHOST"
      Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
  </FilesMatch>



        </VirtualHost>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
</IfModule>

Wiem, że męczę, ale walczę już drugi dzień z tym.
Dwa dni ? To co masz powyżej było męczone miesiąc !
 
  • Sad
Reakcje: grzenio
A nas ma publiczny czy prywatny adres ? Contenery jak sadze publicznego adresu nie dostana ? Jesli tak to bez rekordow SRV - nie wiele zdzialasz jeśli nie chcesz używać adresu "domena:port". Chyba ze wpisywanie w przegladarke "domena:port" Ci nie przeszkadza. To wtedy można to ogarnąć.

Prosciej będzie w trybie bridge stawiac kontenery niz za NAT. Mniej dodatkowej konfiguracji.

DNS mapuje nazwe na adres IP. Musi być publiczny jeśli zasoby maja być dostępne z internetu. Jak masz dynamiczny adres IP to kazda domena musi byc dynamicznie ustawiana za pomoca IN A na ten adres IP.

Jesli masz jakiś router który dostaje publiczny IP to musisz robic przekierowanie portow jesli np. korzystasz w 3 kontenerach z portu 80tego.

Tak na prawdę wszystko zależne jest od tego jak wygląda Twoja sieć dostępowa, Twoja sieć lokalna, jak do tego włączony jest NAS i jakie urządzenia sieciowe znajdują sie po drodze. Czy ISP NATuje Ci połączenia u siebie itd itd.

Albo tak jak @pigers wyżej - via proxy.
 
ja się wypiąłem na qnapowego apache, mam w wirtualce debiana, na którym robię tę całą magię

Bash:
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                use SSLed
                ServerName XXXXXXX
                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyRequests Off
        ProxyPreserveHost Off

 <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>

  <Location /ombi>
         ProxyPass        http://192.168.88.248:3579/ombi connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:3579/ombi
    </Location>

     <Location /radarr>
         ProxyPass        http://192.168.88.248:7878/radarr connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:7878/radarr
     </Location>

    <Location /jackett>
        ProxyPreserveHost On
        Allow from 0.0.0.0
        ProxyPass "http://192.168.88.248:9117/jackett"
        ProxyPassReverse "http://192.168.88.248:9117/jackett"
    </Location>

     <Location /sonarr>
         ProxyPass        http://192.168.88.248:8989/sonarr connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:8989/sonarr
     </Location>
     <Location /embystat>
         ProxyPass        http://192.168.88.248:6555/ connectiontimeout=5 timeout=300
         ProxyPassReverse http://192.168.88.248:6555/
     </Location>

# portainer zone - touch and will kill on sight !
<Location /portainer/>
ProxyPass http://192.168.88.248:9000/
ProxyPassReverse http://192.168.88.248:9000/
</Location>

<Location /portainer/api/websocket/>
    RequestHeader set Upgrade $http_upgrade;
    RequestHeader set Connection "upgrade"
    ProxyPass ws://192.168.88.248:9000/api/websocket/
</Location>
# end of killzone

<Location /speedtest2/>
ProxyPass http://192.168.88.248:78/
ProxyPassReverse http://192.168.88.248:78/
</Location>

####################################################### end of dockerz ##################
 # DISABLE ALL CACHING WHILE DEVELOPING
  <FilesMatch "\.(html|htm|js|css|json)$">
    FileETag None
 AddOutputFilterByType BROTLI_COMPRESS text/html
    <IfModule mod_headers.c>
      Header unset ETag
      Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
      Header set Pragma "no-cache"
      Header set Note "CACHING IS DISABLED ON LOCALHOST"
      Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </IfModule>
  </FilesMatch>



        </VirtualHost>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
</IfModule>

Wiem, że męczę, ale walczę już drugi dzień z tym.
Dwa dni ? To co masz powyżej było męczone miesiąc !
Tylko nginx
 
Przykładowy vhost :) lekko zmodyfikowany na potrzeby forum

Kod:
server {
    listen 80;
    server_name www.8px.pl;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.8px.pl;
    ssl_certificate /etc/letsencrypt/live/www.8px.pl/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.8px.pl/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    access_log /var/log/nginx/www.8px.pl/access.log;
	error_log  /var/log/nginx/www.8px.pl/error.log;

    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;
    add_header Strict-Transport-Security "max-age=63072000" always;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/www.8px.pl/chain.pem;
    resolver 192.168.0.1;
    location ^~ /.well-known/acme-challenge/ {
        root         /var/www/certbot;
    }
    location / {
        proxy_pass http://192.168.0.10:2368;
    }

}
 
ehh - zapomniałem dokleić konfiggurację makra w apache.

Bash:
-> cat macro.conf
<Macro SSLed>
#enable php7.3 fpm
<FilesMatch \.php$>
        # 2.4.10+ can proxy to unix socket
        SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
</FilesMatch>

Protocols h2 h2c http/1.1
SSLEngine on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLHonorCipherOrder Off
SSLSessionTickets Off
#enable hsts
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload;"
#wildcard ssl cert for *.pigers.ovh
SSLCertificateFile /etc/letsencrypt/live/XXX/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/XXX/privkey.pem
DirectoryIndex index.html index.php /_h5ai/public/index.php
#enable staple
SSLUseStapling on
SSLStaplingReturnResponderErrors off
SSLStaplingResponderTimeout 5
</Macro>
 

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

  1. apache