puter
puter copied to clipboard
Puter changes app urls on self-hosted instance to site.puter.localhost
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
- 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
- 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
}
- 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;
}
}
- 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)
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