puter icon indicating copy to clipboard operation
puter copied to clipboard

Puter changes app urls on self-hosted instance to site.puter.localhost

Open Patt92 opened this issue 4 months ago • 4 comments

Issue Description I have an app made with the index url: https://elements-6nvxf03mqbr-tx7qc.puter.mydomain.de

Puter itself runs at https://puter.mydomain.de and provides also https://api.puter.mydomain.de

Steps to Reproduce

  1. Create a docker container. I use a composer file setup.
version: "3.8"
services:
  puter:
    container_name: puter
    image: ghcr.io/heyputer/puter:latest
    pull_policy: always
    # build: ./
    restart: unless-stopped
    ports:
      - '4100:4100'
    environment:
      # TZ: Europe/Paris
      # CONFIG_PATH: /etc/puter
      PUID: 1000
      PGID: 1000
      mode: production
    volumes:
      - /opt/puter/config:/etc/puter
      - /opt/puter/data:/var/puter
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://172.18.0.2:4100/test || exit 1
      interval: 60s
      timeout: 2s
      retries: 2
      start_period: 20s
    networks: 
      - puter

networks:
  puter:
      name: puter
      driver: bridge
      driver_opts:
        com.docker.network.bridge.name: puternet
      ipam:
        driver: default
        config:
          - subnet: 172.18.0.0/16
            ip_range: 172.18.0.0/24
            gateway: 172.18.0.1
  1. Edit the config.json to reflect my dns record and get rid of "Invalid Host Header"
{
    "config_name": "generated default config",
    "env": "dev",
    "nginx_mode": true,
    "server_id": "OracleVM",
    "http_port": "4100",
    "domain": "puter.mydomain.de",
    "protocol": "https",
    "contact_email": "[email protected]",
    "services": {
        "database": {
            "engine": "sqlite",
            "path": "puter-database.sqlite"
        },
        "thumbnails": {
            "engine": "purejs"
        },
        "file-cache": {
            "disk_limit": 163840,
            "disk_max_size": 163840,
            "precache_size": 163840,
            "path": "./file-cache"
        }
    },
    "cookie_name": "redacted",
    "jwt_secret": "redacted",
    "url_signature_secret": "redacted",
    "mode": "production",
    "pub_port":443,
    "": null
}

  1. make it available via a reverse proxy (Nginx)
server {
    listen 443 ssl;
    listen 172.17.0.14:443 ssl;
    server_name puter.mydomain.de api.puter.mydomain.de *.puter.mydomain.de puter.localhost *.puter.localhost;
    ssl_certificate /etc/webmin/letsencrypt-cert.pem;
    ssl_certificate_key /etc/webmin/letsencrypt-key.pem;
    ssl_protocols TLSv1.3;
    ssl_verify_client off;
    ssl_prefer_server_ciphers off;
    client_max_body_size 100G;

    location /.well-known/acme-challenge    { try_files $uri $uri/ =404; }
    location /.well-known/pki-validation    { try_files $uri $uri/ =404; }

    location / {
                allow 172.17.0.0/24;
                allow 192.168.255.0/24;
                deny all;
                proxy_pass http://127.0.0.11:4100;
               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_set_header X-Forwarded-Uri $request_uri;
                proxy_set_header User-Agent $http_user_agent;
                proxy_ssl_server_name on;
                proxy_set_header Connection "";
                proxy_set_header X-Forwarded-Host $host;
    }   

    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

  1. Configure letsencrypt (it is using a valid cert for every single domain.)

yes some things are redudant configured, they are left from tests. I will clean the unnecessary host entries as I already use wildcards.

Expected & Actual Behavior

The app should open, when opened is pressed in the dev center. The popup opens and shows can't connect to elements-6nvxf03mqbr-tx7qc.site.puter.localhost The actual index url works and has a valid certificate

Addition Information or Screenshots (if applicable) CleanShot 2024-10-04 at 08 16 59@2x

Deployment

  • [ ] Production (puter.com)
  • [ ] Development (npm run start)
  • [ ] Docker (via docker run)
  • [x] Docker (via docker-compose) see above in reproduce.

Puter version (if accessible) 2.4.1

Patt92 avatar Oct 04 '24 06:10 Patt92