laravel / valet

A more enjoyable local development experience for Mac.
https://laravel.com/docs/valet
MIT License
2.49k stars 691 forks source link

Share with Expose #1483

Closed fawwal closed 2 months ago

fawwal commented 2 months ago

Description

I wanted to experiment with sharing a dev site with Expose, but I don't really understand, It talks about tunneling the requests. It looks like it just 301's to the .test domain, and any connecting public client won't know where that is. I've installed via brew today

ScreenShot 2024-04-17 at 13 25 51@2x

ScreenShot 2024-04-17 at 13 23 08@2x

Steps To Reproduce

Follow default install of Valet, and it's requirements, Installed Expose via Composer

ScreenShot 2024-04-17 at 13 18 48@2x

Set a test1.test site, and use the "valet share" command after setting up your Expose token. then try to access the website from another client, like your phone.

Diagnosis

sw_vers
ProductName:       macOS
ProductVersion:     14.3.1
BuildVersion:       23D60
valet --version
Laravel Valet 4.6.1
cat ~/.config/valet/config.json
{
    "tld": "test",
    "loopback": "127.0.0.1",
    "paths": [

        "/Users/me.config/valet/Sites",
        "/Users/me/Sites/valet"
    ],
    "share-tool": "expose"
}
cat ~/.composer/composer.json
{
    "require": {
        "laravel/valet": "^4.6",
        "beyondcode/expose": "^2.6"
    }
}
composer global diagnose
Changed current directory to /Users/me/.composer
Checking composer.json: WARNING
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
Checking platform settings: OK
Checking git settings: OK git version 2.39.3
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: 
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.7.2
PHP version: 8.3.4
PHP binary path: /usr/local/Cellar/php/8.3.4/bin/php
OpenSSL version: OpenSSL 3.2.1 30 Jan 2024
cURL version: 8.7.1 libz 1.2.12 ssl (SecureTransport) OpenSSL/3.2.1
zip: extension present, unzip present, 7-Zip not available
composer global outdated
Changed current directory to /Users/me/.composer
Legend:
! patch or minor release available - update recommended
~ major release available - update possible

Direct dependencies required in composer.json:
Everything up to date

Transitive dependencies not required in composer.json:
illuminate/collections   v10.48.7 ~ v11.4.0 The Illuminate Collections package.
illuminate/conditionable v10.48.7 ~ v11.4.0 The Illuminate Conditionable pac...
illuminate/container     v10.48.7 ~ v11.4.0 The Illuminate Container package.
illuminate/contracts     v10.48.7 ~ v11.4.0 The Illuminate Contracts package.
illuminate/macroable     v10.48.7 ~ v11.4.0 The Illuminate Macroable package.
symfony/console          v6.4.6   ~ v7.0.6  Eases the creation of beautiful ...
symfony/event-dispatcher v6.4.3   ~ v7.0.3  Provides tools that allow your a...
symfony/process          v6.4.4   ~ v7.0.4  Executes commands in sub-processes
ls -al /etc/sudoers.d/
total 0
drwxr-xr-x   2 root  wheel    64 Feb  2 12:19 .
drwxr-xr-x  84 root  wheel  2688 Apr 16 22:05 ..
brew config
HOMEBREW_VERSION: 4.2.18
ORIGIN: https://github.com/Homebrew/brew
HEAD: 9edabf02ce29e54d0b717baa757cff38ad0c0e25
Last commit: 3 days ago
Core tap JSON: 17 Apr 17:02 UTC
Core cask tap JSON: 17 Apr 17:02 UTC
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 12
Homebrew Ruby: 3.1.4 => /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.1.4/bin/ruby
CPU: dodeca-core 64-bit kabylake
Clang: 15.0.0 build 1500
Git: 2.39.3 => /Library/Developer/CommandLineTools/usr/bin/git
Curl: 8.4.0 => /usr/bin/curl
macOS: 14.3.1-x86_64
CLT: 15.1.0.0.1.1700200546
Xcode: N/A
brew services list
Warning: running through sudo, using user/* instead of gui/* domain!
Hide this warning by setting HOMEBREW_SERVICES_NO_DOMAIN_WARNING.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Name                    Status User          File
apple-music-discord-rpc started         me ~/Library/LaunchAgents/homebrew.mxcl.apple-music-discord-rpc.plist
dnsmasq                 none            root          
mysql                   started         me ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx                   none            root          
php                     none            root
brew list --formula --versions | grep -E "(php|nginx|dnsmasq|mariadb|mysql|mailhog|openssl)(@\d\..*)?\s"
dnsmasq 2.90
mysql 8.3.0_1
nginx 1.25.4
openssl@1.1 1.1.1t
php 8.3.4
brew outdated
deno
imagemagick
libheif
libnghttp2
libomp
nginx
node
openssl@1.1
php
python@3.11
python@3.12
six
sqlite
webp
x265
brew tap
homebrew/services
nextfire/tap
php -v
PHP 8.3.4 (cli) (built: Mar 12 2024 23:42:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.4, Copyright (c), by Zend Technologies
which -a php
/usr/local/bin/php
php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/8.3
Loaded Configuration File:         /usr/local/etc/php/8.3/php.ini
Scan for additional .ini files in: /usr/local/etc/php/8.3/conf.d
Additional .ini files parsed:      /usr/local/etc/php/8.3/conf.d/error_log.ini,
/usr/local/etc/php/8.3/conf.d/ext-opcache.ini,
/usr/local/etc/php/8.3/conf.d/php-memory-limits.ini
nginx -v
nginx version: nginx/1.25.4
curl --version
curl 8.4.0 (x86_64-apple-darwin23.0) libcurl/8.4.0 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.58.0
Release-Date: 2023-10-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets
php --ri curl
curl

cURL support => enabled
cURL Information => 8.7.1
Age => 10
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => No
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => No
HTTPS_PROXY => Yes
MULTI_SSL => Yes
BROTLI => Yes
ALTSVC => Yes
HTTP3 => No
UNICODE => No
ZSTD => Yes
HSTS => Yes
GSASL => No
Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtmpe, rtmps, rtmpt, rtmpte, rtmpts, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-apple-darwin23.3.0
SSL Version => (SecureTransport) OpenSSL/3.2.1
ZLib Version => 1.2.12
libSSH Version => libssh2/1.11.0

Directive => Local Value => Master Value
curl.cainfo => no value => no value
/usr/local/bin/ngrok version
ngrok version 3.8.0
ls -al ~/.ngrok2
ls: /Users/me/.ngrok2: No such file or directory
brew info nginx
==> nginx: stable 1.25.5 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
Installed
/usr/local/Cellar/nginx/1.25.4 (26 files, 2.4MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-04-11 at 09:37:45
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/n/nginx.rb
License: BSD-2-Clause
==> Dependencies
Required: openssl@3, pcre2
==> Options
--HEAD
    Install HEAD version
==> Caveats
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To start nginx now and restart at login:
  brew services start nginx
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/nginx/bin/nginx -g daemon\ off\;
==> Analytics
install: 11,856 (30 days), 36,410 (90 days), 174,867 (365 days)
install-on-request: 11,833 (30 days), 36,322 (90 days), 174,496 (365 days)
build-error: 5 (30 days)
brew info php
==> php: stable 8.3.6 (bottled), HEAD
General-purpose scripting language
https://www.php.net/
Installed
/usr/local/Cellar/php/8.3.4 (523 files, 86.7MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-04-11 at 09:01:05
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/p/php.rb
License: PHP-3.01
==> Dependencies
Build: httpd, pkg-config
Required: apr, apr-util, argon2, aspell, autoconf, curl, freetds, gd, gettext, gmp, icu4c, krb5, libpq, libsodium, libzip, oniguruma, openldap, openssl@3, pcre2, sqlite, tidy-html5, unixodbc
==> Options
--HEAD
    Install HEAD version
==> Caveats
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so

    
        SetHandler application/x-httpd-php
    

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /usr/local/etc/php/8.3/

To start php now and restart at login:
  brew services start php
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/php/sbin/php-fpm --nodaemonize
==> Analytics
install: 55,633 (30 days), 182,766 (90 days), 697,785 (365 days)
install-on-request: 52,176 (30 days), 171,351 (90 days), 651,341 (365 days)
build-error: 19 (30 days)
brew info openssl
==> openssl@3: stable 3.2.1 (bottled)
Cryptography and SSL/TLS Toolkit
https://openssl.org/
Installed
/usr/local/Cellar/openssl@3/3.2.0_1 (6,805 files, 32.4MB)
  Poured from bottle using the formulae.brew.sh API on 2023-12-27 at 13:49:58
/usr/local/Cellar/openssl@3/3.2.1 (6,874 files, 32.5MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-03-21 at 11:07:36
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/o/openssl@3.rb
License: Apache-2.0
==> Dependencies
Required: ca-certificates
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl@3/certs

and run
  /usr/local/opt/openssl@3/bin/c_rehash
==> Analytics
install: 296,884 (30 days), 1,038,315 (90 days), 4,275,086 (365 days)
install-on-request: 29,896 (30 days), 129,392 (90 days), 636,413 (365 days)
build-error: 4,206 (30 days)
openssl version -a
OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan 2024)
built on: Tue Jan 30 13:14:56 2024 UTC
platform: darwin64-x86_64-cc
options:  bn(64,64)
compiler: clang -fPIC -arch x86_64 -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -D_REENTRANT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
OPENSSLDIR: "/usr/local/etc/openssl@3"
ENGINESDIR: "/usr/local/Cellar/openssl@3/3.2.1/lib/engines-3"
MODULESDIR: "/usr/local/Cellar/openssl@3/3.2.1/lib/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x7ffaf3bfffebffff:0x40000000029c67af
openssl ciphers
TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:RSA-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:AES256-GCM-SHA384:PSK-AES256-GCM-SHA384:PSK-CHACHA20-POLY1305:RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:DHE-PSK-AES128-CBC-SHA:AES128-SHA:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA
sudo nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
which -a php-fpm

/usr/local/opt/php/sbin/php-fpm -v
PHP 8.3.4 (fpm-fcgi) (built: Mar 12 2024 23:42:26)
Copyright (c) The PHP Group
Zend Engine v4.3.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.4, Copyright (c), by Zend Technologies
sudo /usr/local/opt/php/sbin/php-fpm -y /usr/local/etc/php/8.3/php-fpm.conf --test
[17-Apr-2024 13:02:33] NOTICE: configuration file /usr/local/etc/php/8.3/php-fpm.conf test is successful
ls -al ~/Library/LaunchAgents | grep homebrew
-rw-r--r--@   1 me  staff   977 Mar 21 11:04 homebrew.mxcl.apple-music-discord-rpc.plist
-rw-r--r--@   1 me  staff   723 Apr 11 09:52 homebrew.mxcl.mysql.plist
ls -al /Library/LaunchAgents | grep homebrew

ls -al /Library/LaunchDaemons | grep homebrew
-rw-r--r--@  1 root  admin   788 Apr 11 09:57 homebrew.mxcl.dnsmasq.plist
-rw-r--r--@  1 root  admin   679 Apr 17 12:55 homebrew.mxcl.nginx.plist
-rw-r--r--@  1 root  admin   772 Apr 11 09:57 homebrew.mxcl.php.plist
ls -al /Library/LaunchDaemons | grep "com.laravel.valet."

ls -aln /etc/resolv.conf
lrwxr-xr-x  1 0  0  22 Feb  2 12:19 /etc/resolv.conf -> ../var/run/resolv.conf
cat /etc/resolv.conf
#
# macOS Notice
#
# This file is not consulted for DNS hostname resolution, address
# resolution, or the DNS query routing mechanism used by most
# processes on this system.
#
# To view the DNS configuration used by this system, use:
#   scutil --dns
#
# SEE ALSO
#   dns-sd(1), scutil(8)
#
# This file is automatically generated.
#
search lan
nameserver 192.168.8.1
ifconfig lo0
lo0: flags=8049 mtu 16384
    options=1203
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201
sh -c 'echo "------\n/usr/local/etc/nginx/valet/valet.conf\n---\n"; cat /usr/local/etc/nginx/valet/valet.conf | grep -n "# valet loopback"; echo "\n------\n"'
------
/usr/local/etc/nginx/valet/valet.conf
---

3:    #listen VALET_LOOPBACK:80; # valet loopback

------
sh -c 'for file in ~/.config/valet/dnsmasq.d/*; do echo "------\n~/.config/valet/dnsmasq.d/$(basename $file)\n---\n"; cat $file; echo "\n------\n"; done'
------
~/.config/valet/dnsmasq.d/tld-test.conf
---

address=/.test/127.0.0.1
listen-address=127.0.0.1

------
sh -c 'for file in ~/.config/valet/nginx/*; do echo "------\n~/.config/valet/nginx/$(basename $file)\n---\n"; cat $file | grep -n "# valet loopback"; echo "\n------\n"; done'
------
~/.config/valet/nginx/testWordpress.test
---

3:    #listen 127.0.0.1:80; # valet loopback
10:    #listen VALET_LOOPBACK:443 ssl; # valet loopback
54:    #listen 127.0.0.1:60; # valet loopback

------
fawwal commented 2 months ago

I'm sorry for the notifications. This can be closed, I need to dynamically change the URL rewriting WordPress does when sharing on expose or ngrok.

For those here from google, here's some tuts. https://ovirium.com/blog/using-expose-by-beyondcode-for-wordpress-development/