Wings can run natively on macOS, though it is primarily designed for Linux. Because Wings manages Docker containers that run Linux, it relies on Docker Desktop to provide a Linux VM. Wings itself runs on the macOS host, and containers run inside the Docker Desktop VM.
Prerequisites
- Docker Desktop installed and running.
- mkcert installed (
brew install mkcert) for SSL certificates. - A Pelican Panel instance with a node configured for this machine.
Setup Steps
1. Create directories
Create the necessary configuration and data directories in your user home:
mkdir -p ~/.config/pelican
mkdir -p ~/.local/share/pelican/{logs,volumes,archives,backups}
mkdir -p ~/.pelican/tmp
2. Generate SSL certificates
Wings requires HTTPS. Use mkcert to generate locally-trusted certificates:
mkcert -install
mkcert -cert-file ~/.config/pelican/localhost.pem \\n -key-file ~/.config/pelican/localhost-key.pem \\n localhost 127.0.0.1
3. Docker socket symlink
Wings expects the Docker socket at /var/run/docker.sock, but Docker Desktop uses ~/.docker/run/docker.sock. Create a symlink:
sudo ln -sf ~/.docker/run/docker.sock /var/run/docker.sock
4. Configure Wings
Copy your auto-generated config from the Panel (or use wings configure) to ~/.config/pelican/config.yml. You must modify the paths and system settings to match your macOS environment:
api:
ssl:
enabled: true
cert: /Users/<you>/.config/pelican/localhost.pem
key: /Users/<you>/.config/pelican/localhost-key.pem
system:
root_directory: /Users/<you>/.local/share/pelican
log_directory: /Users/<you>/.local/share/pelican/logs
data: /Users/<you>/.local/share/pelican/volumes
archive_directory: /Users/<you>/.local/share/pelican/archives
backup_directory: /Users/<you>/.local/share/pelican/backups
tmp_directory: /Users/<you>/.pelican/tmp
user:
uid: 501 # your UID (run `id -u`)
gid: 20 # your GID (run `id -g`)
passwd:
enable: true
directory: /Users/<you>/.config/pelican
machine_id:
enable: false
check_permissions_on_boot: false
enable_log_rotate: false
Note: Replace <you> with your macOS username.
Critical macOS Configuration Rules:
- Use
/Users/ paths: Docker Desktop's file sharing only grants the VM access to paths under /Users, /Volumes, /private, and /tmp. Using paths like /var/lib/pelican will cause container bind-mounts to fail. - Set
uid/gid to your user: This prevents Wings from attempting to use useradd (which is for Linux). machine_id.enable: false: Prevents errors from attempting to bind mount /etc/machine-id (which doesn't exist on macOS).check_permissions_on_boot: false: Prevents Wings from trying to chown directories to a non-existent pelican system user.enable_log_rotate: false: macOS does not use /etc/logrotate.d/.
5. Panel node configuration
In the Pelican Panel, configure the node with these settings:
- FQDN:
localhost or 127.0.0.1 - Port:
8080 - SSL: enabled
- Scheme: HTTPS
6. Start Wings
Run Wings without sudo. Running as root will create directories that the Docker Desktop VM cannot access, causing container failures.
./wings --config ~/.config/pelican/config.yml
If the Panel displays "is not Pelican Wings!" after startup, clear the Panel cache:
php artisan cache:clear