In this post, we are going to set up a Raspberry Pi without a monitor, keyboard, or mouse. This is what we call a “Headless” configuration, and it is very useful when we want to dedicate our device to tasks such as a web server, home automation, or robotics, among many other examples.
The most common solution is to perform the first boot connected to a monitor and keyboard, configure it to our liking, and finally, move it to its final application. In this post, we will see that we can skip this step and perform a completely Headless configuration from the first boot.
We have had several posts on how to use our Raspberry Pi remotely. Thus, we have seen SSH connection and VNC remote desktop as the main ways to connect to the Raspberry Pi.
In general, in a Headless configuration, we aim to enable SSH and set up connectivity. With this, we will be able to access the Raspberry Pi via SSH and perform the rest of the configurations. Optionally, we can enable VNC and access via remote desktop. Fortunately, Raspbian has a couple of “tricks” that allow Headless configuration from the first boot. Let’s see the configuration process starting from an empty SD card.
Install Raspbian
The installation process is the usual one. We format the card and install Raspbian normally, as we saw in the posts install Raspbian with Etcher or install Raspbian with Noobs.
Enable SSH
As we know, as a security measure, SSH is disabled by default in the Raspbian installation. However, we can enable it simply by creating a file called ‘ssh’, without an extension, inside the SD card we prepared in the previous step.

Configure WiFi
If we are going to connect the Raspberry Pi via WiFi, we must configure the ‘wpa_supplicant.conf’ file as we saw in the post configure Wifi on Raspberry Pi via GUI or Terminal.
Similar to SSH, we can add our WiFi configuration simply by creating the ‘wpa_supplicant.conf’ file on the SD card we prepared. Upon booting, Raspbian will take the WiFi configuration file from the SD card.
Remember that the format of ‘wpa_supplicant.conf’ is as follows:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=ES
network={ ssid=“your-wifi-name” psk=“your-wifi-password” key_mgmt=WPA-PSK }
Find the Raspberry Pi Address
We come to the part that could give us some trouble. At this point, when we turn on the Raspberry Pi, it will be connected to the local network, and SSH will be enabled. But to connect, we need to know the Raspberry Pi’s address on our network.
Unfortunately, for now, Raspberry Pi does not have a function to set the address by adding a file to the SD card, as we did with SSH and WiFi. So we will have to find the dynamic IP address that has been assigned to the Raspberry Pi on our network.
For that, we have different options:
- Try to connect using ‘raspberrypi.local’ as the address.
- Use an IP scanner program on the network, such as Nirsoft Wireless Network Watcher (Windows) or Fing (Android).
- Find the device’s IP by accessing the Router’s configuration.
In most cases, any of these options will work for us. But depending on the network (size, security, etc.), some (or all) may not be usable.
If we have access to a computer with Linux or Mac, another option is to mount the SD card and directly configure a static IP as we saw in this post.
If none of the above works, you can try putting your device in ‘WiFi Sharing’ mode and connecting the Raspberry Pi to it. Configure a static IP and finally connect it to the definitive network.
Configure the Rest of the Options
Once we have SSH access to the Raspberry Pi, we can configure the rest of the options as usual using ‘rasp-config’, as we saw in the post how to configure Raspberry Pi with GUI or command console. For example, you can activate VNC and access via remote desktop.
As you can see, the Headless configuration is a simple process that takes just a few minutes, and saves us the headache of having to connect the Raspberry Pi to a monitor and keyboard just for a first boot.

